//--********************************************************************-->
//--                                                                    -->
//--   Frontier Software Pty Ltd                                        -->
//--                                                                    -->
//--   File Name     : ftrlkup.js                                       -->
//--                                                                    -->
//--   History       :                                                  -->
//--   005876 - 02.07.00 - JavaScript Rewrite.                          -->
//--   008551 - 30.04.03 - SEARCH FOR DATE ON CALENDARS                 -->
//--   007634 - 02.07.03 - Clerical Self-Service.                       -->
//--   008930 - 01.08.03 - Speed up the start of the surname search     -->
//--   008997 - 30.09.03 - Cost Centre filter added                     -->
//--   009285 - 26.11.03 - Send uniqueonly in the GTR for wfelst        -->
//--   009286 - 27.02.04 - Review Salary Module                         -->           
//--   009347 - 23.02.04 - Add Day field to Date Search                 -->
//--   009442 - 11.02.04 - Hold Selected employee value                 -->
//--   009710 - 21.05.04 - Fix the Day returned from the date search    -->
//--   009980 - 08.09.04 - Allow searching on Detail Pages.             -->
//--   010374 - 08.12.04 - Change search to use detkeyname.             -->
//--   010408 - 15.03.05 - Format of filters enhanced                   -->
//--   010765 - 12.05.05 - Date validation removed                      -->
//--   010537 - 06.05.05 - Add Link Code to evaluation                  -->
//--   011225 - 25.10.05 - Correctly set the sHold variables            -->
//--   011691 - 22.03.06 - Approving Manager select corrected           -->
//--   011389 - 28.03.06 - Correct the Draft TR Election display.       -->
//--   011730 - 24.04.06 - Load Applicant Number if Vacancy exists      -->
//--   010643 - 04.05.07 - Correct the setting of Organisation Level    -->
//--   017681 - 07.02.11 - VERSION 2: STAFF LIST UPDATED FOR 7.5        -->
//--********************************************************************-->
//--Notes:                                                              -->
//--                                                                    -->
//--1. Please do not remove any "usekey" or "limitkey" keywords without -->
//--   first discussing your requirement with the Web Team Leader.      -->
//--                                                                    -->
//--********************************************************************-->

// This will contain the global Manager Number.
var sManNo = "";

// This will contain the global Manager Surname Initials.
var sManSurInit = "";

// This will contain the global Staff Sequence Number [WFE].
var iEmpSeqNo = 0;

// This will contain the global Staff Number [WFE].
var sEmpNo = "";

// This will contain the global Staff Surname Initials [WFE].
var sEmpSurInit = "";

// This will hold the Staff Sequence Number.
var iHoldEmpSeqNo = 0;

// This will hold any Staff Number.
var sHoldEmpNo = "";

// This will hold any Staff Surname Initials.
var sHoldEmpSurInit = "";

// This will contain the global Staff Number [DET].
var sDetNo = "";

// This will contain the global Staff Surname Initials [DET].
var sDetSurname = "";

// This will contain the global Applicant Number [APD].
var sApdNo = "";

// This will contain the glober date entry pay period date
var sPayPeriodDate = "";

// This will contain the joined date of the employee Number.
var sJoined = "";

//Search for employee surname and intials otherwise employee number
var bEmpSurInit = true;

// This will contain the global employee position number.
var sPosNumber = "";

// This will contain the global employee position title.
var sPosTitle = "";

// This will contain the global employee position status.
var sPosStatus = "";

// Use org Level when searching
var iUseOrgLvl = 0;

//contains the select key string for non-employee based pages
var sSelectKey = "";
var sSelectKey1 = "";
var bPdtCodeSelected = false;

// *********************************************************************
function lkupSearchEmpty(oContainer) {
    switch (loadPageType(oDataPage.location.href)) {
        case "L":
        case "S":
        case "T":
            oDataPage.document.getElementById("dataDiv0").innerHTML = "";
            break;
        case "D":
        case "U":
            oDataPage.clearClick();
            break;
    }
    iEmpSeqNo = iHoldEmpSeqNo = 0;
    sEmpNo = sHoldEmpNo = sEmpSurInit = sHoldEmpSurInit = "";
    messCompletion(5,-1);
    return;
}

