var iWindow = 0;
var oOverRideBackFrom = '';

var DownloadFileQue = new Array();

var CommandTypeQue = new Array();
var CommandVarsQue = new Array();
var CommandHrefQue = new Array();
var CommandFuncQue = new Array();

var bPrintingPage = false;


function SetOpacity(oElem, iOpacity)
{
    try
    {
        oElem.style.opacity = (iOpacity / 100);
        oElem.style.MozOpacity = (iOpacity / 100);
        oElem.style.KhtmlOpacity = (iOpacity / 100);
        oElem.style.filter = "alpha(opacity=" + iOpacity + ")";
    }
    catch (oErr)
    {
        JSError('SetOpacity', oErr);
    }
}



var iRC_ClockValue;
var oRC_Ticker;
function RC_Timer_Start(iFadeDelay)
{
    try
    {
        RC_Timer_Stop();
        RC_Timer_TickTock(iFadeDelay);
    }
    catch (oErr)
    {
        JSError('RC_Timer_Start', oErr);
    }
}
function RC_Timer_TickTock(iFadeDelay)
{
    try
    {
        if (iRC_ClockValue >= iFadeDelay)
        {
            RC_Timer_Stop();

            HideRigthClickMenu();
        }
        else
        {
            iRC_ClockValue++;
            oRC_Ticker = setTimeout("RC_Timer_TickTock(" + iFadeDelay + ");", iFadeDelay);
        }
    }
    catch (oErr)
    {
        JSError('RC_Timer_TickTock', oErr);
    }
}
function RC_Timer_Stop()
{
    try
    {
        iRC_ClockValue = 0;
        clearTimeout(oRC_Ticker);

        oRC_Ticker = null;
    }
    catch (oErr)
    {
        JSError('RC_Timer_Stop', oErr);
    }
}

function MenuHighlight(e)
{
    try
    {
        RC_Timer_Stop();

        var firingobj = ie5 ? event.srcElement : e.target;

        firingobj.className = 'RightClickMenuSelected';
    }
    catch (oErr)
    {
        JSError('MenuHighlight', oErr);
        return false;
    }
}
function Menu_MouseOver_NoItem()
{
    try
    {
        RC_Timer_Stop();

    }
    catch (oErr)
    {
        JSError('Menu_MouseOver_NoItem', oErr);
        return false;
    }
}

function MenuNolightIn(e)
{
    try
    {
        RC_Timer_Stop();
    }
    catch (oErr)
    {
        JSError('MenuNolightIn', oErr);
        return false;
    }
}
function MenuNolightOut(e)
{
    try
    {
        RC_Timer_Start(20);
    }
    catch (oErr)
    {
        JSError('MenuNolightOut', oErr);
        return false;
    }
}

function MenuLowlight(e)
{
    try
    {
        RC_Timer_Start(20);

        var firingobj = ie5 ? event.srcElement : e.target;

        firingobj.className = 'RightClickMenuItem';
    }
    catch (oErr)
    {
        JSError('MenuLowlight', oErr);
        return false;
    }
}

/*****************************************/

function copyOpt(srcOpt, destOpt)
{
    try
    {
        if (!srcOpt) return null;
        if (!destOpt) destOpt = new Option();

        destOpt.text = srcOpt.text;
        destOpt.value = srcOpt.value;
        destOpt.selected = srcOpt.selected;
        destOpt.defaultSelected = srcOpt.defaultSelected;

        return destOpt;
    }
    catch (oErr)
    {
        JSError('copyOpt', oErr);
    }
}
function swapOpt(opt1, opt2)
{
    try
    {
        if (opt1 == opt2) return false;

        copyOpt(opt1, swapOpt);  // using swapOpt to avoid new Option()
        copyOpt(opt2, opt1);
        copyOpt(swapOpt, opt2);

        return true;
    }
    catch (oErr)
    {
        JSError('swapOpt', oErr);
    }
}
function SortSelect(oSelect, head, tail)
{
    try
    {
        var UNDEFINED;
        if (head == UNDEFINED) head = 0;
        if (tail == UNDEFINED) tail = oSelect.options.length;
        if (head + 1 < tail)
        {
            with (oSelect)
            {
                var prevlow = head;

                for (var i = head + 1; i < tail; i++)
                {
                    if (options[head].text.toUpperCase() > options[i].text.toUpperCase())
                    {
                        swapOpt(options[i], options[++prevlow]);
                    }
                }

                swapOpt(options[head], options[prevlow]);

                SortSelect(oSelect, head, prevlow);
                SortSelect(oSelect, prevlow + 1, tail);
            }
        }
    }
    catch (oErr)
    {
        JSError('SortSelect', oErr);
    }
}
//----------------------------------------------------

//----------------------------------------------------
function CheckNumber(object_value)
{
    try
    {
        //Returns true if value is a number or is NULL
        //otherwise returns false	

        if (object_value.length == 0)
            return true;

        //Returns true if value is a number defined as
        //   having an optional leading + or -.
        //   having at most 1 decimal point.
        //   otherwise containing only the characters 0-9.
        var start_format = " .+-0123456789$";
        var number_format = " .0123456789$,";
        var check_char;
        var decimal = false;
        var trailing_blank = false;
        var digits = false;

        //The first character can be + - .  blank or a digit.
        check_char = start_format.indexOf(object_value.charAt(0))
        //Was it a decimal?
        if (check_char == 1)
            decimal = true;
        else if (check_char < 1)
            return false;
        //Remaining characters can be only . or a digit, but only one decimal.
        for (var i = 1; i < object_value.length; i++)
        {
            check_char = number_format.indexOf(object_value.charAt(i))
            if (check_char < 0)
                return false;
            else if (check_char == 1)
            {
                if (decimal)		// Second decimal.
                    return false;
                else
                    decimal = true;
            }
            else if (check_char == 0)
            {
                if (decimal || digits)
                    trailing_blank = true;
                // ignore leading blanks

            }
            else if (trailing_blank)
                return false;
            else
                digits = true;
        }
        //All tests passed, so...
        return true
    }
    catch (oErr)
    {
        JSError('CheckNumber', oErr);
    }
}

function noenter()
{
    return !(window.event && window.event.keyCode == 13);
}

function BrowserVersion()
{
    var i = navigator.appVersion.indexOf('(');
    var sVer = navigator.appVersion.substring(0, i);
    var sLookup = '1234567890.';
    var sTemp = '';

    for (i = 0; i < sVer.length - 1; i++)
    {
        if (sLookup.indexOf(sVer.charAt(i)) > -1)
        {
            sTemp += sVer.charAt(i);
        }
    }
    sVer = parseInt(sTemp);
    return (sVer);
}

function BrowserType()
{
    return navigator.appName.substring(0, 9);
}


//----------------------------------------------------
function OnError(form_object, input_object, object_value, error_message)
{
    alert(error_message);
    return false;
}
//----------------------------------------------------
function getValue(theString)
{
    var noJunk = "";
    var withDollar = "";
    var foundDecimal = 0;
    var foundAlphaChar = 0;

    theString += "";
    for (i = 0; i <= theString.length; i++)
    {
        var thisChar = theString.substring(i, i + 1);

        if (thisChar == ".")
        {
            foundDecimal = 1;
            noJunk = noJunk + thisChar;
        }

        if ((thisChar < "0") || (thisChar > "9"))
        {
            if ((thisChar != "$") && (thisChar != ".") && (thisChar != ",") && (thisChar != " ") && (thisChar != "")) foundAlphaChar = 1;
        } else
        {
            withDollar = withDollar + thisChar
            noJunk = noJunk + thisChar
        }

        if ((thisChar == "$") || (thisChar == ".") || (thisChar == ","))
        {
            withDollar = withDollar + thisChar
        }
    }

    if (foundDecimal) { return parseFloat(noJunk); }
    //Changed line below to fix .09 - .01 rounding problem AJG 3/9/00
    //else if (noJunk.length > 0) { return parseInt(noJunk); }
    else if (noJunk.length > 0) { return noJunk; }
    else return 0;

}

