/*
==========================================================================	

*	Project Name           	: Puzzle
*	Program Name			: field_validation.js	
*	Current Version			: 1.0
*	Module Name				: N/A
*	Author(s)				: Alexander
*	Development Start Date		: 10/3/06
*	Development End Date 		: 
*	Description				    : Has all the major functions that are used to validate a form or page.		
	

*	Called by Program(s)		: 
*	Calling Programs(s)			: N/A
*	List of Include file(s) referred: N/A
*	List of Table(s) referred		: N/A
*	List of View(s) referred		: N/A
*	List of Stored Procedure(s) referred: N/A
*	Class Used                    		: N/A
*	List of function(s) referred		: store_current, compare_data, isDataAvailable, CheckDecimals, round, roundold, formatCurrency, formatNumber, isZip, isName, isempty, isInteger, isNumber, isAlpha, isPub, isCCID, isChar, isDecimal, isphone, isPhone, ismail, reset_value, alert_msg, isDate, emailCheck, KeyPress, KeyUp, MM_findObj.  
*	List of Sub Procedure(s) referred	: N/A
*	List of Third party Component(s) referred	: N/A

==========================================================================	
*/



var error_str="" ;
var return_tag=true;
var val = new Array();  // Decalre a array for storing current field value


/*****************************************************************
		Function  - store_current(form)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type:
 Purpose of function   : To store current form values to give alert msg ( save / reset / back / link change)


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			form			var	
***************************************************************/

function store_current(form) {
	for(i=0;i<form.elements.length;i++) {
		var obj=form.elements[i]
		if ((obj.type=='select-multiple'))  {
			var value=''
			for(j=0;j<obj.length;j++) value+=obj.options[j].value+'|'; 
			val[i]=value;
		} 
		else if ((obj.type == 'checkbox') || (obj.type == 'radio')) {
			if (obj.checked == true) {val[i]='1|'}
			else { val[i]='0|' }
		} else val[i]=obj.value;				
	}
}

/*****************************************************************
		Function  - compare_data(form)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type:
 Purpose of function   : To store compare current form  values with old form values to give alert msg ( save / reset / back)


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			form			  var	
***************************************************************/

function  compare_data(form) {
	for(i=0;i<form.elements.length;i++) {
		var obj=form.elements[i]
		var value=''	
		if ((obj.type=='select-multiple')) { for(j=0;j<obj.length;j++) value+=obj.options[j].value+'|'; }
		else if ((obj.type == 'checkbox') || (obj.type == 'radio')) {
				if (obj.checked == true) {value='1|'}
				else { value='0|'}
		} else value=obj.value;
		if(!(val[i]==value)) return false; 
	}
	return true
}

/*****************************************************************
		Function  - isDataAvailable(form)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To check any data available in current form values to give alert msg ( reset / back / link change)


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			form			  var		
***************************************************************/

function isDataAvailable(form) {
	var update_tag=true
	for(i=0;i<form.elements.length;i++) {
		//alert(form.elements[i].value)
		if (form.elements[i].type == "checkbox") {
		   if (form.elements[i].checked) {
				update_tag=false;
				break;
			}
		} else if (form.elements[i].value != "" && form.elements[i].type != "hidden" && form.elements[i].type != "submit" && form.elements[i].type != "button" && form.elements[i].type != "radio") {
			update_tag=false;
			break;
		}
	}
	return update_tag
}

/*****************************************************************
		Function  - CheckDecimals(mfield)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To limit decimal points with 2 digits


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			mfield			  var		
***************************************************************/

function CheckDecimals(mfield){
	var len = mfield.value.length
	var point = mfield.value.indexOf('.')
	if (point >= 0) if (len > point+3) mfield.value = mfield.value.substr(0,len-1)
}

/*****************************************************************
		Function  - round(number)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To round the number with 2 decimal accuracy


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			number			  var		
***************************************************************/

function round(number) {
	number = number + ""
	if (number.indexOf(".") < 0) {
		number = number + ".00"
		return number
	}
	var new_num
	var mdecimals
	mdecimals = number.substr(number.indexOf(".")+1)
	new_num = number.substring(0,number.indexOf("."))
	new_num = new_num + "." + number.substr(number.indexOf(".")+1,2)
	new_num = parseFloat(new_num)
	if (mdecimals.length > 2) {
		if (parseInt(mdecimals.substr(2,1)) > 4) {
			new_num = new_num + 0.01
		}
	}
	new_num = new_num + ""
	if (new_num.indexOf(".") < 0) {
		new_num = new_num + ".00"
	} else if ((new_num.substr(new_num.indexOf(".")+1)).length < 2) {
		new_num = new_num + "0"
	}
	return new_num
}

