var gSubmitForm=0;

var gCheckForm=0;

var gCheckName='';

var gCheckVal='';

var gValidate='';

var gCheckPopups=false;

var gStatus=false;

var pop_cal;

var pop_pdf;

var pop_update;

var pop_win;

var pop_stat;

var pop_lov;

//---------------------------WINDOW FUNCTIONS----------------------//

function JS_PassBack(sName, sReturnVal, bConcat) {

   if (!bConcat) {

        var lReturnVal = sReturnVal;

   }

   else {

        var lReturnVal = opener.document.forms[0].elements[sName].value + ' ' + sReturnVal;

   }

   //Set the new value to the form element

   opener.document.forms[0].elements[sName].value = lReturnVal;

}

//PRAYI 1/20/02 Function to pass values from popups having frames
function JS_PassBack_Frames(sName, sReturnVal) {
	
	//Set the new value to the form element
   top.opener.document.forms[0].elements[sName].value = sReturnVal;

}

function JS_PassBackValue(sName, sReturnVal) {

    var DestKey = "";

    var ReturnVal = "";



    for (var i=0; i<JS_PassBackValue.arguments.length; i=i+2) {

        DestKey = JS_FindAnswerKey(JS_PassBackValue.arguments[i], 'opener');

        ReturnVal = JS_PassBackValue.arguments[i+1]

        //opener.document.forms[0].elements[DestKey].value = ReturnVal;

        JS_SetElementValue(DestKey, unescape(ReturnVal), 'opener');

    }

}


function JS_SetElementValue(sAnswerKey, SourceFieldVal, sOpener){     
      var sKey = sAnswerKey.substring(8,sAnswerKey.length);

      if (!sOpener) {
          var sThisForm=document.forms[0];
          var FieldType = JS_FindType(sKey);
          var FieldTypeLength = JS_FindTypeLength(sKey);
      }
      else {
          var sThisForm=opener.document.forms[0];
          var FieldType = JS_FindType(sKey, sOpener);
          var FieldTypeLength = JS_FindTypeLength(sKey, sOpener);
      }

      //value of the radio button which is checked
      if ((FieldType == "RADIO") || (FieldType == "CHECKBOX"))
        {
          //if the array has only one element treat different
          if (!sThisForm.elements[sAnswerKey].length)
          {if (sThisForm.elements[sAnswerKey].value == SourceFieldVal)
               sThisForm.elements[sAnswerKey].checked == true;
          }
          else {
              for (var i=0; i < sThisForm.elements[sAnswerKey].length; i++)
                  if (sThisForm.elements[sAnswerKey].value == SourceFieldVal)
              {sThisForm.elements[sAnswerKey].checked == true;
                    break;
              }
          }
     }

     //if the element is a select list look for the
     //value of the option which is selected
     if (FieldType == "SELECT-ONE")
     {  if (SourceFieldVal == "")
          { sThisForm.elements[sAnswerKey].selectedIndex = -1;
                return true;
          }

          for(var i=0; i < FieldTypeLength; i++)
                if ((sThisForm.elements[sAnswerKey].options[i].value == SourceFieldVal) || (sThisForm.elements[sAnswerKey].options[i].text == SourceFieldVal))
                   {sThisForm.elements[sAnswerKey].options[i].selected = true;
                   break;
                }
     }

     if (FieldType == "TEXT")
        //otherwise, get the value of the field corresponding to that answer key
        sThisForm.elements[sAnswerKey].value = SourceFieldVal;

     return true;
}

function JS_ReturnURL() {

   //construct the new URL from the URL of the current page

   var lWindow = window.location;

   var lScript = lWindow.pathname.substring(0, lWindow.pathname.lastIndexOf('/') + 1);

   var lURL = lWindow.protocol + '//' + lWindow.host + lScript;

   return lURL;

}



function JS_GetAppName () {

    var appvs=parseInt(navigator.appVersion.substring(0,1));

    var appnm=navigator.appName;

    return appnm;

}



function OpenWindow(sQuestID, sWidth, sHeight) {

   var sThisForm=document.forms[0];

   var sURL;



   //construct the new URL from the URL of the current page

   sURL= JS_ReturnURL() + sQuestID;



   pop_win = window.open(sURL,"HelpWin",

      "scrollbars=yes,directories=no,status=yes,width="+sWidth+",height="+sHeight)



   if (JS_GetAppName() == "Netscape"){

       pop_win.focus();

   }

}



function JS_LoadPDF(sPDF) {

   pop_pdf= window.open(sPDF, 'pwin', 'status=yes,toolbar=no,resizable=no,scrollbars=yes,location=no,menu=no,width=540,height=350');

   if (JS_GetAppName() == "Netscape"){pop_pdf.focus()};

   return;

}



function JS_UnloadWindow (sWindow) {

 //TOM If the window does not exist we have to get a reference 

 /* the following if included by babu on 05/10/2002 to check if the fat_man window is opened by 
	   an opener . */		
	if (typeof(eval(sWindow)) == "undefined") {
		if (typeof(opener) != "undefined") {
			sWindow = "opener."+sWindow;		
		}
		else { // if neither opener nor the passed reference to the window are present then just return back.			   
			return 0 ;
		}
	}	

	//the following outer if included by babu on 05/10/2002 to check if the reference to the window exists ....		
	if (typeof(eval(sWindow)) != "undefined") {
	    if ((!(!(eval(sWindow)))) && (!(eval(sWindow + '.closed')))) {
    	    eval(sWindow + '.close()');
	    }	
	}
}



