
/*Modification Log 
--------------------------------------------------------------------------------------------
Date		Done By		Change Done
--------------------------------------------------------------------------------------------
03/OCT/2006	Sekar		isPub - validation change (to accept '.' also)
05/MAY/2006	Sekar		isUserID - validation added
06/08/2004	Sekar		Issue Fixed in Round of Function
22/07/2003	Sekar		Functions added for Auto Search (List box)
24/08/2002	Sekar		isURL - validation added
23/04/2002	Sekar		isPub - validation change (underscore also accepts)
29/05/2001	Baskar		Modification in store_current & Compare_date function
29/05/2001	Baskar		Add one more function for checking ZIP code
--------------------------------------------------------------------------------------------
*/


// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.
var vDateType = 3; // Global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm  (Unable to do date check at this time)
//                3 = dd/mm/yyyy
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.
var err = 0; // Set the error code to a default of zero
if(navigator.appName == "Netscape") {
if (navigator.appVersion < "5") {
isNav4 = true;
isNav5 = false;
}
else
if (navigator.appVersion > "4") {
isNav4 = false;
isNav5 = true;
   }
}
else {
isIE4 = true;
}

//To validate date being entered manually....

function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {
vDateType = dateType;
// vDateName = object name
// vDateValue = value in the field being checked
// e = event
// dateCheck 
// True  = Verify that the vDateValue is a valid date
// False = Format values being entered into vDateValue only
// vDateType
// 1 = mm/dd/yyyy
// 2 = yyyy/mm/dd
// 3 = dd/mm/yyyy
//Enter a tilde sign for the first number and you can check the variable information.
if (vDateValue == "~") {
alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
vDateName.value = "";
vDateName.focus();
return true;
}
var whichCode = (window.Event) ? e.which : e.keyCode;
// Check to see if a seperator is already present.
// bypass the date if a seperator is present and the length greater than 8
if (vDateValue.length > 8 && isNav4) {
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}
//Eliminate all the ASCII codes that are not valid
var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
if (alphaCheck.indexOf(vDateValue) >= 1) {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else {
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
   }
}
if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
return false;
else {
//Create numeric string values for 0123456789/
//The codes provided include both keyboard and keypad values
var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strCheck.indexOf(whichCode) != -1) {
if (isNav4) {
if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
if (vDateValue.length == 6 && dateCheck) {
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
//Turn a two digit year into a 4 digit year
if (mYear.length == 2 && vYearType == 4) {
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30; 
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
}
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else {
// Reformat the date for validation and set date type to a 1
if (vDateValue.length >= 8  && dateCheck) {
if (vDateType == 1) // mmddyyyy
{
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
}
if (vDateType == 2) // yyyymmdd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(4,2);
var mDay = vDateName.value.substr(6,2);
vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
}
if (vDateType == 3) // ddmmyyyy
{
var mMonth = vDateName.value.substr(2,2);
var mDay = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
//Create a temporary variable for storing the DateType and change
//the DateType to a 1 for validation.
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("Invalid Date\nPlease Re-Enter");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
         }
      }
   }
}
else {
// Non isNav Check
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
return true;
}
// Reformat date to format that can be validated. mm/dd/yyyy
if (vDateValue.length >= 8 && dateCheck) {
// Additional date formats can be entered here and parsed out to
// a valid date format that the validation routine will recognize.
if (vDateType == 1) // mm/dd/yyyy
{
var mMonth = vDateName.value.substr(0,2);
var mDay = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vDateType == 2) // yyyy/mm/dd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(5,2);
var mDay = vDateName.value.substr(8,2);
}
if (vDateType == 3) // dd/mm/yyyy
{
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vYearLength == 4) {
if (mYear.length < 4) {
alert("Invalid Date\nPlease Re-Enter");
vDateName.value = "";
vDateName.focus();
return true;
   }
}
// Create temp. variable for storing the current vDateType
var vDateTypeTemp = vDateType;
// Change vDateType to a 1 for standard date format for validation
// Type will be changed back when validation is completed.
vDateType = 1;
// Store reformatted date to new variable for validation.
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (mYear.length == 2 && vYearType == 4 && dateCheck) {
//Turn a two digit year into a 4 digit year
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30; 
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
// Store the new value back to the field.  This function will
// not work with date type of 2 since the year is entered first.
if (vDateTypeTemp == 1) // mm/dd/yyyy
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 3) // dd/mm/yyyy
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
} 
if (!dateValid(vDateValueCheck)) {
alert("Invalid Date\nPlease Re-Enter");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
return true;
}
vDateType = vDateTypeTemp;
return true;
}
else {
	if (vDateType == 1) {

		if (vDateValue.length == 2) {
			vDateName.value = vDateValue+strSeperator;
		}
		if (vDateValue.length == 5) {
		vDateName.value = vDateValue+strSeperator;
   		}
	}
	
	if (vDateType == 2) {
		if (vDateValue.length == 4) {
			vDateName.value = vDateValue+strSeperator;
		}
		if (vDateValue.length == 7) {
			vDateName.value = vDateValue+strSeperator;
   		}	
	} 
	if (vDateType == 3) {
		if (vDateValue.length == 2) {
			vDateName.value = vDateValue+strSeperator;
		}
		if (vDateValue.length == 5) {
			vDateName.value = vDateValue+strSeperator;
   		}
	}
	return true;
   }
}
if (vDateValue.length == 10&& dateCheck) {
if (!dateValid(vDateName)) {
// Un-comment the next line of code for debugging the dateValid() function error messages
//alert(err);  
alert("Invalid Date\nPlease Re-Enter");
vDateName.focus();
vDateName.select();
   }
}
return false;
}
else {
// If the value is not in the string return the string minus the last
// key entered.
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else
{
//vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));

if (vDateName.value.substr(1,2) == "/" ) {
		vDateName.value = "0" + vDateValue ;
}
else
if (vDateName.value.substr(4,5) == "/" ) {
		vDateName.value =  vDateName.value.substr(0,3) + "0" + vDateName.value.substr(3,4)
}
else {
	vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
}

return false;
         }
      }
   }
}
function dateValid(objName) {
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
// var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
//strDate = datefield.value;
strDate = objName;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
   }
}
//Adjustment for short years entered
if (strYear.length == 2) {
strYear = '20' + strYear;
}
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
   }
}
else {
if (intday > 28) {
err = 10;
return false;
      }
   }
}

