﻿var allowExtensions = ['jpg', 'jpeg', 'gif', 'bmp'];
function ValidateFileExtension(sender, args) {
    if (Trim(args.Value) != "") {
        args.IsValid = isValidExtension(args.Value);
    }
}
//Trim the input text
function Trim(input) {
    var lre = /^\s*/;
    var rre = /\s*$/;
    if (input != undefined) {
        input = input.replace(lre, "");
        input = input.replace(rre, "");
    }
    return input;
}
function isValidExtension(fileName) {
    var fileParts = fileName.split(".");
    var fileExtension = fileParts[fileParts.length - 1];
    return arrayIndexOf(allowExtensions, fileExtension) != -1;
}
function arrayIndexOf(array, element) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == element)
            return i;
    }
    return -1;
}

function navigateTo(url) {
    if (Trim(url) != "" && Trim(url) != undefined) {
        window.location.href = url;
    }
}

function setDefaultValues(eElemsID, values) {

    for (var i in eElemsID) {
        var eElem = document.getElementById(eElemsID[i]);
        setValue(eElem, values[i]);
    }
}
function SelectAllCheckboxes(spanChk) {
    // Added as ASPX uses SPAN for checkbox
    var oItem = spanChk.children;
    var theBox = (spanChk.type == "checkbox") ? spanChk : spanChk.children.item[0];
    xState = theBox.checked;
    elm = theBox.form.elements;
    for (i = 0; i < elm.length; i++) {
        if (elm[i].type == "checkbox" && elm[i].id != theBox.id) {
            if (elm[i].checked != xState) {
                elm[i].click();
            }
        }
    }
}

function getValue(elemID, defaultValue) {
    var elem = document.getElementById(elemID);
    if (elem) {
        if (elem.value == "") {
            return defaultValue;
        }
        else {
            return elem.value;
        }
    }
    return "";
}

function getCascadingValue(cddID, defaultValue) {
    var cdd = $find(cddID);
    if (cdd) {
        var val = cdd.get_SelectedValue();
        if (val == "") {
            return defaultValue;
        }
        else {
            return val;
        }
    }
    return defaultValue;
}
function setPCEnabled(elemID, ittID, isPC) {
    var elem = document.getElementById(elemID);
    if (elem) {
        if (isPC || existOther) {
            elem.checked = true;
        }
        else {
            var itt = document.getElementById(ittID);
            if (itt) {
                var idx = itt.options.selectedIndex;
                if (itt.options[idx].parentNode.id == "optAll") {
                    elem.checked = true;
                }
            }
        }
        elem.disabled = false;
    }
}
function setJustification(enabled, elemID, lblNumCharsID) {
    if (enabled) {
        setEnabled([elemID]);
        //setFocus(elemID);
    }
    else {
        var elem = document.getElementById(elemID);
        if (elem) {
            elem.value = "";
        }
        var lbl = document.getElementById(lblNumCharsID);
        if (lbl) {
            lbl.innerHTML = "0";
        }
        setDisabled([elemID]);
    }
}

function writeITT(elemID, val) {
    var elem = document.getElementById(elemID);
    if (elem) {
        setValue(elem, val);
    }
}

function setFocus(elemID) {
    var elem = document.getElementById(elemID);
    if (elem) {
        if (elem.focus) {
            try {
                elem.focus();
            }
            catch (ex) {
                // do nothing 
            }
        }
    }
}

function setDisabled(eElemsID) {
    //alert(eElemsID);
    for (var i in eElemsID) {
        var elem = document.getElementById(eElemsID[i]);
        if (elem) {
            elem.disabled = true;
        }
    }
}
function setEnabled(eElemsID) {
    //alert("setEnabled: " + eElemsID);
    for (var i in eElemsID) {
        var elem = document.getElementById(eElemsID[i]);
        if (elem) {
            elem.disabled = false;
        }
    }
}

function setHeader(elemID, eElemsID) {
    var elem = document.getElementById(elemID);
    if (elem) {
        var str = ""; var sep = "";
        for (var i in eElemsID) {
            var elemF = document.getElementById(eElemsID[i]);
            if (elemF) {
                str += sep + elemF.value;
                sep = "&nbsp;-&nbsp;"
            }
        }
        elem.innerHTML = str;
    }
}

