﻿// ---------------

function changeSelectedTab(pobjTabContainer) {
    var strAttribute     = null;
    var objControl       = null;
    var objHiddenControl = pobjTabContainer.getElementsByTagName("INPUT")[0];
    var arrDIVS          = null;
    
    if (objHiddenControl == null || objHiddenControl.nodeName.toUpperCase() != "INPUT" ||
        objHiddenControl.type.toUpperCase() != "HIDDEN") {
        return;
    }
    
    for (var i = 0; i < pobjTabContainer.childNodes.length; i++) {
        strAttribute = null;
        if (pobjTabContainer.childNodes[i].nodeName.toUpperCase() == "DIV") {
            strAttribute = pobjTabContainer.childNodes[i].firstChild.value;
        }
        if (strAttribute == null || strAttribute.length == 0) {
            continue;
        }
        objControl = document.getElementById(strAttribute);
        if (objControl == null) {
            continue;
        }
        
        arrDIVS = pobjTabContainer.childNodes[i].getElementsByTagName("DIV");
        
        if (strAttribute == objHiddenControl.value) {
            objControl.style.display = "inline";
            arrDIVS[0].className = arrDIVS[0].className.replace("_selected", "") + "_selected";
            arrDIVS[1].className = arrDIVS[1].className.replace("_selected", "") + "_selected";
            arrDIVS[2].className = arrDIVS[2].className.replace("_selected", "") + "_selected";
        } else {
            objControl.style.display = "none";
            arrDIVS[0].className = arrDIVS[0].className.replace("_selected", "");
            arrDIVS[1].className = arrDIVS[1].className.replace("_selected", "");
            arrDIVS[2].className = arrDIVS[2].className.replace("_selected", "");
        }
    }
}

function changeTab(pobjTabControl) {
    var objHiddenControl = pobjTabControl.parentNode.getElementsByTagName("INPUT")[0];
    
    if (objHiddenControl == null || objHiddenControl.nodeName.toUpperCase() != "INPUT" ||
        objHiddenControl.type.toUpperCase() != "HIDDEN") {
        return false;
    }
    
    if (objHiddenControl != null) {
        objHiddenControl.value = pobjTabControl.firstChild.value;
        changeSelectedTab(pobjTabControl.parentNode);
    }
    return false;
}

// ---------------

function verifySpecialKeys(pobjEvent) {
    if (pobjEvent.type == "keypress") {
        if (document.all) {
            return false;
        }
        return (pobjEvent.keyCode > 0);
    } else {
        return (pobjEvent.keyCode == 8 ||
            pobjEvent.keyCode == 9 ||
            pobjEvent.keyCode == 13 ||
            pobjEvent.keyCode == 33 ||
            pobjEvent.keyCode == 34 || 
            pobjEvent.keyCode == 35 || 
            pobjEvent.keyCode == 36 ||
            pobjEvent.keyCode == 37 ||
            pobjEvent.keyCode == 38 || 
            pobjEvent.keyCode == 39 ||
            pobjEvent.keyCode == 40 ||
            pobjEvent.keyCode == 46 ||
            pobjEvent.keyCode == 116);
    }
}

// ---------------

function applyUpperCase(pobjEvent, pobjCtrl) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    pobjCtrl.value = pobjCtrl.value.toUpperCase();
    return true;
}

// ---------------

function verifyAllowedValues(pobjEvent) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode).toUpperCase();
    if (("0123456789ABCDEFGHIJKLMNOPQRSTUVXWYZ ").indexOf(chrDigit) >= 0) {
        if(document.all)
        {
            pobjEvent.keyCode = chrDigit.charCodeAt(0);
        }
        else
        {
            var newEvent = document.createEvent("KeyEvents"); 
            newEvent.initKeyEvent("keypress", true, true, document.defaultView, 
                     pobjEvent.ctrlKey, pobjEvent.altKey, pobjEvent.shiftKey, 
                     pobjEvent.metaKey, 0, chrDigit.charCodeAt(0)); 
            pobjEvent.preventDefault(); 
            pobjEvent.target.dispatchEvent(newEvent); 
        }
        return true;
    }
    return false;
}

function validateAllowedValues(pobjCtrl) {
    pobjCtrl.value = pobjCtrl.value.toUpperCase();
    for (var i = 0; i < pobjCtrl.value.length; i++) {
        if (("0123456789ABCDEFGHIJKLMNOPQRSTUVXWYZ ").indexOf(pobjCtrl.value.substr(i, 1)) < 0) {
            alert(_strMessageInvalidChar);
            pobjCtrl.focus();
            return false;
        }
    }
    return true;
}

// ---------------