function JS_StatusWindow (sMsg, iWidth, iHeight) {

    var lMsg= ((!sMsg) ? 'The data is being validated.<BR>Please wait...' : sMsg);

    var lWidth= ((!iWidth) ? 300 : iWidth);

    var lHeight= ((!iHeight) ? 100 : iHeight);

    pop_stat = window.open("","StatusWin",

      "scrollbars=no,directories=no,status=no,width=" + lWidth + ",height=" + lHeight);



    var newwindow = pop_stat.document;



	newwindow.open();

	newwindow.writeln("<HEAD><TITLE>Please wait...</TITLE></HEAD>");

	newwindow.writeln("<BODY BGCOLOR=FFFFFF><CENTER>");

	newwindow.writeln("<B><FONT Color=red>" + lMsg + "</FONT></B><BR>");

    newwindow.writeln("<img src=/img/status.gif border=0>");

	newwindow.writeln("</CENTER></BODY>");

	newwindow.close();
	
	return pop_stat;



}



function PopupCal() {

   pop_cal = window.open('/mff/caltop.html?P_DESTINATION=' + PopupCal.arguments[0],

                    'calwin', 'width=220,height=260');



   if (pop_cal.opener == null) {

      pop_cal.opener = self;

   }

   if (JS_GetAppName() == "Netscape"){

        pop_cal.focus();

   }

}



function PopupCal2() {

   pop_cal = window.open('/mff/caltop2.html?P_DESTINATION=' + PopupCal2.arguments[0],

                    'calwin', 'width=220,height=260');



   if (pop_cal.opener == null) {

      pop_cal.opener = self;

   }

   if (JS_GetAppName() == "Netscape"){

        pop_cal.focus();

   }

}

//---------------------------WINDOW FUNCTIONS END----------------------//



//---------------------------SAVE FUNCTIONS----------------------//

function JS_Submit(iSubmitForm, iCheckForm, sCheckName, sCheckVal, sValidate, bStatus, bPopup) {

   var sCheckForm=document.forms[iCheckForm];

   gSubmitForm = iSubmitForm;

   gCheckForm = iCheckForm;

   gCheckName = sCheckName;

   gCheckVal = sCheckVal;

   gValidate = sValidate;

   

   if (!bStatus) {

      gStatus = false;

   }

   else {

      gStatus = bStatus;

   }



   if (!bPopup) {

      gCheckPopups = false;

   }

   else {

      gCheckPopups = bPopup;

   }



   if (sCheckName) {

      if (sCheckForm.elements[sCheckName].value != '') {

         alert ('This data has already been submitted.\nPlease wait...');

         status ='This data has already been submitted.';

      }

      else {

         status ='The data is being validated. Please wait...';

         window.setTimeout("JS_SubmitInner()", 0);

      }

   }

   else {

     status ='The data is being validated. Please wait...';

     window.setTimeout("JS_SubmitInner()", 0);

   }

}



function JS_SubmitInner() {

    var sSubmitForm=document.forms[gSubmitForm];

    var sCheckForm=document.forms[gCheckForm];



    //if we need to check the popup windows then do that

    if (gCheckPopups) {

        if ((!pop_cal) && (!pop_win) && (!pop_update)){

            status = 'Ready.';

        }

        else {

            alert ('The data on this form cannot be saved at this time.\nOne or more popup windows maybe open.\n\nPlease check and try again.');

            status = 'Ready.';

            return false;

        }

    }



    //Validate form if needed

//alert('test1');

    if (gValidate) {

       if (gStatus) {JS_StatusWindow()};

//alert('test2');

//alert(gValidate);

       if (eval(gValidate)==false) {

//alert('test3');

           status = 'Ready.';

           if (gStatus) {JS_UnloadWindow ('pop_stat')};

           return false;

       }

//alert('test3a');

       if (gStatus) {JS_UnloadWindow ('pop_stat')};

    }



    //Assign check value if needed

    if (gCheckName) {

        sCheckForm.elements[gCheckName].value = gCheckVal;

    }



    status ='The data is being saved. Please wait...';

    sSubmitForm.submit();

    return true;

}



function PressButton (txt) {

   if (JS_CheckSubmit('Z_ACTION')) {

       status="Saving your data to the database...";

       document.forms[0].Z_ACTION.value=txt;

       document.forms[0].submit();

       status="Save complete!";

   }

}



function PressButtonUpdate (txt) {

   if (JS_CheckSubmit('Z_ACTION')) {

       NewTxtValue=txt;

       status='Please wait until all fields are validated and saved...';

       window.setTimeout("PressButtonNewUpdate();", 0);

  }

}



function PressButtonUpdate1 (txt) {

   if (JS_CheckSubmit1('Z_ACTION')) {

       NewTxtValue=txt;

       status='Please wait until all fields are validated and saved...';

       window.setTimeout("PressButtonNewUpdate1();", 0);

   }

}



function PressButtonNewUpdate () {

   var sThisForm=document.forms[0];



   if (validate_all()) {

        status="Saving your data to the database...";

        sThisForm.Z_ACTION.value = NewTxtValue;

        sThisForm.submit();

        status="Save complete!";

   }

   else {

        status="Ready";

   }

  return;

}



function PressButtonNewUpdate1 () {

   var sThisForm=document.forms[1];

   if (validate_all()) {

        status="Saving your data to the database...";

        sThisForm.Z_ACTION.value = NewTxtValue;

        sThisForm.submit();

        status="Save complete!";

   }

   else {

        status="Ready";

   }

  return;

}