// *********************************************************************
function lkupSearch(sDataDict, sDataDictValue) {
    // Ensure completion is reset
    iSuccessCount = 0;
    // Need to decide the type of searching being done
    switch (sDataDict) {
        case "wfesurinit":
            menuManSet();
            // Reset array of divs so that next page reloads from here onwards
            if (sDataPage.indexOf("wfetre") == -1) listDivsDelete();
            sEmpSurInit = sDataDictValue;
            lkupStaffNameSend(sDataDict,sDataDictValue,false);
            break;
        case "detsurname":
            // Reset array of divs so that next page reloads from here onwards
            listDivsDelete();
            switch (oDataPage.oSearch[sDataDict].mode) {
                case "man":
                    sDetSurname = sDataDictValue;
                    break;
                default:
                    menuManSet();
                    sEmpSurInit = sDataDictValue;
                    break;
            }
            lkupStaffNameSend(sDataDict,sDataDictValue,false);
            break;
        case "wfeempno":
            menuManSet();
            // Reset array of divs so that next page reloads from here onwards
            if (sDataPage.indexOf("wfetre") == -1) listDivsDelete();
            sEmpNo = sDataDictValue;
            lkupStaffNoSend(sDataDict,sDataDictValue,false);
            break;
        case "detnumber":
            // Reset array of divs so that next page reloads from here onwards
            listDivsDelete();
            switch (oDataPage.oSearch[sDataDict].mode) {
                case "man":
                    sDetNo = sDataDictValue;
                    break;
                default:
                    menuManSet();
                    sEmpNo = sDataDictValue;
                    break;
            }
            lkupStaffNoSend(sDataDict,sDataDictValue,false);
            break;
        case "wfecostctr":
        case "wfccostctr":
            // 008997 - Cost Centre filter added
            listSetSearchField("document.detForm." + sDataDict);
            listOpenSelect("esccgsel","CostCentreFilterList");
            break;
        case "i_date":
            if (oDataPage.oForm.i_date.value) {
                var sYear = validCorrectYear(oDataPage.oForm.i_date.value);
                // 9347 - Add Day field to date search
                oDataPage.goCal(sYear, oDataPage.oForm.i_month.selectedIndex, (oDataPage.oForm.i_day.selectedIndex + 1));
            }
            break;
        default:
            // Reset array of divs so that next page reloads from here onwards
            listDivsDelete();
            // Set value to select for
            if (sDataDictValue != "") {
                sSelectKey = sDataDictValue;
                sSelectKey1 = "";
                oGlob.bPdtCodeSelected = true;
            } else { 
                sSelectKey = arguments[2];
                sSelectKey1 = arguments[3];
                oGlob.bPdtCodeSelected = false;
            }
            oDataPage.sendGTR(true);
            break;
    }
    return; 
}

// *********************************************************************
function lkupStaffNoLoad(gtrContainer) {
    var bNextGTR = ((getGTRField(gtrContainer,"i_nextgtr").toString() == "") || (getGTRField(gtrContainer,"i_nextgtr").toString() == "wfelst"));
    // Send the next gtr
    return (bNextGTR == true) ? true : getGTRField(gtrContainer,"i_nextgtr").toString();
}

// *********************************************************************
function lkupStaffNoSend(sField, sFieldValue, bOperation) {
    var gtrHolder = new Object();
    // Search for the Staff Name
    if (oDataPage.oSearch[sField]) {
        switch (sField) {
            case "detnumber":
                setGTRField(gtrHolder,"cbr","detpar");
                setGTRField(gtrHolder,"detnumber",sFieldValue);
                break;
            case "wfeempno":
                setGTRField(gtrHolder,"cbr","wfelst");
                setGTRField(gtrHolder,"wfesecman",sManNo);
                setGTRField(gtrHolder,"wfeempno",sFieldValue);
                setGTRField(gtrHolder,"usekey","2");
                setGTRField(gtrHolder,"maxlines","1");
                setGTRField(gtrHolder,"limitkey","2");
                setGTRField(gtrHolder,"i_wfeenq","true");
                break;
        }
        // Shared keywords within the GTR
        setGTRField(gtrHolder,"currentonly");
        setGTRField(gtrHolder,"showtranslation","S");
        // Set the correct string for the search before sending the GTR
        if (bOperation) setGTRField(gtrHolder,"i_nextgtr",bOperation);
        sendGTR(gtrHolder,oDataPage.oSearch[sField]["label"] + " searching ...");
    }
    return;
}

// *********************************************************************
function lkupStaffNoInterpret(gtrContainer) {
    var oDataForm = oDataPage.document["detForm"];
    // Load the found Staff Number
    if ((sDataPage.indexOf("detsel") != -1) || (sDataPage.indexOf("detlst") != -1)) {
        sDetNo = getGTRField(gtrContainer,"detnumber");
        sDetSurname = getGTRField(gtrContainer,"detsurinit");
        sJoined = getGTRField(gtrContainer,"detdatejnd");
        // Set the Staff Number and Name
        if (getGTRField(gtrContainer,"info01").indexOf("BRE267") != -1) {
            if (oDataPage.oSearch["detnumber"]) {
                oDataForm.detnumber.focus();
                oDataForm.detnumber.select();
            }
            if (oDataPage.oSearch["detsurinit"]) oDataForm.detsurinit.value = "";
            lkupSearchEmpty(gtrContainer);
        } else {
            if (oDataPage.oSearch["detnumber"]) oDataForm.detnumber.value = sDetNo;
            if (oDataPage.oSearch["detsurinit"]) oDataForm.detsurinit.value = sDetSurname;
        }
    }
    return false;
}