/*****************************************************************
		Function  - roundold(n, d)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To round the number with decimal accuracy


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			n			  var		
2			d			  var	
***************************************************************/

function roundold(n, d) {
  n = n - 0; // force number
  if (d == null) d = 2;
  var f = Math.pow(10, d);
  n += Math.pow(10, - (d + 1)); // round first
  n = Math.round(n * f) / f;
  n += Math.pow(10, - (d + 1)); // and again
  n += ''; // force string
  return d == 0 ? n.substring(0, n.indexOf('.')) :
      n.substring(0, n.indexOf('.') + d + 1);
}

/*****************************************************************
		Function  - formatCurrency(num)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Currency Format ($)


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			num				  var		
***************************************************************/

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10) 
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

/*****************************************************************
		Function  - formatNumber(num)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Format  Number


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			num				  var		
***************************************************************/

function formatNumber(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
num = Math.floor(num/100).toString();
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + num);
}

/*****************************************************************
		Function  - isZip(fieldvalue,fieldname,Countrycode)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : ZIP code Validation


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var		
3			Countrycode		  var		
***************************************************************/

function isZip(fieldvalue,fieldname,Countrycode) {
if ((fieldvalue == "") || (fieldvalue == null) || (fieldvalue ==" ")) {
	error_str=error_str+"* " +fieldname+" is Empty\n";
        return_tag=false
	return
}
if (Countrycode=='USA') {
	if (fieldvalue.length!=5) {
		error_str=error_str+"* "+fieldname+" must be 5 Characters length\n";
	        return_tag=false
		return
	} else { isInteger(fieldvalue,fieldname) }
} else {
	if (fieldvalue.length<5) {
		error_str=error_str+"* "+ fieldname+" minimum 5 Characters length\n";
	        return_tag=false
		return
	} else { isAlpha(fieldvalue,fieldname) }
}
}


