﻿
var rSelect;            // currently selected row in status and history
var aspID;              // asp part of elements id field
var hj;                 // element id of hidden Java field

var errMsgAdditional;   // additional info to add to page request errors
var errDiv;             // DisplayError container Id
var popErrors;          // Errors for Popup window
var popTitle;           // Title for Popup window
var popContent;         // Content for Popup window
var popCallPage;        // Page the Popup window is called from
var popCallBtn;         // Button the Popup is called from
var popClass;           // Style class for popup content
var popCursor;          // Cursor type for popup
var isPopError;         // Bool indicating if a postback error ocurred
var isPopup;            // Bool indicating if the Popup is currently visible
var isNewPost;          // Bool indicating if this is a new page request
var isPopupAllowed;
var popButtons;         // Array of Buttons to make visible (all others will be hidden)
var doPop = false;      // Flag set when actually doing Popup
var iPageMan;           // Handle to current PageRequestManager
    
errDiv = 'txtError';

function isEmpty(aVar) {
    if (aVar == null || aVar == undefined)
        return true;

    if(typeof(aVar) == 'string' && aVar == '')
        return true;

    return false;

}

function setAspID() {
    if(aspID == undefined)
        aspID = '';
    
    var iEl = document.getElementsByTagName("div");
    for (var i = 0; i < iEl.length; i++) {
        if(iEl[i].id.lastIndexOf('cphNavBody') > 0) {
            aspID = iEl[i].id.substring(0, iEl[i].id.lastIndexOf('cphNavBody') + 11);
            break;
        }
        if(iEl[i].id.lastIndexOf('cphBody') > 0) {
            aspID = iEl[i].id.substring(0, iEl[i].id.lastIndexOf('cphBody') + 8);
        }
    }
    iEl = document.getElementsByTagName("input");
    for (i = 0; i < iEl.length; i++) {
        if (iEl[i].id.lastIndexOf('hdnJava') > 0) {
            hj = iEl[i].id;
            break;
        }
    }
}


function getCtrl(xEl) {
    var nEl = null;

    try {
        if(aspID == undefined)
            setAspID();
            
        nEl = document.getElementById(aspID + xEl);
        if (nEl == null)
            nEl = document.getElementById(xEl);
        
        if (nEl == null){
            var j = -1;
            var allEls = document.getElementsByTagName("*");
            for(var i = 0; i < allEls.length; i++){
                if((j = allEls[i].id.lastIndexOf(xEl)) > 0){
                    if((j + xEl.length) == allEls[i].id.length){
                        nEl = allEls[i];
                        break;
                    }
                }
            }
        }
    }
    catch (xerr) { }

    return nEl;
}

function sysDebug(x, y) {
    try {
        if (y == undefined)
            Sys.Debug.trace(x);

        else
            Sys.Debug.traceDump(x, y);

    }
    catch (xerr) { }
}

// disable the navigation menu while changing pages
function tempDisableNav(evt) {
    var nm = document.getElementById('navMenuBar');
    var nv = getEventSrc(evt);
    var nUrl = nv.href;
    
    if(nm != null && nv != null) {
        disablePage(); ;
        nv.blur();
        nm.disabled = true;
        nm.className = "navBar-disabled";

        for(var i = 1; i <= 5; i++) {
            nv = getCtrl('sm' + i.toString());
            if(nv != null) {
                if(nv.href.indexOf(document.URL) >= 0)
                    nv.className = 'nav-disabled';

                else
                    nv.className = 'nav-none';

                nv.disabled = true;
            }
        }
        //window.open(nUrl, '_self');
        window.location.replace(nUrl);
    }
}

function disableNavMenu() {
    try {
        for(var i = 2; i < 6; i++) {
            var mOpt = getCtrl('sm' + i.toString());
            mOpt.className = "nav-disabled";
            mOpt.href = "#";
            mOpt.disabled = true;
        }
        mOpt = getCtrl('sm1');
        mOpt.innerHTML = "login";
        getCtrl('txtUser').innerHTML =
            "<span style='color:maroon; text-transform:lowercase;'>[ not logged in ]</span>";
        getCtrl('txtLocation').innerHTML = "";
        getCtrl('content_box').disabled = true;
        getCtrl('right_col').disabled = true;
        disablePage();
    }
    catch(ex) { }
    
}