if(strYear<1999)
{
	return false;
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}



//To validate URL
function isURL(argvalue) {

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("http://") == -1)
    return false;
  else if (argvalue == "http://")
    return false;
  else if (argvalue.indexOf("http://") > 0)
    return false;

  argvalue = argvalue.substring(7, argvalue.length);
  if (argvalue.indexOf(".") == -1)
    return false;
  else if (argvalue.indexOf(".") == 0)
    return false;
  else if (argvalue.charAt(argvalue.length - 1) == ".")
    return false;

  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  return true;

}


var error_str="" ;
var return_tag=true;
var val = new Array();  // Decalre a array for storing current field value

//To store current form values to give alert msg ( save / reset / back / link change) 
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;				
	}
}

//To store compare current form  values with old form values to give alert msg ( save / reset / back)
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
}



//To check any data available in current form values to give alert msg ( reset / back / link change)
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
}

//To limit decimal points with 2 digits
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)
}

// To round the number with 2 decimal accuracy
function round(number) {
	number = number + ""
	if (number.indexOf(".") < 0) {
		number = number + ".00"
		return number
	}
	var new_num
	var mdecimals
	var new_dec
	mdecimals = number.substr(number.indexOf(".")+1)
	new_num = number.substring(0,number.indexOf("."))
	if (mdecimals.length > 2 && parseInt(mdecimals.substr(2,1)) > 4) {
		new_dec = (parseFloat(number.substr(number.indexOf("."),3)) + 0.01)
		new_num = (parseInt(new_num) + new_dec) + ""
	} else {
		new_num = new_num + "." + number.substr(number.indexOf(".")+1,2)	
	}

	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
}

// To round the number with decimal accuracy
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);
}

// Currency Format ($)
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);
}

// Format  Number ()
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);
}


// ZIP code Validation

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) { 
	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=="."))) {
			error_str=error_str+"* "+fieldname+"  is not an Alphabets\n";
			return_tag=false
			return
	    }
	}
}

function isempty(fieldvalue,fieldname) {
    if ((fieldvalue == "") || (fieldvalue == null) || (fieldvalue ==" ")) {
        error_str=error_str+"* " +fieldname+" is Empty\n";
        return_tag=false
    }
}

function isInteger(fieldvalue,fieldname) { 
	for(var i=0; i<fieldvalue.length;i++) {
		var c = fieldvalue.charAt(i);
		if (!(c >= "0" && c<="9")) {
			error_str=error_str+"* "+fieldname+"  is not an integer\n";
			return_tag=false
			return
	    }
	}
}
// To check for Number with Decimal points.

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) { 
	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
	    }
	}
}

//to validate publication # 
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 == "_" ) || (c == " " ) || (c == ":" ) || (c == "." ))) {
			error_str=error_str+"* "+fieldname+"  is not a Valid\n";
			return_tag=false
			return
	    }
	}
}

//to validate publication # 
function isUserID(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 Valid (Allowed: Alphanumeric, Hyphen & Underscore)\n";
			return_tag=false
			return
	    }
	}
}

// To validate merchant id 
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) { 
	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) {
    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) {
	if (fieldvalue.length < length) {
		return_tag=false;
		error_str=error_str+"* " + fieldname + " is not valid\n";
	}
}

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) {
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) {
	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
}

//This is used for giving alert msg for menu link & back button to avoid data lose accidently.
function alert_msg(alert_msg, redirect_page) {
	if (confirm("Unsaved " + alert_msg + ", if any, will be lost.")) {
		if (redirect_page != "") {
			location=redirect_page
		}
		return true
	}
	return false
}