/*****************************************************************
		Function  - isName(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Name Validation. (User Name or Employee Name or etc...)


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isName(fieldvalue,fieldname) { 

	for(var i=0; i<fieldvalue.length; i++) {

		var c = fieldvalue.charAt(i);
//		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z") || (c == "'") || (c==" ") || (c=="-") || (c==",") || ( c=="?") || ( c=="!") || (c==":") || (c=="."  )) {
		if (!((c=="'")||(c >= "a" && c<="z") ||(c >= "A" && c<="Z")   || (c==" ") ||  (c=="!") || (c==".") || (c=="?") || (c==",") || (c==":"))) {
			//error_str=error_str+"* "+fieldname+"  is not an Alphabets\n";
			return_tag=false
			return 1;
	    }
	}
}

function isAlpha1(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length; i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z") || (c=="-") || (c=="/") || (c==" ") || (c=="&") || (c=="/") || (c=="!") || (c==".") || (c=="?") || (c==",") || (c==":") || (c==";"))) {
			//error_str=error_str+"* "+fieldname+"  is not an Alphabets\n";
			return_tag=false
			return 1;
	    }
	}
}

function number(fieldvalue,fieldname) { 
alert("coming");
	for(var i=0; i<fieldvalue.length; i++) {
		var c = fieldvalue.charAt(i);

		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z"))) {
alert(c);
			//error_str=error_str+"* "+fieldname+"  is not an Alphabets\n";
			return_tag=false
			return 1;
	    }
	}
}





/*****************************************************************
		Function  - isempty(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Check if the HTML control is empty.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isempty(fieldvalue,fieldname) {
    if ((fieldvalue == "") || (fieldvalue == null) || (fieldvalue ==" ")) {
        //error_str=error_str+"* " +fieldname+" is Empty\n";
        //str = text + "Should not be left Empty";
        //alert(text + " Should not be left Empty");
        return_tag=false
        return 1;
        
    }
}

/*****************************************************************
		Function  - isInteger(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Check Integer or not.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isInteger(fieldvalue,fieldname) { 

	for(var i=0; i<fieldvalue.length;i++) {
		var c = fieldvalue.charAt(i);
		//if (!((c >= "0" && c<="9"  ) || (c==":"))) 
			if (!((c >= "0" && c<="9") || (c==":"))){
			//error_str=error_str+"* "+fieldname+"  is not an integer\n";
			return_tag=false
			return 1;
	    }
	}
}

/*****************************************************************
		Function  - isNumber(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To check for Number with Decimal points.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isNumber(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length;i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "0" && c<="9") || (c=="."))) {
			error_str=error_str+"* "+fieldname+"  is not a Number\n";
			return_tag=false
			return
	    }
	}
}

/*****************************************************************
		Function  - isAlpha(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To check whether any special character exists including space and '.'.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isAlpha(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length; i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z") || (c >= "0" && c<="9") )) {
			//error_str=error_str+"* "+fieldname+"  is not Alphanumeric\n";
			return_tag=false
			return 1;
	    }
	}
}
/*****************************************************************
		Function  - isAlpha2(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To check whether any special character exists including space and '.'.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isAlpha2(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length; i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z") || (c >= "0" && c<="9") || (c==".")||(c=="#") ||(c=="-")||(c==":")|| (c==" "))) {
			//error_str=error_str+"* "+fieldname+"  is not Alphanumeric\n";
			return_tag=false
			return 1;
	    }
	}
}
/*****************************************************************
		Function  - isPub(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To validate publication #.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isPub(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length; i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z") || (c >= "0" && c<="9") || (c == "-" ) || (c == " " ) )) {
			error_str=error_str+"* "+fieldname+"  is not a Valid\n";
			return_tag=false
			return
	    }
	}
}

/*****************************************************************
		Function  - isCCID(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To validate merchant id .


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isCCID(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length; i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z") || (c >= "0" && c<="9") || (c == "-" ) || (c == " " ) )) {
			error_str=error_str+"* "+fieldname+"  is not a Valid\n";
			return_tag=false
			return
	    }
	}
}

/*****************************************************************
		Function  - isChar(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To check for characters. Numbers and Special characters should not be present.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isChar(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length;i++) {
		var c = fieldvalue.charAt(i);
		if (!((c >= "a" && c<="z") ||(c >= "A" && c<="Z"))) {
			error_str=error_str+"* "+fieldname+"  is not Alphabet(s)\n";
			return_tag=false
			return
	    }
	}
}

/*****************************************************************
		Function  - isDecimal(fieldvalue,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To check whether the values entered is decimal or not. Non Decimal Numbers are allowed but not characters.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isDecimal(fieldvalue,fieldname) {
    for(var i=0; i<fieldvalue.length;i++) {
		var c = fieldvalue.charAt(i);
		if (c ==".") 
			continue
		if (!(c >= "0" && c<="9")) {
			error_str=error_str+"* "+fieldname+"  is not a number\n";
			return_tag=false
			return
	    }
	}
}

/*****************************************************************
		Function  - isphone(fieldvalue, length, fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To validate phone number.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var		
2			fieldname		  var			
***************************************************************/

function isphone(fieldvalue, length, fieldname) {
	if (fieldvalue.length < length) {
		return_tag=false;
		error_str=error_str+"* " + fieldname + " is not valid\n";
	}
}

/*****************************************************************
		Function  - isPhone(check,part1,part2,part3,fieldname)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To validate phone number.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			check		  var		
2			part1		  var	
3			part2		  var	
4			part3		  var	
5			fieldname	  var			
***************************************************************/

function isPhone(check,part1,part2,part3,fieldname) {
	if (isNaN(part1) || isNaN(part2) || isNaN(part3)) {
		return_tag=false;
		error_str=error_str+"* " + fieldname + " has non-numeric character(s)\n";
		return false
	} else if ((check=='M')||(check=='m')) {
			if ((part1.length<3)||(part2.length<3)||(part3.length<4)) {
				return_tag=false;
				error_str=error_str+"* " + fieldname + " is not valid\n";
			}
	} else if ((part1.length>0)||(part2.length>0)||(part3.length>0)) {
			if ((part1.length<3)||(part2.length<3)||(part3.length<4)|| (part1.indexOf(" ")>=0)|| (part2.indexOf(" ")>=0)|| (part3.indexOf(" ")>=0)) {
				return_tag=false;
				error_str=error_str+"* " + fieldname + " is not valid\n";
			}
	}
}

/*****************************************************************
		Function  - ismail(fieldvalue)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To validate email id.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			fieldvalue		  var				
***************************************************************/

function ismail(fieldvalue) {
var checkTLD=1;
var emailPat=/^(.+)@(.+)$/
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=fieldvalue.match(emailPat);

if (matchArray==null) {
error_str=error_str+"* Email address format incorrect (check @ and .'s)\n"
return_tag = false
return false;
}

var user=matchArray[1];
var domain=matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
error_str=error_str+"* Invalid Email ID\n   Ths username contains invalid characters.";
return_tag = false
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
error_str=error_str+"* Invalid Email ID\n   Ths domain name contains invalid characters.";
return_tag = false
return false;
   }
}

