//New code to allow array operations across all browsers
//The methods push() pop() and splice() were not supported in earlier browser version
//and were handled differently with different versions of the Javascript Language.
//These checks will determine if the browser supports the methods mentioned above
//and if they dont then the method is inserted into the array object
//
// Paul Mannion

if (Array.prototype.push && ([0].push(true)==true))
        Array.prototype.push = null;

if(!Array.prototype.push) {

    function array_push() {
        for(i=0;i<arguments.length;i++){
            this[this.length] = arguments[i];
        }
        return this.length;
    }

    Array.prototype.push = array_push;

}
if(!Array.prototype.pop) {

    function array_pop(){
        lastElement = this[this.length-1];
        this.length = Math.max(this.length-1,0);
        return lastElement;
    }

    Array.prototype.pop = array_pop;

}

if(Array.prototype.splice && typeof([0].splice(0))=="number")
    Array.prototype.splice = null;

if(!Array.prototype.splice) {

    function array_splice(ind,cnt){

        removeArray = this.slice(ind,ind+cnt);
        endArray = this.slice(ind+cnt);

        this.length = ind;

        for(var i=2;i<arguments.length;i++){
            this[this.length] = arguments[i];
        }

        for(var i=0;i<endArray.length;i++){
            this[this.length] = endArray[i];
        }

        return removeArray;
    }

    Array.prototype.splice = array_splice;

}


//Global Variables
var changedFields = new Array(); //Available to all functions, array contains changed fields
var InvalidFields = new Array(); //Availabile to all functions, array contains all fields witn invalid data
var FormStatus="OK";
var radioisin="";
var radioabbrev="";
var TimeOutLimit=60;//"60"; //Max Time a user has to leave service idle
var LastUsedTime="";   //Update by onload function from all jsp's
var CurrentTime="";    //Calculated when user opens a PopUp Window
var timeDifference=""; //If difference is > MaxTimeOutLimit log user out
var TimeUp="";         // Flag is set when TimeOutLimit is exceeded
var one_minute=1000*60;
var popupTimeout=1000*60*10; //Timeout of a pop-up window, 1000 is one second (so currently 10 minutes)

var myWin = ""


//Gets the Isin and Abbreviation selected by the user i.e from the radio button selected in ISIN List
function setSecurityRadio(Isin,Abbrev){
	document.main.button2.disabled=false;
	radioisin=Isin;
	radioabbrev=Abbrev;
}

//Displays Pop Up Window to Select ISIN (select Stock Movements)
function IsinPopUp(fname,rptgrpno){


    //Prevent User from opening a pop-up window if they have gone over Time Limit
    getTimeDifference();
    if(TimeUp=="YES"){
       return false;
     }

	myWin = window.open('process.do?callingformname='+fname+'&rptgrpno='+rptgrpno+'&command=get&message_type=FSEL&message_response_template=CI0042','','resizable=yes,scrollbars=yes,width=535,height=450,top=200,left=350,status=yes');
	setTimeout('closePopUp(myWin)',popupTimeout);
}

function closePopUp(myWin){
	if(!myWin.closed){
		myWin.close();
	}
}

function closePartyPopUp(){
	closePopUp(window);
}

function partyPop(){
	setTimeout('closePopUp(window)', popupTimeout);
}


//Display all parmeters and their values sent to the web server
function snoop(){
	document.main.command.value="snoop";
	document.main.submit();
}

//Set Action of Main Form
function SetRequiredAction(action) {
	main.command.value = action;
}

//Submit request Form
function setform(req,type){
	document.menu.message_type.value=req;
	document.menu.message_response_template.value=type;
	document.menu.submit();

}

function setValue(ctrl){
	document.main.message_type.value=ctrl;
	document.main.message_version.value="";
	document.main.message_effective_date.value="";
	document.main.submit();
}