//Email Check

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;
}


//key press function - sent by sriram
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);
    }
}


//KEY UP function - Written by Baskar

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()
  }
}


// Find full Object ref. with use of only object name

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;
}


//Auto Search - List  -- starts here
//Hidden element and List box object - to be passed

function Auto_Search_Clear(mobj_hidden) {
	mobj_hidden.value = "";
}

function Auto_Search_KeyDown(mobj_list, mobj_hidden) {
	// For backspace Capturing -- Sri
	var KeyDownValue = mobj_hidden.value
	if (window.event.keyCode == 8) {
		KeyDownValue = KeyDownValue.substring(0,KeyDownValue.length - 1);
		mobj_hidden.value = KeyDownValue;
	
		var re = new RegExp("^" + mobj_hidden.value, "i"); // "i" -> ignoreCase
		for(var i=0; i < mobj_list.options.length; i++)
		{
			if(re.test(mobj_list.options[i].text))
			{
				mobj_list.options[i].selected=true;
				window.event.returnValue = false;
				break;
			}
		}

	}
	if (window.event.keyCode == 13){
		mobj_hidden.value = "";
	}
}

function Auto_Search_KeyPress(mobj_list, mobj_hidden) {
	var key = window.event.keyCode;
	var char = String.fromCharCode(key);
	var KeyValue = mobj_hidden.value
	
	if  (window.event.keyCode == 46){
		KeyValue = KeyValue.substring(0,KeyValue.length - 1);
		mobj_hidden.value = KeyValue
	}
	else
	{
		mobj_hidden.value = KeyValue + char;
		
	}
	
	var re = new RegExp("^" + mobj_hidden.value, "i"); // "i" -> ignoreCase
	for(var i=0; i<mobj_list.options.length; i++)
	{
		if(re.test(mobj_list.options[i].text))
		{
			mobj_list.options[i].selected=true;
			window.event.returnValue = false;
			break;
		}
	}
	
	if (window.event.keyCode == 13){
		mobj_hidden.value = "";
	}
}

// Removes leading whitespaces
function LTrim( value ) {	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");	
}

// Removes ending whitespaces
function RTrim( value ) {	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");	
}

// Removes leading and ending whitespaces
function trim( value ) {	
	return LTrim(RTrim(value));	
}

//ends here

/*************************** below code is added by satish for getting customized dialog box  *****************************/
/*
		var response = null 
		function prompt2(promptpicture, prompttitle, message, sendto,top,left) { 
				promptbox = document.createElement('div'); 
				promptbox.setAttribute ('id' , 'prompt') 
					document.getElementsByTagName('body')[0].appendChild(promptbox) 
					promptbox = eval("document.getElementById('prompt').style") 
					promptbox.position = 'absolute' 
					promptbox.top = top - 25//830
					promptbox.left = left - 5  //380
					promptbox.width = 300
					promptbox.border = 'outset 1 #bbbbbb' 
					document.getElementById('prompt').innerHTML = "<table cellspacing='0' cellpadding='0' border='0' width='100%'><tr valign='middle'><td width='12' height='22' style='text-indent:2;' class='titlebar'><img src='" + promptpicture + "' height='18' width='18'></td><td class='titlebar'>" + prompttitle + "</td></tr></table>" 
					document.getElementById('prompt').innerHTML = document.getElementById('prompt').innerHTML + "<table cellspacing='0' cellpadding='0' border='0' width='100%' class='promptbox'><tr><td colspan='2'>" + message + "</td></tr><tr><td width='65%'><input type='text' id='promptbox' maxlength='15' onblur='this.focus()' class='promptbox'></td><td align='left' width='35%'><input type='button' class='prompt' value='OK' onMouseOver='this.style.border=\"1 outset #dddddd\"' onMouseOut='this.style.border=\"1 solid transparent\"' onClick='" + sendto + "(document.getElementById(\"promptbox\").value); document.getElementsByTagName(\"body\")[0].removeChild(document.getElementById(\"prompt\"))'> <input type='button' class='prompt' value='Cancel' onMouseOver='this.style.border=\"1 outset transparent\"' onMouseOut='this.style.border=\"1 solid transparent\"' onClick='" + sendto + "(\"\"); document.getElementsByTagName(\"body\")[0].removeChild(document.getElementById(\"prompt\"))'></td></tr></table>" 
					document.getElementById("promptbox").focus() 
               


		} 
		function myfunction(value,status) { 
         
			if(value.length<=0)
			{
					alert("Rebate Request will be put on hold since you have not entered Tax ID") 
					theForm.request_status.value = "20"  
					document.getElementById('on_hold_reason').style.display=""
	       			return false;
			}
			else
			{
          	    document.getElementById('hdnTaxID').value= value;
				document.getElementById('approval_note').style.display=""
            }
		} 
 */
/***************end of code***********/