
var checkObjects	= new Array();

function define(n, type, HTMLname, required, min, max, d) 
{
	var p;
	var i;
	var x;
	if (!d) 
		d = document;
	if ((p=n.indexOf("?"))>0&&parent.frames.length) 
	{
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	
	if (!(x = d[n]) && d.all) 
		x = d.all[n];

	for (i = 0; !x && i < d.forms.length; i++) 
	{
		x = d.forms[i][n];
	}
	for (i = 0; !x && d.layers && i < d.layers.length; i++) 
	{
		x = define(n, type, HTMLname, required, min, max, d.layers[i].document);
		return x;       
	}

	eval("V_"+n+" = new formResult(x, type, HTMLname, required, min, max);");

	checkObjects[eval(checkObjects.length)] = eval("V_"+n);
}

function formResult(form, type, HTMLname, required, min, max ) 
{
	//alert(form + " " + type + " " + HTMLname + " " + required + " " + min + " " + max)
	this.form = form;
	this.type = type;
	this.HTMLname = HTMLname;
	this.required=required;
	this.min  = min;
	this.max  = max;
}

function validate() 
{
	if (checkObjects.length > 0) 
	{
		
		for (objnum = 0; objnum < checkObjects.length; objnum++) 
		{
			validateObject = new Object();
			validateObject.form = checkObjects[objnum].form;
			validateObject.HTMLname = checkObjects[objnum].HTMLname;			
			validateObject.type = checkObjects[objnum].type;
			if(validateObject.type == "function" )
			{
				var testfunc=false;
				testfunc = eval(validateObject.HTMLname);
	
				//alert("1 "+validateObject.HTMLname +" : "+ eval(testfunc) );
				if(!eval(testfunc)) {
					return false;
				}
			}
			
			if(checkObjects[objnum].type != "radio" && checkObjects[objnum].type != "function")
			{
				//alert(checkObjects[objnum].type + " " + checkObjects[objnum].form.value)
				validateObject.val = checkObjects[objnum].form.value;
				validateObject.len = checkObjects[objnum].form.value.length;
			}	
			validateObject.required = checkObjects[objnum].required;
			validateObject.min = checkObjects[objnum].min;
			validateObject.max = checkObjects[objnum].max;
			
			

			if( validateObject.type == "radio")
			{
				checkval = false;
				for(var k = 0 ; k < validateObject.min ; k++ )
				{
					if(  (validateObject.form[k].checked) )
					{
						checkval = true;
						break;		
					}					
				}	
				if(!checkval)
				{
					alert("Please select "+validateObject.HTMLname);
					validateObject.form[0].focus();					
				 	return false
				}	
			}
			
			if( validateObject.len <= 0 && validateObject.required == "Y")
			{
				message(validateObject.form,"Please Enter "+validateObject.HTMLname+"."); 
				return false;
			}
			
			if( validateObject.type != "function" && validateObject.type != "password" && validateObject.type != "radio")
			{
				validateObject.val = trimString(validateObject.val);
			}
			
			if( validateObject.val == "" && validateObject.required == "Y" )
			{
				message(validateObject.form,"Please Enter "+validateObject.HTMLname+"."); 
				return false;
			}
									
			if( validateObject.type == "num" )
			{
			   if( (validateObject.required == "Y") || (validateObject.required == "N" && validateObject.len > 0) )
				{
					if(isNaN(validateObject.val))
					{
						message(validateObject.form,validateObject.HTMLname+" must be a valid number."); 
						return false;
					}
				}	
			}
			
			if(validateObject.type == "email")
			{
			   if( (validateObject.required == "Y") || (validateObject.required == "N" && validateObject.len > 0) )
				{
					if ((validateObject.val.indexOf("@") == -1) || (validateObject.val.charAt(0) == ".") || (validateObject.val.charAt(0) == "@") || (validateObject.len < 6) || (validateObject.val.indexOf(".") == -1) || (validateObject.val.charAt(validateObject.val.indexOf("@")+1) == ".") || (validateObject.val.charAt(validateObject.val.indexOf("@")-1) == ".")) 
					{ 
						message(validateObject.form,validateObject.HTMLname+" must contain a valid e-mail address.It requires a \"@\" and a \".\"");
						return false;	
					}
				}	
			}
			
			
			if( validateObject.type == "specialChar") 
			{ 
			   if( (validateObject.required == "Y") || (validateObject.required == "N" && validateObject.len > 0) )
				{
					var sp_char = "!$%^*=[]\\\'/{}|\"<>?~`_";
					for(var kk = 0 ; kk < validateObject.len ; kk++ )
					{
						sp_temp = validateObject.val.substring(kk,kk+1);
						if((kk==0) && (sp_temp == "-"))
						{
							message(validateObject.form,"Special characters are not allowed.\n Please remove them.");
							return false;
						}
						if( sp_char.indexOf(sp_temp) != -1 )
						{
							if((kk==0) && (sp_temp == "+"))
							{
							}						
							else
							{
								message(validateObject.form,"Special characters are not allowed.\n Please remove them and try again");
								return false;							
							}
						}
					}
					if(validateObject.val == 0)
					{
						message(validateObject.form,"Special characters are not allowed.\n Please remove them and try again");
						return false;
					}
				}	
			}

			if( validateObject.type == "resKey") 
			{ 
			   if( (validateObject.required == "Y") || (validateObject.required == "N" && validateObject.len > 0) )
				{
					var rk_char = "/^[a-zA-Z][0-9]*$/";
					for(var r = 0 ; r < validateObject.len ; r++ )
					{
						rk_temp = validateObject.val.substring(r,r+1);
						if((r==0) && (rk_temp == "-"))
						{
							message(validateObject.form,"Special characters are not allowed.\n Please remove them.");
							return false;
						}
						if( rk_char.indexOf(rk_temp) == -1 )
						{
							if((r==0) && (rk_temp == "+"))
							{
							}						
							else
							{
								message(validateObject.form,"Special characters are not allowed.\n Please remove them and try again");
								return false;							
							}
						}
					}
					if(validateObject.val == 0)
					{
						message(validateObject.form,"Special characters are not allowed.\n Please remove them and try again");
						return false;
					}
				}	
			}
			
			var valType = "";
			if( validateObject.type == "num" )
			{
				valType = "digits";
			}
			
			
			if( validateObject.type == "amount" )
			{
				var digits = "0123456789.";
				for(var j = 0 ; j< validateObject.len ; j++)
				{
					temp = validateObject.val.substring(j,j+1)
					if( digits.indexOf(temp) == -1 )
					{
						message(validateObject.form,"Please Enter Valid Amount.");
						return false;
					}
				}
				var dotPos = validateObject.val.indexOf(".");
				if( dotPos != -1 )
				{
					if( (validateObject.len - dotPos) != 3 )
					{
						message(validateObject.form,"Invalid Decimal places.");
						return false;
					}
				}
				else
				{
					message(validateObject.form,"Please Enter amount with two Decimal places.");
					return false;
				}
			}
			
			if( validateObject.type == "phone") 
			{ 
			   if( (validateObject.required == "Y") || (validateObject.required == "N" && validateObject.len > 0) )
				{
					var ph_digits = "0123456789-";
					for(var k = 0 ; k < validateObject.len ; k++ )
					{
						ph_temp = validateObject.val.substring(k,k+1);
						if((k==0) && (ph_temp == "-"))
						{
							message(validateObject.form,"Please Enter Valid "+validateObject.HTMLname+".");
							return false;
						}
						if( ph_digits.indexOf(ph_temp) == -1 )
						{
							if((k==0) && (ph_temp == "+"))
							{
							}						
							else
							{
								message(validateObject.form,"Please Enter Valid "+validateObject.HTMLname+".");
								return false;							
							}
						}
					}
					if(validateObject.val == 0)
					{
						message(validateObject.form,"Please Enter Valid "+validateObject.HTMLname+".");
						return false;
					}
				}	
			}

			var valType = "";
			if( validateObject.type == "num" )
			{
				valType = "digits";
			}
			
			else if( validateObject.type == "string" )
			{
				valType = "characters";
			}
									
			if (validateObject.type == "num" || validateObject.type == "string") 
			{	
			   if( (validateObject.required == "Y") || (validateObject.required == "N" && validateObject.len > 0) )
				{
					if (validateObject.min && validateObject.max && (validateObject.min==validateObject.max) && (validateObject.len != validateObject.min) ) 
					{ 
						message(validateObject.form,validateObject.HTMLname+" must be "+validateObject.min+" "+valType);
						return false;
					}
					else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max)) 
					{ 
						message(validateObject.form,validateObject.HTMLname+" must consist at least "+validateObject.min+" and not more than "+validateObject.max+" "+valType);
						return false;
					} 
					else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)) 
					{ 
						message(validateObject.form,validateObject.HTMLname+" must consist at least "+validateObject.min+" "+valType);
						return false;
					} 
					else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)) 
					{ 
						message(validateObject.form,validateObject.HTMLname+" must not contain more that "+validateObject.max+" "+valType);
						return false;										
					} 
				}	
			}
   	}
   	return true;
	}
	else
	{
		return true;
   }	
}