function JS_CheckSubmit(sHidden) {

    if (document.forms[0].elements[sHidden].value != "") {

        alert ('This data has already been submitted.');

        status ='This data has already been submitted.';

        return false;

    }

    return true;

}



function JS_CheckSubmit1(sHidden) {

    if (document.forms[1].elements[sHidden].value != "") {

        alert ('This data has already been submitted.');

        status ='This data has already been submitted.';

        return false;

    }

    return true;

}



/* Needs to be modified to take any array name */

function JS_FindType (sAnswerIndex, sOpener) {
    var AnswerKey = '';
    if (!sOpener) {
       var sThisForm=document.forms[0];
    }
    else {
       var sThisForm=opener.document.forms[0];
    }

    //If only one element then get that value
	if (!sThisForm.P_ANSWER_TYPE.length) {
		AnswerKey = sThisForm.elements["P_ANSWER_TYPE"].value.toUpperCase();
	}
	else {
		AnswerKey = sThisForm.P_ANSWER_TYPE[sAnswerIndex -1].value.toUpperCase();
	}

    if (AnswerKey.indexOf('SELECT-ONE') != -1) {
       AnswerKey = 'SELECT-ONE';
    }
    if (AnswerKey.indexOf('SELECT-MULTIPLE') != -1) {
       AnswerKey = 'SELECT-MULTIPLE';
    }

	return AnswerKey;
}

function JS_FindTypeLength (sAnswerIndex, sOpener) {
    var AnswerKey = '';
    var lSelectLength = 0;

    if (!sOpener) {
       var sThisForm=document.forms[0];
    }
    else {
       var sThisForm=opener.document.forms[0];
    }

	if (!sThisForm.P_ANSWER_TYPE.length) {
		AnswerKey = sThisForm.elements["P_ANSWER_TYPE"].value.toUpperCase();
	}
	else {
		AnswerKey = sThisForm.P_ANSWER_TYPE[sAnswerIndex -1].value.toUpperCase();
	}

    if (AnswerKey.indexOf('SELECT-ONE') != -1) {
       lSelectLength = AnswerKey.substring (11);
    }
    if (AnswerKey.indexOf('SELECT-MULTIPLE') != -1) {
       lSelectLength = AnswerKey.substring (16);
    }

	return lSelectLength;
}



function JS_MonthArray (sIndex, sMonth, sDay) {

    this.Index = sIndex;

    this.Month = sMonth;

    this.Day  = sDay;

}



function JS_CreateMonthArray () {

    MonthArray = new JS_MonthArray (11);

    MonthArray[0] = new JS_MonthArray ("01", "January", 31);

    MonthArray[1] = new JS_MonthArray ("02", "February", 29);

    MonthArray[2] = new JS_MonthArray ("03", "March", 31);

    MonthArray[3] = new JS_MonthArray ("04", "April", 30);

    MonthArray[4] = new JS_MonthArray ("05", "May", 31);

    MonthArray[5] = new JS_MonthArray ("06", "June", 30);

    MonthArray[6] = new JS_MonthArray ("07", "July", 31);

    MonthArray[7] = new JS_MonthArray ("08", "August", 31);

    MonthArray[8] = new JS_MonthArray ("09", "September", 30);

    MonthArray[9] = new JS_MonthArray ("10", "October", 31);

    MonthArray[10] = new JS_MonthArray ("11", "November", 30);

    MonthArray[11] = new JS_MonthArray ("12", "December", 31);

}



function JS_IsDayValid (sMonth, sDay) {

   JS_CreateMonthArray ();

   if (sDay <= 0) {return false};

   if (sDay > (MonthArray[JS_GetMonthDigit(sMonth) - 1].Day)) {return false};



   return true;

}



function JS_IsMonthValid (sMonth) {

    if (sMonth == "") {return true};

    sMonth = sMonth.toUpperCase();



    JS_CreateMonthArray ();

    for (var i=0; i<12; i++) {

        if (sMonth == MonthArray[i].Month.toUpperCase()) {return true};

    }



    alert ('Invalid month entered.\nPlease check and try again.');

    return false;

}



function JS_isNumber(element1) {

        for (var i=0; i <= (element1.length - 1); i++) {

           if (element1.charAt(i) < "0" || element1.charAt(i) > "9") {

              msg = "\n'" + element1 + "' is an invalid number. \nPlease enter the Number.";

              alert (msg);

              return false;

           }

         }

        return true;

      }

 function JS_isDecimal(element1,decimalFound) {
   // This function checks for Decimal value
   decimalFound = false;
   for (var i=0; i <= (element1.length - 1); i++) {
	   if (element1.charAt(i) == ".") {
	   	  if (!decimalFound) {
		   	 decimalFound = true;
		  }
		  else {
			 alert("More than 1 decimal not allowed .");
			 return false;
	      }
	  }
	   if ((element1.charAt(i) < "0" || element1.charAt(i) > "9") && (element1.charAt(i) != ".")) {
    	    msg = "\n'" + element1 + "' is an invalid number. \nPlease enter the Number.";
       	    alert (msg);
			return false;	
       }
	}	// for loop.
    return true;
}

     



