/* This is Javascript Functions File. These Functions are used for the various form validations.*/

function IsDate(enetereddate)
{
	
	var ArrEnteredDate
	var DEnteredDate
	
	ArrEnteredDate=enetereddate.split("/");
	//if (enetereddate.indexOf("-")!=-1)
		//ArrEnteredDate=enetereddate.split("-")
		
		
	if (ArrEnteredDate.length!=3)
	  return false
	
	if (ArrEnteredDate[2]<1753 || ArrEnteredDate[2]>9999) 
	  return false

	DEnteredDate =new Date(ArrEnteredDate[2],ArrEnteredDate[0]-1,ArrEnteredDate[1])


	if  ((ArrEnteredDate[1]!=DEnteredDate.getDate()) 
	||	(ArrEnteredDate[0]-1!=DEnteredDate.getMonth())
	||	(ArrEnteredDate[2]!=DEnteredDate.getFullYear()))	
		return false
	else
		return DEnteredDate
}	

function CompareDate(date1,date2)
{		
	if (IsDate(date1)<IsDate(date2))
	return 0
		else if (IsDate(date1)>IsDate(date2))
	return 1
		else
	return 2
}
	
function Trim(Strvalue)
{
	while(''+Strvalue.charAt(0)==' ')
	Strvalue=Strvalue.substring(1,Strvalue.length)
	
	while(''+Strvalue.charAt(Strvalue.length-1)==' ')
	Strvalue=Strvalue.substring(0,Strvalue.length-1)
	
	return Strvalue
}
function IsInteger(Strvalue)
{
	var Ncount
	var Sdigit
	var Sdigits = "0123456789"
	for (Ncount = 0; Ncount < Strvalue.length; Ncount++)
		{
			Sdigit=Strvalue.substring(Ncount, Ncount+1)
			if (Sdigits.indexOf(Sdigit) == -1)			
			 return false			
		}
	return true;	
}



function IsFloat(Strvalue)
{
	var Ncount
	var Sdigit
	var Ndot = 0
	var Sdigits = "0123456789."
	for (Ncount = 0; Ncount < Strvalue.length; Ncount++)
		{   
			Sdigit=Strvalue.substring(Ncount, Ncount+1)
			if (Sdigit==".")
				Ndot++
			if (Ndot>1)
				return false
			if (Sdigits.indexOf(Sdigit) == -1)			
			 return false
			
		}
	return true;	
}

// check for non-input on demanded fields
function IsEmpty(FormElement,VisualName){	
		if (Trim(FormElement.value)==''){
			alert('Please enter '+VisualName +'.');
			FormElement.focus();
			FormElement.select();
			return false;
		}

		else{
		return true;
		}
}


/*
// check for numeric input only
function IsNumeric(FormElement,VisualName){
if (FormElement.value != "") {
   for ( var i = 0; i < FormElement.length; i++) {
		var eachItem = FormElement.substring(i. i + 1)
			if (isNaN(eachItem)) {
				alert("Please enter a numeric value for "+VisualName +".")
				FormElement.focus();
				FormElement.select();
				return false;
				}
			}
	}
	else{
 return true;
 }
}

*/

	
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
}

// If we've gotten this far, everything's valid!
return true;
}

 function valbutton(control, name) {
// place any other field validations that you require here
// validate myradiobuttons
myOption = -1;
 for (i=0; i<control.length; i++)
 {
	if (control[i].checked) 
	{
	   myOption = i;
	}
  }
	if (myOption == -1) 
	{
		alert("You must select " + name);
		return false;
	}
	else
	{
	  return true;
	}

}


 
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }

function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
             Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d;
}
function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
             Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d + 1;
}

  function ChangeColor(strObject)
  {
    eval("document." + strObject +".style.backgroundColor ='white'");
  }
  function HighLight(strObject)
  {
    eval("document." + strObject +".style.backgroundColor ='red'");
  }