function trimString (str) 
{
  while (''+str.charAt(0) == ' ')
    str = str.substring(1);
  while (''+str.charAt(str.length - 1) == ' ')
    str = str.substring(0, str.length - 1);
  return str;
}

function baiduri_acc_chkdigit(frm,varname)
{
	if(varname=="")
	{
		message(frm,"Please Enter Account Number")
		return false
	}
	if(varname==0)
	{
		message(frm,"Please Enter Account Number")
		return false
	}
/*
   len = varname.length
	if(len < 11)
	{
		//message(frm,"Account Number should be 11 digits " + " Please enter account " + varname + " again")
		message(frm,"Account Number should be 11 digits " + " Please enter valid account ");
		return false
	}
   chkdigit = varname.substring(len,len-1)
	stpoint = len-1
	sum = 0
	j=2
	for(i=stpoint;i>=1;i--)
	{
		num = varname.substring(i,i-1)
		if(j==8)
		{
			j=2
		}
		ans = num * j 
		sum += ans
		j++
	}
   mod11 = sum%11
	mod11chk = 11 - mod11
	if(mod11chk > 9)
	{
		mod11result = mod11chk - 3
	}
	else
	{
		mod11result = mod11chk
	}
	if(mod11result == chkdigit)
	{
		return true
	}
	else
	{
		message(frm,"Account " + varname + " is not valid")
		return false
	}
*/
	return true;	
}