function JS_CheckDate(sFocus, sMonth, sDay, sYear, sDateMode) {

    var sThisForm = document.forms[0];

    var sFocusField = document.forms[0].elements[JS_FindAnswerKey(sFocus)];

    var CheckDate = new Object;

    sMonth = sMonth.toUpperCase();



    var lCheck = ((!sMonth||sMonth=='') ? '' : 'M') +

                 ((!sDay||sDay=='') ? '' : 'D') +

                 ((!sYear||sYear=='') ? '' : 'Y');



    if ((lCheck == 'D') || (lCheck == 'M') || (lCheck == 'DY')) {

       alert ('Please enter a valid date to continue.');

       sFocusField.focus(); 

       return false;

    }



    //if day is invalid or year is invalid then alert

    if (!JS_CheckIntegerVal(sDay)) {sFocusField.focus(); return false;};

    if (!JS_CheckIntegerVal(sYear)) {sFocusField.focus(); return false;};



    //if Month is empty then assign one

    if (!sMonth||sMonth == '') {

        if ((sDateMode == 'PDATE') || (sDateMode == 'PEDATE')){

            sMonth = 'JANUARY';

        } else {

            sMonth = 'DECEMBER';

        }

    }

    //if Day is empty then assign one

    if (sDay == '') {

        if ((!sDateMode) || (sDateMode == 'PDATE') || (sDateMode == 'PEDATE')) {

            sDay = "01";

        }

        else {

            JS_CreateMonthArray ();

            sDay = MonthArray[JS_GetMonthDigit(sMonth) - 1].Day;

            if (sMonth == 'FEBRUARY') {sDay = "28";}

        }

    }



    //If month is february and year is empty allow only 28 days

    if ((sMonth == 'FEBRUARY') && (!sYear) && (sDay > 28)) {

        alert ('February can have only 28 days.\nPlease check and try again.');

        sFocusField.focus();

        return false;

    }



    //Check Month versus day

    if (JS_IsDayValid (sMonth, sDay)) {

        //if year is empty then return true

        if (!sYear || (sYear == "")) {

            return true;

        }

    }

    else {

        alert (sMonth + ' cannot have ' + sDay + ' days.\nPlease check and try again.');

        sFocusField.focus();

        return false;

    }



   if (!(sYear) || (sYear == '')) {return true};



   //get the year in YYYY format

   if (sYear.length == 2) {

      if (sYear > 50)

         sYear = '20' + sYear;

      else

         sYear = '19' + sYear;

   }



   //Now check for future, past or regular date

   CheckDate.value = JS_GetMonthDigit(sMonth) + sDay + sYear;



   if (!sDateMode) {

      if (!JS_IsDate(CheckDate, sFocus)) {sFocusField.focus(); return false;};

      return true;

   }

   if ((sDateMode == 'FDATE') || (sDateMode == 'FEDATE')){

      if (!JS_IsDateGreater(CheckDate, sFocus, 'MMDDYYYY', sDateMode )) {sFocusField.focus(); return false;};

   }

   if ((sDateMode == 'PDATE') || (sDateMode == 'PEDATE')){

      if (!JS_IsDateLesser(CheckDate, sFocus, 'MMDDYYYY', sDateMode)) {sFocusField.focus(); return false};

   }

   return true;

}



function JS_GetMonthDigit(sMonthName) {

   sMonthName = sMonthName.toUpperCase();

   JS_CreateMonthArray ();

   for (var i=0; i<12; i++) {

      if (sMonthName==MonthArray[i].Month.toUpperCase()) {

          return MonthArray[i].Index;

      }

   }

   return "";

}



function JS_GetMonth(sMonthDigit) {

    MonthDigit = parseFloat(sMonthDigit);

    if (MonthDigit>12 || MonthDigit<1 ||isNaN(MonthDigit)) {return ""};



    JS_CreateMonthArray ();

    var ReturnMonth = MonthArray[MonthDigit-1].Month;

    return ReturnMonth;

}



function JS_FormatDate(sDateField, sOutputMask, sInputMask) {

    var tDay;

    var tMonth;

    var tYear;

    var FormatDate ="";



    //just incase the date passed is empty

    if (JS_IsEmpty(sDateField) == true) {

       return "";

    }



    var DateField = sDateField.toUpperCase();

    //First convert the date field to default MMDDYYYY format

    //based on the input mask provided.

    if (JS_FormatDate.arguments.length == 3) {

       if (sInputMask == "DD")

           DateField = "01" + DateField + "1000";

       else if (sInputMask == "MM")

           DateField = DateField + "011000";

       else if (sInputMask == "MON")

           DateField = JS_GetMonthDigit (DateField) + "011000";

       else if (sInputMask == "YY") {

         //if the year is less than 50 assume it as 21th century else 20st century

         if (DateField < 50)

             DateField = "010120" + DateField;

         else

             DateField = "010119" + DateField;

         }

       else if (sInputMask == "YYYY")

         DateField = "0101" + DateField;

       else if (sInputMask == "MMDDYY") {

         //if the year is less than 50 assume it as 21th century else 20st century

         tYear = DateField.charAt(4) + DateField.charAt(5);

         if (tYear < 50) {

             tYear = "20" + tYear;

         }

         else {

             tYear = "19" + tYear;

         }



         DateField = DateField.charAt(0) + DateField.charAt(1) + DateField.charAt(2) + DateField.charAt(3) + tYear;

         }

       else if (sInputMask == "MMDDYYYY")

         DateField = DateField;

    }



    //Note the default is MMDDYYYY format

    if (sOutputMask=="DD")

       FormatDate= (DateField.charAt(2)!="0" ? DateField.charAt(2) : "") + DateField.charAt(3);

    else if (sOutputMask=="MM")

       FormatDate= (DateField.charAt(0)!="0" ? DateField.charAt(0) : "") + DateField.charAt(1);

    else if (sOutputMask=="MON") {

       tMonth=DateField.charAt(0) + DateField.charAt(1);

       FormatDate=JS_GetMonth(tMonth);

    }

    else if (sOutputMask=="YY")

       FormatDate=DateField.charAt(6) + DateField.charAt(7);

    else if (sOutputMask=="YYYY") {

       FormatDate=DateField.charAt(4) + DateField.charAt(5) + DateField.charAt(6) + DateField.charAt(7);

    }

    else if (sOutputMask=="MON DD,YYYY") {

       tDay= (DateField.charAt(2) != "0" ? DateField.charAt(2) : "") + DateField.charAt(3);

       tMonth=DateField.charAt(0) + DateField.charAt(1);

       tYear=DateField.charAt(4) + DateField.charAt(5)+ DateField.charAt(6) + DateField.charAt(7);



       //now format the date

       FormatDate=JS_GetMonth(tMonth) + " " + tDay + ", " + tYear;

    }

    return FormatDate;

}