// disable the menu item for the current page // mId
function hideMenu() {
    try {
        if(sessionError()) {
            disableNavMenu();
        }
        else {
            for(var i = 2; i <= 5; i++) {
                nv = getCtrl('sm' + i.toString());
                if(nv != null && nv.href.indexOf(document.URL) >= 0) {
                    nv.className = 'nav-disabled';
                    nv.href = "#";
                    break;
                }
            }
        }
    }
    catch (err) { }
}

function sessionError() {
    try {
        var dNow = new Date();
        var dSess = new Date(getCtrl('hdnSession').value);

        if(isNaN(dSess) || dNow > dSess) {
            return true;
        }

        else {
            return false;
        }

    }
    catch(ex) { }

}


function disableOrderButton(yBool) {
    var btn = getCtrl('btnOrder');
    if(btn != null) {
        getCtrl('divOrderBtn').disabled = yBool;
        btn.className = "place-order-" + (yBool ? 'disabled' : 'button');
        btn.disabled = yBool;
        btn.title = (yBool ? "Please enter ALL required fields, including a PO Number" : "");
    }
}

function disableCancelButton(yBool) {
    var btn = getCtrl('btnCancel');
    if(btn != null) {
        btn.className = "cancel-" + (yBool ? 'disabled' : 'button');
        btn.disabled = yBool;
    }
}

function disableButton(xBtn, xBool) {
        var xId = xBtn.className.substring(0, xBtn.className.lastIndexOf('-'));
        if(xId.length > 0) {
            xBtn.className = xId + (xBool ? "-disabled" : "-button");
            xBtn.disabled = xBool;
        }
    }

// Disable the element that triggered this routine (usually a button)
function btnDisable(xEl) {
    try {
        window.event.srcElement.disabled = true;
        ShowProgress(xEl, true);
    }
    catch (xerr) { }
}

function ShowProgress(yEl, yBool){
    try {
        if (yEl != undefined) {
            var cur = yBool ? "progress" : "default";

            switch (yEl) {
                case ('login'):
                    setCursor(cur, "login-box");
                    getCtrl("login-box").disabled = yBool;
                    break;

                case ('location'):
                    setCursor(cur, "login-box");
                    getCtrl("login-box").disabled = yBool;
                    setCursor(cur, "location-box");
                    getCtrl("location-box").disabled = yBool;
                    break;

                case ('create' || 'status' || 'history'):
                    setCursor(cur, "content_box");
                    getCtrl("content_box").disabled = yBool;
                    break;

                case ('status'):
//                    setCursor(cur, "content_box");
//                    getCtrl("content_box").disabled = yBool;
                    break;

                case ('history'):
//                    setCursor(cur, "content_box");
//                    getCtrl("content_box").disabled = yBool;
                    break;

                default:

            }
        }
    }
    catch (xerr) { }
}

function setCursor(xCur, nEl) {
    try {
        var v = getCtrl(nEl);
        v.style.cursor = xCur;
    }
    catch (xerr){}

}


function isJava() {
    try {
        var ctl = document.getElementById(hj);
        if (hj != undefined)
            ctl.value = "true";
            
    }
    catch (xerr) { }
}


function chkUserDetails() {
    var aUser = document.getElementById("txtUser");
    var aPass = document.getElementById("txtPass");
    var aErr = "";

    if (aUser == null || aUser[0].value == "")
        aErr = "User Name";

    if (aPass == null || aPass[0].value == "") {
        if (aErr == "")
            aErr = " Password";

        else
            aErr = " and Password";

    }

    if (aErr != "") {
        aErr = "Please enter a " + aErr;
        var aTxt = getCtrl("txtError");
        aTxt[0].value = aErr;
        aTxt[0].style.visibility = "visible";
    }

}

// Change row attributes in Status screens on mouse hover

function getHover(evt) {
    return;
    try {
        if(window.location.href.indexOf("statusBranded") < 0)
            return;
            
        var aEl = getEventSrc(evt);
            
    }
    catch(em) { }
}

