﻿function OpenClosePanel(what) {
    $('#' + what).slideToggle(300);
}

function ClosePanel(what) {
    $('#' + what).slideUp(300);
}

function OpenPanel(what) {
    $('#' + what).slideDown(300);
}

String.prototype.startsWith = function (str) {
    return (this.match("^" + str) == str);
};

String.prototype.endsWith = function (str) {
    return (this.match(str + "$") == str);
};

function ParseUserDecimal(str) {
    if (NumberDecimalSeparator == ',') {
        str = str.replace('.', '');
        str = str.replace(',', '.');
    } else {
        str = str.replace(',', '');
    }
    var result = new Number(str);
    if (isNaN(result)) return 0;
    return result;
}

function FormatDecimal(num, decimals) {
    if (NumberDecimalSeparator == ',') {
        str = num.toFixed(decimals);
        return str.replace('.',',');
    } else {
        return num.toFixed(decimals);
    }
}

function FormatDecimalInput(obj,decimals) {
    var result = ParseUserDecimal(obj.value);
    obj.value = FormatDecimal(result, decimals);
}

function FormatIntegerInput(obj) {
    var formValue = trim(obj.value);
    if (isNaN(formValue)) {
        if (isNaN(obj.defaultValue)) {
            obj.value = 0;
        } else {
            obj.value = obj.defaultValue;
        }
    } else {
        obj.value = parseInt(formValue, 10);
    }
}

/******* Validate IP Address IPv4 *********/
function ValidateIPAddress(ipaddr) {
    //Remember, this function will validate only Class C IP.
    //change to other IP Classes as you need
    ipaddr = ipaddr.replace(/\s/g, "") //remove spaces for checking
    var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; //regex. check for digits and in
    //all 4 quadrants of the IP
    if (re.test(ipaddr)) {
        //split into units with dots "."
        var parts = ipaddr.split(".");
        //if the first unit/quadrant of the IP is zero
        if (parseInt(parseFloat(parts[0])) == 0) {
            return false;
        }
        //if the fourth unit/quadrant of the IP is zero
        if (parseInt(parseFloat(parts[3])) == 0) {
            return false;
        }
        //if any part is greater than 255
        for (var i = 0; i < parts.length; i++) {
            if (parseInt(parseFloat(parts[i])) > 255) {
                return false;
            }
        }
        return true;
    } else {
        return false;
    }
}

function FormatIPInput(obj) {
    if (!ValidateIPAddress(obj.value)) {
        alert('Not a valid IP address');
        obj.value = '255.255.255.255';
    }
}

// Page refresh
function PageReload() {
    if (IsPostBack) {
        document.location = location.href;
    } else {
        location.reload();
    }
}

// Clear the selected rows in datalist
function clearSelection() {
    colorDataListTables();
    for (var tbl = 0; tbl < document.getElementsByTagName('table').length; tbl++) {
        if (document.getElementsByTagName('table')[tbl].className == 'DataList') {
            for (var checkboxes = 0; checkboxes < document.getElementsByTagName('table')[tbl].getElementsByTagName('input').length; checkboxes++) {
                var CurInput = document.getElementsByTagName('table')[tbl].getElementsByTagName('input')[checkboxes];
                CurInput.checked = false;
            }
        }
    }
}

function colorDataListTables() {
    for (var tbl = 0; tbl < document.getElementsByTagName('table').length; tbl++) {
        if (document.getElementsByTagName('table')[tbl].className == 'DataList') {
            colorRows(document.getElementsByTagName('table')[tbl]);
        }
    }
}

function colorSortableList() {
    for (var tbl = 0; tbl < document.getElementsByTagName('ul').length; tbl++) {
        if (document.getElementsByTagName('ul')[tbl].className.indexOf('sortableList') > -1) {
            colorRows(document.getElementsByTagName('ul')[tbl]);
        }
    }
}

function CrlfToBR(str) {
    return str.replace(/(\r\n|[\r\n])/g, "<br />");
}

function deserializeJSONDateTime(str) {
    return new Date(parseInt(str.replace("/Date(", "").replace(")/", ""), 10));
}


function IdArray() {
    this.values = [];
}

IdArray.prototype.AddArray = function(ids) {
    for (var i = 0; i < ids.length; i++) {
        this.values.push(ids[i]);
    }
}

IdArray.prototype.Values = function() {
    return this.values;
}

