/* SUNY Contact Information Form*/
/* Created by Carrie Pause */

function validateDateEntry(validDate, seperator, fieldTitle) {
  //var validDate = this;
  var isDateValid = true;                           // Assume date is valid
 	validDate = validDate.strip();                // Trim leading/trailing blanks from date field value
  var mm = "";                                      // Month   
  var dd = "";                                      // Day
  var yyyy = "";                                    // Year
  var sep1 = 0;                                     // Pointer to position of 1st digit seperator in date string ("/" or "-")
  var sep2 = 0;                                     // Pointer to position of 2nd digit seperator in date string ("/" or "-")
	var country = 'US';
	
  if (seperator == null) {seperator = '/'}
  if (fieldTitle == null) {fieldTitle = 'Please enter a valid date in the format mm'+seperator+'dd'+seperator+'yyyy'}
  

  sep1 = validDate.indexOf(seperator);                    // Find position of 1st slash
  sep2 = validDate.indexOf(seperator, sep1+1);          //  find position of 2nd slash
 
  if ( ( sep1 >= 0 ) && (sep2 >= 0 ) ) {            // If both seperators found
    mm = validDate.substring(0, sep1)    
    dd = validDate.substring(sep1+1, sep2)
    yyyy = validDate.substring(sep2+1, validDate.length)
  }
  else {
    isDateValid = false;
    alert(fieldTitle);
	return isDateValid;
  }

  var details = "";     // Initial details msg to be returned to user on error 
  var leastYear = 1900;                             // Year must be >= this
  var greatestYear = 2100;                          // Year must be <= this
  var tempDate = new Date();

  if ( validDate.length > 0 ) {                     
	if ( (yyyy.isNum() == false) || (mm.isNum() == false) || (dd.isNum() == false))
      isDateValid = false
    else if (yyyy.length < 4) {
	  isDateValid = false;
	  details = "Year must be a 4-digit year";
	}
	else if ( (yyyy < leastYear) || (yyyy > greatestYear) ) {      
      isDateValid = false;
      details = "Year must be between " + leastYear + " and " + greatestYear;
    }
    else if ( (mm < 1 ) || (mm > 12 ) ) {                          
      isDateValid = false;
      details = "Invalid month entered";
    }
    else if ( (dd < 1 )  ) {                                      
      isDateValid = false;
      details = "Invalid day entered";
    }
    else if ( dd > 28 ) {          
      var daysInMonth = 31;                                        // Assume 31 days in month
      if ( mm == 4 || mm == 6 || mm == 9 || mm == 11 )             // If a 30-day month
        daysInMonth = 30                                           //   change days-in-month to 30
      else if ( mm == 2 )                                          // If month is February
        daysInMonth = ( (yyyy/4) == parseInt(yyyy/4) ? 29 : 28 );  // If leap year, days = 29, else days = 28
      if ( dd > daysInMonth ) {                                    // If too many days specified...
        isDateValid = false;             
        details = "There are only " + daysInMonth + " days in the specified month";
      } 
    }
  }
  if ((isDateValid == false) && (fieldTitle != "NONE")) 
    alert(fieldTitle + "\n" + details);

  return isDateValid;
}
 
function validateEmail(emailStr)	{
	/*<!-- This script and many more are available free online at -->
	/*<!-- The JavaScript Source!! http://javascript.internet.com -->
	/* 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 portion of the e-mail address 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;
}
  