// start tool tip
function TrimString(str)
	{
		var st=new String(str)
		stpos=0;
		strln=st.length;
		while(stpos<strln)
		{
			if(st.substr(stpos,1)!=' ')
			{
				break;
			}
			stpos=stpos+1;
		}
		
		edpos=strln-1;
		while(edpos>=stpos)
		{
			if(st.substr(edpos,1)!=' ')
			{
				break;
			}
			edpos=edpos-1;
		}
		var retst=st.substring(stpos,edpos+1);
		return retst;
	}
	

// count no. of characters in a textfield. 

function CharacterLimit(obj,limit)
{	
	var strTemp=String(obj.value)
	if(strTemp.length>limit)
	{
		return false;
	}
	else
		return true;
}


//following function restrict the user to enter more than Limit characters.

function StopUser(obj,limit) 
{
	
	var strTemp=String(obj.value)
	if(strTemp.length >= limit)
		return false;
}


function CheckDate(obj)
{
	var dateStr = new String(obj.value);
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
	var str
	var matchArray = dateStr.match(datePat); 
	if (matchArray == null) {
		alert(" Please enter the date in MM/DD/YYYY format");
		return false;
	}
	month = matchArray[1]; 
	day = matchArray[3];
	year = matchArray[4];
	
	str=new String(year)
	if (str.length < 4) 
	{
		alert(" Please enter the date in MM/DD/YYYY format");
		return false;
	}
	
	if (year < 1900)
		{
		alert("The year in the date cannot be less than 1900.");
		return false;
		}
	if (month < 1 || month > 12) { 
		alert("Month must be between 1 and 12");
		return false;
	}
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		return false;
		}
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
		alert("February " + year + " doesn't have " + day + " days!");
		return false;
		}
	
	
	}
}


function emailCheck (emailStr) {
var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
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];

for (i=0; i<user.length; i++) 
{
	if (user.charCodeAt(i)>127) 
	{
		alert("The username contains invalid characters.");
		return false;
   	}
}

for (i=0; i<domain.length; i++) 
{
	if (domain.charCodeAt(i)>127) 
	{
		alert("The domain name contains invalid characters.");
	return false;
   	}
}


if (user.match(userPat)==null) 
{
	alert("The username doesn't seem to be valid.");
	return false;
}

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address is invalid!");
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) {
alert("The domain name does not seem to be valid.");
return false;
   }
}


if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}


if (len<2) {
alert("This address is missing a hostname!");
return false;
}


return true;
}




function ValidateAlphaNumeric(Expression)
{
	var objRegExp = /^[a-zA-Z0-9\s]+$/;
	var flag = Expression.match(objRegExp);
	
	if (flag == null)
		return false;
	else 
		return true;
}


// Fucntion for checking the Dates 
//**************************************************************************
function dateVerify(datevalue)
{
	var strDate ;
	var month,day,year ;
	var datearray ;
	strDate = datevalue ;
	if(strDate.search("/") != -1 )
		datearray = strDate.split("/") ;
	else if(strDate.search("-") != -1 )
		datearray = strDate.split("-") ;
	else
		return(false) ;
	if(( datearray.length < 3 ) || ( datearray.length > 3 ) )
		return(false);
	
	m = datearray[0] ;
        d = datearray[1] ;
        y = datearray[2] ;
	if(isNaN(m))
		return(false) ;
	month = parseInt(m,10) ;
	if(isNaN(d))
		return(false) ;
	day = parseInt(d,10) ;
	if(isNaN(y))
		return(false) ;
	year = parseInt(y,10) ;
	if((day >= 1 && day <= 31) && ( month == 1 ) ||
		(day >= 1 && day <= 31) && ( month == 3 ) ||
		(day >= 1 && day <= 31) && ( month == 5 ) ||
		(day >= 1 && day <= 31) && ( month == 7 ) ||
		(day >= 1 && day <= 31) && ( month == 8 ) ||
		(day >= 1 && day <= 31) && ( month == 10 ) ||
		(day >= 1 && day <= 31) && ( month == 12 ))
	{
		if( year >= 1900 && year <= 9999 )
		{
			return(true) ;
		}
		else
			return(false) ;
	}
	else if((day >= 1 && day <= 30) && ( month == 4 ) ||
		(day >= 1 && day <= 30) && ( month == 6 ) ||
		(day >= 1 && day <= 30) && ( month == 9 ) ||
		(day >= 1 && day <= 30) && ( month == 11 ))
	{
		if( year >= 1900 && year <= 9999 )
		{
			return(true) ;
		}
		else
			return(false) ;	
	}
	else if((month == 2) && (year%4 == 0) && (day >= 1 && day <= 29))
	{
		if( year >= 1900 && year <= 9999 )
		{
			return(true) ;
		}
		else
			return(false) ;
	}
	else if((month == 2) && (day >= 1 && day <= 28))
	{
		if( year >= 1900 && year <= 9999 )
		{
			return(true) ;
		}
		else
			return(false) ;
		}
	else
		return(false) ;
}

//***************************************************

// Function for checking the leap year
//**************************************************************	
function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

//************************************************************************

function CheckTime(obj)
{	
	var dateStr = new String(obj.value);
	var timePat = /^(\d{1,2})(\:)(\d{2})$/;
	var matchArray = dateStr.match(timePat); 
	if (matchArray == null) {
		alert("Invalid time format. Please specify it in 00:00 format only");
		return false;
	}
	hour = matchArray[1]; 
	min = matchArray[3];
	if (hour <= 0 || hour > 12) { 
		alert("Hours must be between 1 and 12");
		return false;
	}
	if (min < 0 || min > 59) {
	alert("Minutes must be between 0 and 59.");
	return false;
	}
}		

function CheckTimeAMPM(obj)
{	
	var dateStr = new String(obj.value);
	var timePat = /^(\d{1,2})(\:)(\d{2})(\:)(\d{2})(\s)([p|P|a|A])([m|M])$/;
	var matchArray = dateStr.match(timePat); 
	if (matchArray == null) {
		alert("Invalid time format. Please specify it in 00:00:00 AM/PM format only");
		return false;
	}
	hour = matchArray[1]; 
	min = matchArray[3];
	if (hour < 0 || hour > 12) { 
		alert("Hours must be between 0 and 12");
		return false;
	}
	if (min < 0 || min > 59) {
	alert("Minutes must be between 0 and 59.");
	return false;
	}
}		