function baiduri_cc_chkdigit(frm,CD_CARD_NUM1,CD_CC_BRAND)
{
	var CCN_digits=""
	var validcard = false;
   var msgind = 0;
       
	for (var i=0;i<CD_CARD_NUM1.length;i++)
	{
		if ((CD_CARD_NUM1.charAt(i) >="0") && (CD_CARD_NUM1.charAt(i) <="9"))
		{ 
			CCN_digits = CCN_digits + CD_CARD_NUM1.charAt(i);
		}
	}
	if (CD_CC_BRAND == "Master")
	{
	 	CD_CC_BRAND= "Master";
	 	if (CCN_digits.length == 16)
	 	{
			if ((CCN_digits.substring (0, 2) >= "51") && (CCN_digits.substring (0, 2) <= "55"))
			{
				validcard = true;
			}
			else
			{
				msgind = 1;
			}
		}
	 	else
	 	{
	 		msgind = 2;
	 	}
   }
	else if (CD_CC_BRAND == "Visa")
	{
		CD_CC_BRAND ="Visa";
		if ((CCN_digits.length == 16)  || (CCN_digits.length ==13))
		{
			if (CCN_digits.substring (0, 1) == "4")
			{
				validcard = true;
   	 	}
			else
	    	{	
	    		msgind = 1;   
	    	}
    	}
		else	
		{	
			msgind = 2; 
		}
	}
	if (!validcard)
	{
		if (msgind == 1)
			message (frm,"The Card Number ("+CD_CARD_NUM1 + ") and the Card Type (" + CD_CC_BRAND + ") do not match.");
		else if (msgind == 2)
		{
			message (frm,"The Card Number ("+CD_CARD_NUM1 + ") Invalid for  Card Type (" + CD_CC_BRAND + ").");
		}
	}
	if (!validcard)
		return (validcard);

	var CheckSum = 0;
	// for loop
	for (var x = 1; x <= CCN_digits.length; x++)
	{
		var CurrentDigit = CCN_digits.charAt(CCN_digits.length - x);
		if (x % 2 == 0)
		{
			var WorkDigit = CurrentDigit * 2;	
			if (WorkDigit > 9)
			{ 
				CheckSum = CheckSum + (1 - 0);
				CheckSum = CheckSum + (WorkDigit % 10 - 0);
		  	}
			else
			{
				CheckSum = CheckSum + (WorkDigit - 0);
			}	
		}
		else
		{
			CheckSum = CheckSum + (CurrentDigit - 0);
		}
	} // end of for loop
	if (CheckSum % 10) 
	{ 
		validcard = false; 
		message (frm,"The Card Number ("+ CD_CARD_NUM1 +") is not correct "); 
	} 	

	return (validcard); 
}