function rowHover(evt) {
    try {
        var aRow = getEventSrc(evt);
        if(aRow.nodeType != 1 || aRow.tagName != "TD")
            return;

        aRow = aRow.parentNode;
        if(aRow.rowIndex > 0 && aRow.rowIndex < (aRow.parentNode.rows.length - 1)) {
            if(aRow.className != "selectStatus")
                aRow.className = "hoverStatus";

        }

    }
    catch(em) {  }
}

function rowLeave(evt) {
    try {
        var aRow = getEventSrc(evt);
        if(aRow.tagName != "TD")
            return;

        aRow = aRow.parentNode;
        if(aRow.className != "selectStatus" && aRow.rowIndex > 0 && aRow.rowIndex < (aRow.parentNode.rows.length - 1)) {
            if((aRow.rowIndex / 2) != Math.round(aRow.rowIndex / 2)) {
                aRow.className = "itemStatus";
            }
            else
                aRow.className = "altStatus";

        }

    }
    catch(em) { }
}

function rowSelect(evt) {
    try {
        var aRow = getEventSrc(evt).parentNode;
        var aPar = aRow.parentNode.parentNode;
        var srvId = aPar.id.substring(0, aPar.id.lastIndexOf("dgStatus"));
        var x = aPar.id.lastIndexOf("dgStatus");
        if (rSelect != undefined) 
            var xr = aRow.parentNode.rows[rSelect];
            
        else
            var xr = aRow.parentNode.rows[1];


        if (xr != undefined && xr.className == "selectStatus") {
            if ((xr.rowIndex / 2) != (Math.round(xr.rowIndex / 2))) {
                xr.className = "itemStatus";
            }
            else {
                xr.className = "altStatus";
            }
        }

        aRow.className = "selectStatus";
        rSelect = aRow.rowIndex;

        var aTbl = getCtrl("tblStat").rows[rSelect-1];
        var aDv = getCtrl("dvStatus");
        for (var i = 0; i < aDv.rows.length;  i++)
            aDv.rows[i].cells[1].innerHTML = aTbl.cells[i].innerHTML;
        
    }
    catch (em) { }
        
}

function ClearHistoryTables() {
    var dg = getCtrl('dgStatus');
    if(dg != null)
        for(var i = (dg.rows.length - 1); i >= 0; i--)
        dg.deleteRow(i);
           

    dg = getCtrl('dvStatus');
    if(dg != null)
        for(var i = (dg.rows.length - 1); i >= 0; i--)
        dg.deleteRow(i);
}
        

// Reset options depending on Date Period selection
function sltChange(evt) {
    try {
        var xMe = getEventSrc(evt);
        var slt = xMe.id.substring(xMe.id.lastIndexOf('slt') + 3).toLowerCase();

        if (slt != "year") {
            getCtrl("sltWeek").selectedIndex = (slt != "week" ? 0 : xMe.selectedIndex);
            getCtrl("sltMonth").selectedIndex = (slt != "month" ? 0 : xMe.selectedIndex);
            getCtrl("sltQuarter").selectedIndex = (slt != "quarter" ? 0 : xMe.selectedIndex);
        }

        var showD = getCtrl("txtShowDates");
        if (showD != undefined) {
            var sd = calcHistoryPeriod();
            if (sd.lastIndexOf("Errors") > 0)
                showD.style.color = "maroon";

            else {
                showD.style.color = "olive";
                sd = "Lookup History for " + sd;
            }

            showD.innerHTML = sd;
        }
    }

    catch (err) {}
}

function statusToolTips() {

    var _grid = getCtrl('dgStatus');
    try {
        _grid.rows[0].cells[0].title = 'Projected Service Date';
        _grid.rows[0].cells[1].title = 'EWC Code';
        _grid.rows[0].cells[2].title = 'Order Position Number';
        _grid.rows[0].cells[3].title = 'Type of Service';
        _grid.rows[0].cells[4].title = 'Quantity Ordered';
        _grid.rows[0].cells[5].title = 'Your Purchase Order number';
        _grid.rows[0].cells[6].title = 'Current State of Order Position';
    }
    catch(ex) { }

}

