﻿// Disable .NET validator control
var disableValidator = function(validatorId) {
    var validator = document.getElementById(validatorId);
    if (validator)
        ValidatorEnable(validator, false);
}

// Enable .NET validator control
var enableValidator = function(validatorId) {
    var validator = document.getElementById(validatorId);
    if (validator)
        ValidatorEnable(validator, true);
}
 

function Purchase_GetCheckedDomainCount() {
    var count = 0;
    var checked = false;

    $('input').each(function() {
        if ($(this).is(":checked")) {

            var currentId = $(this).attr('id');
            if (currentId.indexOf("chkDomain") > 0) {
                count++;
            }
        }
    });

    return count;
}
        
function invalidValue(item) {
    var control = document.getElementById(item);

    if (control != null) {
        control.style.backgroundColor = "#FFE4E1";
    }

    if (document.getElementById('errorLabelClient') != null) {
        document.getElementById('errorLabelClient').style.display = 'block';
    }
}

function revertForm(item) {
    var control = document.getElementById(item);

    if (document.getElementById('errorLabelClient') != null)
        document.getElementById('errorLabelClient').style.display = 'none';

    if (control != null) {
        control.style.backgroundColor = "";
    }
}
function returnFalse(msg) {
    alert(msg);
    return false;
}
function inputclear(x) {
    var u = document.getElementById(x);
    if (u.value == u.title) { u.value = ""; }

    revertForm(x);
}

function getRadioButtonListSelection(radioButtonListId) {
    var elementRef = document.getElementById(radioButtonListId);
    var radioButtonListArray = elementRef.getElementsByTagName('input');
    var checkedValues = '';

    for (var i = 0; i < radioButtonListArray.length; i++) {
        var radioButtonRef = radioButtonListArray[i];

        if (radioButtonRef.checked == true) {
            // To get the Value property, use this code:
            if (checkedValues.length > 0)
                checkedValues += ', ';

            checkedValues += radioButtonRef.value;

            // To get the Text property, use this code:
            //var labelArray = radioButtonRef.parentNode.getElementsByTagName('label');
            //if ( labelArray.length > 0 )
            //{
            // if ( checkedValues.length > 0 )
            //  checkedValues += ', ';
            // checkedValues += labelArray[0].innerHTML;
            //}
        }
    }

    return checkedValues;
}


function ResetScrollPosition() {
    setTimeout("window.scrollTo(0,0)", 0);
}

function strTrim(str) {
    while (str.substring(0, 1) == ' ')
        str = str.substring(1, str.length);
    while (str.substring(str.length - 1, str.length) == ' ')
        str = str.substring(0, str.length - 1);
    return str;
}

function isNumberOdd(s) {

    if (s % 2 == 1)
        return true;

    return false;
}

function IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function isblank(s) {
    for (var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t') && (c != '\n')) return false;
    }
    return true;
}

function fixDomainList(hasDups) {
    var f = document.frmBulkInput;
    var validList = new Array();

    var domainList = f.DomainList.value;
    var domains = new Array();
    var domainCt;

    if (domainList.indexOf('\r\n') > -1) { domainList = domainList.replace(/\r\n/g, ','); }
    if (domainList.indexOf('\n') > -1) { domainList = domainList.replace(/\n/g, ','); }
    if (domainList.indexOf(' ') > -1) { domainList = domainList.replace(/ /g, ','); }
    domainList = clearEndCommas(domainList);
    domains = domainList.split(',');
    domainCt = domains.length;

    for (var i = 0; i < domainCt; i++) {
        var sld = getSld(domains[i]);
        var tld = getTld(domains[i]);

        if (isSupportedTLD(tld) && isValidDomain(sld))
            validList.push(domains[i]);
    }

    if (hasDups)
        validList = removeDups(validList);

    f.DomainList.value = validList.join(',');
    if (verify(f)) f.submit();
}

function removeDups(domains) {
    var newList = new Array();
    var domainCt = domains.length;

    for (var i = 0; i < domainCt; i++) {
        var found = false;
        for (var j = 0; j < newList.length; j++) {
            if (domains[i] == domains[j]) {
                found = true;
                break;
            }
        }
        if (!found) newList.push(domains[i]);
    }

    return newList;
}

function doPurchase() {
    initSubmission(document.getElementById('btnCheckout'));
    document.frmBulkInput.submit();
}

function isValidDomain(sld) {
    // Invalid characters
    var isNot = '`~!@#$%^&*() _=+{}[]|\\;:\'"/?>,<.';

    // Check for blank SLD
    if (sld.length < 1)
        return false;

    // Look for invalid characters
    for (var i = 0; i < sld.length; i++)
        if (isNot.indexOf(sld.charAt(i)) > -1)
        return false;

    // Make sure its not too long
    if (sld.length > 255)
        return false;

    // Check for leading or ending dash
    if (sld.charAt(0) == "-" || sld.charAt(sld.length - 1) == "-")
        return false;

    return true;
}

function getTld(domain) {
    var dotPos = domain.indexOf(".");
    return (dotPos < 0) ? '' : domain.substr(dotPos + 1);
}

function getSld(domain) {
    var dotPos = domain.indexOf(".");
    return (dotPos < 0) ? domain : domain.substr(0, dotPos);
}

function getParam(param, data) {
    paramregexp = new RegExp('(\\s|^)' + param + '=([^\\s].*?)((\\s[^\\s]+=)|$)');
    var results = paramregexp.exec(data);
    return (results != null && results.length > 1) ? results[2] : "";
}

function formatCurrency(num) {
    num = Math.floor(num * 100 + 0.50000000001);
    var cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    return ('$' + num + '.' + cents);
}

