var TheLoadedJobNumber;
var IsAllowed = false;
var ValidateMessage = "";
var MaterialMode = "Add";
var EditableRow;

var NotesNoteNumber = new Array();
var NotesEnglishText = new Array();
var NotesMetricText = new Array();

var SpanList = new Array("AddTag","TagList", "Reports");
var theJobNumber;
var JobName = new Array();
var JobNumber = new Array();
var JobLocation = new Array();
var JobArchitect = new Array();
var JobEngineer = new Array();
var JobDesigner = new Array();
var JobDateCreated = new Array();
var JobDateRevision = new Array();
var JobMetric = new Array();
var JobID = new Array();
var theUser;
var StartJobPoint = new Array();
var aRow = 0;

var EqMasterEQ_TYPE = new Array();
var EqMasterEQ_CAT = new Array();
var EqMasterEH_HPOTHER = new Array();
var EqMasterEH_HPOTHRM = new Array();
var EqMasterRPM = new Array();
var EqMasterSOG_BASETYPE = new Array();
var EqMasterSOG_ISOTYPE = new Array();
var EqMasterSOG_DEFLECTION = new Array();
var EqMasterSTo20_BASETYPE = new Array();
var EqMasterSTo20_ISOTYPE = new Array();
var EqMasterSTo20_DEFLECTION = new Array();
var EqMasterS20To30_BASETYPE = new Array();
var EqMasterS20To30_ISOTYPE = new Array();
var EqMasterS20To30_DEFLECTION = new Array();
var EqMasterS30To40_BASETYPE = new Array();
var EqMasterS30To40_ISOTYPE = new Array();
var EqMasterS30To40_DEFLECTION = new Array();
var EqMasterNOTES = new Array();
var StartMasterEqPoint = new Array();

var JobEqJOBNO = new Array();
var JobEqTAG = new Array();
var JobEqSPAN = new Array();
var JobEqEQUIPTYPE = new Array();
var JobEqCATEGORY = new Array();
var JobEqHP_SP = new Array();
var JobEqRPM = new Array();
var JobEqNOTES = new Array();
var JobEqBase = new Array();
var JobEqIsolatorType = new Array();
var JobEqDefl = new Array();


function LoadJobNumber() {
    Isoguide.LstJobNumber.length = 0;
    for(F=StartJobPoint[Isoguide.LstJobName.selectedIndex]; F < JobName.length; F++) {

        if(JobName[F] == Isoguide.LstJobName.value) {
            addAnItemToSelect(JobNumber[F], "LstJobNumber", "Isoguide");
        }
        else {
            break;
        }
        
    }
	
	for(F = 0; F < JobName.length; F++){
		if(JobName[F] == Isoguide.LstJobName.value ){
			TheLoadedJobNumber = JobID[F];
			break;
		}
	}
//	LoadJobData(StartJobPoint[Isoguide.LstJobName.selectedIndex]);
 	LoadJobData(F);  
}

function LoadJobData(R) {
	//R = Isoguide.LstJobName.selectedIndex;
	    Isoguide.txtJobNumber.value = JobNumber[R];
    Isoguide.Location.value = JobLocation[R];
    Isoguide.Architect.value = JobArchitect[R];
    Isoguide.Engineer.value = JobEngineer[R];
    Isoguide.Designer.value = JobDesigner[R];
    Isoguide.CreatedDate.value = JobDateCreated[R];
    Isoguide.RevisionDate.value = JobDateRevision[R];
    if(JobMetric[R] == "Y") {
        Isoguide.MetricSystem.checked = true;
    }
    else {
        Isoguide.MetricSystem.checked = false;
    }
    LoadEqData();
}

function FindJobIndexNumber() {
    
    for(F=StartJobPoint[Isoguide.LstJobName.selectedIndex]; F < JobName.length; F++) {
        if(JobNumber[F] == Isoguide.LstJobNumber.value) {
            break;
        }
    }
    theJobNumber = JobID[F];
 //   LoadJobData(F);
    LoadEqData();
    Validate();
}