// *********************************************************************
function lkupStaffNameSend(sField, sFieldValue, bOperation) {
    var gtrHolder = new Object();
    // Search for the Staff Name
    if (oDataPage.oSearch[sField]) {
        switch (sField) {
            case "detsurname":
                setGTRField(gtrHolder,"cbr","detlst");
                setGTRField(gtrHolder,"filter01","detkeyname:ge:" + sFieldValue + ":");
                setGTRField(gtrHolder,"usekey","2");
                break;
            case "wfesurinit":
                setGTRField(gtrHolder,"cbr","wfelst");
                setGTRField(gtrHolder,"wfeterman",sManNo);
                setGTRField(gtrHolder,"filter01","wfesurinit:ge:" + sFieldValue + ":");
                setGTRField(gtrHolder,"usekey","3");
                break;
        }
        // Shared keywords within the GTR
        setGTRField(gtrHolder,"maxlines","1");
        setGTRField(gtrHolder,"currentonly");
        setGTRField(gtrHolder,"sendfields","A");
        setGTRField(gtrHolder,"showtranslation","S");
        // Set the correct string for the search before sending the GTR
        if (bOperation) setGTRField(gtrHolder,"i_nextgtr",bOperation);
        sendGTR(gtrHolder,oDataPage.oSearch[sField]["label"] + " searching ...");
    }
    return;
}

// *********************************************************************
function lkupStaffNameInterpret(gtrContainer) {
    var oDataForm = oDataPage.document["detForm"];
    // Load the found Staff Name
    switch (gtrContainer["i_listposition"]) {
        case "i_start":
            break;
        case "i_end":
            if (getGTRField(gtrContainer,"info01").indexOf("BRE267") != -1) {
                var sWfeEnq = getGTRField(gtrContainer,"i_wfeenq");
                if (sWfeEnq == "true") {
                    if (oDataPage.oSearch["wfeempno"]) {
                        oDataForm.wfeempno.focus();
                        oDataForm.wfeempno.select();
                    }
                    if (oDataPage.oSearch["wfesurinit"]) oDataForm.wfesurinit.value = "";
                } else {
                    if (oDataPage.oSearch["wfeempno"]) oDataForm.wfeempno.value = "";
                    if (oDataPage.oSearch["wfesurinit"]) {
                        oDataForm.wfesurinit.focus();
                        oDataForm.wfesurinit.select();
                    }
                }
                lkupSearchEmpty(gtrContainer);
            } else {
                if (sDataPage.indexOf("wfetre") == -1) {
                    switch (gtrContainer["cbr"]) {
                        case "wfelst":
                            if (oDataPage.oSearch["wfeempno"]) oDataForm.wfeempno.value = sEmpNo = sHoldEmpNo;
                            if (oDataPage.oSearch["wfesurinit"]) oDataForm.wfesurinit.value = sEmpSurInit = sHoldEmpSurInit;
                            break;
                        case "detlst":
                            switch (oDataPage.oSearch["detsurname"].mode) {
                                case "man":
                                    if (oDataPage.oSearch["detnumber"]) oDataForm.detnumber.value = sDetNo;
                                    if (oDataPage.oSearch["detsurname"]) oDataForm.detsurname.value = sDetSurname;
                                    break;
                                default:
                                    if (oDataPage.oSearch["detnumber"]) oDataForm.detnumber.value = sEmpNo = sHoldEmpNo;
                                    if (oDataPage.oSearch["detsurname"]) oDataForm.detsurname.value = sEmpSurInit = sHoldEmpSurInit;
                                    break;
                            }
                            break;
                        default:                          
                            if (gDebug) alert("Error: Business Rule Type not recognised in the look up function.");
                            break;
                    }
                }
                return lkupStaffNoLoad(gtrContainer);
            }
            break;
        default:
            switch (gtrContainer["cbr"]) {
                case "wfelst":
                    iHoldEmpSeqNo = getGTRField(gtrContainer,"wfeseqno");
                    sHoldEmpNo = getGTRField(gtrContainer,"wfeempno");
                    sHoldEmpSurInit = getGTRField(gtrContainer,"wfesurinit");
                    sJoined = getGTRField(gtrContainer,"wfedatejnd");
                    if (sDataPage.indexOf("wfetre") == -1) {
                        iEmpSeqNo = iHoldEmpSeqNo;
                        sEmpNo = sHoldEmpNo;
                        sEmpSurInit = sHoldEmpSurInit;
                    }
                    break;
                case "detlst":
                    switch (oDataPage.oSearch["detsurname"].mode) {
                        case "man":
                            sDetNo = getGTRField(gtrContainer,"detnumber");
                            sDetSurname = getGTRField(gtrContainer,"detkeyname");
                            sJoined = getGTRField(gtrContainer,"detdatejnd");
                            break;
                        default:
                            sHoldEmpNo = sEmpNo = getGTRField(gtrContainer,"detnumber");
                            sHoldEmpSurInit = sEmpSurInit = getGTRField(gtrContainer,"detkeyname");
                            sJoined = getGTRField(gtrContainer,"detdatejnd");
                            break;
                    }
                    break;
            }
            break;
    }
    return false;
}

// *********************************************************************