function historyToolTips() {

    var _grid = getCtrl('dgStatus');
    try {
        _grid.rows[0].cells[0].title = 'Service Date';
        _grid.rows[0].cells[1].title = 'EWC Code';
        _grid.rows[0].cells[2].title = 'Order Position Number';
        _grid.rows[0].cells[3].title = 'Type of Service';
        _grid.rows[0].cells[4].title = 'Quantity Ordered';
        _grid.rows[0].cells[5].title = 'Date Invoiced';
        _grid.rows[0].cells[6].title = 'Invoice Number';
    }
    catch(ex) { }

}

function calcHistoryPeriod() {
        var ldates = "";
        try {
            var yr = getCtrl("sltYear").value;
            var wk = getCtrl("sltWeek").selectedIndex;
            var mn = getCtrl("sltMonth").selectedIndex;
            var qr = getCtrl("sltQuarter").selectedIndex;

            switch (true) {
                case (wk > 0):
                    var dX = new Date(yr, 0, 1);
                    dX.setDate(1 + ((wk - 1) * 7) + dayAdjust(yr));
                    var dY = new Date(dX.getFullYear(), dX.getMonth(), dX.getDate() + 6);
                    break;

                case (mn > 0):
                    var dX = new Date(yr, mn - 1, 1);
                    var dY = new Date(dX.getFullYear(), dX.getMonth() + 1, dX.getDate() - 1);
                    break;

                case (qr > 0):
                    var dX = new Date(yr, ((qr - 1) * 3), 1);
                    var dY = new Date(dX.getFullYear(), dX.getMonth() + 3, dX.getDate() - 1);
                    break;

                default:
                    var dX = new Date(yr, 0, 1);
                    var dY = new Date(dX.getFullYear() + 1, dX.getMonth(), dX.getDate() - 1);
                    break;

            }

            ldates = dX.toLocaleDateString() + " to " + dY.toLocaleDateString() + "...";

        }
        catch (err) {
            ldates = "Date Errors: There seems to be a problem with the specified dates!";
        }
    return ldates;

}

function dayAdjust(xYear) {
    var dAd = 0;
    var dX = new Date(xYear, 0, 1);

    switch (dX.getDay())
    {
        case (2):
            dAd = -1;
            break;

        case (3):
            dAd = -2;
            break;

        case (4):
            dAd = -3;
            break;

        case (5):
            dAd = 3;
            break;

        case (6):
            dAd = 2;
            break;

        case (0):
            dAd = 1;
            break;

        default:
            dAd = 0;
            break;

    }
    return dAd;
            
}

// Enable/Disable Order Screen Options
function EnableOrderScreen(xSet) {
    
    try {
        var xErr = getCtrl("txtError");
        if (xErr != undefined && (xErr.value == "" || xSet)) {
            getCtrl("tblProduct").disabled = !xSet;
            getCtrl("tblContainer").disabled = !xSet;
            getCtrl("tblPosition").disabled = !xSet;
            getCtrl("tblQuantity").disabled = !xSet;
            getCtrl("tblStatus").disabled = !xSet;
        }
    }

    catch (err) {}

}

function infoCloseIt(xWin, yn){
    if(xWin != null)
        xWin.close();
        
    
}

function setPopupPosition() {
    var mx, my, me, pop;
    var fill = '0000';
    mx = (window.event.clientX - 150).toString();
    my = (window.event.clientY - 100).toString();
    me = window.event.srcElement;
    
    
    var srvId = me.id.substring(0, me.id.lastIndexOf('btnCancel'));
    if (srvId != null){
        pop = document.getElementById(srvId + 'pnlXY');
        if (pop != null) {
            pop.value = fill.substr(0, 4 - mx.length) + mx + ',' + fill.substr(0, 4 - my.length) + my;
        }
    }

}

// Get Window Event Object

function getEventSrc(evt) {
    if (!evt)
        var evt = window.event;

    if (evt.target)
        var eSrc = evt.target;

    else if (evt.srcElement)
        var eSrc = evt.srcElement;

    if (eSrc.nodeType == 3) // defeat Safari bug
        eSrc = eSrc.parentNode;

    return eSrc;

}


function getEventObj(evt) {
    if (!evt)
        var evt = window.event;

    return evt;

}