// Function to keep track of changes in form elements on the page
function CheckForFormChange(obj) {
    if (obj) {
        if (obj.value == obj.defaultValue) return true;
    }
    form1_OnChange();
}

// Function to keep track of changes in form elements on the page
function CheckForFormChange(obj) {
    if (obj) {
        if (obj.value == obj.defaultValue) return true;
    }
    form1_OnChange();
}

// Function to process manual input of email addressses
function processManualRecipients(recipientObj) {
    var emailArray = getValidEmails(recipientObj.value.toLowerCase());
    var resultText = '';
    for (var i = 0; i < emailArray.length; i++) {
        resultText = resultText + emailArray[i];
        if (i < (emailArray.length-1)) resultText = resultText + '; ';
    }
    recipientObj.value = resultText;
}

// Get array of valid email addresses out of a string of possible email adresses
function getValidEmails(emailString) {
    var result = new Array();
    var theArray = emailString.split(/[^_\.\-@a-z0-9]/)
    for (var i = 0; i < theArray.length; i++) {
        if (isValidEmailAddress(theArray[i])) {
            result.push(theArray[i]);
        }
    }
    result.sort();
    return result.unique();
}

/* Cross-platform handling of complex modal dialog boxes */
var modalWindow = null;
function openPopupModal(url, pWidth, pHeight, dialogId) {
    var did = dialogId.replace(".", "");
    if (ModalDialogCanUseReturn) {
        var result = window.showModalDialog(url + '&dialogId=' + dialogId, did, 'dialogWidth:' + pWidth + 'px;dialogHeight:' + pHeight + 'px;status:true;');
        return result;
    } else {
        if (modalWindow == null) {
            modalWindow = window.open(url + '&dialogId=' + dialogId, did, 'modal=true,toolbar=false,location=false,directories=false,status=true,menubar=false,scrollbars=yes,resizable=no,width=' + pWidth + ',height=' + pHeight);
        } else {
            if (modalWindow.closed) {
                modalWindow = window.open(url + '&dialogId=' + dialogId, did, 'modal=true,toolbar=false,location=false,directories=false,status=true,menubar=false,scrollbars=yes,resizable=no,width=' + pWidth + ',height=' + pHeight);
            } else {
                modalWindow.focus();
            }
        }
    }
}

function displayElementById(id, i) {
    if (i) {
        document.getElementById(id).style.display = '';
    } else {
        document.getElementById(id).style.display = 'none';
    }
}

function colorRows(obj) {
    var loopvar = 1;
    for (var row = 0; row < obj.getElementsByTagName('tr').length; row++) {
        var CurRow = obj.getElementsByTagName('tr')[row];
        if (CurRow.className == 'nodata') {
            if (obj.getElementsByTagName('tr').length == 1) {
                CurRow.style.display = '';
            } else {
                CurRow.style.display = 'none';
            }
        }
        if (CurRow.className == 'displayrow0' || CurRow.className == 'displayrow1' || CurRow.className == 'displayrowSel0' || CurRow.className == 'displayrowSel1') {
            CurRow.className = 'displayrow' + ((loopvar) % 2);
            loopvar += 1;
        }
    }
}

function isValidEmailAddress(s) {
    var regExPattern = /^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/;
    return regExPattern.test(s);
}

