var	ns = (document.layers) ? 1 : 0;
var	ie = (document.all) ? 1 : 0;


<!-- Changes:  Sandeep V. Tamhankar (stamhankar@hotmail.com) -->

/* 1.1.2: Fixed a bug where trailing . in e-mail address was passing
            (the bug is actually in the weak regexp engine of the browser; I
            simplified the regexps to make it work).
   1.1.1: Removed restriction that countries must be preceded by a domain,
            so abc@host.uk is now legal.  However, there's still the 
            restriction that an address must end in a two or three letter
            word.
     1.1: Rewrote most of the function to conform more closely to RFC 822.
     1.0: Original  */

<!-- Begin
function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	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
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
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
}

return true;
}
//  End -->


function trimLeadingSpaces(elem)
{
while(''+elem.value.charAt(0)==' ')
	elem.value=elem.value.substring(1,elem.value.length);
}

function trimTrailingSpaces(elem)
{
while(''+elem.value.charAt(elem.value.length-1)==' ')
	elem.value=elem.value.substring(0,elem.value.length-1);
}

function trimOuterSpaces(elem)
{
	trimLeadingSpaces(elem)
	trimTrailingSpaces(elem)
}

function trimInnerSpaces(elem)
{
out = "  "; // replace this
add = " "; // with this
temp = "" + elem.value; // temporary holder

while (temp.indexOf(out)>-1) 
{
	pos= temp.indexOf(out);
	temp = "" + (temp.substring(0, pos) + add + temp.substring((pos + out.length), temp.length));
}
elem.value = temp;
}

function trimInnerSpaces2(elem)
{
out = " "; // replace this
add = ""; // with this
temp = "" + elem.value; // temporary holder

while (temp.indexOf(out)>-1) 
{
	pos= temp.indexOf(out);
	temp = "" + (temp.substring(0, pos) + add + temp.substring((pos + out.length), temp.length));
}
elem.value = temp;
}


function convertSpaces(str) {
var out = "", flag = 0;
for (i = 0; i < str.length; i++) {
if (str.charAt(i) != " ") {
out += str.charAt(i);
flag = 0;
}
else {
if(flag == 0) {
out += "+";
flag = 1;
      }
   }
}
return out;
}


function validateChar()
{
var digits="abcdefghijklmnopqrstuvwxyz"
var temp

for (var i=0;i<var_value.length;i++)
{	temp=var_value.substring(i,i+1)
	if(digits.indexOf(temp)==-1)
	{return false;}
}
return true;
}

function validateNumber(var_value)
{
var digits="0123456789"
var temp

for (var i=0;i<var_value.length;i++)
{	temp=var_value.substring(i,i+1)
	if(digits.indexOf(temp)==-1)
	{return false;}
}
return true;
}


/*

function openWindow(href, windowname, height, width, top, left, fullscreen_yn, directories_yn, titlebar_yn, menubar_yn, toolbar_yn, scrollbars_yn, resizable_yn, location_yn, status_yn)
{

	var features = "height=" + height
	features += ",width=" + width
	if(ie)
	{
		features += ",top=" + top
		features += ",left=" + left
	}
	else
	{
		features += ",screenX=" + left
		features += ",screenY=" + left
	}	
	features += ",fullscreen=" + fullscreen_yn
	features += ",directories=" + directories_yn
	features += ",titlebar=" + titlebar_yn
	features += ",menubar=" + menubar_yn
	features += ",toolbar=" + toolbar_yn
	features += ",scrollbars=" + scrollbars_yn
	features += ",resizable=" + resizable_yn
	features += ",location=" + location_yn
	features += ",status=" + status_yn
	
	window.open(href,windowname,features)
}
*/

function round(number,dec_places) {
// rounds number to dec_places decimal places, defaults to 2
dec_places = (!dec_places ? 2 : dec_places);
return Math.round(number*Math.pow(10,dec_places))/Math.pow(10,dec_places);
}


function validateDate(elem)
{
	if(String(elem.value).length > 0)
	{
		//if(parseInt(String(elem.value).length) == 10)
		//{
			if(!(checkdate(elem)))
			{
				return false;
			}
		//}
		//else
		//{
		//	return false;
		//}		
	}
	return true;
}


function checkdate(objName) 
{
	var datefield = objName;
	if (chkdate(objName) == false) 
	{
	return false;
	}
	else 
	{
	return true;
	}
}

function LeapYear(intYear) 
{
	if (intYear % 100 == 0) {
	if (intYear % 400 == 0) { return true; }
	}
	else {
	if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function compareDates(from, to) 
{
	var f_month;
	var t_month;
	var f_day;
	var t_day;
	var f_year;
	var t_year;
	
	strDateArray = String(from).split("/");
	if (strDateArray.length == 3) 
	{
		f_day = strDateArray[0];
		f_month = strDateArray[1];
		f_year = strDateArray[2];
	}
	
	strDateArray = String(to).split("/");
	if (strDateArray.length == 3) 
	{
		t_day = strDateArray[0];
		t_month = strDateArray[1];
		t_year = strDateArray[2];
	}
	
	if(parseInt(parseFloat(t_year)) < parseInt(parseFloat(f_year)))
	{
		return false;
	}
	else
	{
		if(parseInt(parseFloat(t_year)) == parseInt(parseFloat(f_year)))
		{
			if(parseInt(parseFloat(t_month)) < parseInt(parseFloat(f_month)))
			{
				return false;
			}
			else
			{	
				if(parseInt(parseFloat(t_month)) == parseInt(parseFloat(f_month)))
				{
					if(parseInt(parseFloat(t_day)) < parseInt(parseFloat(f_day)))
					{
						return false;	
					}
				}
			}
		}
	}
	return true;
}


function chkdate(objName) {
//var strDatestyle = "US"; //United States date style
var strDatestyle = "EU";  //European date style
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;
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;
//alert('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);
   }
}
if (strYear.length == 2) {
strYear = '20' + strYear;
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
//alert('2');
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)) {
//alert('3');
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
//alert('4');
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
//alert('5');
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
//alert('6');
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
//alert('7');
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
//alert('8');
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
//alert('9');
err = 9;
return false;
}
}
else {
if (intday > 28) {
//alert('10');
err = 10;
return false;
}
}
}
if (strDatestyle == "US") {
//datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
}
else {
//datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
}
return true;
}