function verifyOnlyEmailChars(pobjEvent) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode).toLowerCase();
    if (("abcdefghijklmnopqrstuvxwyz@0123456789-_.").indexOf(chrDigit) >= 0) {
        if(document.all)
        {
            pobjEvent.keyCode = chrDigit.charCodeAt(0);
        }
        else
        {
            var newEvent = document.createEvent("KeyEvents"); 
            newEvent.initKeyEvent("keypress", true, true, document.defaultView, 
                     pobjEvent.ctrlKey, pobjEvent.altKey, pobjEvent.shiftKey, 
                     pobjEvent.metaKey, 0, chrDigit.charCodeAt(0)); 
            pobjEvent.preventDefault(); 
            pobjEvent.target.dispatchEvent(newEvent); 
        }
        return true;
    }
    return false;
}

function validateOnlyEmailChars(pobjCtrl) {
    if (pobjCtrl.value.length == 0) {
        return true;
    }

    if (pobjCtrl.value.indexOf("@") < 0 || 
        pobjCtrl.value.substr(pobjCtrl.value.length - 1, 1) == "@") {
        alert(_strMessageInvalidEmail);
        pobjCtrl.focus();
        return false;
    }
    
    var blnAt = false;

    for (var i = 0; i < pobjCtrl.value.length; i++) {
        if (pobjCtrl.value.substr(i, 1) == "@") {
            if (blnAt) {
                alert(_strMessageInvalidEmail);
                pobjCtrl.focus();
                return false;
            }
            blnAt = true;
        }
        if (("abcdefghijklmnopqrstuvxwyz@0123456789-_.").indexOf(pobjCtrl.value.substr(i, 1)) < 0) {
            alert(_strMessageInvalidEmail);
            pobjCtrl.focus();
            return false;
        }
    }
    return true;
}

// ---------------

function verifyOnlyText(pobjEvent) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode).toUpperCase();
    if (("ABCDEFGHIJKLMNOPQRSTUVXWYZÁÀÃÂÄÉÈÊËÍÌÏÎÓÒÔÕÖÚÙÛÜÇ ").indexOf(chrDigit) >= 0) {
        if(document.all)
        {
            pobjEvent.keyCode = chrDigit.charCodeAt(0);
        }
        else
        {
            var newEvent = document.createEvent("KeyEvents"); 
            newEvent.initKeyEvent("keypress", true, true, document.defaultView, 
                     pobjEvent.ctrlKey, pobjEvent.altKey, pobjEvent.shiftKey, 
                     pobjEvent.metaKey, 0, chrDigit.charCodeAt(0)); 
            pobjEvent.preventDefault(); 
            pobjEvent.target.dispatchEvent(newEvent); 
        }
        return true;
    }
    return false;
}

function validateOnlyText(pobjCtrl) {
    pobjCtrl.value = pobjCtrl.value.toUpperCase();
    for (var i = 0; i < pobjCtrl.value.length; i++) {
        if (("ABCDEFGHIJKLMNOPQRSTUVXWYZÁÀÃÂÄÉÈÊËÍÌÏÎÓÒÔÕÖÚÙÛÜÇ ").indexOf(pobjCtrl.value.substr(i, 1)) < 0) {
            alert(_strMessageInvalidDigit);
            pobjCtrl.focus();
            return false;
        }
    }
    return true;
}

// ---------------

function verifyOnlyNumbers(pobjEvent) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode);
    if (("0123456789").indexOf(chrDigit) >= 0) {
        return true;
    }
    return false;
}

function validateOnlyNumbers(pobjCtrl) {
    for (var i = 0; i < pobjCtrl.value.length; i++) {
        if (("0123456789").indexOf(pobjCtrl.value.substr(i, 1)) < 0) {
            alert(_strMessageInvalidNumber);
            pobjCtrl.focus();
            return false;
        }
    }
    return true;
}

// ---------------

function applyOnlyDecimalNumbers(pobjCtrl) {
    var strValor = pobjCtrl.value.replace(",", "");
    
    strValor = strValor.length > 0 ? parseFloat(strValor).toString() : "";
    
    strValor = strValor.replace(".", "");
    
    while (strValor.length < 3) {
        strValor = "0" + strValor;
    }
    
    pobjCtrl.value = strValor.substr(0, strValor.length - 2) + "," +
        strValor.substr(strValor.length - 2);
    
    return true;
}

//function verifyOnlyDecimalNumbers(pobjEvent, pobjCtrl) {
//    if (verifySpecialKeys(pobjEvent)) {
//        return true;
//    }

//    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
//    var chrDigit = String.fromCharCode(intKeyCode);
//    
//    if (("0123456789").indexOf(chrDigit) < 0) {
//        return false;
//    }
//    
//    var strValor = pobjCtrl.value.replace(",", ".");
//    
//    strValor = strValor.length > 0 ? parseFloat(strValor).toString() : "";
//    
//    strValor = strValor.replace(".", "");
//    
//    while (strValor.length < 2) {
//        strValor = "0" + strValor;
//    }
//    
//    pobjCtrl.value = strValor.substr(0, strValor.length - 1) + "," +
//        strValor.substr(strValor.length - 1);
//    
//    return true;
//}

