function checkEmail(frmName, itemName, msg)
{
	str=document.forms[frmName].elements[itemName].value;
	var supported = 0;
	var valid     = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
		valid=(str.indexOf(".") > 2) && (str.indexOf("@") > 0)
	else{
		var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)|(.*\")|(.*\\[|\\]|\\)|\\(|\\{|\\}|\\>|\\<|\\,|\\:|\\;|\\')|(.*\x7F)|(.*[\x01-\x20])");
		var r2 = new RegExp("^.+\\@(\\[?)(([a-zA-Z0-9\\-\\.])|([^a-zA-Z0-9]))+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

		valid= (!r1.test(str) && r2.test(str));
		}

	if (!valid) {
		alert("Invalid "+msg);
		document.forms[frmName].elements[itemName].focus();
		return false;
		}
	return true;
}

function checkInt(frmName, itemName, msg)
{
	if (document.forms[frmName].elements[itemName].value.length){
		var val;
		val=parseInt(document.forms[frmName].elements[itemName].value.replace(/,/g, ""));
		if (! isNaN(val)){
			document.forms[frmName].elements[itemName].value=val;
		}
		else{
			alert('Invalid '+msg);
			document.forms[frmName].elements[itemName].focus();
			document.forms[frmName].elements[itemName].select();
			return false;
		}
	}
	return true;
}
function checkNotEmpty(frmName, itemName, msg)
{
	if (document.forms[frmName].elements[itemName].value.length == 0){
		alert(msg);
		document.forms[frmName].elements[itemName].focus();
		document.forms[frmName].elements[itemName].select();
		return false;
	}
	return true;
}
function checkEmailsList (form_name, field_name, msg){
	var f = document.forms[form_name].elements[field_name];
	var v = f.value;
	var delims = new Array (',', ';', ' ');
	
	for (var i in delims)
	next_delim:
	{
		//alert('delim='+delims[i]);
		var emails = v.split(delims[i]);
		var correct_list = '';
		for (var j in emails){
			var email = trim(emails[j]);
			//alert('/'+email+'/');
			//alert(checkEmailString(email));
			if (!checkEmailString(email))
				break next_delim;
			if (correct_list.length > 0) correct_list+=', ';
			correct_list += email;
		}
		f.value=trim(correct_list);
		return true;
	}
	alert("Invalid "+msg+'\n'+v+'.');
	f.focus();
	return false;
}

function checkEmailString(email_string) {
	str=email_string;
	var supported = 0;
	var valid     = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
		valid=(str.indexOf(".") > 2) && (str.indexOf("@") > 0)
	else {
		var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)|(.*\")|(.*\\[|\\]|\\)|\\(|\\{|\\}|\\>|\\<|\\,|\\:|\\;|\\')|(.*\x7F)|(.*[\x01-\x20])");
		var r2 = new RegExp("^.+\\@(\\[?)(([a-zA-Z0-9\\-\\.])|([^a-zA-Z0-9]))+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

		valid= (!r1.test(str) && r2.test(str));
	}
	return valid;
}

function trim (s){
	s = s.replace(/^\s+/,'');
	s = s.replace(/\s+$/,'');
	return s;
}

function checkDate(frmName, itemName, msg, month, day, year)
{
	if (document.forms[frmName].elements[itemName].value.length != 0)
	{
		var d = new Date (year, month-1, day);
		if (	d.getFullYear() != year
			||	(d.getMonth()+1) != month
			||	d.getDate() != day
			||	year < 1753			//SQL Server datetime limits
			||	year > 9999)
		{
			alert(msg);
			document.forms[frmName].elements[itemName].focus();
			return false;
		}
	}
	return true;
}

function checkDateEx(frmName, itemName, msg) {
	if (document.forms[frmName].elements[itemName]) {
		if (document.forms[frmName].elements[itemName].value) {
   		   var month = document.forms[frmName].elements[itemName].value.substr(0,2);
  		   var day = document.forms[frmName].elements[itemName].value.substr(3,2);
		   var year = document.forms[frmName].elements[itemName].value.substr(6,4);
	   	   if (!checkDate(frmName, itemName, msg, month, day, year)) return false;
		}
	   return true;
	}
	return true;
}

function checkDateExSimple(frmName, itemName, msg) {
	if (document.forms[frmName].elements[itemName]) {
   		   first_slash_pos = document.forms[frmName].elements[itemName].value.indexOf('/');
   		   last_slash_pos = document.forms[frmName].elements[itemName].value.lastIndexOf('/');
   		   if (first_slash_pos==-1&&last_slash_pos==-1) {
	   		   first_slash_pos = document.forms[frmName].elements[itemName].value.indexOf('-');
   			   last_slash_pos = document.forms[frmName].elements[itemName].value.lastIndexOf('-');
   		   }
   		   value_length = document.forms[frmName].elements[itemName].value.length;
   		   if (last_slash_pos > first_slash_pos) {
	   		   var month = document.forms[frmName].elements[itemName].value.substring(0,first_slash_pos);
  			   var day = document.forms[frmName].elements[itemName].value.substring(first_slash_pos+1,last_slash_pos);
			   var year = document.forms[frmName].elements[itemName].value.substring(last_slash_pos+1,value_length);
			   if (year < 1000) year = 2000+parseInt(year);
			   if (!checkDate(frmName, itemName, msg, month, day, year)) return false;
   		   } else {
   		   		alert(msg);
   		   		document.forms[frmName].elements[itemName].focus();
   		   		return false;
   		   }
	   return true;
	}
	return true;
}

function validateDateEx(date_element, month, day, year) {
	curr_month = month-1;
	curr_year = (year < 1000)?parseInt(year+2000):year;
	if (curr_month < 0 || curr_month > 12) return false;
	if (day < 1 || day > 31) return false;

	end_day = 31;
	check_date = new Date(curr_year,curr_month,end_day);
	while (curr_month != check_date.getMonth()) {
		check_date = new Date(curr_year,curr_month,--end_day);	
	}
	curr_day = (day < end_day)?day:end_day;
	if (curr_day!=day) {
		date_element.value = (parseInt(curr_month++,10)<10?'0':'')+curr_month+'/'+curr_day+'/'+curr_year;
	}
	return true;
}

function checkDateWithValidate(itemName,msg) {
   		date_obj = document.getElementById(itemName);
   		re = /(\d+)/g; 
		month = 0;
		day = 0;
		year = 0;
		i = 0;
   		while (re.lastIndex < date_obj.value.length) {   			
   			myArray = re.exec(date_obj.value);
			if (myArray) {
				if (i==0) month = parseInt(myArray[1],10);
				if (i==1) day = parseInt(myArray[1],10);
				if (i==2) year = parseInt(myArray[1],10);	
			} else {
				i = 3;
			}
			if (i > 2) break;	
	  		i++;
   		}
   		re.lastIndex = 0;
   		re = null;
   		
   		if (month==0||day==0||year==0||!validateDateEx(date_obj, month, day, year)) {
   			alert(msg);
   			date_obj.focus();
   			return false;
   		}
   		date_obj = document.getElementById(itemName);
   		if (!isDate(date_obj.value,'M/d/y')&&!isDate(date_obj.value,'M-d-y')) {
   			alert(msg);
   			date_obj.focus();
   			return false;   		
   		}
		return true;
	}
	