function ResetImgError(evt) {
    try {
        var ev = getEventSrc(evt);
        var xEl = ev.id;
        var v = aspID;
        var i = String(v).length + 3;
        var xId = xEl.substring(i);

        if(ev.value != "" && ev.value.indexOf("...") < 0)
            getCtrl("img" + xId + "Err").className = "errorImage";

        var eCol = document.getElementsByTagName("img");
        var j = eCol.length;
        for (i = 0; i < eCol.length; i++) {
                j--;
        }
        if (j < 1) {
            var elErr = getCtrl("txtError");
            if (elErr != undefined)
                elErr.value = "";

        }
    }

    catch (xErr) {}

}

function GetDeliveryDate() {
    try {
        var xDate = getCtrl("hdnDel").value;
        
        if(typeof(xDate) == "string"){
            getCtrl("txtDate").innerHTML = "Projected delivery: " + xDate;
        }
    }
    catch (xerr) {}
}


function checkOrderQty() {
    var _err = true;
    
    try {
        var n = getCtrl('txtQuantity');
        if(isNaN(parseInt(n.value)) || n.selectedIndex < 1 || n.selectedIndex > (n.length + 1)) {
            ToggleAlertDiv("Please enter a valid Quantity!");
            getCtrl('imgQuantityErr').className = 'errorImage-visible';
            getCtrl("txtDate").innerHTML = "";
        }
        else {
            getCtrl('imgQuantityErr').className = 'errorImage';
            GetDeliveryDate();
            ToggleAlertDiv("");
            _err = false;
        }
        
        disableOrderButton((_err || isEmpty(getCtrl('txtPOrder').value)));
        return !_err;
    }
    catch(ex) { return false; }

}

function checkIsPO() {
    var _err = true;

    try {
        var m = getCtrl('txtPOrder').value;
        _err = updatePOCheck(m);

    }
    catch (ex) { }
    
    return !_err;
}

function checkPOKey(e) {
    var keynum

    if (window.event) { // IE
        keynum = e.keyCode
    }
    else if (e.which) { // Netscape/Firefox/Opera
        keynum = e.which
    }
    if (keynum != 9)
        checkIsPO();
        
}

function updatePOCheck(n) {
    try {
        if(isEmpty(n)){
            ToggleAlertDiv("Please enter a Purchase Order number!");
            getCtrl('imgPOrderErr').className = 'errorImage-visible';
        
        }
        else {
            ToggleAlertDiv("");
            getCtrl('imgPOrderErr').className = 'errorImage';
        }
        disableOrderButton((isEmpty(n) || isEmpty(getCtrl('txtQuantity').value)));
    }
    catch (ex) { }
    return isEmpty(n);
}

function setVisiblity(ct, ib) {
    try {
        ct.style.display = ib ? "" : "none";
    }
    catch(ex) {}
}


/// ---------------------------------------- ///
// Image loading and Swapping
/*
function MM_preloadImages() { //v3.0
    var d = document;
    if (d.images) {
        if (!d.MM_p)
            d.MM_p = new Array();
        var i, j = d.MM_p.length, a = MM_preloadImages.arguments;

        for (i = 0; i < (a.length); i++)
            if (a[i].indexOf("#") != 0) {
            d.MM_p[j] = new Image;
            d.MM_p[j++].oSrc = a[i]; 
        }
    }
}

function MM_swapImgRestore() { //v3.0
    var i, x, a = document.MM_sr;
    for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
        x.src = x.oSrc;
}

function MM_findObj(n, d) { //v4.01
    var p, i, x;
    if (!d)
        d = document;
    if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document;
        n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all)
        x = d.all[n];
    for (i = 0; !x && i < d.forms.length; i++)
        x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++)
        x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById)
        x = d.getElementById(n);
    return x;
}

function MM_swapImage() { //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments;
    document.MM_sr = new Array;

    for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) {
        document.MM_sr[j++] = x;
        if (!x.oSrc)
            x.oSrc = x.src;
        x.src = a[i + 2];
    }
}
*/

/// --------------------- End ------------------- ///
// Add two custom controls to the application.
//    $create(Demo.HoverButton, { text: 'A HoverButton Control' },
//        { click: start, hover: doSomethingOnHover,
//            unhover: doSomethingOnUnHover
//        },
//        null, $get('Button1'));
//    $create(Demo.HighVis, null, null, null, $get('Button2'));

/// ------------ Confirm Ajax Loaded ------------ ///
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