function JS_IsDate(sDateField, sFocus, sInputMask) {

    if (!sInputMask) {

       sInputMask = 'MMDDYYYY';

    }



    if (sDateField.value.length!=0) {

      if (!JS_CheckDateVal(sDateField.value, sInputMask)) {

        if (!sFocus) {

           sDateField.focus();

           sDateField.value="";

           sDateField.focus();

           return false;

        }

        else {

           return false;

        }

      }

    }

    return true;

}



function JS_CheckDateVal(sDate, sInputMask) {

    var tDay;

    var tDate;

    var tYear;

    var msg = "";



    //Exit the routine if length less than input mask length. The default format used is MMDDYYYY.

    if (sDate.length != sInputMask.length) {

       msg = "\n'" + sDate + "' is an invalid date. \nPlease enter the date in " + sInputMask + " format.";

       alert (msg);

       return false;

    }

    else {

        //Check all the characters before continuing

        for (i=0; i <= (sDate.length - 1); i++) {

           if (sDate.charAt(i) < "0" || sDate.charAt(i) > "9") {

              msg = "\n'" + sDate + "' is an invalid date. \nPlease enter the date in " + sInputMask + " format.";

              alert (msg);

              return false;

           }

        }



        //get the day, month and year variables

        tMonth = sDate.charAt(0) + sDate.charAt(1);

        tDay = sDate.charAt(2) + sDate.charAt(3);

        //if format is MMDDYY approximate the year else use full year

        if (sInputMask.length == 6) {

            tYear = sDate.charAt(4) + sDate.charAt(5);

            //check for the year

            if (tYear < 0 || tYear > 99) {

                msg = "\n'" + sDate + "' has invalid year. \nPlease enter the date in " + sInputMask + " format with year in the range 00 to 99.";

                alert (msg);

                return false;

            }



            //since we are using only YY of the year if year is between 00 and 49

            //interpret as 2000 to 2049 else interpret as 1950-1999

            if (tYear >= 0 && tYear < 50)

                tYear="20" + tYear;

            else

                tYear="19" + tYear;

            }

        else {

            tYear = sDate.charAt(4) + sDate.charAt(5) + sDate.charAt(6) + sDate.charAt(7);

        }



        //check for the month

        if (tMonth < 1 || tMonth > 12 ) {

            msg = "\n'" + sDate + "' has invalid month. \nPlease enter the date in " + sInputMask + " format with month in the range 01 to 12.";

            alert (msg);

            return false;

        }

        //check for the day

        else /* if (tDay < 1 || tDay > 31) {

            msg = "\n'" + sDate + "' has invalid day. \nPlease enter the date in " + sInputMask + " format with day in the range 01 to 31.";

            alert (msg);

            return false;

        }

        else */

			if (tDay <= 0)	{
                  		
				msg = "\n'" + sDate + "' has invalid day for the month . \nPlease enter the date in " + sInputMask + " format";
	                    
				alert (msg);
           		
				return false;
						
				}
		   
		   //If the month is february

           if (tMonth == 02) {

              //Check for leap year also since the date is february

              if ((JS_IsLeapYear(tYear) == false)  &&  (tDay > 28)) {

                  msg = "\n'" + sDate + "' has invalid day for the month february. \nPlease enter the date in " + sInputMask + " format with day in the range 01 to 28.";

                  alert (msg);

                  return false;

               }

               else if ((JS_IsLeapYear(tYear) == true)  &&  (tDay > 29)) {

                  msg = "\n'" + sDate + "' has invalid day for the month february. \nPlease enter the date in " + sInputMask + " format with day in the range 01 to 29.";

                  alert (msg);

                  return false;

               }

               else

                  return true;

               }

           //If month is september, april, june or november

           else if ((tMonth == 09 || tMonth == 04  || tMonth == 06 || tMonth == 11) && (tDay > 30)) {

               msg = "\n'" + sDate + "' has invalid day. \nPlease enter the date in " + sInputMask + " format with day in the range 01 to 30.";

               alert (msg);

               return false;

           }

		   else if ((tMonth == 01 || tMonth == 03  || tMonth == 05 || tMonth == 07 || tMonth == 08 || tMonth == 10  || tMonth == 12) && (tDay > 31)) {

               msg = "\n'" + sDate + "' has invalid day. \nPlease enter the date in " + sInputMask + " format with day in the range 01 to 31.";

               alert (msg);

               return false;

           }
		   
           else {

               return true;

           }

        }

}