function clearEndCommas(str) {
    for (var i = str.length - 1; ((str.charAt(i) <= ",") && (str.charAt(i) != "")); i--);
    return str.substring(0, i + 1);
}

function doalert(msg) {
    document.getElementById('da_msg').innerHTML = msg.replace(/\n/g, '<br />');
    tb_show('', '#TB_inline?height=300&width=400&modal=true&inlineId=jq_alert', null);
}

function doconfirm(msg, fnc) {
    callback = fnc;
    document.getElementById('dc_msg').innerHTML = msg.replace(/\n/g, '<br />');
    tb_show('', '#TB_inline?height=300&width=400&modal=true&inlineId=jq_confirm', null);
}

function numbersonly(myfield, e, dec) {
    var key;
    var keychar;

    if (window.event) {
        e = window.event;
        key = window.event.keyCode;
    }
    else if (e)
        key = e.which;
    else
        return true;

    keychar = String.fromCharCode(key);
    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }
    }
    // numbers
    else if ((("0123456789").indexOf(keychar) > -1)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }

        return true;
    }
    // decimal point jump
    else if (dec && (keychar == ".")) {
        myfield.form.elements[dec].focus();
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }

    }
    else {
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }
    }
} 
function numbersonlywithslash(myfield, e, dec) {
    var key;
    var keychar;

    if (window.event) {
        e = window.event;
        key = window.event.keyCode;
    }
    else if (e)
        key = e.which;
    else
        return true;

    keychar = String.fromCharCode(key);
    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }
    }
    // numbers
    else if ((("0123456789/").indexOf(keychar) > -1)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }

        return true;
    }
    // decimal point jump
    else if (dec && (keychar == ".")) {
        myfield.form.elements[dec].focus();
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }

    }
    else {
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }
    }
}
function numbersOnlyWithPeriod(myfield, e, dec) {
    var key;
    var keychar;

    if (window.event) {
        e = window.event;
        key = window.event.keyCode;
    }
    else if (e)
        key = e.which;
    else
        return true;

    keychar = String.fromCharCode(key);
    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }
    }
    // numbers
    else if ((("0123456789.").indexOf(keychar) > -1)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }

        return true;
    }
    // decimal point jump
    else if (dec && (keychar == ".")) {
        myfield.form.elements[dec].focus();
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }

    }
    else {
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }
    }
}
function numbersOnlyWithPeriodOrDash(myfield, e, dec) {
    var key;
    var keychar;

    if (window.event) {
        e = window.event;
        key = window.event.keyCode;
    }
    else if (e)
        key = e.which;
    else
        return true;

    keychar = String.fromCharCode(key);
    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }
    }
    // numbers
    else if ((("0123456789-.").indexOf(keychar) > -1)) {
        if (window.event) {
            e.returnValue = true;
        }
        else {
            return true;
        }

        return true;
    }
    // decimal point jump
    else if (dec && (keychar == ".")) {
        myfield.form.elements[dec].focus();
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }

    }
    else {
        if (window.event) {
            e.returnValue = false;
        }
        else {
            return false;
        }
    }
}



function validateMoney(strValue) {
    if (!/^[+\-]?(\d+|\d{1,3}(,\d{3})*)(\.\d{1,2})?$/.test(strValue)) {
        return false;
    }
    return true;
}

function validateValue(strValue, strMatchPattern) {
    /************************************************
    DESCRIPTION: Validates that a string a matches
    a valid regular expression value.

PARAMETERS:
    strValue - String to be tested for validity
    strMatchPattern - String containing a valid
    regular expression match pattern.

RETURNS:
    True if valid, otherwise false.
    *************************************************/
    var objRegExp = new RegExp(strMatchPattern);

    //check if string matches pattern
    return objRegExp.test(strValue);
}

function isValidIPAddress(ipaddr) {
    var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
    if (re.test(ipaddr)) {
        var parts = ipaddr.split(".");
        if (parseInt(parseFloat(parts[0])) == 0) { return false; }
        for (var i = 0; i < parts.length; i++) {
            if (parseInt(parseFloat(parts[i])) > 255) { return false; }
        }
        return true;
    } else {
        return false;
    }
}

function SwapClass() {
    return SwapClassWithId('LookupDomains');
}

function SwapClassWithId(id) {

    var item = document.getElementById(id);

    if (item.className == "sLnkCollapse")
        item.className = "sLnkExpand";
    else if (item.className == "sLnkExpand")
        item.className = "sLnkCollapse";

    return false;
}

function echeck(str) {

    var at = "@"
    var dot = "."
    var lat = str.indexOf(at)
    var lstr = str.length
    var ldot = str.indexOf(dot)

    if (str.indexOf(at) == -1) {
        return false
    }

    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
        return false
    }

    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
        return false
    }

    if (str.indexOf(at, (lat + 1)) != -1) {
        return false
    }

    if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) {
        return false
    }

    if (str.indexOf(dot, (lat + 2)) == -1) {
        return false
    }

    if (str.indexOf(" ") != -1) {
        return false
    }

    return true
}

function ValidateEmail(strValue) {

    if (echeck(strValue)) {
        var objRegExp = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;

        //check for valid email
        return objRegExp.test(strValue);
    }

    return false;
}


function CheckSearchForm(name) {
    var item = 'ctl00_cph_content_' + name;
    var control = document.getElementById(item);
    
    if (document.getElementById('errorLabelClient') != null)
        document.getElementById('errorLabelClient').style.display = 'none';

    if (control != null) {
        if (control.value == "") {
            invalidValue(item);
            if (document.getElementById('errorLabelClient') != null)
                document.getElementById('errorLabelClient').style.display = 'block';

            return false;
        }
        else {
            revertForm(item);
            return true;
        }
    }
    return true;
}