//Dreamweaver code
function MM_goToURL() {
	var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
	for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_callJS(jsStr) {
	return eval(jsStr)
}

//Called from ValidateTextBox
//Not used - Replaced CheckBoxes with SelectBoxes
//If Checkbox is selected Pass a "Y" to the simulator else pass a "N"

/*
function checkCheckbox(contents,checkboxname,formname){
	var cBox=eval("document."+formname+"."+checkboxname+"");
	if(cBox.type=="checkbox"){
		if(cBox.checked==true){
			cBox.value="Y";
		}
		else{
			cBox.value="N";
		}
	}
}
*/

	/*******************************************/
	/*       MAIN VALIDATION ROUTINE           */
	/* The basis of all Validation - validates */
	/* correctness of date, min+max length etc.*/
	/* Called on visit to every field in the   */
	/* appropraite Form                        */
	/*                                         */
	/*******************************************/

function ValidateTextBox(contents,type,textboxname,formname,minimum,maximum,requiredfield,specialtype) {
    var data;
	var i,b,c,e,len,minlength,maxlength;

	if (requiredfield=="M")	{
		if(contents=="") {
			parent.window.status = "***** Mandatory Field - Cannot be blank";
		 	eval("document."+formname+"."+textboxname+".className='error'");
		 	return false;
		 	}
	}

	if (requiredfield=="O" && contents=="")
	{
		//Hilight fields that have been changed
		updatedFieldsOnly(textboxname);
		eval("document."+formname+"."+textboxname+".className='normInp'");
		parent.window.status = "";
		spliceArray(formname,textboxname,contents,requiredfield);
		data = null;
		return true;
	}

	if (type=="X") {
		data = contents.toUpperCase();
		len = parseInt(data.length);
		minlength = parseInt(minimum);

  	 var characterset ="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+,-./:;<=>?@[\]^_{}~ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
				checkArray(formname,textboxname);
				return false;
		 	}
		}

		if(len<minlength && contents!="") {
			parent.window.status = "***** Minimum field length is "+minimum+"";
		  	checkArray(formname,textboxname);
		  	return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="x") {
	 data=contents;
	 len = parseInt(data.length);
	 minlength = parseInt(minimum);
	 maxlength = parseInt(maximum);

	 var characterset3 ="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+,-./:;<=>?@[\]^_{}~? ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset3.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
		 		checkArray(formname,textboxname);
				return false;
		 	}
		}

		if(len<minlength && contents!="") {
		  parent.window.status = "***** Minimum field length is "+minimum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		//Perform Email Address Validation if required
		if((textboxname.match("web_account_email_address"))&& (!(checkEmail(contents)))){
		    parent.window.status = "***** Email Address is Invalid ";
		    checkArray(formname,textboxname);
		    return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}


// changes made for charsets Y and y on 16/09/05   --------------------
	if (type=="Y") {
		data = contents.toUpperCase();
		len = parseInt(data.length);
		minlength = parseInt(minimum);

  	 var characterset ="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ?!#$%&()*+,-./:;<=>?@\_{ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
				checkArray(formname,textboxname);
				return false;
		 	}
		}

		if(len<minlength && contents!="") {
			parent.window.status = "***** Minimum field length is "+minimum+"";
		  	checkArray(formname,textboxname);
		  	return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="y") {
	 data=contents;
	 len = parseInt(data.length);
	 minlength = parseInt(minimum);
	 maxlength = parseInt(maximum);

	 var characterset3 ="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?!#$%&()*+,-./:;<=>?@\_{ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset3.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
		 		checkArray(formname,textboxname);
				return false;
		 	}
		}

		if(len<minlength && contents!="") {
		  parent.window.status = "***** Minimum field length is "+minimum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		//Perform Email Address Validation if required
		if((textboxname.match("web_account_email_address"))&& (!(checkEmail(contents)))){
		    parent.window.status = "***** Email Address is Invalid ";
		    checkArray(formname,textboxname);
		    return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

// end of changes made for charsets Y and y on 16/09/05   --------------------




	if (type=="n") {
	  data = contents;
	 len = parseInt(data.length);
	 minlength = parseInt(minimum);

	for (i = 0; i < len; i++) {
		c = data.charAt(i);

		//call isDigit Fuction to check character is a valid digit
		if (!isDigit(c)) {
		 parent.window.status = "***** Data must be numeric";
		 checkArray(formname,textboxname);
		 return false;
		}
	 }//end of for loop

		if(len<minlength && contents!="") {
		 parent.window.status = "***** Minimum field length is "+minimum+"";
		 checkArray(formname,textboxname);
		 return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		//Priority - PREVENT user input priority greater than 90
		if(textboxname=="priority" && contents!=""){

		 var inputvalue = parseInt(data);

		  if(inputvalue < 0 || inputvalue>90) {
		    parent.window.status = "***** Priority must between 0 and 90 inclusive";
		    checkArray(formname,textboxname);
		    return false;
		  }
		} //end of priority check



		//Date processing
		if (specialtype=="D" && contents!=""){
			var mydate=contents;
			var chk = 0;
   			var maxDay = 0;
			var yyyy = parseInt(data.substr(0,4));
			var mm = data.substr(4,2);
			var dd = data.substr(6,2);
			var testdate = new Date();
			var curr_year = parseInt(testdate.getFullYear());
			var min_yyyy = curr_year - 3;
			var max_yyyy = curr_year + 3;


		//Call function to get maximun number of days for each month
		maxDay = max_day(mm,yyyy);
		if((dd <= 0) || (dd > maxDay)) {
			chk = 1;
		} else if((mm <= 0) || (mm > 12)) {
			chk = 2;
		} else if((yyyy < min_yyyy) || (yyyy > max_yyyy)) {
			chk = 3;
		}

		if(chk == 1) {
			parent.window.status = "***** Invalid No of Days in month ***** ";
		 	checkArray(formname,textboxname);
		 	return false;
		}else if(chk == 2) {
			parent.window.status = "***** Invalid Month ***** ";
		 	checkArray(formname,textboxname);
		 	return false;
		}else if(chk == 3) {
			parent.window.status = "***** Invalid Year - Year must be +/- 3 Years from current year***** ";
		 	checkArray(formname,textboxname);
		 	return false;
		}else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
	   }

		//Time processing - Must be 24hr clock format
		if (specialtype=="T"){
			var time=main.trade_time.value;
			var hh=time.substr(0,2);
			var ms=time.substr(2,2);
			var ss=time.substr(4,2);
			if(hh>=24){
				parent.window.status = "**Invalid Time - Hours must be less than 24** ";
			 	checkArray(formname,textboxname);
		 		return false;
			}
			else if(ms>=60){
				parent.window.status = "** Invalid Time - Minutes must be less than 60** ";
		 		checkArray(formname,textboxname);
			 	return false;
			}
			else if(ss>=60){
				parent.window.status = "**Invalid Time - Seconds must be less than 60** ";
			 	checkArray(formname,textboxname);
			 	return false;
			}
			else {
			spliceArray(formname,textboxname,data,requiredfield);
			}
		}

	else {
		spliceArray(formname,textboxname,data,requiredfield);
		}
	data = null;
   }

	if (type=="an")	{
		data = contents.toUpperCase();
	    len = parseInt(data.length);
		minlength = parseInt(minimum);


		var characterset1 ="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ, ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset1.indexOf(c) == -1)	{
				parent.window.status = "***** Invalid Character";
				checkArray(formname,textboxname);
				return false;
		 	}
		}

		if(len<minlength && contents!="") {
		  parent.window.status = "***** Minimum field length is "+minimum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="a") {
		data = contents.toUpperCase();
	    len = parseInt(data.length);
		minlength = parseInt(minimum);


		var characterset4 ="ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset4.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
				checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		  parent.window.status = "***** Minimum field length is "+minimum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;

	}



	if (type=="Q") {
		data = contents.toUpperCase();
	    len = parseInt(data.length);
		minlength = parseInt(minimum);


		var characterset5 ="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ/-?:().,'+ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset5.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
		 		checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		 parent.window.status = "***** Minimum field length is "+minimum+"";
		 checkArray(formname,textboxname);
		 return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="q") {
	   data = contents;
	   len = parseInt(data.length);
	   minlength = parseInt(minimum);


		var characterset6 ="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-?:().,'+ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset6.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
		 		checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		 parent.window.status = "***** Minimum field length is "+minimum+"";
		 checkArray(formname,textboxname);
		 return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}
















	if (type=="W") {
		data = contents.toUpperCase();
	    len = parseInt(data.length);
		minlength = parseInt(minimum);


		var characterset5 ="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ/-?:().,'+ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset5.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
		 		checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		 parent.window.status = "***** Minimum field length is "+minimum+"";
		 checkArray(formname,textboxname);
		 return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="w") {
	   data = contents;
	   len = parseInt(data.length);
	   minlength = parseInt(minimum);


		var characterset6 ="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-?:().,'+ ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset6.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
		 		checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		 parent.window.status = "***** Minimum field length is "+minimum+"";
		 checkArray(formname,textboxname);
		 return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="S") {
		data = contents.toUpperCase();
	    len = parseInt(data.length);
		minlength = parseInt(minimum);


		var characterset7 ="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset7.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
			    checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		   parent.window.status = "***** Minimum field length is "+minimum+"";
		   checkArray(formname,textboxname);
		   return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="d") {
		data = contents.toUpperCase();
	    len = parseInt(data.length);
		minlength = parseInt(minimum);

		var characterset8 ="0123456789.";
		for (i=0; i<len; i++) {
			c = data.charAt(i);
			if(characterset8.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
				checkArray(formname,textboxname);
				return false;
			}
		}

		if(len<minlength && contents!="") {
		   parent.window.status = "***** Minimum field length is "+minimum+"";
		   checkArray(formname,textboxname);
		   return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		if (specialtype=="C"){
			var dots=0;
			for (var j=0;j<contents.length;j++){
				var ss=contents.substr(j,1);
				if(ss=="."){
					dots++;
				}
				if (dots>1){
					parent.window.status = "***** Can only have one Decimal Point ";
					checkArray(formname,textboxname);
					return false;
				}else{
					//put the value of quantity_ia and consideration_ia fields into the non_ia hidden fields
					if ( (textboxname.match("quantity_ia")) || (textboxname.match("consideration_ia")) ){
						var noniafield=textboxname.replace("_ia","");
						var noniavalue=eval("document."+formname+"."+noniafield+"");
						noniavalue.value=contents;
					}
					spliceArray(formname,textboxname,data,requiredfield);
				}
			}
		}

	else{
		spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	if (type=="nn") {
		data = contents;
	    len = parseInt(data.length);
		minlength = parseInt(minimum);

		var characterset9 ="0123456789,";
		for (i = 0; i < len; i++) {
			c = data.charAt(i);
			if(characterset9.indexOf(c) == -1) {
				parent.window.status = "***** Invalid Character";
				checkArray(formname,textboxname);
		 		return false;
		 	}
		}

		if(len<minlength && contents!="") {
		 	parent.window.status = "***** Minimum field length is "+minimum+"";
		 	checkArray(formname,textboxname);
		 	return false;
		}

		if(len>maxlength && contents!="") {
		  parent.window.status = "***** Maximum field length is "+maximum+"";
		  checkArray(formname,textboxname);
		  return false;
		}

		else{
			spliceArray(formname,textboxname,data,requiredfield);
		}
		data = null;
	}

	//No longer used - Replaced CheckBoxes with Select Boxes
	//checkCheckbox(contents,textboxname,formname);

	updatedFieldsOnly(textboxname);

}//End of ValidateTextBox Function

//Checks if Parameter is a valid digit
function isDigit(c) {
		return ((c >= '0') && (c <= '9'));
}

function checkArray(formname,textboxname){

    textboxid=eval("document."+formname+"."+textboxname+".id");

    eval("document."+formname+"."+textboxname+".className='error'");
	if(formname=="main"){ //only add error fields to array if in the main form
		if(InvalidFields.length==0){
	    	InvalidFields[0]=textboxid;
		}
		b=0;
		for (var e=0;e<=InvalidFields.length;e++){
			if(textboxid==InvalidFields[e]){
				b++;
			}
		}
		if(b==0){
	   		InvalidFields.push(textboxid);
		}
	} //end of overall if
}

//If the field has been updated add it to the changedFields Array
function updatedFieldsOnly(textboxname){
	b=0;
	for (var a=0;a<=changedFields.length;a++) {
		if(textboxname==changedFields[a]) {
			b++;
		}
	}
	if(b==0) {
		changedFields.push(textboxname);
	}
}

function spliceArray(formname,textboxname,data,requiredfield){

	//Get textbox id and remove form aray
	textboxid=eval("document."+formname+"."+textboxname+".id");

	if(requiredfield=="M") {
		eval("document."+formname+"."+textboxname+".className='mandInp'");
	}else{
		var inputType=eval("document."+formname+"."+textboxname+".type");
		if(!(inputType=="checkbox")) { //Dont change class of checkbox
			eval("document."+formname+"."+textboxname+".className='normInp'");
		}
	}
	eval("document."+formname+"."+textboxname+".value=(data)");
	parent.window.status = "";
	for (var e=0;e<=InvalidFields.length;e++){
		if(textboxid==InvalidFields[e]) {
		   InvalidFields.splice(e,1);
		}
	}
}

//Function for calculating maximum number of days in a month given the month and year
function max_day(mn, yr){
   var mDay;
   	if((mn == 4) || (mn == 6) || (mn == 9) || (mn == 11)) {
		mDay = 30;
	} else if(mn == 2) {
	//Calling leap year function
	mDay = isLeapYear(yr) ? 29 : 28;
	}
	else {
	mDay = 31;
	}
	return mDay;
}

// Function to Check if Year is a Leap Year
function isLeapYear(yr){
if (yr % 2 == 0)
   return true;
   return false;
}

function validatePage(formname,browsername){

    mandFieldList(formname);
	displayInvalidFields();


	if (browsername=="Microsoft Internet Explorer"){
	eval("window.external.AutoCompleteSaveForm("+formname+")");
	}


	//Only Submit form when all Mandatory Fields are filled in and valid
	if(FormStatus=="OK") {
		eval("document."+formname+".submit()");
	}else{
		FormStatus="OK";
		return false;
	}
}
//Lists Mandatory Fields that are not filled in
function mandFieldList(formname){
	var errorfield;
	var checkfield;
	var arraycount=0;
	var numberofblanks=0;
	var mantextbox="";
	var mantextbox1="";
	var BlankManFields = new Array();
	var BlankManFields1 = new Array();
	var AllManFields = new Array();
	var Manderror="";

	for(var i = 0; i < MandFld.length; i++) {
		for(var j = 0; j < MandFld[i].length; j++) {
	    	numberofblanks=0;
			if(eval("document."+formname+"."+MandFld[i][j]+"")){
				if(MandFld[i].length == 1) {
					errorfield = eval("document."+formname+"."+MandFld[i][j]+".value");
					mantextbox = eval("document."+formname+"."+MandFld[i][j]+".id");
					if(errorfield==""){
						BlankManFields.push(mantextbox);
	      			}
	  			}
				if(MandFld[i].length > 1) {
					for(arraycount = 0; arraycount<MandFld[i].length; arraycount++) {
						checkfield = eval("document."+formname+"."+MandFld[i][arraycount]+".value");
						mantextbox1 = eval("document."+formname+"."+MandFld[i][arraycount]+".id");
						if (checkfield=="") {
							numberofblanks++;
							BlankManFields1.push(mantextbox1);
						}
					}
           			j = MandFld[i].length;
				}

				if((numberofblanks>0) && (numberofblanks < MandFld[i].length)) {
					AllManFields = BlankManFields.concat(BlankManFields1);
		 		}
				else if(numberofblanks==MandFld[i].length) {
					BlankManFields1 = new Array();
		 		}
			}//end of if
	  	} //end of for
	} //end of for


	if(!AllManFields.length==0) {
		for (var b=0;b<AllManFields.length;b++){
			Manderror += "\n" +AllManFields[b];
	    }
	    Manderror += "\n\nThank you!\n";
		alert("Sorry your request could not be completed as the following fields are required: \n" +Manderror+"\n **Most Mandatory fields are in BLUE, although some are co-dependent. Please see Help Page for further information**");
		FormStatus="FAILED";
		return false;
	}
	else if (!BlankManFields.length==0){

		for (var f=0;f<BlankManFields.length;f++){
			Manderror += "\n" +BlankManFields[f];
		 }
		 Manderror += "\n\nThank you!\n";
		 alert("Sorry your request could not be completed as the following fields are required: \n" +Manderror+"\n **Most Mandatory fields are in BLUE, although some are co-dependent. Please see Help Page for further information**");
		 FormStatus="FAILED";
		 return false;
   	}
} //end of function

//List all fields that contain invalid data
function displayInvalidFields(){
	var errMsg="";
	for (var e=0;e<=InvalidFields.length-1;e++){
		errMsg += "\n" +InvalidFields[e];
	}
	errMsg += "\n\nThank you!\n";
	if(!InvalidFields.length==0){
		alert("Sorry your request could not be completed as the following fields contain invalid data: \n" +errMsg);
		FormStatus="FAILED";
		return false;
	}

}

function CompareCodes(formname,webcode1,webcode2){
//Need to convert confirmation password to upper case as all passwords will be in uppercase
//The first password is already converted to uppercase from ValidateTextBox function

     var data = eval("document."+formname+"."+webcode2+".value")
     data = data.toUpperCase();
     eval("document."+formname+"."+webcode2+".value=(data)");


	if ((eval("document."+formname+"."+webcode1+".value")) != (eval("document."+formname+"."+webcode2+".value")))
   		{
    	checkArray(formname,webcode2);

    	alert("Sorry your request could not be completed as the Confirmation Password is different from original password");
    	FormStatus="FAILED";
    	return false;
   	}else{
   		var webcode2value = eval("document."+formname+"."+webcode2+".value");
   		spliceArray(formname,webcode2,webcode2value,'M');
   		FormStatus="OK";
   		return true;
   	}
}

function checkEmail(str){
//Validates Email Address entered by the user
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		 }

		 if (str.indexOf(" ")!=-1){
		    return false;
		 }

 		 return true;
}

//Called for Registration Page only
function validateRegPage(formname,passwordtxtbox,emailtxtbox){


    //Set Formstatus before we submit each from
    FormStatus="OK";


	//Check Email Addresses are the same
	if ((document.main.web_account_email_address.value) != (document.main.verification_email.value))
   		{
    	checkArray(formname,emailtxtbox);

    	alert("Sorry your request could not be completed as the Confirmation Email Address is different from  the original address");
    	FormStatus="FAILED";
    	return false;
   	}else{
   		var emailvalue = eval("document.main.verification_email.value");
   		spliceArray(formname,emailtxtbox,emailvalue,'M');

   	}


	//Check Passwords are the same
	if ((document.main.web_account_code.value) != (document.main.verification_password.value))
   		{
   		checkArray(formname,passwordtxtbox);

    	alert("Sorry your request could not be completed as the Confirmation Password is different from the original password");
    	FormStatus="FAILED";
    	return false;
   	}else{
   		var webcode2value = eval("document.main.verification_password.value");
   		spliceArray(formname,passwordtxtbox,webcode2value,'M');

   	}


   	mandFieldList(formname);
	displayInvalidFields();


	//Only Submit form when all Mandatory Fields are filled in and valid


	if(FormStatus=="OK") {
			eval("document."+formname+".submit()");
	}else{
		FormStatus="OK";
		return false;
	}
}

function validateAccountAmendPage(formname,browsername){

    mandFieldList(formname);
	displayInvalidFields();

    //If the New Password field is not blank - then user has changed it
    //Therefore must validate confirmation password
	if (!document.main.web_account_code_new.value==""){
		CompareCodes(formname,'web_account_code_new','verification_password')

	}


	//Only Submit form when all Mandatory Fields are filled in and valid
	if(FormStatus=="OK") {
		eval("document."+formname+".submit()");
	}else{
		FormStatus="OK";
		return false;
	}
}

function validateAccountRetrievePage(formname,browsername){

    mandFieldList(formname);
	displayInvalidFields();

    //Only Submit form when all Mandatory Fields are filled in and valid
	if(FormStatus=="OK") {
		eval("document."+formname+".submit()");
	}else{
		FormStatus="OK";
		return false;
	}
}

function validateCleardownPage(formname,browsername){

    mandFieldList(formname);
	displayInvalidFields();

    //Only Submit form when all Mandatory Fields are filled in and valid
	if(FormStatus=="OK") {
		var result=window.confirm("Are you sure you want to submit this Task?");
		if (result==true){
			eval("document."+formname+".submit()");
		}
		else{
			return false;
		}
	}else{
		FormStatus="OK";
		return false;
	}
	
	
	
}

//Function is called from onload by all JSP's
function setTime(){
	LastUsedTime = new Date();
}


// Called before every PopUp Window is displayed
// If Time Difference is > TimeOutLimit then log out user and do not display PopUp

function getTimeDifference(){

    CurrentTime = new Date();
	TimeDifference = Math.ceil((CurrentTime.getTime()-LastUsedTime.getTime())/(one_minute));
    var TimeDiffinMins=parseInt(TimeDifference);


    //If time difference is great than 60 mins - then force user to login in

    if (TimeDiffinMins>TimeOutLimit){
            TimeUp="YES";
            document.timeout.method.value="post"
			document.timeout.submit();
    }else{ //continue and reset LastUsedTime
         setTime();
         TimeUp="NO";
    }
} //End of function