function JS_IsDateGreater(sDateField, sFocus, sInputMask, sMode) {

    var lMode = ((!sMode) ? 'FDATE' : sMode);

    

    //if input mask not specified the default to MMDDYYYY

    if (!sInputMask) {

       sInputMask = 'MMDDYYYY';

    }



    if (!JS_IsDateValGreaterLesser(sDateField, lMode, sFocus, sInputMask)) {

       if (!sFocus) {

           sDateField.focus();

           sDateField.value="";

           sDateField.focus();

           return false;

       }

       else {

           return false;

       }

    }

    else

       return true;

}



function JS_IsDateLesser(sDateField, sFocus, sInputMask, sMode) {

    var lMode = ((!sMode) ? 'PDATE' : sMode);



    //if input mask not specified the default to MMDDYYYY

    if (!sInputMask) {

       sInputMask = 'MMDDYYYY';

    }



    if (!JS_IsDateValGreaterLesser(sDateField, lMode, sFocus, sInputMask)) {

       if (!sFocus) {

           sDateField.focus();

           sDateField.value="";

           sDateField.focus();

           return false;

       }

       else {

           return false;

       }

    }

    else

       return true;

}


function JS_IsDateValGreaterLesser(sDateField, sMode, sFocus, sInputMask) {
     var CurDate = new Date();
     var CurDateString = "";
     var NewDateString = "";
     var msg = "";

    //if the date is empty then exit
    if (sDateField.value.length==0) return true;

    //first check if it is a valid date.
    if (!JS_IsDate(sDateField, sFocus, sInputMask)) return false;

    //due to a bug in navigator 2.0 we have to do this
    var FullYear = CurDate.getYear();
    if (FullYear < 1000) FullYear += 1900;

    CurDateString = FullYear + "" + JS_LPad((CurDate.getMonth() + 1), 2, '0') + "" + JS_LPad(CurDate.getDate(), 2, '0');
    if (sInputMask.length == 6) {
        NewDateString = JS_FormatDate(sDateField.value, "YYYY", sInputMask) + "" + JS_LPad (JS_FormatDate(sDateField.value, "MM", sInputMask), 2, '0') + "" + JS_LPad(JS_FormatDate(sDateField.value, "DD", sInputMask), 2, '0');
    }
    else {
        NewDateString = JS_FormatDate(sDateField.value, "YYYY", sInputMask) + "" + JS_LPad (JS_FormatDate(sDateField.value, "MM", sInputMask), 2, '0') + "" + JS_LPad(JS_FormatDate(sDateField.value, "DD", sInputMask), 2, '0');
    }

    msg = "\n'" + sDateField.value + "' is invalid. \nPlease enter a valid date in " + sInputMask + " format, ";

    if (sMode == "FDATE") {
        if (NewDateString > CurDateString)
           return true;
        else {
           msg = msg + "greater than current date.";
           alert(msg);
           return false;
        }
    }

    if (sMode == "FEDATE") {
        if (NewDateString >= CurDateString)
           return true;
        else {
           msg = msg + "greater than or equal to current date.";
           alert(msg);
           return false;
        }
    }

    if (sMode == "PDATE") {

        if (NewDateString < CurDateString)
           return true;
        else {
           msg = msg + "less than current date.";
           alert(msg);
           return false;
        }
    }

    if (sMode == "PEDATE") {
        if (NewDateString <= CurDateString)
           return true;
        else {
           msg = msg + "less than or equal to current date.";
           alert(msg);
           return false;
        }
    }
}



function JS_IsLeapYear(sYear) {

    //Check for leap year

    if (sYear % 4 == 0) {

      if (sYear % 100 == 0) {

        if (sYear % 400 == 0)

          return true;

        else

          return false;

      }

    else

        return true;

    }

    return false;

}

//---------------------------DATE FUNCTIONS END----------------------//





//---------------------------NUMBER FUNCTIONS------------------------//

function JS_IsInteger(sIntegerField) {

    if (sIntegerField.value.length!=0) {

       if (!JS_CheckIntegerVal(sIntegerField.value)) {

           sIntegerField.value="";

           sIntegerField.focus();

           return false;

       }

    }

    return true;

}



function JS_CheckIntegerVal(sNumber) {

    var ValidNumber = true;

    var TempChar = 0;

    var msg = "";

    sNumber = sNumber + "";



    if (JS_IsEmpty(sNumber) == true) return true;



    //do this check only if the number is still valid

    if (ValidNumber == true) {

       for (var i=0; i < sNumber.length; i++) {

          TempChar = sNumber.charAt(i);



          //check if all characters are in 0-9

          if ((TempChar < '0') || (TempChar > '9')) {

             if (TempChar != ' ') {

                ValidNumber = false;

                break;

             }

          }

       }

    }



    if (ValidNumber == false) {

       msg = "\nThe number '" + sNumber + "' is invalid. \nPlease enter a valid number in this field.";

       alert (msg);

       return false;

    }

    else {

       return true;

    }

}



function JS_IsNumeric(sNumericField) {

    if (sNumericField.value.length!=0) {

      if (!JS_CheckNumericVal(sNumericField.value)) {

         sNumericField.value="";

         sNumericField.focus();

         return false;

      }

    }

    return true;

}