function LoadCategory() {
    Isoguide.LstEquipCategory.length = 0;
    for(C=StartMasterEqPoint[Isoguide.LstEquipType.selectedIndex]; C < EqMasterEQ_CAT.length; C++) {
        found = "N";
        if(Isoguide.LstEquipType.value == EqMasterEQ_TYPE[C]) {
            found = "Y";
        }
        if(found == "Y") {
            found = "N";
            for(X=0; X < Isoguide.LstEquipCategory.length; X++) {
                if(Isoguide.LstEquipCategory(X).value == EqMasterEQ_CAT[C]) {
                    found = "Y";
                    break;
                }
            }
            if(found == "N") {
                addAnItemToSelect(EqMasterEQ_CAT[C], "LstEquipCategory", "Isoguide"); 
            }
        }
    }
}

function LoadHP() {
    Isoguide.LstEquipHP.length = 0;
    for(C=StartMasterEqPoint[Isoguide.LstEquipType.selectedIndex]; C < EqMasterEQ_CAT.length; C++) {
        found = "N";
        if((Isoguide.LstEquipType.value == EqMasterEQ_TYPE[C]) && (Isoguide.LstEquipCategory.value == EqMasterEQ_CAT[C])) {
            found = "Y";
        }
        
        if(found == "Y") {
            found = "N";
            if(Isoguide.MetricSystem.checked == false) {
                whichArray = EqMasterEH_HPOTHER;
            }
            else {
                whichArray = EqMasterEH_HPOTHRM;
            }
                
                
            for(X=0; X < Isoguide.LstEquipHP.length; X++) {
                if(Isoguide.LstEquipHP(X).value == whichArray[C]) {
                    found = "Y";
                    break;
                }
            }
            if(found == "N") {
                addAnItemToSelect(whichArray[C], "LstEquipHP", "Isoguide"); 
            }
        }
    }
}

function LoadRPM() {
    Isoguide.LstEquipRPM.length = 0;
    for(C=StartMasterEqPoint[Isoguide.LstEquipType.selectedIndex]; C < EqMasterEQ_CAT.length; C++) {

        found = "N";
        if((Isoguide.LstEquipType.value == EqMasterEQ_TYPE[C]) && (Isoguide.LstEquipCategory.value == EqMasterEQ_CAT[C]) && (Isoguide.LstEquipHP.value == EqMasterEH_HPOTHER[C] || Isoguide.LstEquipHP.value == EqMasterEH_HPOTHRM[C])) {
            found = "Y";

        }
        if(found == "Y") {
            found = "N";
            for(X=0; X < Isoguide.LstEquipRPM.length; X++) {
                if(Isoguide.LstEquipRPM(X).value == EqMasterRPM[C]) {
                    found = "Y";
                    break;
                }
            }
            if(found == "N") {
                addAnItemToSelect(EqMasterRPM[C], "LstEquipRPM", "Isoguide"); 
            }
        }
    }
}

function LoadEqData(){
    Z = GetJobID();
    theJobId = JobID[Z];
	
	theJobId = TheLoadedJobNumber;
    theRow = 0;
    Isoguide.LstTag.length = 0;
    for(I=0;I < JobEqJOBNO.length; I++) {
        if(theJobId == JobEqJOBNO[I]) {
            ActualLoadTheEqData(I, theRow);
            addAnItemToSelect(JobEqTAG[I], "LstTag", "Isoguide");
            theRow++;
        }
    }
    for(C=theRow; C < Isoguide.equipmenttag.length;C++) {
        if(Isoguide.equipmenttag(C).value != ""){
            Isoguide.equipmenttag(C).value = "";
            Isoguide.equipmenttype(C).value = "";
            Isoguide.equipmentcategory(C).value = "";
            Isoguide.hidequipmenthp(C).value = "";
            Isoguide.hidequipmentrpm(C).value = "";
            Isoguide.hidequipmentnotes(C).value = "";
            Isoguide.hidequipmentspan(C).value = "";
            Isoguide.hidequipmentbase(C).value = "";
            Isoguide.hidequipmentisolatortype(C).value = "";
            Isoguide.hidequipmentdefl(C).value = "";
        
        }
        else {
            break;
        }
    }
}

function ActualLoadTheEqData(E, theRow) {
      
    Isoguide.equipmenttag(theRow).value = JobEqTAG[E];
    Isoguide.equipmenttype(theRow).value = JobEqEQUIPTYPE[E];
    Isoguide.equipmentcategory(theRow).value = JobEqCATEGORY[E];
    Isoguide.hidequipmenthp(theRow).value = JobEqHP_SP[E];
    Isoguide.hidequipmentrpm(theRow).value = JobEqRPM[E];
    Isoguide.hidequipmentnotes(theRow).value = JobEqNOTES[E];
    Isoguide.hidequipmentspan(theRow).value = JobEqSPAN[E];
    Isoguide.hidequipmentbase(theRow).value = JobEqBase[E];
    Isoguide.hidequipmentisolatortype(theRow).value = JobEqIsolatorType[E];
    Isoguide.hidequipmentdefl(theRow).value = JobEqDefl[E];
    
}