function itemWork(itemID, itemCode, itemITTID, itemNC, itemPC, itemJPC, itemShe, itemW, itemH, itemGuid, ittDesc) {
    this.ItemID = itemID;
    this.ItemCode = itemCode;
    this.ITTID = itemITTID;
    this.NumberCopies = itemNC;
    this.ParticularCase = itemPC
    this.JustificationPC = itemJPC;
    this.Sheet = itemShe;
    this.Width = itemW;
    this.Height = itemH;
    this.ItemGuid = itemGuid;
    this.ITTDescription = ittDesc;
}
function CategoryItemWork(itemFam, itemUse, itemCurt, itemTyp, itemGlassAcoustic, itemGlassThermal) {
    this.Family = itemFam;
    this.Utilization = itemUse;
    this.Curtain = itemCurt;
    this.Type = itemTyp;
    this.GlassAcoustic = itemGlassAcoustic;
    this.GlassThermal = itemGlassThermal;
}
function populateItemWork(item, callback) {
    for (var i in item) {
        var elem = document.getElementById(item[i][1]); //alert(item[i][1]+": "+item[i][0]);
        if (elem) setValue(elem, item[i][0]);
    }

    if (callback != undefined) {
        callback();
    }
}
function populateCategoryItemWork(itemCat, callback) {
    var lastCDD = null;
    for (var i in itemCat) {
        var cdd = $find(itemCat[i][1]);
        if (cdd != null) {
            cdd.set_SelectedValue(itemCat[i][0], itemCat[i][0]);
            cdd._onParentChange(null, true);

            lastCDD = cdd;
        }
    }

    if (callback != undefined) {
        callback();
    }
}
var t = 500;
function loadAfterPopulated(divModal, focusID, cddTID) {

    var cddGT = $find(cddTID);
    if (cddGT) {
        if (!cddGT._isPopulated()) {
            if (t > 0) {
                t -= 100;
                setTimeout(function() { loadAfterPopulated(divModal, focusID, cddTID); }, 500);
                return;
            }
        }

        t = 500;
        var div = document.getElementById('divAuxWait');
        var divModal = document.getElementById(divModal);
        if (div && divModal) {
            divModal.removeChild(div);
        }
    }

    setFocus(focusID);
}

function showItemWorkToChange(modalID, itemsWork, catItemWork, ittID) {

    var _div1 = document.getElementById(modalID);
    var div = document.createElement("div");

    div.setAttribute("id", "divAuxWait");
    div.innerHTML = "<span class='textForm'><br />&nbsp;por favor aguarde...</span>";

    //------------------------------------------------------------------    
    var _left = 0; // (document.body.clientWidth - w) / 2;
    div.style.left = "5px"; //(_left + document.body.scrollLeft) + "px";
    var _top = 0;  // (document.body.clientHeight - h) / 2;
    div.style.top = "5px"; //(_top + document.body.scrollTop) + "px";
    div.style.width = "630px";
    div.style.height = "480px";
    div.className = "divWait";
    //------------------------------------------------------------------        
    _div1.appendChild(div);

    populateItemWork(itemsWork);
    populateCategoryItemWork(catItemWork, function() { loadITTs(ittID); showModalPopup(modalID); });
}

function setValue(eElem, value) {
    switch (eElem.type.toString().toLowerCase()) {
        case "text":
        case "textarea":
        case "hidden":
            eElem.value = value;
            break;
        case "checkbox":
            if (value == "true") {
                eElem.checked = true;
            }
            else {
                eElem.checked = false;
            }
            break;
        case "select-one":
            for (var i = 0; i < eElem.options.length; i++) {

                if (eElem.options[i].value == value) {
                    eElem.options[i].selected = true;
                    break;
                }
            }
            break;
    }
}

function hideField(elemID) {
    var elem = document.getElementById(elemID);
    if (elem) elem.style.display = "none";
}

var changed = 0;
function recordChange() {
    changed = 1;
}
function recordChangeIfChangeKey(myevent) {
    if (myevent.which && !myevent.ctrlKey && !myevent.ctrlKey)
        recordChange(myevent);
}
function ignoreChange() {
    changed = 0;
}
function lookForChanges() {
    for (i = 0; i < document.forms.length; i++) {
        for (j = 0; j < document.forms[i].elements.length; j++) {
            var formField = document.forms[i].elements[j];
            var formFieldType = formField.type.toLowerCase();
            if (formFieldType == 'checkbox' || formFieldType == 'radio') {
                addHandler(formField, 'click', recordChange);
            } else if (formFieldType == 'text' || formFieldType == 'textarea') {
                if (formField.attachEvent) {
                    addHandler(formField, 'keypress', recordChange);
                } else {
                    addHandler(formField, 'keypress', recordChangeIfChangeKey);
                }
            } else if (formFieldType == 'select-multiple' || formFieldType == 'select-one') {
                addHandler(formField, 'change', recordChange);
            }
        }
        addHandler(document.forms[i], 'submit', ignoreChange);
    }
}
function warnOfUnsavedChanges(msg) {
    if (changed) {
        if ("event" in window) //ie
            event.returnValue = msg;
        else //netscape
            return false;
    }
}
function addHandler(target, eventName, handler) {
    if (target.attachEvent) {
        target.attachEvent('on' + eventName, handler);
    } else {
        target.addEventListener(eventName, handler, false);
    }
}