function validateOnlyDecimalNumbers(pobjCtrl) {
    var blnComma = false;
    if (pobjCtrl.value.substr(0, 1) == ",") {
        alert(_strMessageInvalidNumber);
        pobjCtrl.focus();
        return false;
    }
    for (var i = 0; i < pobjCtrl.value.length; i++) {
        if (pobjCtrl.value.substr(i, 1) == ",") {
            if (blnComma) {
                alert(_strMessageInvalidNumber);
                pobjCtrl.focus();
                return false;
            }
            blnComma = true;
            continue;
        }
        if (("0123456789").indexOf(pobjCtrl.value.substr(i, 1)) < 0) {
            alert(_strMessageInvalidNumber);
            pobjCtrl.focus();
            return false;
        }
    }
    return true;
}

// ---------------

function verifyOnlyBoolean(pobjEvent) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode).toUpperCase();
    if (("SN").indexOf(chrDigit) >= 0) {
        if(document.all)
        {
            pobjEvent.keyCode = chrDigit.charCodeAt(0);
        }
        else
        {
            var newEvent = document.createEvent("KeyEvents"); 
            newEvent.initKeyEvent("keypress", true, true, document.defaultView, 
                     pobjEvent.ctrlKey, pobjEvent.altKey, pobjEvent.shiftKey, 
                     pobjEvent.metaKey, 0, chrDigit.charCodeAt(0)); 
            pobjEvent.preventDefault(); 
            pobjEvent.target.dispatchEvent(newEvent); 
        }
        return true;
    }
    return false;
}

function validateOnlyBoolean(pobjCtrl) {
    for (var i = 0; i < pobjCtrl.value.length; i++) {
        if (("SN").indexOf(pobjCtrl.value.substr(i, 1)) < 0) {
            alert(_strMessageInvalidBoolean);
            pobjCtrl.focus();
            return false;
        }
    }
    return true;
}

// ---------------

function verifyBadChars(pobjEvent) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode);
    if (("'\"<>").indexOf(chrDigit) >= 0) {
        return false;
    }
    return true;
}

function validateBadChars(pobjCtrl) {
    var strBadChars = "'\"<>";
    for (var i = 0; i < strBadChars.length; i++) {
        while (pobjCtrl.value.indexOf(strBadChars.substr(i, 1)) >= 0) {
            pobjCtrl.value = pobjCtrl.value.replace(strBadChars.substr(i, 1), "");
        }
    }
    return true;
}

// ---------------

function verifyCalendarMask(pobjEvent, pobjCtrl) {
    if (verifySpecialKeys(pobjEvent)) {
        return true;
    }
    var intKeyCode = document.all ? pobjEvent.keyCode : pobjEvent.which;
    var chrDigit = String.fromCharCode(intKeyCode);
    if (("0123456789").indexOf(chrDigit) >= 0) {
        while (pobjCtrl.value.indexOf("/") >= 0) {
            pobjCtrl.value = pobjCtrl.value.replace("/", "");
        }
        if (pobjCtrl.value.length > 2) {
            pobjCtrl.value = pobjCtrl.value.substr(0, 2) + "/" + pobjCtrl.value.substr(2);
        }
        if (pobjCtrl.value.length > 5) {
            pobjCtrl.value = pobjCtrl.value.substr(0, 5) + "/" + pobjCtrl.value.substr(5);
        }
        return true;
    }
    return false;
}

function validateDate(pobjCtrl) {
    if (pobjCtrl.value == 0) {
        return true;
    }
    if (pobjCtrl.value.length != 10) {
        alert(_strMessageInvalidDate);
        pobjCtrl.focus();
        return false;
    }
    var arrSplit = pobjCtrl.value.split("/");
    if (arrSplit.length != 3) {
        alert(_strMessageInvalidDate);
        pobjCtrl.focus();
        return false;
    }
    var intDay = parseFloat(arrSplit[0]);
    var intMonth = parseFloat(arrSplit[1]);
    var intYear = parseFloat(arrSplit[2]);
    if (intDay < 1 || intDay > 31 ||
        intMonth < 1 || intMonth > 12 || 
        intYear < 1900 || intYear > 2100) {
        alert(_strMessageInvalidDate);
        pobjCtrl.focus();
        return false;
    }
    if ((intMonth == 2 || intMonth == 4 || intMonth == 6 ||
        intMonth == 9 || intMonth == 11) && intDay > 30) {
        alert(_strMessageInvalidDate);
        pobjCtrl.focus();
        return false;
    }
    if (intMonth == 2 && ((intYear % 4 == 0 && intDay > 29) ||
        (intYear % 4 != 0 && intDay > 28))) {
        alert(_strMessageInvalidDate);
        pobjCtrl.focus();
        return false;
    }
    return true;
}