﻿// Javascript File

var PopUpBlocked = false;
var filename;
var flag = false;

var Table;
var AlphaStart = 0.0;
var AlphaEnd = 0.0;
var ObsTempStart = 0.0;
var ObsTempEnd = 0.0;
var DensityStart = 0.0;
var DensityEnd = 0.0;
var AltTempStart = 0.0;
var AltTempEnd = 0.0;
var MinAlpha = 0.0;
var MaxAlpha = 0.0;
var MinObsTemp = 0.0;
var MaxObsTemp = 0.0;
var MinDensity = 0.0;
var MaxDensity = 0.0;
var MinAltTemp = 0.0;
var MaxAltTemp = 0.0;

function CreateTable(id, formName){

    // start javascript routine that will display the "creating table..." 
    if(flag==true){
        alert('Creating table.');
        return false;
    }
    startstatus(id);

    var chkin_arr = new Array();
    chkin_arr = CheckInputs(formName, CustID, BPCount, VDate).split(':-:');
    if(chkin_arr[0]=='N'){
        alert(chkin_arr[1]);
        stopstatus(id);
        return false;
    }
    else if(chkin_arr[0]=='Y'){
        var s = false;
        if(CustID!='0'&&UType=='REGUSE'){
            s = true;
            s = confirm(chkin_arr[1] + '\n\nLarge requests can take a long time to complete.' + '\n\nDo you want to continue?');
        }
        else{
            s = confirm('This ThermoTab trial page will only produce sample pages taken from temperature/density ' +
                        'values selected by the server. To have access to all available temperature/density values sign up ' + 
                        'for a ThermoTab Account. \n\nDo you want to continue?');
        }

        if(s==true){
            flag = true;
            return true;
        }
        else{
            stopstatus(id);  
            return false;
        }
    }
    else if(chkin_arr[0]=='NE'){
        alert('Hello ' + CustName + ', your your entries are valid. \nBut you do not have enough credit on your ' + 
        'Thermotab Account, ThermoTab cannot generate the requested table at this time. \n' + chkin_arr[1] + ' \n\nPlease refill your Account ' +
        'or edit values to reduce Page Count.');
        stopstatus(id);  
        return false;
    }
    else if(chkin_arr[0]=='INV'){
        alert('Hello ' + CustName + ', your your entries are valid. \nBut since your Account has expired, ' + 
        'Thermotab cannot generate the requested table this time. \n' + chkin_arr[1] + ' \n\nPlease refill your Account!');
        stopstatus(id);  
        return false;
    }

    stopstatus(id);  
    return false;
}

function GetConversionType(Table){
    var ConversionType = "";

    switch (Table){
        case "5A":
        case "5B":
        case "5D":
            ConversionType = "ObservedToBase"
            break;
        case "6A":
        case "6B":
        case "6D":
            ConversionType = "BaseToAlt"
            break;
        case "6C":
            ConversionType = "BaseToAltSpecial"
            break;
        case "23A":
        case "23B":
        case "23D":
            ConversionType = "ObservedToBase"
            break;
        case "24A":
        case "24B": 
        case "24D":
            ConversionType = "BaseToAlt"
            break;
        case "24C":
            ConversionType = "BaseToAltSpecial"
            break;
        case "53A":
        case "53B":
        case "53D":
            ConversionType = "ObservedToBase"
            break;
        case "54A":
        case "54B":
        case "54D":
            ConversionType = "BaseToAlt"
            break;
        case "54C":
            ConversionType = "BaseToAltSpecial"
            break;
        case "59A":
        case "59B":
        case "59D":
            ConversionType = "ObservedToBase"
            break;
        case "60A": 
        case "60B": 
        case "60D":
            ConversionType = "BaseToAlt"
            break;
        case "60C":
            ConversionType = "BaseToAltSpecial"
            break;
        default:
            ConversionType = "InvalidType"
            break;
    }
    
    return ConversionType
}