// See if "user" is valid 

if (user.match(userPat)==null) {

// user is not valid
error_str=error_str+"* Invalid Email ID\n   The username doesn't seem to be valid.";
return_tag = false
return false;
}


var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
error_str=error_str+"* Invalid Email ID\n   Destination IP address is invalid!";
return_tag = false
return false;
   }
}
return true;
}

 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
error_str=error_str+"* Invalid Email ID\n   The domain name is not valid.";
return_tag = false
return false;
   }
}


if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
error_str=error_str+"* Invalid Email ID\n   The address must end in a well-known domain or two letter " + "country.";
return_tag = false
return false;
}

if (len<2) {
error_str=error_str+"* Invalid Email ID\n   This address is missing a hostname!";
return_tag = false
return false;
}
return true;
}

/*****************************************************************
		Function  - reset_value(form, alert_msg)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Reset all values.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			form			  var	
2			alert_msg		  var				
***************************************************************/

function reset_value(form, alert_msg) {
	if (alert_msg == "")
		return false
	if (confirm(alert_msg + " if any will be lost.")) {
		var j=form.elements.length;
		for (i=0;i<j;i++) {
			if ((form.elements[i].type=="text") || (form.elements[i].type=="select-one") || (form.elements[i].type=="password")) {
				form.elements[i].value=""
			}	
		}
		return true
	}
	return false
}

/*****************************************************************
		Function  - alert_msg(alert_msg, redirect_page)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : This is used for giving alert msg for menu link & back button to avoid data lose accidently.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name			Data type
------------------------------------------------------------------
1			alert_msg			  var	
2			redirect_page		  var				
***************************************************************/

function alert_msg(alert_msg, redirect_page) {
	if (confirm(alert_msg + " if any will be lost.")) {
		if (redirect_page != "") {
			location=redirect_page
		}
		return true
	}
	return false
}

/*****************************************************************
		Function  - isDate(field_valud,field_name)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : FUNCTION FOR DATE VALIDATION


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name			Data type
------------------------------------------------------------------
1			field_valud			  var	
2			field_name			  var				
***************************************************************/

function isDate(field_valud,field_name) {
}


/*****************************************************************
		Function  - emailCheck (emailStr)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : To validate email id.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			emailStr		  var				
***************************************************************/

function emailCheck (emailStr) {

var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]%+"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")



var matchArray=emailStr.match(emailPat)
if (matchArray==null) {

	alert("Email address seems incorrect (check @ and .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("The username doesn't seem to be valid.")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Destination IP address is invalid!")
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("The domain name doesn't seem to be valid.")
    return false
}


var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   alert("The address must end in a three-letter domain, or two letter country.")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="This address is missing a hostname!"
   alert(errStr)
   return false
}

// If we've gotten this far, everything's valid!
return true;
}

/*****************************************************************
		Function  - KeyPress(what,e,max,action)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : key press function.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			what			 var	
2			e				 var	
3			max				 var	
4			action			 var				
***************************************************************/

function KeyPress(what,e,max,action) {
    if (document.layers) {
        if (e.target.value.length >= max)
            eval(action);
    }
    else if (document.all) {
        if (what.value.length > (max-1))
            eval(action);
    }
}

/*****************************************************************
		Function  - KeyUp(val,target,l)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : KEY UP function.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			val				 var	
2			target			 var	
3			l				 var				
***************************************************************/

function KeyUp(val,target,l) {  // syntax : onKeyUp="KeyUp(this.value,'target object name',length)
  var whichCode = (window.Event) ? event.which : event.keyCode;
  var obj2=MM_findObj(target)	
  var len=val.length
  if (((whichCode>=48) && (whichCode <=57)) || ((whichCode>=96) && (whichCode <=105))) {
  if (len==l) obj2.focus()
  }
}

/*****************************************************************
		Function  - MM_findObj(n, d)
	
 Author		  : Arun. S
 Date		  : 2/1/06
 Return value data type: 
 Purpose of function   : Find full Object ref. with use of only object name.


 List of Parameters used
------------------------------------------------------------------
S.No	Parameter Name		Data type
------------------------------------------------------------------
1			n				 var	
2			d				 var				
***************************************************************/

function MM_findObj(n, d) { //v4.0
  var p,i,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=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}






function  testfun()
{
  alert("I am from field validation.js");
 } 