//----------------------------------------------------
function trim(sString)
{
    try
    {
        var iErrorOnLine = 0;
        var begin = 0;
        var len = sString.length;

        iErrorOnLine = 20;
        while (begin < len)
        {
            if (sString.charAt(begin) != " " && sString.charCodeAt(begin) != 13 && sString.charCodeAt(begin) != 10)
            {
                break;
            }
            begin++;
        }
        iErrorOnLine = 50;
        var end = len
        var nextend = len - 1;
        iErrorOnLine = 70;
        while (end > begin)
        {
            if (sString.charAt(nextend) != " " && sString.charCodeAt(nextend) != 13 && sString.charCodeAt(nextend) != 10)
            {
                break;
            }
            end--;
            nextend--;
        }
        iErrorOnLine = 200;
        if (end > begin)
        {
            sString = sString.substring(begin, end);
        }
        else
        {
            sString = "";
        }
        iErrorOnLine = 250;
        return sString;
    }
    catch (oErr)
    {
        JSError('trim', oErr + '\n\n iErrorOnLine=' + iErrorOnLine + '\n\n sString="' + sString + '"');
        return false;
    }

}
function TrimThis(oFld)
{
    try
    {
        //alert(oFld.value);
        oFld.value = trim(oFld.value);

        return false;
    }
    catch (oErr)
    {
        JSError('TrimThis', oErr);
    }
}

//----------------------------------------------------
function HasValue(oElem, sType)
{
    return CheckField(oElem, sType);
}
function CheckFld(oElem, sType, sFieldTitle, bAllowNull)
{
    try
    {
        var iErrorOnLine = 0;

        if (!bAllowNull)
        {
            bAllowNull = false;
        }

        iErrorOnLine = 10;
        if (!CheckField(oElem, sType, bAllowNull))
        {
            iErrorOnLine = 20;
            if (sType == "TEXT" || sType == "DATE" || sType == "NUMBER" || sType == "INTEGER" || sType == "PHONE" || sType == "PHONE10" || sType == "TIME" || sType == "EMAIL")
            {
                iErrorOnLine = 30;
                alert('Please enter ' + sFieldTitle + '.');
            }
            else if (sType == "SELECT" || sType == "RADIO" || sType == "CHECKBOX")
            {
                iErrorOnLine = 40;
                alert('Please select ' + sFieldTitle + '.');
            }

            iErrorOnLine = 50;
            return false;
        }
        else
        {
            return true;
        }
    }
    catch (oErr)
    {

        JSError('CheckFld', oErr + '\n\n iErrorOnLine=' + iErrorOnLine + '\n oElem=' + oElem + '\n sType=' + sType + '\n bAllowNull=' + bAllowNull);
        return false;
    }
}