function JS_CheckNumericVal(sNumber) {

    var ValidNumber = true;

    var TempChar = 0;

    var msg = "";

    var PeriodPos = 0;

    var more = 0;



    if (JS_IsEmpty(sNumber) == true) {

        ValidNumber = false;

        return true;

    }



     //check for first period

     PeriodPos = sNumber.indexOf('.');

     var CommaStart = (PeriodPos == -1 ? sNumber.length-1 : PeriodPos-1);

     //check for more periods

     if (PeriodPos != -1) {

       if (sNumber.indexOf('.', PeriodPos + 1) != -1) {

             ValidNumber = false;

       }

     }



     //Make sure commas are before the period

     if (PeriodPos != -1) {

       more = sNumber.lastIndexOf(',');

       if (more > PeriodPos) {

           ValidNumber = false;

       }

     }



      //Check for commas

      if ((ValidNumber == true) && (more != -1)){

        more = 0;

        for (var i = CommaStart ; i > 0; i--) {

          TempChar = sNumber.charAt(i);

          more++;



          if (TempChar == ',') {

             if (more !=4) {

                ValidNumber = false;

                break;

             }

             else {

                more = 0;

             }

          }

        }

      }



       //do this check only if the number is still valid

       if (ValidNumber == true) {

          for (var i=0; i < sNumber.length; i++) {

             TempChar = sNumber.charAt(i);



             //check if all characters are in 0-9 OR a period OR a comma

             if ((TempChar < '0') || (TempChar > '9')) {

                 if ((TempChar != ' ') && (TempChar != '.') && (TempChar != ',')) {

                     ValidNumber = false;

                     break;

                 }

             }

          }

       }



        if (ValidNumber == false) {

           msg = "\nThe number '" + sNumber + "' is invalid. \nPlease enter a valid number in this field.";

           alert (msg);

           return false;

        }

        else {

           return true;

        }

}

//---------------------------NUMBER FUNCTIONS END--------------------//



//---------------------------GENERAL FUNCTIONS--------------------//

function JS_IsEmpty (sFieldValue) {

    if ((sFieldValue == null) || (sFieldValue.length == "") || (sFieldValue.length == 0)) {

       return true;

    }

    else    {

       for (i=0; i<sFieldValue.length; i++) {

          if (sFieldValue.charAt(i)!=" ") return false;

       }

    }

    return true;

}



function JS_DisplayStatus (sMsg) {

    status = sMsg;

}



function JS_Round (Number, iPrecision) {

    if (!iPrecision)

        return Number;

        

    var iDivisor = Math.pow(10,iPrecision);

    retNum = Math.round(Number * iDivisor) / iDivisor;

    

    //PR pad the number with ZEROS to maintain 2 decimal digits

    if(retNum.toString().indexOf('.') == -1)

        {retNum = retNum + '.';

        retNum = JS_RPad(retNum, retNum.length + iPrecision, '0');}

    else{

        var DecPart = retNum.toString().substring(retNum.toString().indexOf('.'));

        if (DecPart.length <= iPrecision)   

            retNum = JS_RPad(retNum, retNum.toString().length + DecPart.length-iPrecision+1, '0');

        }



    return retNum;

}



function JS_Split (sString, sDelimiter) {

   SplitArray = new Object;

   SplitCount = -1;

   var more=0;

   var sStart=0;



   while (more != -1) {

      more = sString.indexOf(sDelimiter, sStart)

      if (more != -1) {

         SplitCount = SplitCount + 1;

         SplitArray[SplitCount]=sString.substring(sStart, more);

         if (more == (sString.length - 1)) {

                more = -1;

         }

         else {

                sStart= more + 1;

         }

      }

      else {

         SplitCount = SplitCount + 1;

         SplitArray[SplitCount]=sString.substring(sStart, sString.length);

      }

   }

   return true;

}



function JS_RPad (sString, sNum, sPad) {

    var lPad=sString + "";

    var Numloop=sNum - lPad.length;



    if (Numloop<=0)

       return sString;

    else {

       for (var i=0; i < Numloop; i++) {

           lPad = lPad + "" + sPad;

       }

       return lPad;

    }

}



function JS_LPad (sString, sNum, sPad) {

    var lPad=sString + "";

    var Numloop=sNum - lPad.length;



    if (Numloop<=0)

       return sString;

    else {

       for (var i=0; i < Numloop; i++) {

           lPad = sPad + "" + lPad;

       }

       return lPad;

    }

}



function JS_StripChar (sString, sChar) {

    var ReturnStr = "";

    var CheckStr  = sString;

    var GoAhead   = true;



    if (JS_IsEmpty (sString)) return ReturnStr;

    for (var i=0; i<sString.length; i++) {

        CheckStr = sString.charAt(i);

        GoAhead = true;

        for (var j=1; j<JS_StripChar.arguments.length; j++) {

          if (CheckStr == JS_StripChar.arguments[j]) {

            GoAhead = false;

            break;

          }

        }

        if (GoAhead) {ReturnStr += CheckStr};

    }

    return ReturnStr;

}



function JS_LTrim (sChar) {

    var ReturnChar="";

    var AlphaFound=false;



    //Left trim

    for (var i=0; i <sChar.length; i++) {

        if ((sChar.charAt(i) != ' ') || (AlphaFound == true)) {

           AlphaFound = true;

           ReturnChar += sChar.charAt(i);

        }

    }



    return ReturnChar;

}



