﻿


function HtmlEntityDecode(str) {
    try {
        var tarea = document.createElement('textarea');
        tarea.innerHTML = str; return tarea.value;
        tarea.parentNode.removeChild(tarea);
    }
    catch (e) {
        //for IE add <div id="htmlconverter" style="display:none;"></div> to the page
        document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
        var content = document.getElementById("innerConverter").value;
        document.getElementById("htmlconverter").innerHTML = "";
        return content;
    }
}

String.prototype.startsWith = function (str)
{ return (this.match("^" + str) == str) }

function GetTemplate(selector) {

    
    return $(selector).val();
}




function IsChar(keyCode) {
    //Check if input key is a text char

    if (keyCode == 8 || keyCode == 189 ||  keyCode== 46 || keyCode == 32) {
        return true;
    }

    if (
          (((keyCode >= 48) && (keyCode <= 90)) || ((keyCode >= 96) && (keyCode <= 105))) // non-character

        ) { return true; } else { return false; }

}

function SimplifySearchesData(results) {
    // Database section

    var dbs = new Array();

    $.each(results.Searches, function (i, search) {
        $.each(search.Databases, function (j, db) {
            dbs.push(db);
         });
        
    });

    results.Searches[0].Databases = dbs;
    results.Searches[0].OrderBy = results.OrderBy;
    results.Searches[0].CurrentLanguage = results.CurrentLanguage;

    return results.Searches[0];
    
}

function ExistField(_searchDb, filterName) {
    var ret = false;

    $.each(_searchDb.Filters, function (i, filters) {
        $.each(filters, function (j, filter) {
            if (filterName == "mink" && filter.startsWith("keyscount>=")) {
                ret = true;
            }
            else if (filterName == "maxk" && filter.startsWith("keyscount<=")) {
                ret = true;
            }
            else if (filterName == "minl" && filter.startsWith("length>=")) {
                ret = true;
            }
            else if (filterName == "maxl" && filter.startsWith("length<=")) {
                ret = true;
            }
            if (filterName == "minp" && filter.startsWith("price>=")) {
                ret = true;
            }
            else if (filterName == "maxp" && filter.startsWith("price<=")) {
                ret = true;
            }
            else if (filterName == "fb" && filter.startsWith("bad=")) {
                ret = true;
            }
            else if (filterName == "fn" && filter.startsWith("numbers=")) {
                ret = true;
            }
            else if (filterName == "fd" && filter.startsWith("dash=")) {
                ret = true;
            }
        });
    });
    
    return ret;
}

function AddFieldValue(_searchDb, filterName, value) {

    if (_searchDb.Filters == null)
        _searchDb.Filters = new Array();
    if (_searchDb.Filters.length == 0) {
        _searchDb.Filters.push(new Array());
    }
    if (_searchDb.Filters[0].length == 0) {
        _searchDb.Filters[0].push(new Array());
    }

    if (filterName == "mink") {
        _searchDb.Filters[0].push("keyscount>=" + value);
    }
    else if (filterName == "maxk") {
        _searchDb.Filters[0].push("keyscount<=" + value);
    }
    else if (filterName == "minl") {
        _searchDb.Filters[0].push("length>=" + value);
    }
    else if (filterName == "maxl") {
        _searchDb.Filters[0].push("length<=" + value);
    }
    else if (filterName == "minp") {
        _searchDb.Filters[0].push("price>=" + value);
    }
    else if (filterName == "maxp") {
        _searchDb.Filters[0].push("price<=" + value);
    }
    else if (filterName == "fb") {
        _searchDb.Filters[0].push("bad=" + value);
    }
    else if (filterName == "fn") {
        _searchDb.Filters[0].push("numbers=" + value);
    }
    else if (filterName == "fd") {
        _searchDb.Filters[0].push("dash=" + value);
    }

}

function GetFieldIndexStartWith(_searchDb, filterName) {
    var ret = -1;

    $.each(_searchDb.Filters[0], function (j, filter) {
            if (filterName == "mink" && filter.startsWith("keyscount>=")) {
                ret = j;
            }
            else if (filterName == "maxk" && filter.startsWith("keyscount<=")) {
                ret = j;
            }
            else if (filterName == "minl" && filter.startsWith("length>=")) {
                ret = j;
            }
            else if (filterName == "maxl" && filter.startsWith("length<=")) {
                ret = j;
            }
            else if (filterName == "minp" && filter.startsWith("price>=")) {
                ret = j;
            }
            else if (filterName == "maxp" && filter.startsWith("price<=")) {
                ret = j;
            }
            else if (filterName == "fb" && filter.startsWith("bad=")) {
                ret = j;
            }
            else if (filterName == "fn" && filter.startsWith("numbers=")) {
                ret = j;
            }
            else if (filterName == "fd" && filter.startsWith("dash=")) {
                ret = j;
            }
        });

        return ret;
}

