var agt     = navigator.userAgent.toLowerCase();
var isOpera = (agt.indexOf("opera") != -1);
var isMajor = (!isOpera || navigator.appName == "Opera")? parseInt(navigator.appVersion)
                                                        : parseInt(agt.substring((agt.indexOf("opera") + 5),agt.length),10);
var isNav   = (  (agt.indexOf('mozilla')!=-1)
              && (agt.indexOf('spoofer')==-1)
              && (agt.indexOf('compatible') == -1)
              && (agt.indexOf('opera')==-1)
              && (agt.indexOf('webtv')==-1));
var isNav4  = (   isNav
              && (isMajor == 4));
var isNav4Up= (   isNav
              && (isMajor >= 4));
var isNav5  = (isNav
              && (isMajor == 5));
var isNav5Up= (isNav
              && (isMajor >= 5));

var isIe    = (agt.indexOf("msie") != -1);

var ieVer = isIe ? agt.substring((agt.indexOf("msie")+5),(agt.indexOf("msie")+6))
                   :0;

var isIe3   = (   isIe
              && (isMajor < 4));
var isIe4   = (   isIe
              && (isMajor == 4)
              && ieVer < 5 );
var isIe4Up = (   isIe
              && (isMajor >= 4));
var isIe5   = (   isIe
              && (isMajor == 4)
              && (ieVer == 5) );
var isIe5Up = (   isIe
              && (ieVer >=5));
var isOpera5Up = (   isOpera
                  && (isMajor >=5));
var isDom2  = (  isIe5Up
              || isNav5Up
              || isOpera5Up);

var msgList = new Array();

var exitDivOpen = false;

if (isNav4)
{
    document.captureEvents(Event.KEYPRESS);
}

document.onkeypress = handleEnterKey;

if (isNav5Up)
{
    document.addEventListener("keypress", handleEnterKey );
}

function validForm(cmd)
{
    return true;
}


function handleEnterKey(evt)
{
    var key
    if (isNav5Up)
    {
        key = evt.keyCode;
        if (key != 13)
        {
            return true;
        }
        else
        {
            processEnterAncestor(evt);
        }
    }
    else if (isNav4)
    {
        key = evt.which;
        if (key != 13)
        {
            routeEvent(evt);
        }
        else
        {
            processEnterAncestor(evt);
        }
    }
    else
    {
        key = window.event.keyCode;
        if (key == 13)
        {
            if(isIe)
            {
                var fieldRef, fieldType, inputType;
                fieldType = event.srcElement.tagName;
                if(fieldType == "INPUT")
                {
                    fieldRef = event.srcElement;
                    inputType = fieldRef.type;
                    inputType = inputType.toUpperCase();

                    if(inputType == "IMAGE"
                    || inputType == "SUBMIT"
                    || inputType == "BUTTON"
                    || inputType == "RESET")
                    {
                        //Clickable control.  Return TRUE to propogate the event,
                        //but do NOT call processEnter()
                        return true;
                    }
                }
                else if(fieldType == "A"
                     || fieldType == "SELECT"
                     || fieldType == "TEXTAREA")
                {
                    //Clickable control.  Return TRUE to propogate the event.
                    return true;
                }
            }
            //if we made it down here, then handle the default action.
            //return FALSE to keep the event from propogating.
            processEnterAncestor(window.event);
            return false;
        }
    }
}

function processEnterAncestor(evt)
{
    //This method is to handle any universal processEnter functionality
    //This closes the exitDiv if it is open and the user pressed <ENTER>
    if(isDom2 && exitDivOpen)
    {
        hideExitDiv();
        showMainDiv();
        return;
    }
    processEnterKey(evt);
}

function processEnterKey(evt)
{

}

function linkSubmitForm(cmd)
{

    var formRef = getObjReference("mainForm");

    if (isDom2)
    {
        msgList = new Array();
        validForm(cmd);

        if(msgList.length > 0)
        {
	    displayErrors();
            window.scroll(0,0);
            return;
        }
    }
    var cmdString = "?command=" + escape( cmd );
    if( formRef.action.indexOf( cmdString ) == -1 )
    {
    	formRef.action += cmdString;
    }

    formRef.submit();
}

function linkSubmitForm( cmd, validateFlag )
{
    var formRef = getObjReference("mainForm");

    if (isDom2)
    {
        msgList = new Array();

        if (linkSubmitForm.arguments.length > 1)
        {
            if (validateFlag)
            {
                validForm(cmd);
            }
        }
        else
        {
            validForm(cmd);
        }

        if(msgList.length > 0)
        {
	    displayErrors();
            window.scroll(0,0);
            return;
        }
    }
    formRef.action += "?command="+ escape(cmd)
    formRef.submit();
}

function submitForm(cmd, validateFlag)
{

    if ((isIe4Up || isDom2) && !isOpera)
    {
        msgList = new Array();
        if (submitForm.arguments.length > 1)
        {
            if (! validateFlag)
            {
                return true;
            }
            else
            {
                validForm(cmd);
            }
        }
        else
        {
            validForm(cmd);
        }

        if(msgList.length > 0)
        {
            displayErrors();
            window.scroll(0,0);
            return false;
        }
        else
        {
            return true;
        }
    }
    else
    {
        /*If the browser does not support the innerHTML property we must do the validation
          on the server.  Therefore return TRUE.
          GK 11/14*/
        return true;
    }
}



function getObjReference(objName)
{
    if(isDom2)
    {
        objRef = document.getElementById(objName);
    }
    else
    {
        objRef = eval("document.mainForm." + objName);
        if (objRef == null)
        {
            if (document.all)
            {
                objRef = eval("document.all." + objName);
            }
            else
            {
                objRef = eval("document." + objName);
            }
        }
    }
    return objRef;
}