function countNumChars(elemID, elemIDTo, maxlength, classNameAct, className) {
    var elem = document.getElementById(elemID);
    var elemTo = document.getElementById(elemIDTo);
    if (elem && elemTo) {
        elemTo.className = classNameAct;
        if (maxlength > 0 && elem.value.length >= maxlength) {
            elem.value = elem.value.substring(0, maxlength);

            if (className != '') {
                elemTo.className = className;
            }
        }

        elemTo.innerHTML = elem.value.length;
    }
}

function showDivTransp(divID) {
    var _div = document.getElementById(divID);
    if (_div) {
        _div.style.display = "block";
        _div.style.width = SPW_GetDocumentWidth() + "px";
        _div.style.height = SPW_GetDocumentHeight() + "px";

        //alert(_div.style.height + ".." + _div.style.width);
    }
}
function showModalPopup(elemID) {

    var _div = document.getElementById(elemID);
    showDivTransp("divAll");

    if (_div) {

        var w = 600;
        var h = 400;

        var _left = (document.body.clientWidth - w) / 2;
        _div.style.left = (_left + document.body.scrollLeft) + "px";
        var _top = (document.body.clientHeight - h) / 2;
        _div.style.top = (_top + document.body.scrollTop) + "px";

        _div.className = "modalPopup divShow";

    }
}

function hideModalPopup(elemID) {
    var _div = document.getElementById(elemID);
    var _divAll = document.getElementById("divAll");
    if (_divAll) {
        _divAll.style.display = "none";
    }

    if (_div) {
        _div.className = "divHide";
    }
}

function clearLabel(elemID) {
    var _lbl = document.getElementById(elemID);
    if (_lbl) _lbl.innerHTML = "";
}

// mostra a mensagem
var timeout;
function showMessage(msg, timer, urlTO) {
    if (msg != "") {
        var _divMsg = document.getElementById("divShowInfo");
        if (_divMsg) {
            if (timer == undefined) timer = 4000;

            try {
                showDivMessagesInfo(msg);
                if (timer > 0) {
                    timeout = setTimeout(function() {
                        hideDivMessagesInfo(urlTO);
                    }, timer);
                }
            }
            catch (ex) {
                alert(msg);
            }
        }
        else {
            alert(msg);
        }
    }
}

function showHelp(contentID) {
    var _hfHelp = document.getElementById(contentID);
    if (_hfHelp) {
        if (_hfHelp.value != "") {
            showHelpMessage(formatContentToDiv(_hfHelp.value), 0);
        }
    }
}
function showHelpMessage(msg) {
    if (msg != "") {
        try {
            showDivMessagesHelpJQ(msg);
        }
        catch (ex) {
            alert(msg);
        }
    }
}

function showDivMessagesHelpJQ(msg) {

    $('#divHelp').dialog({
        modal: false,
        autoOpen: false,
        resizable: false,
        bgiframe: true,
        width: 650,
        height: 500,
        zIndex: 100002,
        position: 'center',
        title: 'Ajuda',
        open: function(event, ui) {
            $('#divHelpMsg').html(msg);
        },
        buttons: {
            'Fechar': function() {
                $(this).dialog('close');
            }
        }
    });


    $("#divHelp").dialog('open');

}


// mostra o div que mostra as ajudas
function showDivMessagesHelp(msg) {
    var _divMsg = document.getElementById("divHelpMsg");
    var _divAll = document.getElementById("divHelpAll");
    if (_divAll) {
        _divAll.style.display = "block";
        _divAll.style.width = SPW_GetDocumentWidth() + "px";
        _divAll.style.height = SPW_GetDocumentHeight() + "px";

        //alert(_divAll.style.height + ".." + _divAll.style.width);
    }
    if (_divMsg) {
        centerDivHelp(_divMsg);
        _divMsg.className = "divInfo divHelp";
        _span = document.getElementById("spanMsgHelp");
        if (_span) _span.innerHTML = msg;
    }
}
// esconde o div que mostra as ajudas
function hideDivMessagesHelp() {
    // parar o settimeout
    clearTimeout(timeout);

    var _divMsg = document.getElementById("divHelpMsg");
    var _divAll = document.getElementById("divHelpAll");
    if (_divAll) {
        _divAll.style.display = "none";
    }
    if (_divMsg) {
        _divMsg.className = "divHide";
        _span = document.getElementById("spanMsgHelp");
        if (_span) _span.innerHTML = "";
    }
}
function formatContentToDiv(content) {
    return (content.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\r\n|\r|\n/g, "<br />"));
}