function baiduri_dst_chkdigit(frm, dstval )
{
   if(dstval.length > 8 || dstval.length < 8)
	{
	    dstflag = false
	}
	else
	{
   	strtemp = dstval;
		var mul = new Array( 9, 8, 7, 6, 5, 4, 3, 2 );

		len = dstval.length;
		var ckdigit = 0;
		ckdigit = dstval.substring( len, len-1 )

		str = "1" + strtemp;

    	var totalnum = 0;
	 	for( i = 0 ;i < len; i++ )
	   {
	      totalnum += str.charAt(i) * mul[i];
	   }
	  	div = totalnum % 11;
		finalval = 11 - div
	  	if( finalval > 9 )
	   {
				compare_digit = finalval % 10
		}
		else
		{
	  	 		compare_digit = finalval
		}
   	if( compare_digit == ckdigit )
		{
   		dstflag = true
		}
	  	else
		{
	  	  dstflag = false
		}	
	}
	return dstflag
}

function baiduri_atm_chkdigit(frm,atm_no)
{
	return true;
}

function baiduri_deb_chkdigit(frm,deb_no)
{
	return true;
}

function baiduri_hp_chkdigit(frmname,ACC1,HPval)
{
   if(HPval.length > 11 || HPval.length < 11)
	{
			message (eval("document."+frmname+"."+ACC1),"Please enter valid HP Account "); 
	  	   HPflag = false
			return HPflag  
	}
   	str = HPval.substring(0,HPval.length-1);
		var mul = new Array( 3, 7, 13, 3, 7, 13, 3, 7, 13, 19 );

		len = str.length;
		var ckdigit = 0;
		ckdigit = HPval.substring( HPval.length, HPval.length-1 )
		var totalnum = 0;
	 	for( i = 0 ;i < len; i++ )
	   {
	      totalnum += str.charAt(i) * mul[i];
	   }
	  	div = totalnum%11;
 		subs = 11-div;
		if(subs == 10)
		{
		  	lastdigit = 1;
		}
		else if(subs == 11) 
		{
		  	lastdigit = 0;
		}
		else
			lastdigit = subs
   	if( lastdigit == ckdigit )
		{
   		HPflag = true
		}
	  	else
		{
		  message (eval("document."+frmname+"."+ACC1),"Please enter valid HP Account "); 
	  	  HPflag = false
		}	
	return HPflag
}

function message(frm,message)
{
	alert(message);
	frm.select();
	frm.focus();
}