function JS_RTrim (sChar) {

    var ReturnChar="";

    var AlphaFound=false;



    //Right trim

    for (var i=sChar.length - 1; i >= 0; i--) {

        if ((sChar.charAt(i) != ' ') || (AlphaFound == true)) {

           AlphaFound = true;

           ReturnChar += sChar.charAt(i);

        }

    }



    //Reverse the string

    sChar = ReturnChar;

    ReturnChar = "";

    for (var i=sChar.length - 1; i >= 0; i--) {

        ReturnChar += sChar.charAt(i);

    }



    return ReturnChar;

}



function JS_Trim (sChar) {

    var ReturnChar="";



    ReturnChar = JS_RTrim(JS_LTrim(sChar));

    return ReturnChar;

}

function JS_Replace(pstr1, pstr2, pstr3) {

   if (pstr1 != "") {

     var rtnstr = "";

     var searchstr = pstr1;

     var addlen = pstr2.length;

     var index = pstr1.indexOf(pstr2);

     while ((index != -1) && (searchstr != "")) {

       rtnstr = rtnstr + searchstr.substring(0, index);

       if (pstr3 != null) {

         rtnstr = rtnstr + pstr3;

       }

       searchstr = searchstr.substring(index + addlen, searchstr.length);

       if (searchstr != "") {

          index = searchstr.indexOf(pstr2);

       }

       else { index = -1; }

     }

     return (rtnstr + searchstr);

   }

   else {

     return "";

   }

}



function JS_MakeUpper(sString) {

   if (!sString) {

        return "";

   }

   else {

        return sString.toUpperCase();

   }

}

function JS_IsGreater(pStartDate,pEndDate) {

var start = (pStartDate).substr(4,4) + (pStartDate).substr(0,2) + (pStartDate).substr(2,2) ;
	 var end = (pEndDate).substr(4,4) + (pEndDate).substr(0,2) + (pEndDate).substr(2,2) ;
	 if (start > end ) {
	    alert(pStartDate + " is Greater Than " + pEndDate);
            return false;
	 }
	 else {
            return true;
	 }
}

function show_fmw() {
    //alert('call statuswindow');
    JS_StatusWindow ('Creating Order.<BR>Please wait ...', 350, 100);
}

function popSearch() {
		var url = "/reccenter/common/searching.html";
		var winparm = "width=250,height=80,resizable=no,scrollbars=no,titlebar=no,toolbar=no,status=no,location=no,menubar=no";
		var aSearch = window.open(url,"aSearch",winparm);
}
        
function closeSearch() {
		var winparm = "";
		var url = "/reccenter/common/searching.html";
		var hWnd = window.open(url,"aSearch",winparm);
		hWnd.close();
}

/* This function written by Babu on 12/10/2002 to return the nth index of search string 
   and either return their position or value as required by user.
   For eg. if the value passed is 1:2:3:4 we have indexOf and lastIndexOf.But this function
   does a nth index and returns 3 if n = 3 and returnValue = "VALUE"
   and return 5 if n = 3 and returnValue = "POSITION" 
*/
function nthIndexOfList(List,n,delimiter,returnValue) {		  
   var Counter=0;
   if (!(JS_IsEmpty(List))) {		  
	  var tempElementValue = List;	  
	  var position=-1;
	  var returnPosition= 0;
	  var valueArray = new Array();
	  while(Counter < n) {
	  	position = tempElementValue.indexOf(delimiter);				
		if (position != -1) {					
			valueArray[Counter++] = tempElementValue.substr(0,position);
		}
		else {			
			valueArray[Counter++] = tempElementValue.substr(0,tempElementValue.length);
		}
		if (position != "-1" ) {
			returnPosition = returnPosition + position;		
		}
		tempElementValue = tempElementValue.substr(position+1,tempElementValue.length);							
	  } // for while loop
	  if (n > Counter) {
	  	alert("Required subscript greater than available values ..."+n+" counter = "+Counter);
		return -1;		
	  }
	  if (returnValue == "POSITION") {
	  	return returnPosition;
	  }
	  else if (returnValue == "VALUE") {
	  	return valueArray[n-1];	  
	  }	  
   } // for the typeof(Element) check 
   else {
  	 return 0;
   } // for the else part of typeof(Element) check    
   valueArray.length=0;		  		  
} //nthIndexOfList function ends here



/* This function written by Raghu on 08/18/2005 to return the encoded userid for the BusinessObjects login.
   It accepts a string, encodes all the characters and returns back the encoded String
*/



function JS_EncodeData(valueToEncrypt) {

var char_set = 'NOZ1PQRCDEFGSTUVWZghijpHB8uvwxef34590qrklmnoIJst67abcdAyzKLM2Y';
var input = valueToEncrypt;
var output = "";
var char_code;

//This is the level of encoding so do not change this
var encodeLevel = 5;

var alpha_length = char_set.length - encodeLevel;
var space;

//begin for loop to cycle through input
for (loop=0; loop<input.length; loop++) {

//if conditional detects unknown characters
if (char_set.indexOf(input.charAt(loop)) == -1) {
alert("Program Error: Unknown Character!");
}

//search char_set string for character and set char_code variable...
char_code = char_set.indexOf(input.charAt(loop));

//actual text encoding algorithm goes here
if (char_code + encodeLevel > char_set.length)
{
space = char_set.length - char_code;
char_code = encodeLevel - space;
}
else
{
char_code += encodeLevel;
}

//set output variable in accordance to char_set
output += char_set.charAt(char_code);
}

//return the encoded contents
return output;
}