// mostra o div que mostra as informações
function showDivMessagesInfo(msg) {
    var _divMsg = document.getElementById("divShowInfo");
    var _divAll = document.getElementById("divAll");
    if (_divAll) {
        _divAll.style.display = "block";
        _divAll.style.width = SPW_GetDocumentWidth() + "px";
        _divAll.style.height = SPW_GetDocumentHeight() + "px";

        //alert(_divAll.style.height + ".." + _divAll.style.width);
    }
    if (_divMsg) {
        centerDiv(_divMsg);
        _divMsg.className = "divShow divInfo";
        _span = document.getElementById("spanMsgInfo");
        if (_span) _span.innerHTML = msg;
    }
}
function centerDivHelp(div) {
    var _left = (document.body.clientWidth - 500) / 2;
    div.style.left = (_left + document.body.scrollLeft) + "px";
    var _top = (document.body.clientHeight - 500) / 2;
    div.style.top = (_top + document.body.scrollTop) + "px";

    //alert(div.style.left + " . " + (_top + document.body.scrollTop));
}

// centra o div no meio da janela
function centerDiv(div) {
    var _left = (document.body.clientWidth - 200) / 2;
    div.style.left = (_left + document.body.scrollLeft) + "px";
    var _top = (document.body.clientHeight - 150) / 2;
    div.style.top = (_top + document.body.scrollTop) + "px";

    //alert(div.style.left + " . " + (_top + document.body.scrollTop));
}
// esconde o div que mostra as informações
function hideDivMessagesInfo(urlTO) {
    // parar o settimeout
    clearTimeout(timeout);

    var _divMsg = document.getElementById("divShowInfo");
    var _divAll = document.getElementById("divAll");
    if (_divAll) {
        _divAll.style.display = "none";
    }
    if (_divMsg) {
        _divMsg.className = "divHide";
        _span = document.getElementById("spanMsgInfo");
        if (_span) _span.innerHTML = "";
    }

    if (Trim(urlTO) != "" && Trim(urlTO) != undefined) {
        navigateTo(urlTO);
    }
}

// altera a imagem das etiquetas e bloqueia o campo a indicar onde começa a impressão da etiqueta
function fnUseLabelPrinter(elem, imgID, printAfterID) {

    if ($(elem).is(":checked")) {
        var src = "images/labels1xn.gif";
        $("#" + imgID).attr("src", src);

        var readonly = true;
        var classe = "textnumberReadOnly";
        $("#" + printAfterID).val(1).attr("readonly", readonly).attr("className", classe);
    }
    else {
        var src = "images/labels2x5.gif";
        $("#" + imgID).attr("src", src);

        var classe = "textnumber";
        $("#" + printAfterID).val(1).removeAttr("readonly").attr("className", classe);
    }
}

function fnExcludeEnter(ev) {

    var keyCode;

    if (window.event) // IE
    {
        keyCode = event.keyCode;
    }
    else if (ev.which) // Netscape/Firefox/Opera
    {
        keyCode = ev.which;
    }

    if (keyCode == 13) return false;   //enter

    return true;
}

// mostra form para inserir uma nova etiqueta
function fnShowFormAddLabel(elemIDFocus) {

    if (changed) {
        msg = $("#hfMsgChanged").html();
        $("#spanMsgAddPrinterLabel").html(msg);
    }

    showDivTransp("divAll");

    $("#divAddNewLabel").center().show();

    setFocus(elemIDFocus);

}

// cancelou a inserção de uma nova etiqueta
function fnHideAddLabel() {

    $("#divAddNewLabel").hide();
    $("#divAll").hide();
}

/**/
function hideMessage(eElemID) {
    $("#" + eElemID).show().fadeOut(6000);
}

function ConfirmDelete(elemID) {

    if (changed) {
        msg = $("#hfMsgChanged").html();
        $("#spanMsgDeletePrinterLabel").html(msg);
    }

    showDivTransp("divAll");
    $("#" + elemID).center().show();
}
function CancelDelete(elemID) {
    $("#" + elemID).hide();
    $("#divAll").hide();
}

//funções para determinar o X e Y de um elemento, funciona em IE e FireFox
function SPW_GetAbsX(elt) { return (elt.x) ? elt.x : SPW_GetAbsPos(elt, "Left"); }
function SPW_GetAbsY(elt) { return (elt.y) ? elt.y : SPW_GetAbsPos(elt, "Top"); }
function SPW_GetAbsPos(elt, which) {
    iPos = 0;
    while (elt != null) {
        iPos += elt["offset" + which];
        elt = elt.offsetParent;
    }
    return iPos;
}
function SPW_GetDocumentWidth() {

    var w = document.documentElement.offsetWidth;
    if (window.scrollMaxX)
        w += window.scrollMaxX;

    return w;
}
function SPW_GetDocumentHeight() {

    return document.documentElement.offsetHeight;

}