function LoadTagIntoAdd_Edit(theObject){
    var TheObj = eval("Isoguide." + theObject) ;
    Z = GetJobID();
    theJobId = JobID[Z];
    for(I=0;I < JobEqJOBNO.length; I++) {
        if((theJobNumber == JobEqJOBNO[I]) && (Isoguide.LstTag.value == JobEqTAG[I])) {
            LoadTheTag(I);
            break;
        }
    }

}

function GetJobID() {
    for(Z=StartJobPoint[Isoguide.LstJobName.selectedIndex]; Z < JobID.length; Z++) {
        if(JobNumber[Z] == Isoguide.txtJobNumber.value) {
            break;
        }
    }
    return(Z);
}   

function LoadTheTag(I) {
    Isoguide.Tag.value = JobEqTAG[I];
    Isoguide.LstEquipType.value = JobEqEQUIPTYPE[I];
    LoadCategory();
    Isoguide.LstEquipCategory.value = JobEqCATEGORY[I];
    LoadHP();
    Isoguide.LstEquipHP.value = JobEqHP_SP[I];
    LoadRPM();
    Isoguide.LstEquipRPM.value = JobEqRPM[I];
    switch(JobEqSPAN[I]) {
        case "ON GRADE":
            Isoguide.chkSpan(0).checked = true;
            break;
        case "UP TO 20 FT. (6.1 m)":
            Isoguide.chkSpan(1).checked = true;
            break;
        case "20-30 FT.(6.1-9.1 m)":
            Isoguide.chkSpan(2).checked = true;
            break;
        case "30-40 FT. (9.1-12.2 m)":
            Isoguide.chkSpan(3).checked = true;
            break;
    
    }
}

function AddTagToForm() {
    var R;
    if(Isoguide.TagOK.value == "Add OK") {
        for(R = 0; R < Isoguide.equipmentlinenumber.length; R++) {
            if(Isoguide.equipmenttag(R).value == "" || Isoguide.equipmenttag(R).value == Isoguide.Tag.value) {
                break;
            }
        }
        DisplayTagToForm(R);
    }
    else if(Isoguide.TagOK.value == "Edit OK") {
            R = EditableRow;
            DisplayTagToForm(R);
    }
    else if(Isoguide.TagOK.value == "Delete OK") {
        DeleteTagRow();
    }
    ClickIt(Isoguide.all.A(0), 'Isoguide');
    
    CloseAllDiv('TagList', SpanList, 'Isoguide')
    
    
}

    function DeleteTagRow() {
        for(D=EditableRow; D < Isoguide.equipmenttag.length; D++) {
            if(Isoguide.equipmenttag(D + 1).value == "") {
                break;
            }
            Isoguide.equipmenttag(D).value = Isoguide.equipmenttag(D + 1).value;
            Isoguide.equipmenttype(D).value = Isoguide.equipmenttype(D + 1).value;
            Isoguide.equipmentcategory(D).value = Isoguide.equipmentcategory(D + 1).value;
            Isoguide.hidequipmenthp(D).value = Isoguide.hidequipmenthp(D + 1).value;
            Isoguide.hidequipmentrpm(D).value = Isoguide.hidequipmentrpm(D + 1).value;
            Isoguide.hidequipmentnotes(D).value = Isoguide.hidequipmentnotes(D + 1).value;
            Isoguide.hidequipmentspan(D).value = Isoguide.hidequipmentspan(D + 1).value;
            Isoguide.hidequipmentbase(D).value = Isoguide.hidequipmentbase(D + 1).value;
            Isoguide.hidequipmentisolatortype(D).value = Isoguide.hidequipmentisolatortype(D + 1).value;
            Isoguide.hidequipmentdefl(D).value = Isoguide.hidequipmentdefl(D + 1).value;
        }
        
        Isoguide.equipmenttag(D).value = "";
        Isoguide.equipmenttype(D).value = "";
        Isoguide.equipmentcategory(D).value = "";
        Isoguide.hidequipmenthp(D).value = "";
        Isoguide.hidequipmentrpm(D).value = "";
        Isoguide.hidequipmentnotes(D).value = "";
        Isoguide.hidequipmentspan(D).value = "";
        Isoguide.hidequipmentbase(D).value = "";
        Isoguide.hidequipmentisolatortype(D).value = "";
        Isoguide.hidequipmentdefl(D).value = "";
    }
    