function isValidUrl(s) {
    var regExPattern = /^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^`]+)?$/;
    return regExPattern.test(s);
}

function preFormatUrl(s) {
    if (! (s.startsWith('http://')|s.startsWith('https://')|s.startsWith('ftp://')) ) {
        return 'http://' + s;
    }
    return s;
}

function Left(str, n) {
    if (n <= 0)
        return '';
    else if (n > String(str).length)
        return str;
    else
        return String(str).substring(0, n);
}

function Right(str, n) {
    if (n <= 0)
        return '';
    else if (n > String(str).length)
        return str;
    else {
        var iLen = String(str).length;
        return String(str).substring(iLen, iLen - n);
    }
}

function trim(value) {
    value = value.replace(/^\s+/, '');
    value = value.replace(/\s+$/, '');
    return value;
}

function getRadioValue(name) {
    radioObj = document.getElementsByName(name);
    if (!radioObj) return -1;

    var radioLength = radioObj.length;
    if (radioLength == undefined) {
        if (radioObj.checked) return parseInt(radioObj.value,10);
    }
    
    for (var i = 0; i < radioLength; i++) {
        if (radioObj[i].checked) return parseInt(radioObj[i].value, 10);
    }
    return -1;
}

function createRadioObj(name, value, checked) {
    var isIE = /*@cc_on!@*/false;

    var result = undefined;

    if(isIE) {
        result = document.createElement('<input type="radio" name="' + name + '" value="' + value + '">');
        result.defaultChecked = checked;
        result.checked = checked;
        //result.setAttribute('defaultChecked', checked);
    } else {
        result = document.createElement("input");
        result.type = "radio";
        result.name = name;
        result.checked = checked;
        result.value = value;
    }
    return result;
} 

function getCheckboxValue(id) {
    checkboxObj = document.getElementById(id)
    if (!checkboxObj) return 'False';
    if (checkboxObj.checked)
        return 'True';
    else
        return 'False';
}

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

function daysDiff(date1, date2) {
    var ONE_DAY = 1000 * 60 * 60 * 24
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()
    var difference_ms = Math.abs(date1_ms - date2_ms)
    return Math.round(difference_ms / ONE_DAY)
}

Array.prototype.unique = function() {
    var r = new Array();
    o: for (var i = 0, n = this.length; i < n; i++) {
        for (var x = 0, y = r.length; x < y; x++) {
            if (r[x] == this[i]) {
                continue o;
            }
        }
        r[r.length] = this[i];
    }
    return r;
}

function rnd_no() {
    var rand_no = Math.random();
    rand_no = rand_no * 1000000;
    rand_no = Math.ceil(rand_no);
    return rand_no
}

function openJQueryDialog(selector) {
    $('#' + selector).dialog('open');
    $('#' + selector).parent().appendTo($('form:first'));
}

function showWarning(i) {
    document.getElementById('dialogError').innerHTML = i;
    openJQueryDialog('dialogError');
}

// SelectionTool SelectionMode functionality
function setSelectionMode(i) {
    i = parseInt(i, 10);
    if (i <= 0) {
        document.getElementById('SelectionToolMode').value = i;
    } else {
        //SelectionToolMode.LoadFromDB
        document.getElementById('SelectionToolMode').value = -3;
    }
    $('#aspnetForm').submit();
}


//****** Set values
function cbList_SetValue(id, value, checked) {
    var objs = document.getElementsByName(id);
    for (i = 0; i < objs.length; i++) {
        if (objs[i].value == value) objs[i].checked = checked;
    }
    var compareLink = document.getElementById(id + '_' + value + '_comparelabel');
    compareLink.parentNode.insertBefore(compareLink.firstChild,compareLink);
    compareLink.parentNode.removeChild(compareLink);
    cbList_ClearErrorMessage(id);
}

function dtp_SetValue(id, dt) {
    var compareLink = document.getElementById(id + '_comparelabel');
    for (i = 0; i < compareLink.childNodes.length; i++) {
        if (compareLink.childNodes[i].nodeName == 'BR') {
            compareLink.parentNode.insertBefore(document.createElement('br'), compareLink);
        } else {
            compareLink.parentNode.insertBefore(document.createTextNode(compareLink.childNodes[i].nodeValue), compareLink);
        }
    }
    eval(id).SetDateTime(dt);
    compareLink.parentNode.removeChild(compareLink);
    //rdbList_ClearErrorMessage(id);
}


function input_SetValue(id) {
    var compareLink = document.getElementById(id + '_comparelabel');
    var value = '';
    for (i = 0; i < compareLink.childNodes.length; i++) {
        if (compareLink.childNodes[i].nodeName == 'BR') {
            value += '\n';
            compareLink.parentNode.insertBefore(document.createElement('br'), compareLink);
        } else {
            value += compareLink.childNodes[i].nodeValue;
            compareLink.parentNode.insertBefore(document.createTextNode(compareLink.childNodes[i].nodeValue), compareLink);
        }
    }
    var obj = document.getElementById(id);
    obj.value = value;
    
    compareLink.parentNode.removeChild(compareLink);
    input_ClearErrorMessage(obj);
}

function rdbList_SetValue(id, value) {
    var objs = document.getElementsByName(id);
    for (i = 0; i < objs.length; i++) {
        objs[i].checked = (objs[i].value == value);
    }
    var compareLink = document.getElementById(id + '_comparelabel');
    compareLink.parentNode.insertBefore(compareLink.firstChild, compareLink);
    compareLink.parentNode.removeChild(compareLink);
    //rdbList_ClearErrorMessage(id);
}

function select_SetValue(id, value) {
    var obj = document.getElementById(id);
    for (i = 0; i < obj.options.length; i++) {
        if (parseInt(obj[i].value, 10) == value) obj.selectedIndex = i;
    }
    select_ClearErrorMessage(obj);

    // Remove link from comparelabel
    var compareLink = document.getElementById(id + '_comparelabel');
    var label = '';
    for (i = 0; i < compareLink.childNodes.length; i++) {
        if (compareLink.childNodes[i].nodeName == 'BR') {
            compareLink.parentNode.insertBefore(document.createElement('br'), compareLink);
        } else {
            compareLink.parentNode.insertBefore(document.createTextNode(compareLink.childNodes[i].nodeValue), compareLink);
        }
    }
    compareLink.parentNode.removeChild(compareLink);
}

function select_SetValueSimple(id, value) {
    var obj = document.getElementById(id);
    for (i = 0; i < obj.options.length; i++) {
        if (parseInt(obj[i].value, 10) == value) obj.selectedIndex = i;
    }
    select_ClearErrorMessage(obj);
}


//****** Error trapping stuff
function cbList_ValidateMinimumLength(id, minLength) {
    var Groups = document.getElementsByName(id);
    var ItemSelectedCount = 0;
    for (i = 0; i < Groups.length; i++) {
        if (Groups[i].disabled) return true; //Escape function when group is disabled;
        if (Groups[i].checked) ItemSelectedCount += 1;
    }
    if (ItemSelectedCount < minLength) {
        if (minLength == 1) {
            document.getElementById(id + '_err').innerHTML = RESX_WARNING_AtLeast1ItemShouldBeSelected;
        } else {
            document.getElementById(id + '_err').innerHTML = RESX_WARNING_AtLeastXItemsShouldBeSelected.replace('{0}', minLength);
        }
        document.getElementById(id + '_holder').className = 'haserror';
        return false;
    };

    return true;
}

function checkbox_ValidateEnforceBoolean(id, val) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');

    if (obj.checked != val) {
        if (val) {
            divError.innerHTML = RESX_WARNING_MustBeChecked;
        } else {
            divError.innerHTML = RESX_WARNING_MustBeUnchecked;
        }
        obj.className = 'haserror';
        return false;
    }
    return true;
}

// Validate skype name
function custom_ValidateSkypeName(id) {
    var obj = document.getElementById(id);

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);
    obj.value = formValue;

    if (formValue.length == 0) return true;

    var regExPattern = /^[a-zA-Z0-9\._\-\,]{6,32}$/;
    if (formValue.search(regExPattern) == -1) {
        divError.innerHTML = RESX_CONTACT_AValidSkypeName;
        obj.className = 'haserror';
        return false;
    }

    return true;
}

// Validate AOL Instant Messenger screen name
function custom_ValidateAIM(id) {
    var obj = document.getElementById(id);

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);
    obj.value = formValue;

    if (formValue.length == 0) return true;

    var regExPattern = /^[a-zA-Z0-9\._\-\,@]+$/;
    if (formValue.search(regExPattern) == -1) {
        divError.innerHTML = RESX_CONTACT_AValidAOLInstantMessengerScreenName;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

// Validate Twitter screen name
function custom_ValidateTwitter(id) {
    var obj = document.getElementById(id);

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);
    obj.value = formValue;

    if (formValue.length == 0) return true;

    var regExPattern = /^[a-zA-Z0-9\._\-]+$/;
    if (formValue.search(regExPattern) == -1) {
        divError.innerHTML = RESX_CONTACT_AValidTwitterScreenName;
        obj.className = 'haserror';
        return false;
    }
    return true;
}


function input_ValidateBookkeepingCodeExists(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);
    formValue = formValue.toUpperCase()
    obj.value = formValue;

    if (AdministrationAjax.CheckExists(formValue)) {
        divError.innerHTML = RESX_WARNING_ABookKeepingWithThisCodeAlreadyExists;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

function input_ValidateDisallowInjection(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);

    if (formValue.length == 0) return true;

    var regExPattern = /[<>]|(\%3C)|(\%3E)/;
    if (formValue.search(regExPattern) > -1) {
        divError.innerHTML = RESX_WARNING_InputMayNotContainTheseCharacters;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

function input_ValidateEmail(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);

    if (formValue.length == 0) return true;

    if (!isValidEmailAddress(formValue)) {
        divError.innerHTML = RESX_WARNING_EmailIsInvalid;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

//    var NumberRegEx = /[0-9]/;
//    return NumberRegEx.test(str);

function hasDigits(s) {
    var regExPattern = /[0-9]/;
    return (s.search(regExPattern) > -1);
}

function input_ValidateNoDigits(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var formValue = trim(obj.value);

    if (hasDigits(formValue)) {
        document.getElementById(id + '_err').innerHTML = RESX_WARNING_NoDigitsAllowed;
        obj.className = 'haserror';
        return false;
    };
    return true;
}


function hasOnlyLetters(s) {
    var regExPattern = /^[a-zA-Z]+$/;
    return (s.search(regExPattern) > -1);
}

function input_ValidateOnlyLetters(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var formValue = trim(obj.value);

    if (!hasOnlyLetters(formValue)) {
        document.getElementById(id + '_err').innerHTML = RESX_WARNING_OnlyLettersAreAllowed;
        obj.className = 'haserror';
        return false;
    };
    return true;
}

function hasOnlyLettersAndNumbers(s) {
    var regExPattern = /^[0-9a-zA-Z]+$/;
    return (s.search(regExPattern) > -1);
}

function input_ValidateOnlyLettersAndNumbers(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var formValue = trim(obj.value);

    if (!hasOnlyLettersAndNumbers(formValue)) {
        document.getElementById(id + '_err').innerHTML = RESX_WARNING_OnlyLettersAndNumbersAreAllowed;
        obj.className = 'haserror';
        return false;
    };
    return true;
}

function hasOnlyLettersAndSpaces(s) {
    var regExPattern = /^[a-zA-Z\ ]+$/;
    return (s.search(regExPattern) > -1);
}

function input_ValidateOnlyLettersAndSpaces(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var formValue = trim(obj.value);

    if (!hasOnlyLettersAndSpaces(formValue)) {
        document.getElementById(id + '_err').innerHTML = RESX_WARNING_OnlyLettersAndSpacesAreAllowed;
        obj.className = 'haserror';
        return false;
    };
    return true;
}

function input_ValidateMaximumLength(obj, maxLength) {
    if (obj.disabled) return true;

    var formValue = trim(obj.value);

    if (formValue.length > maxLength) {
        var errorMessage = RESX_WARNING_MaximumLengthOfXCharactersIsExceededCurrentLengthIsY.replace('{0}', maxLength)
        errorMessage = errorMessage.replace('{1}', formValue.length)
        document.getElementById(obj.id + '_err').innerHTML = errorMessage;
        obj.className = 'haserror';
        return false;
    };
    return true;
}
 
function input_ValidateMinimumLength(id,minLength) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var formValue = trim(obj.value);

    if (formValue.length < minLength) {
        if (minLength == 1) {
            document.getElementById(id + '_err').innerHTML = RESX_WARNING_ValueRequired;
        } else {
            document.getElementById(id + '_err').innerHTML = RESX_WARNING_MinimumLengthOfXCharactersIsRequired.replace('{0}', minLength);
        }
        obj.className = 'haserror';
        return false;
    };
    return true;
}


function input_ValidateUrl(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);

    if (formValue.length == 0) return true;

    var preFormattedValue = preFormatUrl(formValue);

    if (!isValidUrl(preFormattedValue)) {
        divError.innerHTML = RESX_WARNING_WebAddressIsInvalid;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

function input_ValidateVatNumber(id, countryId, isPageSubmit) {
    if (isPageSubmit) return true;

    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');

    //if (obj.defaultValue == obj.value) return true;

    var formValue = trim(obj.value);
    if (formValue.length == 0) return true;

    var VatValidationResponse;
    if (isPageSubmit) {
        VatValidationResponse = CompanyAjax.ValidateVatNumberFormatting(countryId, formValue);
    } else {
        document.getElementById('VatValidation').value = 2; //pending
        VatValidationResponse = CompanyAjax.CheckVatWebService(countryId, formValue);
    }

    //Prepare text for user
    var VatNumberApproveManually = RESX_COMPANY_VatNumberApproveManually.replace('{0}', '<a href="javascript:CompanyAjax.ManualApproveVatValidation(\'' + id + '\');">')
    VatNumberApproveManually = VatNumberApproveManually.replace('{1}', '</a>')

    divError.style.color = 'red';

    switch (VatValidationResponse) {
        case 0: //NoVATNumber
            document.getElementById('VatValidation').value = 0;
            return true;
            break;
        case 1: //IncorrectFormatting
            document.getElementById('VatValidation').value = 1;
            divError.innerHTML = RESX_COMPANY_ValidateVatNumberResponse_1;
            obj.className = 'haserror';
            return false;
            break;
        case 2: //PendingForValidation
            if (!isPageSubmit) {
                document.getElementById('VatValidation').value = 2;
            }
            return true;
            break;
        case 3: //WebServiceError
            if (isPageSubmit) {
                throw 'CompanyAjax.CheckVatWebService gave an unexpected reponse.';
            }
            document.getElementById('VatValidation').value = 3;
            divError.innerHTML = RESX_COMPANY_ValidateVatNumberResponse_3 + ' ' + VatNumberApproveManually;
            return false;
            break;
        case 4: //VATNumberInvalid
            if (isPageSubmit) {
                throw 'CompanyAjax.CheckVatWebService gave an unexpected reponse.';
            }
            document.getElementById('VatValidation').value = 4;
            divError.innerHTML = RESX_COMPANY_ValidateVatNumberResponse_4 + ' ' + VatNumberApproveManually;
            return false;
            break;
        case 5: //VATNumberValid
            if (isPageSubmit) {
                throw 'CompanyAjax.CheckVatWebService gave an unexpected reponse.';
            }
            document.getElementById('VatValidation').value = 5;
            divError.innerHTML = RESX_COMPANY_ValidateVatNumberResponse_5;
            divError.style.color = 'darkgreen';
            return true;
            break;
        default:
            throw 'CompanyAjax.CheckVatWebService gave an unexpected reponse.';
            break;
    }
}

function input_ValidateUserNameExists(id) {
    var obj = document.getElementById(id);

    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);
    obj.value = formValue;

    if (UserAjax.Exists(formValue)) {
        divError.innerHTML = RESX_WARNING_UserNameExists;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

function itemchooser_ValidateMinimumLength(id, minLength) {
    var obj = eval(id).GetChosenId();
    if (obj.length < minLength) {
        if (minLength == 1) {
            document.getElementById(id + '_err').innerHTML = RESX_WARNING_PleaseMakeAChoice;
        } else {
            document.getElementById(id + '_err').innerHTML = RESX_WARNING_AtLeastXItemsShouldBeSelected.replace('{0}', minLength);
        }
        document.getElementById(id + '_holder').className = 'haserror';
        return false;
    };
    return true;
}

function select_ValidateMustSelect(id) {
    var obj = document.getElementById(id);
    
    if (obj.disabled) return true;

    var divError = document.getElementById(id + '_err');
    var formValue = trim(obj.value);
    obj.value = formValue;

    if (obj.selectedIndex == 0) {
        divError.innerHTML = RESX_WARNING_PleaseMakeAChoice;
        obj.className = 'haserror';
        return false;
    }
    return true;
}

//****** Clearerror
function cbList_ClearErrorMessage(id) {
    document.getElementById(id + '_holder').className = '';
    document.getElementById(id + '_err').innerHTML = '';
}

function input_ClearErrorMessage(obj) {
    obj.className = '';
    document.getElementById(obj.id + '_err').innerHTML = '';
}

function itemchooser_ClearErrorMessage(id) {
    document.getElementById(id + '_holder').className = '';
    document.getElementById(id + '_err').innerHTML = '';
}

function select_ClearErrorMessage(obj) {
    obj.className = '';
    document.getElementById(obj.id + '_err').innerHTML = '';
}

// Form submit routines
function form1_SetActionValue(i) {
    document.getElementById('action').value = i;
}

function form1_SubmitWithoutValidation(i) {
    if (!form1_ProhibitDoubleSubmit()) return false;
    document.getElementById('action').value = i;
    document.getElementById('aspnetForm').submit();
}

function form1_SubmitWithValidation(i) {
    if (!form1_OnSubmit()) return false;
    document.getElementById('action').value = i;
    document.getElementById('aspnetForm').submit();
}

var form_SubmitCounter = 0;
function form1_ProhibitDoubleSubmit() {
    form_SubmitCounter += 1;
    if (form_SubmitCounter > 1) return false;
    setTimeout('form_SubmitCounter=0', 2000);
    return true;
}