function CheckField(oElem, sType, bAllowNull)
{
    try
    {
        var iErrorOnLine = 0;
        var sTempStr;
        var i;

        iErrorOnLine = 5;
        if (!bAllowNull)
        {
            bAllowNull = false;
        }
        iErrorOnLine = 10;

        if (sType == "TEXT" || sType == "DATE" || sType == "NUMBER" || sType == "INTEGER" || sType == "PHONE" || sType == "PHONE10")
        {
            iErrorOnLine = 20;
            sTempStr = trim(oElem.value.toString());

            iErrorOnLine = 30;
            if (sTempStr.length == 0 && bAllowNull == false)
            {
                iErrorOnLine = 40;
                oElem.focus();
                return false;
            }
            else
            {
                if (sType == "INTEGER" && (!IsInteger(sTempStr)))
                {
                    oElem.focus();
                    return false;
                }
                if (sType == "NUMBER" && (!IsNumeric(sTempStr)))
                {
                    oElem.focus();
                    return false;
                }

                if (sType == "PHONE" || sType == "PHONE10")
                {
                    iErrorOnLine = 200;
                    var sPhoneNumberCheck = replace(replace(replace(replace(replace(sTempStr, '-', ''), ' ', ''), '(', ''), ')', ''), '.', '')

                    //alert('sPhoneNumberCheck="' + sPhoneNumberCheck + '"')

                    //alert('sPhoneNumberCheck.length="' + sPhoneNumberCheck.length + '"')
                    if (sPhoneNumberCheck.length == 0 && bAllowNull == true)
                    {
                        iErrorOnLine = 210;

                        oElem.value = sPhoneNumberCheck;

                        return true;
                    }

                    //alert('IsNumeric(sPhoneNumberCheck)="' + IsNumeric(sPhoneNumberCheck) + '"')
                    iErrorOnLine = 210;
                    if (sType == "PHONE10")
                    {
                        if (sPhoneNumberCheck.length != 10 || (!IsNumeric(sPhoneNumberCheck)))
                        {
                            iErrorOnLine = 220;
                            oElem.focus();
                            return false;
                        }
                    }
                    else
                    {
                        if (sPhoneNumberCheck.length < 10 || (!IsNumeric(sPhoneNumberCheck)))
                        {
                            iErrorOnLine = 220;
                            oElem.focus();
                            return false;
                        }
                    }
                }
                return true;
            }
        }

        iErrorOnLine = 300;

        if (sType == "EMAIL")
        {
            iErrorOnLine = 310;
            var iAtCnt = 0;
            var iDotCnt = 0;
            var iLength = oElem.value.length;

            iErrorOnLine = 330;
            if ((oElem.value.length == 0) && bAllowNull != false)
            {
                oElem.focus();
                return false;
            }

            iErrorOnLine = 340;
            if (oElem.value.lastIndexOf("@") > oElem.value.lastIndexOf("."))
            {
                oElem.focus();
                return false;
            }

            iErrorOnLine = 350;
            if (oElem.value.charAt(0) == "@" || oElem.value.charAt(0) == ".")
            {
                oElem.focus();
                return false;
            }
            iErrorOnLine = 360;

            if (oElem.value.charAt(iLength - 1) == "@" || oElem.value.charAt(iLength - 1) == ".")
            {
                oElem.focus();
                return false;
            }

            iErrorOnLine = 370;
            for (i = 0; i < iLength; i++)
            {
                if (oElem.value.charAt(i) == "@")
                {
                    iAtCnt++;
                }
                if (oElem.value.charAt(i) == ".")
                {
                    iDotCnt++;
                }
            }


            iErrorOnLine = 380;
            if (iAtCnt != 1 || iDotCnt == 0)
            {
                oElem.focus();
                return false;
            }
            return true;
        }

        iErrorOnLine = 500;
        if (sType == "TIME")
        {
            iErrorOnLine = 510;
            if (oElem.value.length == 0)
            {
                iErrorOnLine = 520;

                if (bAllowNull == false)
                {
                    iErrorOnLine = 530;
                    oElem.focus();
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                iErrorOnLine = 540;
                if (!IsValidTime(oElem))
                {
                    iErrorOnLine = 550;
                    oElem.focus();
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }

        iErrorOnLine = 600;
        if (sType == "SELECT")
        {
            iErrorOnLine = 610;
            if (bAllowNull == false)
            {
                iErrorOnLine = 620;

                //alert(oElem);
                //alert(oElem.selectedIndex);
                //alert(oElem.selectedIndex);
                if ((oElem.selectedIndex < 0) || (oElem.options[oElem.selectedIndex].value == ''))
                {
                    iErrorOnLine = 630;
                    oElem.focus();
                    return false;
                }
                return true;

            }
            else
            {
                return true;
            }
        }

        iErrorOnLine = 700;

        if (sType == "RADIO" || sType == "CHECKBOX")
        {
            if (bAllowNull == false)
            {

                iErrorOnLine = 720;

                for (i = 0; i < oElem.length; i++)
                {
                    iErrorOnLine = 730;
                    if (oElem[i].checked)
                    {
                        iErrorOnLine = 750;
                        return true;
                    }
                }

                oElem[0].focus();
                return false;
            }
            else
            {
                return true;
            }
        }

        return false;

    }
    catch (oErr)
    {

        JSError('CheckField', oErr + '\n\n iErrorOnLine=' + iErrorOnLine + '\n oElem=' + oElem + '\n sType=' + sType + '\n bAllowNull=' + bAllowNull);
        return false;
    }
}


//----------------------------------------------------
function CheckDate(sDate)
{

    if (sDate.length == 0)
    {
        return true;
    }

    isplit = sDate.indexOf('/');

    if (isplit == -1 || isplit == sDate.length)
    {
        isplit = sDate.indexOf('-');

        if (isplit == -1 || isplit == sDate.length)
        {
            isplit = sDate.indexOf('.');

            if (isplit == -1 || isplit == sDate.length)
            {
                return false;
            }
        }
    }

    sMonth = sDate.substring(0, isplit);

    isplit2 = sDate.indexOf('/', isplit + 1);

    if (isplit2 == -1 || isplit2 == sDate.length)
    {
        isplit2 = sDate.indexOf('-', isplit + 1);

        if (isplit2 == -1 || isplit2 == sDate.length)
        {
            isplit2 = sDate.indexOf('.', isplit + 1);

            if (isplit2 == -1 || isplit2 == sDate.length)
            {
                return false;
            }
        }
    }

    sDay = sDate.substring((sMonth.length + 1), isplit2);
    sYear = sDate.substring(isplit2 + 1);


    if (!CheckInteger(sMonth) || sMonth.length == 0) //check month
    {
        return false;
    }
    else if (!CheckRange(sMonth, 1, 12)) //check month
    {
        return false;
    }
    else if (!CheckInteger(sYear) || sYear.length == 0) //check year
    {
        return false;
    }
    else
        if (!CheckRange(sYear, 1900, 3000)) //check year
    {
        return false;
    }
    else if (!CheckInteger(sDay) || sDay.length == 0) //check day
    {
        return false;
    }
    else if (!CheckDay(sYear, sMonth, sDay)) // check day
    {
        return false;
    }
    else
    {
        return true;
    }
}

//----------------------------------------------------
function CheckDay(checkYear, checkMonth, checkDay)
{

    maxDay = 31;

    if (checkMonth == 4 || checkMonth == 6 ||
			checkMonth == 9 || checkMonth == 11)
        maxDay = 30;
    else
        if (checkMonth == 2)
    {
        if (checkYear % 4 > 0)
            maxDay = 28;
        else
            if (checkYear % 100 == 0 && checkYear % 400 > 0)
            maxDay = 28;
        else
            maxDay = 29;
    }

    return CheckRange(checkDay, 1, maxDay); //check day
}


//----------------------------------------------------
function CheckInteger(object_value)
{
    //Returns true if value is a number or is NULL
    //otherwise returns false	

    if (object_value.length == 0)
        return true;

    //Returns true if value is an integer defined as
    //   having an optional leading + or -.
    //   otherwise containing only the characters 0-9.
    var decimal_format = ".";
    var check_char;

    //The first character can be + -  blank or a digit.
    check_char = object_value.indexOf(decimal_format)
    //Was it a decimal?
    if (check_char < 1)
        return CheckNumber(object_value);
    else
        return false;
}

//----------------------------------------------------
function NumberRange(object_value, min_value, max_value)
{
    // check minimum
    if (min_value != null)
    {
        if (object_value < min_value)
            return false;
    }

    // check maximum
    if (max_value != null)
    {
        if (object_value > max_value)
            return false;
    }

    //All tests passed, so...
    return true;
}

//----------------------------------------------------
function CheckRange(object_value, min_value, max_value)
{
    //if value is in range then return true else return false

    if (object_value.length == 0)
        return true;


    if (!CheckNumber(object_value))
    {
        return false;
    }
    else
    {
        return (NumberRange((eval(object_value)), min_value, max_value));
    }

    //All tests passed, so...
    return true;
}

//----------------------------------------------------
function SetYear(object_value, Field)
{
    if (object_value.length == 0)
        return true;

    //Returns true if value is a date in the mm/dd/yyyy, mm-dd-yyyy, mm.dd.yyyy format

    isplit = object_value.indexOf('/');

    if (isplit == -1 || isplit == object_value.length)
    {
        isplit = object_value.indexOf('-');
        if (isplit == -1 || isplit == object_value.length)
        {
            isplit = object_value.indexOf('.');
            if (isplit == -1 || isplit == object_value.length)
                return false;
        }
    }

    isplit2 = object_value.indexOf('/', isplit + 1);
    if (isplit2 == -1 || isplit2 == object_value.length)
    {
        isplit2 = object_value.indexOf('-', isplit + 1);
        if (isplit2 == -1 || isplit2 == object_value.length)
        {
            isplit2 = object_value.indexOf('.', isplit + 1);
            if (isplit2 == -1 || isplit2 == object_value.length)
            {
                // If no year entered, assume current year
                CurrentDate = new Date();
                // AJG 6/14/00 - made change, do not add 1900 to CurrentDate.getYear() to handle if user does not enter year
                Field.value = object_value.substring(0, isplit) + "/" +
						object_value.substring(isplit + 1) + "/" +
						(CurrentDate.getYear());
                return true;
            }
        }
    }

    sYear = object_value.substring(isplit2 + 1);
    // If user only enters a 1 digit year, add a leading 0
    if (parseInt(sYear) < 10)
        sYear = "0" + parseInt(sYear);

    // If user enters 2 digit year < 70, assume 2000
    if (parseInt(sYear) < 70)
    {
        Field.value = object_value.substring(0, isplit) + "/" +
			object_value.substring(isplit + 1, isplit2) + "/" +
			"20" + sYear;
        return true;
    }
    else
    // If user enters 2 digit year >=70, assume 1900
        if (parseInt(sYear) >= 70 && parseInt(sYear) < 100)
    {
        Field.value = object_value.substring(0, isplit) + "/" +
			object_value.substring(isplit + 1, isplit2) + "/" +
			"19" + sYear;
        return true;
    }
    else
    {
        Field.value = object_value.substring(0, isplit) + "/" +
			object_value.substring(isplit + 1, isplit2) + "/" +
			sYear;
        return true;
    }
}



//----------------------------------------------------
function CheckEmail(vIn)
{
    var iAtCnt = 0, iDotCnt = 0, l = vIn.length;
    if (vIn.length == 0) { return true; }
    if (vIn.lastIndexOf("@") > vIn.lastIndexOf(".")) { return false; }
    if (vIn.charAt(0) == "@" || vIn.charAt(0) == ".") { return false; }
    if (vIn.charAt(l - 1) == "@" || vIn.charAt(l - 1) == ".") { return false; }
    for (i = 0; i < l; i++)
    {
        if (vIn.charAt(i) == "@") { iAtCnt++; }
        if (vIn.charAt(i) == ".") { iDotCnt++; }
    }
    if (iAtCnt == 1 && iDotCnt > 0) { return true; }
    else { return false; }
}

//----------------------------------------------------
function CheckZipCode(obj_this)
{

    var vIn
    vIn = trimSpace(obj_this.value);
    if (vIn.length == 0) { return true; }
    if (vIn.lastIndexOf("-") != -1) { vIn = vIn.substring(0, vIn.lastIndexOf("-")) + vIn.substring((vIn.lastIndexOf("-") + 1)) }
    if (!CheckNumber(vIn)) { return false; }
    if (vIn.length == 5) { obj_this.value = vIn; return true; }
    if (vIn.length == 9)
    {
        vIn = vIn.substring(0, 5) + "-" + vIn.substring(5)
        obj_this.value = vIn;
        return true;
    } else
    { return false; }
}

//----------------------------------------------------
function trimSpace(vIn)
{
    var tmp = "";
    for (i = 0; i < vIn.length; i++)
    {
        if (vIn.charAt(i) != " ")
        {
            tmp += vIn.charAt(i);
        }
    }
    return tmp;
}

function IsValidTime(oTime)
{
    try
    {
        var iErrorOnLine = 0;

        var sTime = oTime.value;
        var sAMorPM;

        iErrorOnLine = 10;
        var sStandardTimePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))$/;
        var aMatchArray = sTime.match(sStandardTimePat);

        iErrorOnLine = 50;
        if (aMatchArray == null)
        {
            iErrorOnLine = 70;
            var sMillitaryTimePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?$/;

            iErrorOnLine = 90;
            var aMillitaryMatchArray = sTime.match(sMillitaryTimePat);
            if (aMillitaryMatchArray == null)
            {

                iErrorOnLine = 120;
                var sMillitaryTimePat2 = /^(\d{1,2})(\d{2})(\d{2})?$/;

                iErrorOnLine = 140;
                var aMillitaryMatchArray2 = sTime.match(sMillitaryTimePat2);
                if (aMillitaryMatchArray2 == null)
                {
                    return false;
                }
                else
                {
                    iErrorOnLine = 200;

                    aMillitaryMatchArray2[1] = parseInt(aMillitaryMatchArray2[1])

                    if (parseInt(aMillitaryMatchArray2[1]) > 12)
                    {
                        sAMorPM = ' pm';

                        iErrorOnLine = 230;
                        aMillitaryMatchArray2[1] = aMillitaryMatchArray2[1] - 12;
                    }
                    else
                    {
                        sAMorPM = ' am';
                    }

                    if (aMillitaryMatchArray2[3])
                    {
                        sTime = aMillitaryMatchArray2[1] + ':' + aMillitaryMatchArray2[2] + ':' + aMillitaryMatchArray2[3] + sAMorPM;
                    }
                    else
                    {
                        sTime = aMillitaryMatchArray2[1] + ':' + aMillitaryMatchArray2[2] + sAMorPM;
                    }

                    iErrorOnLine = 260;
                }
            }
            else
            {
                iErrorOnLine = 400;

                aMillitaryMatchArray[1] = parseInt(aMillitaryMatchArray[1]);

                if (aMillitaryMatchArray[1] > 12)
                {
                    sAMorPM = ' pm';

                    iErrorOnLine = 430;
                    aMillitaryMatchArray[1] = aMillitaryMatchArray[1] - 12;
                }
                else
                {
                    sAMorPM = ' am';
                }

                iErrorOnLine = 460;

                if (aMillitaryMatchArray[3])
                {
                    sTime = aMillitaryMatchArray[1] + ':' + aMillitaryMatchArray[2] + ':' + aMillitaryMatchArray[3] + sAMorPM;
                }
                else
                {
                    sTime = aMillitaryMatchArray[1] + ':' + aMillitaryMatchArray[2] + sAMorPM;
                }
            }

            iErrorOnLine = 500;
        }
        else
        {
            aMatchArray[1] = parseInt(aMatchArray[1]);

            if (aMatchArray[6] == 'pm' || aMatchArray[6] == 'PM')
            {
                sAMorPM = ' pm';
            }
            else
            {
                sAMorPM = ' am';
            }


            if (aMatchArray[4])
            {
                sTime = aMatchArray[1] + ':' + aMatchArray[2] + ':' + aMatchArray[4] + sAMorPM;
            }
            else
            {
                sTime = aMatchArray[1] + ':' + aMatchArray[2] + sAMorPM;
            }
        }


        aMatchArray = sTime.match(sStandardTimePat);

        iErrorOnLine = 600;
        hour = aMatchArray[1];
        minute = aMatchArray[2];
        second = aMatchArray[4];
        ampm = aMatchArray[6];

        if (second == "") { second = null; }

        if (hour < 0 || hour > 12)
        {
            //alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
            return false;
        }
        if (minute < 0 || minute > 59)
        {
            //alert ("Minute must be between 0 and 59.");
            return false;
        }
        if (second != null && (second < 0 || second > 59))
        {
            //alert ("Second must be between 0 and 59.");
            return false;
        }

        iErrorOnLine = 1000;
        oTime.value = trim(sTime);

        return true;
    }
    catch (oErr)
    {
        JSError('IsValidTime', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
        return false;
    }
}
function Replace(string, text, by)
{
    return replace(string, text, by);
}

function replace(string, text, by)
{
    var strLength = string.length;
    var txtLength = text.length;

    if ((strLength == 0) || (txtLength == 0))
    {
        return string;
    }

    var i = string.indexOf(text);

    if ((!i) && (text != string.substring(0, txtLength)))
    {
        return string;
    }

    if (i == -1)
    {
        return string;
    }

    var newstr = string.substring(0, i) + by;

    if (i + txtLength < strLength)
    {
        newstr += replace(string.substring(i + txtLength, strLength), text, by);
    }

    return newstr;
}
function OpenImageWindow(iDocID)
{
    var frmSS = document.frmSS;
    //window.open('' + sImage,'_blank','center=yes,scrollbars=yes,menubar=no,height=350,width=350,resizable=yes,toolbar=no,location=no,status=no');
    var v_Url = 'JHH_Image.asp?SS=' + frmSS.SS.value +
			'&DOCID=' + iDocID;
    window.open(v_Url, '_blank', 'center=yes,scrollbars=yes,menubar=no,height=350,width=350,resizable=yes,toolbar=no,location=no,status=no');
}
function OpenImageWindow(iDocID, iNavButtons)
{
    var frmSS = document.frmSS;
    var v_Url = 'JHH_Image.asp?SS=' + frmSS.SS.value +
			'&DOCID=' + iDocID + '&NavButtons=' + iNavButtons;
    window.open(v_Url, '_blank', 'center=yes,scrollbars=yes,menubar=no,height=350,width=350,resizable=yes,toolbar=no,location=no,status=no');
}
function IsInteger(sString)
{
    try
    {
        var sValidChars = "0123456789";
        var sChar;

        return HasOnlyChars(sString, sValidChars);
    }
    catch (oErr)
    {
        JSError('IsInteger', oErr);
    }
}
function IsNumeric(sString)
{
    try
    {
        var sValidChars = "0123456789.-";
        var sChar;

        return HasOnlyChars(sString, sValidChars);
    }
    catch (oErr)
    {
        JSError('IsInteger', oErr);
    }
}
function CheckOneSelected(oElem)
{
    try
    {
        var iErrorOnLine = 0;

        for (var i = 0; i < oElem.length; i++)
        {
            if (oElem[i].checked == true)
            {
                return true;
                break;
            }
        }

        return false;
    }
    catch (oErr)
    {
        JSError('CheckOneSelected', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}

function HasOnlyChars(sString, sValidChars)
{
    try
    {
        var sChar;
        var bResult = true;
        if (sString.length == 0) return false;
        for (i = 0; i < sString.length && bResult == true; i++)
        {
            sChar = sString.charAt(i);
            if (sValidChars.indexOf(sChar) == -1)
            {
                bResult = false;
            }
        }
        return bResult;
    }
    catch (oErr)
    {
        JSError('HasOnlyChars', oErr);
    }
}
function getYear(dDate)
{
    try
    {
        var iYear = dDate.getYear();
        if (iYear < 200)
        {
            iYear += 1900;
        }
        return iYear;
    }
    catch (oErr)
    {
        JSError('getYear', oErr);
    }
}
function AskForTrust()
{
    alert('Please add https://' + location.hostname + ' as a trusted site.\n\n'
			+ 'Why? This site uses client side dynamic interaction between pages. This is not\n'
			+ 'allowed by default by most browsers default security settings but it does allow\n'
			+ 'us to provide you with an easyer to use and in some cases faster site.\n'
			+ '   Thank you,\n'
			+ '      ' + location.hostname + ' Staff');
}
function OpenHelp(sPageID, sControl)
{
    try
    {
        if (!sPageID)
        {
            sPageID = Replace(location.pathname,'/','_');
        }

        if (!sControl)
        {
            sControl = '';
        }

        Nav(document.frmSS, 'JHH_PageHelp.aspx', 'Key=' + sPageID + '&=Control' + sControl, 'HelpWindow');

        return false;
    }
    catch (oErr)
    {
        JSError('OpenHelp', oErr);
    }
}

function DownloadFile(iDocID)
{
    try
    {
        if (iDocID != 'none')
        {
            AddDownloadFilesQue(iDocID);
        }
    }
    catch (oErr)
    {
        JSError('DownloadFile', oErr + '\n\n iDocID=' + iDocID + '\n iErrorOnLine=' + iErrorOnLine);
    }
}

function DocDL(iDocID)
{
    try
    {
        var iErrorOnLine = 4;

        if (iDocID)
        {
            if (iDocID != '')
            {
                if (iDocID != 'none')
                {
                    var frmDOC = CreateNewForm('');

                    var sOldTarget = frmDOC.target;
                    var sOldAction = frmDOC.action;

                    //var frmDOC = CreateNewForm('');
                    //alert(sDownloadsServer + '/DOC_DownloadFile.aspx');
                    frmDOC.action = sDownloadsServer + '/DOC_DownloadFile.aspx';


                    iErrorOnLine = 40;
                    var sTarget = 'DLWINDOW'; // + iWindow;
                    //iWindow += 1;

                    //alert(sTarget);
                    frmDOC.target = sTarget;

                    iErrorOnLine = 50;
                    var oDocID;

                    oDocID = CreateElementByName('INPUT', 'DocID');
                    oDocID.setAttribute('type', 'hidden');
                    oDocID.value = iDocID;

                    frmDOC.appendChild(oDocID);

                    iErrorOnLine = 60;

                    var oDetailsWindow = window.open("", sTarget);


                    frmDOC.submit();

                    oDetailsWindow.focus();
                    frmDOC.target = sOldTarget;
                    frmDOC.action = sOldAction;
                    iErrorOnLine = 70;

                    oDetailsWindow.focus();

                    oDetailsWindow = null;

                }
            }
        }
    }
    catch (oErr)
    {
        JSError('DownloadFile', oErr + '\n\n iDocID=' + iDocID + '\n iErrorOnLine=' + iErrorOnLine);
    }
}

function OpenSecureWindow(sPage, sTarget, aID_Name, aVal, sWindowProperties)
{
    try
    {
        var iErrorOnLine = 1;
        var frm = CreateNewWindow();
        var sTarget = 'HelpWindow';
        var aFound = new Array(aID_Name.length);
        var oDocIDs = frm.getElementsByTagName('INPUT');
        var oDocID;
        var i, j;

        iErrorOnLine = 10;
        for (i = 0; i < aFound.length; i++)
        {
            aFound[i] = -1;
        }

        iErrorOnLine = 15;
        for (i = 0; i < oDocIDs.length; i++)
        {
            for (j = 0; j < aID_Name.length; j++)
            {
                if (aFound[j] == -1)
                {
                    if (oDocIDs[i].id == aID_Name[j])
                    {
                        aFound[j] = true;
                    }
                }
            }
        }
        iErrorOnLine = 25;
        for (j = 0; j < aID_Name.length; j++)
        {
            if (aFound[j] == -1)
            {
                oDocID = document.createElement('INPUT');
                oDocID.setAttribute('type', 'hidden');
                oDocID.setAttribute('id', aID_Name[j]);
                oDocID.setAttribute('name', aID_Name[j]);
                oDocID.value = aVal[j];
                frm.appendChild(oDocID);
            }
            else
            {
                oDocIDs[aFound[j]] = aVal[j];
            }
        }
        iErrorOnLine = 35;

        frm.action = sPage + '';
        frm.target = sTarget;
        DetailsWindow = window.open("", sTarget, sWindowProperties);

        DetailsWindow.focus();

        frm.submit();
        iWindow = parseFloat(iWindow) + 1;

        frm.target = '';
        return true;
    }
    catch (oErr)
    {
        JSError('OpenSecureWindow', oErr);
    }
}
/********************************************************************************************
* ChangeVisibility: Changes the visability of an object by its ID 
********************************************************************************************/
function ChangeVisibility(sID, iVisible)
{
    try
    {
        var elem;
        var sString;
        elem = document.getElementById(sID);
        if (elem != null)
        {
            if (iVisible == 0)
            {
                elem.style.display = 'none';
            }
            else
            {
                elem.style.display = 'block';
            }
        }
        return elem;
    }
    catch (oErr)
    {
        JSError('ChangeVisibility', oErr + '\n\nsID=' + sID + '\niVisible=' + iVisible);
        return false;
    }
}
function JSError(sFunction, oErr)
{
    try
    {
        var sLocation = location.href;

        if (bDebug)
        {
            alert('Function: ' + sFunction + '\n Error Desc: ' + oErr);
        }
        else
        {
            SaveThis('Error', BuildParameter("CHAR", sLocation) + BuildParameter("CHAR", sFunction) + BuildParameter("CHAR", oErr));
        }
        return false;
    }
    catch (oErr2)
    {
        alert(oErr2 + '\n\n Function: ' + sFunction + '\n Error Desc: ' + oErr);
    }
}
function CheckLaunchAutoSave()
{
    try
    {
        if (DownloadFileQue.length > 0 || CommandTypeQue.length > 0)
        {
            LaunchAutoSave();
        }
    }
    catch (oErr)
    {
        JSError('CheckLaunchAutoSave', oErr)
    }
}
function LaunchAutoSave()
{
    try
    {
        var iErrorOnLine = 1;
        var iType;

        if (InProcess == false)
        {
            if (DownloadFileQue.length == 0)
            {
                InProcess = true;
                document.all.DataIFrame.src = '/JHH_AutoPost.asp?SS=' + document.frmSS.SS.value + '&CurrentUDV=' + document.frmSS.CurrentUDV.value;
            }
            else
            {
                iType = 2;
                iErrorOnLine = 2;


                var frmDOC = document.forms[0];

                var sOldTarget = frmDOC.target;
                var sOldAction = frmDOC.action;

                //var frmDOC = CreateNewForm('');
                //alert(sDownloadsServer + '/DOC_DownloadFile.aspx');
                frmDOC.action = sDownloadsServer + '/DOC_DownloadFile.aspx';


                iErrorOnLine = 4;
                var sTarget = 'DLWINDOW'; // + iWindow;
                //iWindow += 1;

                //alert(sTarget);
                frmDOC.target = sTarget;

                iErrorOnLine = 5;
                var oDocID;
                if (!frmDOC.DocID)
                {
                    oDocID = CreateElementByName('INPUT', 'DocID');
                    oDocID.setAttribute('type', 'hidden');
                    frmDOC.appendChild(oDocID);
                }
                else
                {
                    oDocID = frmDOC.DocID;
                }

                //alert('DownloadFileQue[0]=' + DownloadFileQue[0]);
                oDocID.value = DownloadFileQue[0];
                iErrorOnLine = 6;

                frmDOC.submit();

                frmDOC.target = sOldTarget;
                frmDOC.action = sOldAction;
                iErrorOnLine = 7;

                DownloadFileQue.splice(0, 1);
                iErrorOnLine = 8;
            }
        }
        return false;
    }
    catch (oErr)
    {
        JSError('LaunchAutoSave', oErr + '\n\n iErrorOnLine=' + iErrorOnLine)
        if (iType == 2)
        {
            DownloadFileQue.splice(0, 1);
        }
    }
}
function AddDownloadFilesQue(iDocID)
{
    try
    {
        DownloadFileQue[DownloadFileQue.length] = iDocID;

        return LaunchAutoSave();
    }
    catch (oErr)
    {
        JSError('AddDownloadFilesQue', oErr + '\n\n iDocID=' + iDocID);
    }
}

function SaveThis(sID, sVars)
{
    try
    {
        QueThis(sID, sVars, 'ReturnRec(aRecSet)');

        return LaunchAutoSave();
    }
    catch (oErr)
    {
        JSError('SaveThis', oErr)
    }
}
function ExecThis(sID, sVars, sFunc)
{
    try
    {
        QueThis(sID, sVars, sFunc);

        return LaunchAutoSave();
    }
    catch (oErr)
    {
        JSError('SaveThis', oErr)
    }
}
function QueThis(sID, sVars, sFunc)
{
    try
    {
        CommandTypeQue[CommandTypeQue.length] = sID;
        CommandVarsQue[CommandVarsQue.length] = sVars;
        CommandHrefQue[CommandHrefQue.length] = location.href;
        CommandFuncQue[CommandFuncQue.length] = sFunc;

        return false;
    }
    catch (oErr)
    {
        JSError('QueThis', oErr)
        return false;
    }
}
function DeleteElementByID(sID)
{
    try
    {
        var oElement = document.getElementById(sID);

        if (oElement)
        {
            var oParentElem = oElement.parentNode;
            oParentElem.removeChild(oElement);

            return true;
        }
        else
        {
            return false;
        }
    }
    catch (oErr)
    {
        JSError('QueThis', oErr)
        return false;
    }
}
function CreateFrameByName(sName)
{
    try
    {
        var iErrorOnLine = 0;

        var oFrame = CreateElementByName('iframe', sName);
        iErrorOnLine = 3;
        oFrame.src = '/Blank.htm';

        iErrorOnLine = 5;

        oFrame.frameBorder = "no";
        iErrorOnLine = 7;
        oFrame.border = 0;

        iErrorOnLine = 10;

        if (bDebug)
        {
            iErrorOnLine = 11;
            oFrame.width = 600;
            iErrorOnLine = 12;
            oFrame.height = 600;
        }
        else
        {
            iErrorOnLine = 15;
            oFrame.style.display = 'none';
        }
        return oFrame;
        iErrorOnLine = 20;

    }
    catch (oErr)
    {
        JSError('CreateFrameByName', oErr + '\n\n iErrorOnLine=' + iErrorOnLine)
        return false;
    }
}

function CreateElementByName(sTag, sName)
{
    try
    {
        var oGeneric;
        if (ie5)
        {
            oGeneric = document.createElement('<' + sTag + ' name="' + sName + '">');
        }
        else
        {
            oGeneric = document.createElement(sTag);
            oGeneric.setAttribute('name', sName);
        }
        return oGeneric;
    }
    catch (oErr)
    {
        JSError('CreateElementByName', oErr)
        return false;
    }
}
function CreateElement(sTag)
{
    try
    {
        var oGeneric;
        if (ie5)
        {
            oGeneric = document.createElement('<' + sTag + '>');
        }
        else
        {
            oGeneric = document.createElement(sTag);
        }
        return oGeneric;
    }
    catch (oErr)
    {
        JSError('CreateElementByName', oErr)
        return false;
    }
}
function NewDialogBox(sURL, iHeight, iWidth, sQueryString, oVariable, bScroll)
{
    try
    {
        var iErrorOnLine = 0;

        if (sQueryString == '')
        {
            sQueryString = null;
        }
        else if (sQueryString.substring(0, 1) != '&')
        {
            sQueryString = '&' + sQueryString;
        }
        iErrorOnLine = 30;

        var sScroll;
        if (bScroll)
        {
            sScroll = 'scroll:1;';
        }
        else
        {
            sScroll = 'scroll:0;';
        }

        var sURL;

        iErrorOnLine = 50;
        if (sQueryString)
        {
            iErrorOnLine = 60;
            sURL = sURL + '?SS=' + sSessionKey + '&CurrentUDV=' + iCurrentUDV + '&page=' + Replace(Replace(location.href, "%", "%25"), "&", "%26") + sQueryString;
        }
        else
        {
            iErrorOnLine = 70;
            sURL = sURL + '?SS=' + sSessionKey + '&CurrentUDV=' + iCurrentUDV + '&page=' + Replace(Replace(location.href, "%", "%25"), "&", "%26");
        }

        iErrorOnLine = 100;
        var sValue = showModalDialog(sURL, oVariable, sScroll + 'resizable:yes;help:0;status:0;dialogWidth:' + iWidth + 'px;dialogHeight:' + iHeight + 'px;');

        //active();

        return sValue;
    }
    catch (oErr)
    {
        JSError('NewDialogBox', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
        return false;
    }
}
function OpenNewWindow(sURL, sTarget, iHeight, iWidth, frm, sParms)
{
    try
    {
        var iErrorOnLine = 0;

        var sOldURL = frm.action;

        iErrorOnLine = 10;

        iErrorOnLine = 30;
        oDetailsWindow = window.open("", sTarget, 'center=yes,scrollbars=yes,menubar=no,height=' + iHeight + ',width=' + iWidth + ',resizable=yes,toolbar=no,location=no,status=no');
        iErrorOnLine = 40;

        Nav(frm, sURL, sParms, sTarget, true);

        iErrorOnLine = 50;
        frm.action = sOldURL;

        iErrorOnLine = 70;
        if (oDetailsWindow)
        {
            iErrorOnLine = 80;
            oDetailsWindow.focus();
        }

        iErrorOnLine = 90;
        return oDetailsWindow;
    }
    catch (oErr)
    {
        JSError('OpenNewWindow', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
        return false;
    }
}


function FilterOutWebChanges(sVar)
{
    try
    {
        var sParms = sVar.replace(/\+/g, " ").replace(/%2F/g, "/").replace(/%3B/g, ";").replace(/%7E/g, "~");

        return sParms;
    }
    catch (oErr)
    {
        JSError('FilterOutWebChanges', oErr);
    }
}


function GetOffsetLeft(oElem)
{
    try
    {
        var iOffset = 0;

        if (bIE)
        {
            while (oElem != null)
            {
                iOffset += oElem.offsetLeft;

                oElem = oElem.offsetParent;
            }
        }
        else
        {

            while (oElem != null)
            {
                iOffset += parseInt(oElem["offsetLeft"]);
                //alert(oElem["offsetLeft"] + '\n' + oElem.offsetLeft);

                oElem = oElem.offsetParent;
            }
        }

        //alert(iOffset);
        return iOffset;
    }
    catch (oErr)
    {
        JSError('GetOffsetLeft', oErr);
        return false;
    }
}
function GetOffsetTop(oElem)
{
    try
    {
        var iOffset = oElem.offsetTop;
        while ((oElem = oElem.offsetParent) != null)
        {
            iOffset += oElem.offsetTop;
        }
        return iOffset;
    }
    catch (oErr)
    {
        JSError('GetOffsetTop', oErr);
        return false;
    }
}

function PText(sText)
{
    try
    {
        var oP = document.createElement('P');
        oP.innerHTML = sText;

        return oP;
    }
    catch (oErr)
    {
        JSError('PText', oErr);
        return false;
    }
}

function DeleteElement(oElem)
{
    try
    {
        if (oElem.hasChildNodes() == true)
        {
            for (var i = 0; i < oElem.childNodes.length; i++)
            {
                DeleteElement(oElem.childNodes[i]);
            }
        }
        var oParentElement = oElem.parentNode;

        oParentElement.removeChild(oElem);
    }
    catch (oErr)
    {
        JSError('DeleteElement', oErr);
        return false;
    }
}

function AppendHidden(frm, sName, sValue)
{
    try
    {
        var oElem = CreateElementByName('INPUT', sName);
        oElem.type = "HIDDEN";
        oElem.value = sValue;
        frm.appendChild(oElem);
    }
    catch (oErr)
    {
        JSError('AppendHidden', oErr);
    }
}
function CreateNewForm(sFrmName)
{
    try
    {
        var frm = CreateElementByName("FORM", sFrmName);

        document.getElementsByTagName("body")[0].appendChild(frm);

        frm.method = "POST";

        if (document.frmSS)
        {
            if (document.frmSS.SS)
            {
                var oElem = CreateElementByName('INPUT', 'SS');
                oElem.type = "HIDDEN";
                oElem.value = document.frmSS.SS.value;
                frm.appendChild(oElem);
            }
            if (document.frmSS.CurrentUDV)
            {

                oElem = CreateElementByName('INPUT', 'CurrentUDV');
                oElem.type = "HIDDEN";
                oElem.value = document.frmSS.CurrentUDV.value;
                frm.appendChild(oElem);
            }
        }

        return frm;
    }
    catch (oErr)
    {
        JSError('CreateNewForm', oErr);
    }
}
function EmailUser(sEmail, bPager, sTitle)
{
    try
    {
        if (bPager == 'True')
        {
            bPager = true;
        }
        else if (bPager == 'False')
        {
            bPager = false;
        }


        if (sTitle)
        {
            sTitle = '&Title=' + sTitle
        }
        else
        {
            sTitle = '';
        }

        if (bPager == true)
        {
            Nav(null, '/JHH_Email.aspx', 'Email=' + sEmail + '&Pager=1' + sTitle);
        }
        else
        {
            Nav(null, '/JHH_Email.aspx', 'Email=' + sEmail + '&Pager=0' + sTitle);
        }

    }
    catch (oErr)
    {
        JSError('EmailUser', oErr);
    }
}
function MessageUser(iUser_ID, bPager)
{
    try
    {
        var frm = document.frmSS;

        if (bPager)
        {
            Nav(frm, 'JHH_Email.aspx', 'User_ID=' + iUser_ID + '&Pager=1');
        }
        else
        {
            Nav(frm, 'JHH_Email.aspx', 'User_ID=' + iUser_ID + '&Email=1');
        }

        return false;
    }
    catch (oErr)
    {
        JSError('MessageUser', oErr);
    }
}

function GetDSaveFrame(sFrameName)
{
    try
    {
        var iErrorOnLine = 0;

        if (!sFrameName)
        {
            iErrorOnLine = 10;
            sFrameName = 'DSaveFrame';
        }
        iErrorOnLine = 20;

        var oIframe = document.getElementsByName(sFrameName)[0];
        iErrorOnLine = 30;

        if (!oIframe)
        {
            iErrorOnLine = 40;
            oIframe = CreateFrameByName(sFrameName);
            iErrorOnLine = 50;

            var oFrms = document.getElementsByTagName('Form');
            iErrorOnLine = 60;

            oFrms[oFrms.length - 1].appendChild(oIframe);
        }
        iErrorOnLine = 70;

        return oIframe;
    }
    catch (oErr)
    {
        JSError('GetDSaveFrame', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}
function QSVars(sParms)
{
    try
    {
        var iErrorOnLine = 0;
        if (sParms)
        {
            iErrorOnLine = 10;

            if (sParms.substring(0, 1) != '&')
            {
                iErrorOnLine = 30;
                sParms = '&' + sParms;
            }


            iErrorOnLine = 50;

            sParms = RemoveParm(RemoveParm(sParms, 'CurrentUDV'), 'SS');

            iErrorOnLine = 70;

            sParms = '?SS=' + sSessionKey + '&CurrentUDV=' + iCurrentUDV + sParms;

            iErrorOnLine = 80;
            //sParms = '?' + sParms.substring(1, sParms.length - 1);
        }
        else
        {
            iErrorOnLine = 110;

            if (!iCurrentUDV)
            {
                iErrorOnLine = 120;
                sParms = '?SS=' + sSessionKey + '&CurrentUDV=' + document.frmSS.CurrentUDV.value;
                //sParms = '';
            }
            else
            {
                iErrorOnLine = 130;
                sParms = '?SS=' + sSessionKey + '&CurrentUDV=' + iCurrentUDV;
                //sParms = '';
            }
        }
        iErrorOnLine = 200;

        if (!(sParms.indexOf('&Lang_ID=', 0) > 0))
        {
            iErrorOnLine = 210;

            if (document.frmSS)
            {
                if (document.frmSS.Lang_ID.value != '0')
                {
                    iErrorOnLine = 220;
                    sParms = sParms + '&Lang_ID=' + document.frmSS.Lang_ID.value;
                }
            }
        }

        return sParms;
    }
    catch (oErr)
    {
        JSError('QSVars', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}
/*
function NavBack(iNumberOfPagesBack)
{
window.history.back();
window.setInterval("window.history.back();", 100);
}
*/
//var bContinueNavBack = false;
function NavBack(iNumberOfPagesBack, bCont)
{
    try
    {
        var iErrorOnLine = 0;

        iErrorOnLine = 50;

        //alert(bCont + ' == ' + bContinueNavBack);
        //if (!bCont)
        //{
        //    bCont = false;
        //}

        //if ((bCont == false && bContinueNavBack == false) || (bCont == true && bContinueNavBack == true))
        {
            //bContinueNavBack = true;

            if (!iNumberOfPagesBack)
            {
                window.history.back();
                //window.setInterval("NavBack(1,true)", 100);
            }
            else if (!IsNumeric(iNumberOfPagesBack))
            {
                window.history.back();
                //window.setInterval("NavBack(1,true)", 100);
            }
            else
            {
                window.history.go(-iNumberOfPagesBack);
            }
        }
        iErrorOnLine = 100;

        return false;
    }
    catch (oErr)
    {
        JSError('NavBack', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}



var xmlUpload;
function UploadFile(sObjectName)
{

    xmlUpload = new XMLHttpRequest();
    if (!xmlUpload)
    {
        alert('Cannot create XMLHTTP instance');
        return false;
    }

    // prepare the MIME POST data
    var boundaryString = 'capitano';
    var boundary = '--' + boundaryString;
    var requestbody = boundary + '\n'
	                + 'Content-Disposition: form-data; name="mytext"' + '\n'
	                + '\n'
	                + mytext + '\n'
	                + '\n'
	                + boundary + '\n'
	                + 'Content-Disposition: form-data; name="' + sObjectName + '"; filename="'
		                + sObjectName.value + '"' + '\n'
	                + 'Content-Type: application/octet-stream' + '\n'
	                + '\n'
	                + escape(binary.readBytes(binary.available()))
	                + '\n'
	                + boundary;

    //document.getElementById('sizespan').innerHTML = "requestbody.length=" + requestbody.length;

    // do the AJAX request
    //http_request.onreadystatechange = requestdone;
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "multipart/form-data; \
		        boundary=\"" + boundaryString + "\"");
    http_request.setRequestHeader("Connection", "close");
    http_request.setRequestHeader("Content-length", requestbody.length);
    http_request.send(requestbody);

}



function GetxmlHttp_OLD()
{
    try
    {
        var oXMLHttp = new XMLHttpRequest();
        alert('oXMLHttp = new XMLHttpRequest();');
    }
    catch (e)
    {
        try
        {
            oXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
            alert('oXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");');
        }
        catch (e)
        {
            try
            {
                oXMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
                alert('oXMLHttp = new ActiveXObject("Msxml2.XMLHTTP");');
            }
            catch (e)
            {
                alert("Your browser does not support AJAX!");
            }
        }
    }

    return oXMLHttp;
}
function GetxmlHttp()
{
    var oXMLHttp = null;
    // I think the issue has something to do with this area of code... (1)

    if (window.ActiveXObject)
    {
        try
        {
            oXMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e)
        {
            try
            {
                oXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            { }
        }
    }
    else if (window.XMLHttpRequest)
    {
        oXMLHttp = new XMLHttpRequest();
        if (oXMLHttp.overrideMimeType)
        {
            oXMLHttp.overrideMimeType('text/html');
        }
    }
    if (oXMLHttp == null)
    {
        alert('Cannot create XMLHTTP instance');
    }


    return oXMLHttp;
}

function GetObjectParms(oElem, sParms)
{
    try
    {
        var iErrorOnLine = 0;
        var sFormParms = 'NavHiddenSubmit=1';

        iErrorOnLine = 10;
        if (oElem)
        {
            iErrorOnLine = 20;
            var aInputs = oElem.getElementsByTagName('input');
            var aSelects = oElem.getElementsByTagName('select');
            var aTextareas = oElem.getElementsByTagName('textarea');

            var i;

            iErrorOnLine = 260;
            if (aInputs.length > 0)
            {
                for (var i = 0; i < aInputs.length; i++)
                {
                    if (aInputs[i].type == 'checkbox' || aInputs[i].type == 'radio')
                    {
                        if (aInputs[i].checked == true)
                        {
                            sFormParms = sFormParms + '&' + aInputs[i].name.replace('ctl00$CPH_Main$', '').replace('ctl00_CPH_Main_', '') + '=' + escape(encodeURI(aInputs[i].value));
                        }
                    }
                    else
                    {
                        sFormParms = sFormParms + '&' + aInputs[i].name.replace('ctl00$CPH_Main$', '') + '=' + escape(encodeURI(aInputs[i].value));
                    }
                }
            }

            //alert('sFormParms1=' + sFormParms);

            iErrorOnLine = 270;
            if (aSelects.length > 0)
            {
                for (var i = 0; i < aSelects.length; i++)
                {
                    //alert('Name=' + aSelects[i].name.replace('ctl00$CPH_Main$','') + '\n Value=' + escape(encodeURI(aSelects[i].options[aSelects[i].selectedIndex].value)));
                    try
                    {
                        sFormParms = sFormParms + '&' + aSelects[i].name.replace('ctl00$CPH_Main$', '') + '=' + escape(encodeURI(aSelects[i].options[aSelects[i].selectedIndex].value));
                    }
                    catch (oErrIgnore)
                    {
                    }
                }
            }

            //alert('sFormParms2=' + sFormParms);
            iErrorOnLine = 280;
            if (aTextareas.length > 0)
            {
                for (var i = 0; i < aTextareas.length; i++)
                {
                    sFormParms = sFormParms + '&' + aTextareas[i].name.replace('ctl00$CPH_Main$', '') + '=' + escape(encodeURI(aTextareas[i].value));
                }
            }

            //alert('sFormParms3=' + sFormParms);
            iErrorOnLine = 290;
        }

        if (sParms.length > 0)
        {
            iErrorOnLine = 370;
            var aParms = sParms.split('&');
            var aNameValue;

            iErrorOnLine = 380;
            for (var i = 0; i < aParms.length; i++)
            {
                aNameValue = aParms[i].split('=');
                sFormParms = sFormParms + '&' + aNameValue[0] + '=' + escape(encodeURI(aNameValue[1]))
            }
        }

        iErrorOnLine = 360;

        return sFormParms;
    }
    catch (oErr)
    {
        JSError('GetObjectParms', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}


var xmlHttp;
function NavHidden(oFrm, sURL, sParms, sOnComplete, sMethod, oXMLHttp, oFunction)
{
    try
    {
        var iErrorOnLine = 0;
        var bNewXMLObject;

        if (!oXMLHttp)
        {
            bNewXMLObject = true;
            oXMLHttp = GetxmlHttp();
            xmlHttp = oXMLHttp;
        }
        else
        {
            bNewXMLObject = false;
        }

        iErrorOnLine = 5;
        if (sURL.substring(0, 1) == '/')
        {
            sURL = sAppRoot + sURL.substring(1, sURL.length);
        }
        else
        {
            if (sURL.split('://').length == 1)
            {
                sURL = sAppRoot + sURL;
            }
        }

        iErrorOnLine = 8;


        iErrorOnLine = 9;

        if (oXMLHttp)
        {
            iErrorOnLine = 10;


            iErrorOnLine = 50;



            if (!sMethod)
            {
                sMethod = 'GET';
            }
            else
            {
                sMethod = sMethod.toUpperCase();
            }



            iErrorOnLine = 100;
            if (sOnComplete)
            {
                //alert(sOnComplete);
                //alert(navigator.appName);

                iErrorOnLine = 110;
                if (bIE)
                {
                    iErrorOnLine = 120;
                    oXMLHttp.onreadystatechange = function()
                    {
                        if (oXMLHttp.readyState == 4)
                        {
                            eval(sOnComplete);
                        }
                    }
                }
                else if (bNN)
                {
                    iErrorOnLine = 150;
                    oXMLHttp.onload = function()
                    {
                        eval(sOnComplete);
                        oXMLHttp = null;
                    }
                }
            }
            else
            {
                iErrorOnLine = 180;
                if (oFunction)
                {
                    if (bIE)
                    {
                        oXMLHttp.onreadystatechange = function()
                        {
                            if (oXMLHttp.readyState == 4)
                            {
                                oFunction();
                            }
                        }
                    }
                    else
                    {
                        oXMLHttp.onload = oFunction;
                    }
                }
                else
                {
                    if (bIE)
                    {
                        oXMLHttp.onreadystatechange = function() { };
                    }
                    else
                    {
                        oXMLHttp.onload = function() { };
                    }
                }
            }



            iErrorOnLine = 200;


            if (sMethod == 'POST')
            {
                iErrorOnLine = 210;

                //xmlHttp.setRequestHeader("Connection", "close");

                /*
                if(!oFrm)
                {
                oFrm = document.aspnetForm;
                }
                */

                iErrorOnLine = 250;

                var sFormParms = GetObjectParms(oFrm, sParms);

                oXMLHttp.open(sMethod, sURL + QSVars(), true);

                iErrorOnLine = 420;
                oXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

                iErrorOnLine = 430;
                oXMLHttp.setRequestHeader("Content-length", sParms.length);
                iErrorOnLine = 440;

                //alert(sFormParms);
                oXMLHttp.send(sFormParms);

            }
            else
            {
                iErrorOnLine = 500;
                var sFormParms = null;

                iErrorOnLine = 510;
                if (sMethod == 'GET2')
                {
                    sFormParms = GetObjectParms(oFrm, sParms);

                    iErrorOnLine = 540;

                }
                else
                {
                    sFormParms = sParms;
                }

                iErrorOnLine = 600;

                //                        alert(sURL);
                //                        alert(QSVars(sFormParms));
                //
                iErrorOnLine = 610;

                oXMLHttp.open('GET', sURL + QSVars(sFormParms), true);

                iErrorOnLine = 620;
                oXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                oXMLHttp.setRequestHeader("Content-length", sFormParms.length);
                //oXMLHttp.setRequestHeader("Connection", "close");

                iErrorOnLine = 660;
                oXMLHttp.send(null);

            }

            /*
            if(bNewXMLObject == true)
            {
            xmlHttp = oXMLHttp;
                        
            alert(xmlHttp);
            }
            */

            return oXMLHttp;
        }
    }
    catch (oErr)
    {
        JSError('NavHidden', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}

function Nav(frm, sURL, sParms, sTarget, bMustPost)
{
    try
    {
        var iErrorOnLine = 0;

        if (sURL.substring(0, 1) == '/')
        {
            sURL = sURL.substring(1, sURL.length);
        }

        iErrorOnLine = 10;
        if (sTarget == 'Save' || sURL.substring(0, 10) == 'AutoSave/')
        {
            GetDSaveFrame();
            sTarget = 'DSaveFrame';
        }

        iErrorOnLine = 50;

        NavDirectlyTo(frm, sURL, sParms, sTarget, bMustPost);

        return false;
    }
    catch (oErr)
    {
        JSError('Nav', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}
function NavDirectlyTo(frm, sURL, sParms, sTarget, bMustPost)
{
    try
    {
        var iErrorOnLine = 0;

        if (sURL.substring(0, 1) == '/')
        {
            sURL = sURL.substring(1, sURL.length);
        }

        iErrorOnLine = 20;
        if (!bMustPost)
        {
            bMustPost = false;
        }

        if (!sTarget)
        {
            sTarget = '';
        }

        iErrorOnLine = 100;

        if (sAppRoot)
        {
            sURL = sAppRoot + sURL + QSVars(sParms);
        }
        else
        {
            sURL = sURL + QSVars(sParms);
        }

        iErrorOnLine = 110;
        var bUseForm = false;
        var oDetailsWindow = null;

        //alert('frm=' + frm + '\n sURL=' + sURL + '\n sParms=' + sParms + '\n sTarget=' + sTarget + '\n bMustPost=' + bMustPost + '\n sURL=' + sURL);
        /*
        if(frm)
        {
        if(frm.SS)
        {
        if(frm.SS.value != '')
        {			                
			                
        bUseForm = true;
        }
        }
        }
        */

        iErrorOnLine = 200;
        if (bMustPost == true)
        {
            frm.target = sTarget;
            iErrorOnLine = 210;
            frm.action = sURL;
            iErrorOnLine = 230;
            frm.submit();
        }
        else if (bUseForm == true)
        {
            frm.target = sTarget;
            iErrorOnLine = 250;
            frm.action = sURL;
            iErrorOnLine = 260;
            frm.submit();
        }
        else
        {
            iErrorOnLine = 350;
            if (sTarget == '')
            {
                iErrorOnLine = 360;
                location.href = sURL;
            }
            else
            {
                iErrorOnLine = 380;
                //window.open(sURL,sTarget,'center=yes,scrollbars=yes,menubar=yes,resizable=yes,toolbar=yes,location=no,status=no');
                var oDetailsWindow = window.open(sURL, sTarget, '');

            }
        }

        if (oDetailsWindow)
        {
            oDetailsWindow.focus();
        }

        return false;
    }
    catch (oErr)
    {
        JSError('NavDirectlyTo', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}
function RemoveParm(sParms, sParmName)
{
    try
    {
        var iErrorOnLine = 0;

        var aParms = sParms.replace('&' + sParmName + '=&', '&').split('&' + sParmName + '=');

        iErrorOnLine = 10;
        var sNewParms = aParms[0];

        var iIndex;

        iErrorOnLine = 20;

        var i = 1;

        while (i < aParms.length)
        {

            iErrorOnLine = 30;
            if (aParms[i].indexOf('&', 0) > 0)
            {
                iErrorOnLine = 50;

                iIndex = aParms[i].indexOf('&');

                iErrorOnLine = 60;
                sNewParms = sNewParms + aParms[i].substring(aParms[i].indexOf('&'), aParms[i].length);
            }

            i++;
        }

        iErrorOnLine = 100;
        //alert(sNewParms);

        return sNewParms;
    }
    catch (oErr)
    {
        JSError('RemoveParm', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
        return false;
    }
}


function MoveToAnchor(sAnchor)
{
    try
    {
        var iErrorOnLine = 0;

        if (sAnchor.substring(0, 1) != '#')
        {
            iErrorOnLine = 10;
            sAnchor = '#' + sAnchor;
        }

        iErrorOnLine = 20;

        var sURL = window.location.toString().split('#')[0];

        iErrorOnLine = 30;
        window.location = sURL + sAnchor;

    }
    catch (oErr)
    {
        JSError('MoveToAnchor', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}
function LogOff()
{
    try
    {
        NavHidden(null, '/AutoSave/JHH_KillSession.aspx', '', "Nav(null,'JHH_LogOff.aspx','LogOff=1');", 'GET');
    }
    catch (oErr)
    {
        JSError('LogOff', oErr);
        return false;
    }
}


function PrintPage()
{
    try
    {
        var iErrorOnLine = 0;

        iErrorOnLine = 50;
        window.focus();
        window.print();

    }
    catch (oErr)
    {
        JSError('PrintPage', oErr + '\n\n iErrorOnLine=' + iErrorOnLine);
    }
}


function BookmarkPage(sURL, sTitle)
{
    if (!sURL)
    {
        sURL = location.href;
    }

    if (!sTitle)
    {
        sTitle = document.title;
    }

    if (bIE)
    {
        window.external.AddFavorite(sURL, sTitle);
    }
    else
    {
        try
        {
            window.sidebar.addPanel(sTitle, sURL, "");
        }
        catch (oErr)
        {
            alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");
            return false;
        }
    }
}

function CurrPath()
{
    try
    {
        var sCurrPath = location.pathname;

        if (sCurrPath.substring(0, sAppRoot.length) == sAppRoot && sAppRoot.length > 1)
        {
            sCurrPath = '/' + sCurrPath.substring(sAppRoot.length, sCurrPath.length);
        }
        else
        {
            if (sCurrPath.substring(0, 1) != '/')
            {
                sCurrPath = '/' + sCurrPath;
            }
        }

        return sCurrPath;

    }
    catch (oErr)
    {
        JSError('CurrPath', oErr);
        return false;
    }
}
function PerfMon()
{
    this.sName;
    this.dStart;
    this.dEnd;

    this.Start = function(sName)
    {
        try
        {
            this.sName = sName;
            this.dStart = new Date();

            var oSpan = document.createElement('span');
            oSpan.innerHTML = '<br>' + this.dStart.format('n/j/y G:i:s') + ':' + this.dStart.getMilliseconds() + ' - Start ' + this.sName + '<br>';
            document.write(oSpan.outerHTML);
        }
        catch (oErr)
        {
            JSError('Start', oErr);
            return false;
        }
    }


    this.Stop = function()
    {
        try
        {
            this.dEnd = new Date();

            var oSpan = document.createElement('span');
            oSpan.innerHTML = this.dEnd.format('n/j/y G:i:s') + ':' + this.dEnd.getMilliseconds() + ' - End ' + this.sName + '<br>';
            document.write(oSpan.outerHTML);

            oSpan = document.createElement('span');
            oSpan.innerHTML = 'CompleteIn ' + (this.dEnd - this.dStart) + '<br><br>';
            document.write(oSpan.outerHTML);
        }
        catch (oErr)
        {
            JSError('Stop', oErr);
            return false;
        }
    }
}

function CheckEnter(eEvent)
{
    if (window.event && window.event.keyCode == 13)
    {
        eEvent();
        return false;
    }
    else
    {
        return true;
    }
}
function SaveSession(sVariableName, sValue)
{
    NavHidden(null, '/JHH/AutoSave/GEN_SaveSession.aspx', 'Var=' + sVariableName + '&Val=' + sValue);
}