function DisplayTagToForm(D) {
        var Grade;
        for(L=0; L < 4; L++) {
            if(Isoguide.chkSpan(L).checked == true) {
                Grade = Isoguide.chkSpan(L).value;
                break;
            }
        }
        if(Isoguide.MetricSystem.checked == false) {
            HPMarray = EqMasterEH_HPOTHER;
        }
        else {
            HPMarray = EqMasterEH_HPOTHRM;
        }
        for(F=0; F < EqMasterEQ_TYPE.length; F++) {
            if(EqMasterEQ_TYPE[F] == Isoguide.LstEquipType.value &&
               EqMasterEQ_CAT[F] == Isoguide.LstEquipCategory.value &&
               HPMarray[F] == Isoguide.LstEquipHP.value &&
               EqMasterRPM[F] == Isoguide.LstEquipRPM.value ) {
                    break;
            }
        }
        Isoguide.equipmenttag(D).value = Isoguide.Tag.value;
        Isoguide.equipmenttype(D).value = Isoguide.LstEquipType.value;
        Isoguide.equipmentcategory(D).value = Isoguide.LstEquipCategory.value;
        Isoguide.hidequipmenthp(D).value = Isoguide.LstEquipHP.value;
        Isoguide.hidequipmentrpm(D).value = Isoguide.LstEquipRPM.value;
        Isoguide.hidequipmentnotes(D).value = EqMasterNOTES[F];
        Isoguide.hidequipmentspan(D).value = Grade;
        
        
        var theBase = "";
        var theIsolatorType = "";
        var theDefl = "";
        
 
        
        switch(Grade) {     
            case "ON GRADE":
                theBase = EqMasterSOG_BASETYPE[F];
                theIsolatorType = EqMasterSOG_ISOTYPE[F];
                theDefl = EqMasterSOG_DEFLECTION[F];
            case "UP TO 20 FT. (6.1 m)":
                theBase = EqMasterSTo20_BASETYPE[F];
                theIsolatorType = EqMasterSTo20_ISOTYPE[F];
                theDefl = EqMasterSTo20_DEFLECTION[F];
            case "20-30 FT.(6.1-9.1 m)":
                theBase = EqMasterS20To30_BASETYPE[F];
                theIsolatorType = EqMasterS20To30_ISOTYPE[F];
                theDefl = EqMasterS20To30_DEFLECTION[F];
            case "30-40 FT. (9.1-12.2 m)":
                theBase = EqMasterS30To40_BASETYPE[F];
                theIsolatorType = EqMasterS30To40_ISOTYPE[F];
                theDefl = EqMasterS30To40_DEFLECTION[F];
        }

        Isoguide.hidequipmentbase(D).value = theBase;
        Isoguide.hidequipmentisolatortype(D).value = theIsolatorType;
        Isoguide.hidequipmentdefl(D).value = theDefl;
        var itsthere;
        itsthere = "N";
        for(T=0; T < JobEqJOBNO.length; T++){
            if(JobEqTAG[T] == Isoguide.Tag.value){
                itsthere = "Y";
                break;
            
            }
        }
        if(itsthere == "N"){
            JobEqJOBNO.length += 1;
            T = JobEqJOBNO.length - 1;
        }
        JobEqJOBNO[T] = theJobNumber;
        JobEqTAG[T] = Isoguide.Tag.value;
        JobEqSPAN[T] = Grade;
        JobEqEQUIPTYPE[T] = Isoguide.LstEquipType.value;
        JobEqCATEGORY[T] = Isoguide.LstEquipCategory.value;
        JobEqHP_SP[T] = Isoguide.LstEquipHP.value;
        JobEqRPM[T] = Isoguide.LstEquipRPM.value;
        JobEqNOTES[T] = EqMasterNOTES[F];
        JobEqBase[T] = theBase;
        JobEqIsolatorType[T] = theIsolatorType;
        JobEqDefl[T] = theDefl;
        if(itsthere = "N") {
            addAnItemToSelect(Isoguide.Tag.value, "LstTag", "Isoguide")
        }
        
        Isoguide.Tag.value = "";


}