function BNKACC(ACC1,ACC2,ACC3,ACCNAME,frmname)
{
	//Bank Account validation with Name
	
	acc_num = trimString(eval("document."+frmname+"."+ACC1).value+eval("document."+frmname+"."+ACC2).value+eval("document."+frmname+"."+ACC3).value);
	acc_num_name = trimString(eval("document."+frmname+"."+ACCNAME).value);

   if(!chkacname(acc_num,acc_num_name))
   {
		message(eval("document."+frmname+"."+ACC1),"Please Enter Account Number");
   	return false;
   }
	
	if(acc_num != "") 
	{
		if( !baiduri_acc_chkdigit(eval("document."+frmname+"."+ACC1),acc_num))
			return false;

		if(acc_num_name == "")
		{
			message(eval("document."+frmname+"."+ACCNAME),"Please Enter Account Name");
			return false;
		}	
	}		
		
	return true;
}

function BNKACC4(ACC1,ACC2,ACC3,ACC4,ACCNAME,frmname)
{
	//Bank Account validation with Name
	
	acc_num = trimString(eval("document."+frmname+"."+ACC1).value+eval("document."+frmname+"."+ACC2).value+eval("document."+frmname+"."+ACC3).value+eval("document."+frmname+"."+ACC4).value);
	acc_num_name = trimString(eval("document."+frmname+"."+ACCNAME).value);

   	if(!chkacname(acc_num,acc_num_name))
   	{
		message(eval("document."+frmname+"."+ACC1),"Please Enter Account Number");
   		return false;
   	}
	
	if(acc_num != "") 
	{
		if( !baiduri_acc_chkdigit(eval("document."+frmname+"."+ACC1),acc_num))
			return false;

		if(acc_num_name == "")
		{
			message(eval("document."+frmname+"."+ACCNAME),"Please Enter Account Name");
			return false;
		}	
	}		
		
	return true;
}

function CCardChk(ACC1,ACC2,ACC3,ACC4,frmname,ctype)
{
	//Visa Card validation
	cc_num = trimString(eval("document."+frmname+"."+ACC1).value+eval("document."+frmname+"."+ACC2).value+eval("document."+frmname+"."+ACC3).value+eval("document."+frmname+"."+ACC4).value);
	if(cc_num != "")
	{ 
		if( !baiduri_cc_chkdigit(eval("document."+frmname+"."+ACC1),cc_num, ctype))
			return false;
	}		
	return true;		
}

function HPChk(ACC1,ACC2,ACC3,ACC4,frmname)
{
	//Hire Purchase Validation
	
	hire_pur = trimString( eval("document."+frmname+"."+ACC1).value + eval("document."+frmname+"."+ACC2).value + eval("document."+frmname+"."+ACC3).value + eval("document."+frmname+"."+ACC4).value );
	if(hire_pur != "") 
	{
		if( !baiduri_hp_chkdigit(frmname,ACC1,hire_pur))
				return false;
	}
	return true;		
}

function DSTChk(ACC,frmname)
{
	//DST validation
	dst = trimString(eval("document."+frmname+"."+ACC).value)
	if(dst != "")
	{	 
		if( !baiduri_dst_chkdigit(frmname,dst))
		{
			message(eval("document."+frmname+"."+ACC),"Please enter a valid DST Number");
			return false;
		}	
	}
	return true;		
}

function PrimAccChk(ACC1,ACC2,ACC3,frmname)
{
	//Primary Account Validation
	prim_acc = trimString(eval("document."+frmname+"."+ACC1).value+eval("document."+frmname+"."+ACC2).value+eval("document."+frmname+"."+ACC3).value);

	if((prim_acc == "") || (prim_acc == 0))
	{
		message(eval("document."+frmname+"."+ACC1),"Please Enter Primary Account Number.");
		return false;
	}
		
	if(!baiduri_acc_chkdigit(document.xx34200a.MB_PRIM_A,prim_acc)) {
		return false;
	}
	return true;	
}

// IF accname is present, then accno should not be blank
function chkacname(anum,aname)
{
	if(aname != "" && anum == "")
		return false;
	return true;	
}