function gotoField(field)
{
    var fieldReference;

    fieldReference = getObjReference(field);

    var selectFlag = (fieldReference.type == "text");

    fieldReference.focus();

    if(selectFlag)
       fieldReference.select();
}

/*Don't think we need this.  Evaluate and remove.  GK 11/14*/
/*Took this out.  If nothing breaks, remove completely  GK 8/20/02
function menuInit()
{
  if  (isDom2)
  {
      var obj;
      obj = document.getElementById("hidemenu");
      obj.style.display = "";
      obj.style.visibility = "visible";
  }
  else
  {
    if  ( isNav4 )
    {
        document.layers["hidemenu"].visibility = "visible";
    }
    else
    {
        document.all.hidemenu.style.visibility = "visible";
    }
  }
}
*/

/*Will not use this function for Upgrade*/
function genFieldLink(fieldId, text)
{
    if (genFieldLink.arguments.length != 2)
    {
        return "<i>Field Generation Link Error</i>";
    }

    var linkMsg;
    var linkId = "error" + msgList.length;

    linkMsg = "<a href=\"javaScript:gotoField(\'" + fieldId + "\')\" id=\"" + linkId +"\">" + text + "</a>";

    return linkMsg;

}

function addError(errorMsg)
{
    msgList[msgList.length] = errorMsg;
}


function displayErrors()
{
    var errorTable;
    var errorDivRef;
    hideErrServerDiv();



    errorTable = "<table class=\"messageArea\" width=\"100%\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\">"
                +"<tr><td><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
                +"<tr><td><b>Please fix the following before continuing:</b></td></tr>";

    for (var i=0; i < msgList.length; i++)
    {
        errorTable = errorTable + "<tr><td>" + msgList[i] + "</td></tr>";
    }
    errorTable = errorTable + "</td></tr>"
                            + "<tr><td>&nbsp;"
                            + "<div name=\"exitDiv\" id=\"exitDiv\">"
                            + "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">"
                            + "<tr><td align=\"center\"><INPUT class=\"notifyText\" TYPE=\"button\" name=\"command3\" id=\"command3\" VALUE=\"GO BACK\" onClick=\"hideExitDiv(); showMainDiv();\">"
                            + "</td></tr><tr><td>&nbsp;</td></tr></table></div></td></tr></table></table>";
    errorDivRef = getObjReference("errorDiv");
    errorDivRef.innerHTML = errorTable;
    hideMainDiv();
    showErrorDiv();
    showExitDiv();
}

function showMainDiv()
{
    var mainDivRef = getObjReference("mainDiv");
    mainDivRef.className = "visibleDiv";
}

function hideErrServerDiv()
{
    var errServerDivRef = getObjReference("errServerDiv");
    errServerDivRef.className = "hiddenDiv";
}

function hideMainDiv()
{
    var mainDivRef = getObjReference("mainDiv");
    mainDivRef.className = "hiddenDiv";
}

function showErrorDiv()
{
    var mainDivRef = getObjReference("errorDiv");
    mainDivRef.className = "visibleDiv";
}

function hideErrorDiv()
{
    var mainDivRef = getObjReference("errorDiv");
    mainDivRef.className = "hiddenDiv";
}

function showExitDiv()
{
    var exitDivRef = getObjReference("exitDiv");
    exitDivRef.className = "visibleDiv";
    exitDivOpen = true;
}

function hideExitDiv()
{
    var exitDivRef = getObjReference("exitDiv");
    exitDivRef.className = "hiddenDiv";
    msgList.length=0;
    exitDivOpen = false;
}

function leftTrim(s)
{
    var t;
	if( s == null ) return null;
    for (i = 0; i<s.length ; i++)
    {
        c = s.charAt(i);
        if (whitespace.indexOf(c) == -1)
        {
          break;
        }
    }
    t = s.substr(i);
    return t;
}

function rightTrim(s)
{
    var t;
    if( s == null ) return null;
    for (i = s.length; i>=0 ; i--)
    {
        c = s.charAt(i);
        if (whitespace.indexOf(c) == -1)
        {
          break;
        }
    }
    t = s.substring(0,i+1);
    return t;
}

function showHelp(location)
{
    var properties = "status=yes,scrollbars,resizable,width=764,height=506,left=18,top=24"
    window.open(location, "ISMHelp", properties);
}

function firstFieldFocus()
{

    var mainFormRef = getObjReference("mainForm");
    var inputType;
    var disabled;

    if (mainFormRef.elements)
    {
	    for (i = 0; i < mainFormRef.elements.length; i++)
	    {
		inputType = mainFormRef.elements[i].type;
		if(inputType != null)
		{
		    inputType = inputType.toUpperCase();

		    if(inputType == "CHECKBOX"
		    || inputType == "PASSWORD"		    
		    || inputType == "RADIO"
		    || inputType == "SELECT-ONE"
		    || inputType == "SELECT-MULTIPLE"
		    || inputType == "TEXT"
		    || inputType == "TEXTAREA")
		    {
			disabled = mainFormRef.elements[i].disabled;
			
			if(!disabled)
			{
				mainFormRef.elements[i].focus();
				break;
			}
		    }
		}
	    }
    }
}

function pageInit()
{
    firstFieldFocus();
}

function hideMenu()
{
	getObjReference("skipMenuSpan").className="skipMenu";
}

function showMenu()
{
	getObjReference("skipMenuSpan").className="sideHeading";
}