function AddEditButtonCaption() {
    Isoguide.TagOK.value = MaterialMode + " OK";
}
    
function ShowEditTag() {
    MaterialMode = "Edit";
    AddEditButtonCaption();
    CloseAllDiv("AddTag", SpanList, "Isoguide");

    AddOldTagToForm(EditableRow);
    LockAddSpan(false);
}
    
function ShowDeleteTag() {
    MaterialMode = "Delete";
    AddEditButtonCaption();
    CloseAllDiv("AddTag", SpanList, "Isoguide");
    AddOldTagToForm(EditableRow);
    LockAddSpan(true);
}
    
function ShowAddTag() {
    MaterialMode = "Add";
    AddEditButtonCaption();
    RestAddTag();
    CloseAllDiv("AddTag", SpanList, "Isoguide");
    LockAddSpan(false);
}
    
function AddOldTagToForm(R) {
    Isoguide.LstTag.value = Isoguide.equipmenttag(R).value;
    Isoguide.Tag.value = Isoguide.equipmenttag(R).value;
    Isoguide.LstEquipType.value = Isoguide.equipmenttype(R).value;
    LoadCategory();
    Isoguide.LstEquipCategory.value = Isoguide.equipmentcategory(R).value;
    LoadHP();
    Isoguide.LstEquipHP.value = Isoguide.hidequipmenthp(R).value;
    LoadRPM();
    Isoguide.LstEquipRPM.value = Isoguide.hidequipmentrpm(R).value;
    switch(Isoguide.hidequipmentspan(R).value) {
        case "ON GRADE":
            Isoguide.chkSpan(0).checked = true;
            break;
        case "UP TO 20 FT. (6.1 m)":
            Isoguide.chkSpan(1).checked = true;
            break;
        case "20-30 FT.(6.1-9.1 m)":
            Isoguide.chkSpan(2).checked = true;
            break;
        case "30-40 FT. (9.1-12.2 m)":
            Isoguide.chkSpan(3).checked = true;
            break;
    
    }
//    ValidateAddTag();
    
}

function InitialLoad() {
    NoDuplicateInListBox(JobName, "LstJobName", "Isoguide");
    NoDuplicateInListBox(EqMasterEQ_TYPE, "LstEquipType", "Isoguide");
    LoadCategory();
    LoadHP();
    LoadRPM();
    
}

function RestAddTag() {
    Isoguide.chkSpan(0).checked = true;
    Isoguide.Tag.value = "";
    Isoguide.LstEquipType.value = Isoguide.LstEquipType(0).value;
    LoadCategory();
    LoadHP();
    LoadRPM();
}

function LockAddSpan(state) {
    Isoguide.LstTag.disabled = state;
    Isoguide.Tag.disabled = state;
    Isoguide.LstEquipType.disabled = state;
    Isoguide.LstEquipCategory.disabled = state;
    Isoguide.LstEquipHP.disabled = state;
    Isoguide.LstEquipRPM.disabled = state;
    for(L=0; L < 4; L++) {
        Isoguide.chkSpan(L).disabled = state;
    }       
    
}

function SaveButtonRoutine(theDiv) {
    if (theUser != "guest") {
        Validate();
        if(ValidateMessage == "") {
            ClickIt(Isoguide.all.A(0), 'Isoguide')
            Isoguide.ToSave.value = "Save";
            Isoguide.submit();
        }
        else {
            alert(ValidateMessage);
        }
    }
    else {
//        alert("Guests are not allowed to save data");
        if (confirm("Guests are not allowed to save data./n Do You want to request a username and password?")){
            open("guestinfo.asp", "account", "height=580, width=700, left=100, top=100")
        }
        Isoguide.all.A(3).bgColor = "#cccccc";
    }
}

function addAnItemToSelect(anItem, ListBox, FormName) {
    var Selectobj = eval(FormName + "." + ListBox) ;
    var newElem = document.createElement("OPTION");
    newElem.text = anItem;
    newElem.value = anItem;

    Selectobj.options.add(newElem);
}

function checkTagAddValidation(){
    CheckValidationTag();
    if(ValidateMessage == "") {
        AddTagToForm();
    }
    
}