function GetInputs(ConversionType){
    var strString = "";
    var bSuccess = true;
    
    switch(ConversionType){
        case "BaseToAlt":
            //  get the user input
            DensityStart = dGetElementValue("VCFTableMain_tbDensIn");
            DensityEnd = dGetElementValue("VCFTableMain_tbDensFn");
            AltTempStart = dGetElementValue("VCFTableMain_tbAltTempIn");
            AltTempEnd = dGetElementValue("VCFTableMain_tbAltTempFn");
            // get the min and max
            MinDensity = dGetElementValue("VCFTableMain_hfDensityLow");
            MaxDensity = dGetElementValue("VCFTableMain_hfDensityHigh");
            MinAltTemp = dGetElementValue("VCFTableMain_hfAltTempLow");
            MaxAltTemp = dGetElementValue("VCFTableMain_hfAltTempHigh");
        break;
        case "BaseToAltSpecial":
            // get user input
            AltTempStart = dGetElementValue("VCFTableMain_tbAltTempIn");
            AltTempEnd = dGetElementValue("VCFTableMain_tbAltTempFn");
            AlphaStart = dGetElementValue("VCFTableMain_tbAlphaIn");
            AlphaEnd = dGetElementValue("VCFTableMain_tbAlphaFn");
            // get the min and max
            MinAltTemp = dGetElementValue("VCFTableMain_hfAltTempLow");
            MaxAltTemp = dGetElementValue("VCFTableMain_hfAltTempHigh");
            MinAlpha = dGetElementValue("VCFTableMain_hfAlphaLow");
            MaxAlpha = dGetElementValue("VCFTableMain_hfAlphaHigh");
        break;
        case "ObservedToBase":
            // get user input
            ObsTempStart = dGetElementValue("VCFTableMain_tbObsTempIn");
            ObsTempEnd = dGetElementValue("VCFTableMain_tbObsTempFn");
            DensityStart = dGetElementValue("VCFTableMain_tbDensIn");
            DensityEnd = dGetElementValue("VCFTableMain_tbDensFn");
            // get min and max
            MinObsTemp = dGetElementValue("VCFTableMain_hfObsTempLow");
            MaxObsTemp = dGetElementValue("VCFTableMain_hfObsTempHigh");
            MinDensity = dGetElementValue("VCFTableMain_hfDensityLow");
            MaxDensity = dGetElementValue("VCFTableMain_hfDensityHigh");
        break;
        default:
            bSuccess = false; 
        break;
    }
    
    return bSuccess;
}

function CheckCalculate(){
    var bSuccess = true;
    
    // get table name    
    Table = document.getElementById("VCFTableMain_ddlTables").options[document.getElementById("VCFTableMain_ddlTables").options.selectedIndex].value;
    
    // get the inputs
    bSuccess = GetInputs(GetConversionType(Table));
    if (bSuccess){
        // verify that the user enters valid values
        bSuccess = CheckInputs(GetConversionType(Table));
    }

    return bSuccess;
}

function startstatus(id){
  startTimer(); //Start the status message
  //document.getElementById(id).disabled=true; //Disable the Calculate button
}
 
function stopstatus(id){
  stopTimer(); //Start the status message
  //document.getElementById(id).disabled=false; //Disable the Calculate button
}
 
function trim(sString){
     //function to trim the sting
	
	while (sString.substr(0,1) == ' '){
	   sString = sString.substr(1, sString.length);
	}
	 
	while (sString.substr(sString.length-1, sString.length) == ' '){
	   sString = sString.substr(0,sString.length-1);
    }
    return sString;
}

function StringToNumber(strString){
    var dNumber = 0.0;

    dNumber = Number(strString);
    
    if (isNaN(dNumber)){
        alert("Invalid entry - enter a number");
        dNumber = 0.0;
    }
    
    return dNumber;
}

function dGetElementValue(strElement){
    var strValue = "";
    var dValue = 0.0;

    strValue = document.getElementById(strElement).value;
    dValue = StringToNumber(strValue);
    
    return dValue;
}

function CheckInputs(ConversionType){
    var bOK = true;
    
    switch(ConversionType){
        case "BaseToAlt":
            if (DensityStart < MinDensity){
                alert("Min Density is too low");
                bOK = false;
            }
            if (DensityEnd > MaxDensity){
                alert("Max Density is too high");
                bOK = false;
            }
            if (AltTempStart < MinAltTemp){
                alert("Min Temp is too low");
                bOK = false;
            }
            if (AltTempEnd > MaxAltTemp){
                alert("Max Temp is too high");
                bOK = false;
            }
        break;
        case "BaseToAltSpecial":
            if (AltTempStart < MinAltTemp){
                alert("Min Temp is too low");
                bOK = false;
            }
            if (AltTempEnd > MaxAltTemp){
                alert("Max Temp is too high");
                bOK = false;
            }
            if (AlphaStart < MinAlpha){
                alert("Min Alpha is too low");
                bOK = false;
            }
            if (AlphaEnd > MaxAlpha){
                alert("Max Alpha is too high");
                bOK = false;
            }
        break;
        case "ObservedToBase":
            if (ObsTempStart < MinObsTemp){
                alert("Min Temp is too low");
                bOK = false;
            }
            if (ObsTempEnd > MaxObsTemp){
                alert("Max Temp is too high");
                bOK = false;
            }
            if (DensityStart < MinDensity){
                alert("Min Density is too low");
                bOK = false;
            }
            if (DensityEnd > MaxDensity){
                alert("Max Density is too high");
                bOK = false;
            }
        break;
        default:
        break;
    }
    
    return bOK;
}