function GetFieldValue(_searchDb, filterName) {
    var ret = null;

    $.each(_searchDb.Filters, function (i, filters) {
        $.each(filters, function (j, filter) {
            if (filterName == "mink" && filter.startsWith("keyscount>=")) {
                ret = filter.split(">=")[1];
            }
            else if (filterName == "maxk" && filter.startsWith("keyscount<=")) {
                ret = filter.split("<=")[1];
            }
            else if (filterName == "minl" && filter.startsWith("length>=")) {
                ret = filter.split(">=")[1];
            }
            else if (filterName == "maxl" && filter.startsWith("length<=")) {
                ret = filter.split("<=")[1];
            }
            else if (filterName == "minp" && filter.startsWith("price>=")) {
                ret = filter.split(">=")[1];
            }
            else if (filterName == "maxp" && filter.startsWith("price<=")) {
                ret = filter.split("<=")[1];
            }
            else if (filterName == "fb" && filter.startsWith("bad=")) {
                ret = filter.split("=")[1];
            }
            else if (filterName == "fn" && filter.startsWith("numbers=")) {
                ret = filter.split("=")[1];
            }
            else if (filterName == "fd" && filter.startsWith("dash=")) {
                ret = filter.split("=")[1];
            }
        });
    });
   
    return ret;
}

function GetDataField(fieldName,data) {
    
    for(var i = 0; i<data.length; i++)
    {
        if(data[i].Name == fieldName)
            return data[i].Data;
    }
    return null;
}



// Events Helper



function AddToCart(DomainName, type, status, jsonData, addToQuicklist) {
   
    $().Vendors("open", DomainName, type, status, jsonData);

    //TE({ Category: "spinner", Name: "checkout_popup_"+type+"_"+status, Data: DomainName });

    if (addToQuicklist) {
        $("#quicklist").Quicklist("add", { domain: DomainName, type: type, status: status, jsonData: jsonData });
    }

    //Feedback($("#searchBoxResults").val(), DomainName, "spinner", "checkout_popup_" + type + "_" + status);
}

function StartSearch(type, text) {
    //alert(type);
    var redirect = "";
    if (type == "domain") {
        redirect = "/d/" + text;
    }
    else if (type == "tollfree") {
        redirect = "/t/" + text;
    }
    else if (type == "whois") {
        redirect = "/w/" + text;
    }
    window.location = redirect;
}

function RenderModalDialog(viewName, idElementName, eventsBindings, model) {

    //Create dummy DOM elements
    var popup = $('<div style="display:none"><div id="' + idElementName + '" ></div></div>');

    popup.appendTo('body');
    $("#" + idElementName).viewManager("get", viewName, model);
    var dummy_a = $('<a href="#' + idElementName + '"></a>');
    dummy_a.css("display", "none");
    dummy_a.appendTo('body');

    $(dummy_a).fancybox({
        'hideOnContentClick': false,
        'onClosed': function () {

            //Destroy dummy DOM elements
            popup.remove();
            dummy_a.remove();
        }
    });

    // Call events bindings
    eventsBindings();


    // Open modal diloag
    $(dummy_a).click();
    $("#fancybox-wrap").width($("#fancybox-wrap").width() - 20);
    $("#fancybox-content").css("border-width", "0px");

    $("#fancybox-outer").addClass("roundcorners-5px");
    $("#fancybox-outer").addClass("radius_5");

}

function Feedback(search, domain, category, event) {
    //alert("start");
    
    
    var id = $.cookie('dbot_user');
    
    if (id == null) {
        id = guidGenerator();
        $.cookie('dbot_user', id);
    }

    

    $.get("http://xml.domainsbot.com/XMLServices/Feedback.aspx", {
        service: "FI3",
        category: category,
        event: event,
        user: id,
        search: search,
        domain: domain
    }, function (res) { console.log(res); });

}

function guidGenerator() {
    return  Math.random();
}

function TE(page) {
    pageTracker._trackPageview(page);
    //console.log(event.Category + "\t" + event.Name + "\t" + event.Data);
}

function trim(s) {
    s = s.replace(/(^\s*)|(\s*$)/gi, "");
    s = s.replace(/[ ]{2,}/gi, " ");
    s = s.replace(/\n /, "\n");
    return s;
}
