/*
   Script:                 formValidate.js

   Source:                 http://www.shastrynet.com/

   Author:                 Subramanya Shastry Y V H
						   shastry@email.com

   Description:            Generic form validation routine.

   Copyright:              This script can be freely used with or without modifications.
  
                           The author cannot be held responsible for any possible mistakes
                           in the coding. It is the responsibility of the user to make
                           sure that the code is working fine and is bug-less.
  
                           This Script cannot be distributed without prior permission from
                           the author.
*/

//------------------------------------------------------------------------------------
// function: isWhiteSpace
//           Function to check whether the given argument consists of charactes other
//           than a space and \t
//------------------------------------------------------------------------------------
function isWhiteSpace(argWhiteSpace) {
	argWs = argWhiteSpace.toString()
	
	for (var intI=0; intI < argWs.length; intI++)
		if (argWs.charAt(intI) != ' ' && argWs.charAt(intI) != '\t')
			return false
	
	return true
}

//------------------------------------------------------------------------------------
// function: isLeapYear
//           Function to tell, whether the given year is leap year or not
//------------------------------------------------------------------------------------
function isLeapYear(argYear) {
	return ((argYear % 4 == 0) && (argYear % 100 != 0)) || (argYear % 400 == 0) 
}

//------------------------------------------------------------------------------------
// function: daysInMonth
//           Function to return the maximum number of days in a given month of a
//           given year
//------------------------------------------------------------------------------------
function daysInMonth(argMonth, argYear) {
	switch (Number(argMonth)) {
		case 1:		// Jan
		case 3:		// Mar
		case 5:		// May
		case 7:		// Jul
		case 8:		// Aug
		case 10:		// Oct
		case 12:		// Dec
			return 31;
			break;
		
		case 4:		// Apr
		case 6:		// Jun
		case 9:		// Sep
		case 11:		// Nov
			return 30;
			break;
		
		case 2:		// Feb
			if (isLeapYear(argYear))
				return 29
			else
				return 28
			break;
		
		default:
			return 0;
	}
}

//------------------------------------------------------------------------------------
// function: getDateSeparator
//           Function to return the date separator
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getDateSeparator(argDate) {
	// Are there invalid separators?
	if ((argDate.indexOf('-') > 0) && (argDate.indexOf('/') > 0))
		return ' '

	if (argDate.indexOf('-') > 0)
		return '-'
	else
		if (argDate.indexOf('/') > 0)
			return '/'
		else
			return ' '
}

//------------------------------------------------------------------------------------
// function: getYear
//           Function to return the year part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getYear(argDate) {
	var dateSep = getDateSeparator(argDate)
	
	if (dateSep == ' ')
		return 0

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[2]
	else
		return 0
}

//------------------------------------------------------------------------------------
// function: getMonth
//           Function to return the month part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getMonth(argDate) {
	var dateSep = getDateSeparator(argDate)
	
	if (dateSep == ' ')
		return 0

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[0]
	else
		return 0
}

//------------------------------------------------------------------------------------
// function: getDay
//           Function to return the day part of the given date.
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function getDay(argDate) {
	var dateSep = getDateSeparator(argDate)
	
	if (dateSep == ' ')
		return 0

	if(argDate.split(dateSep).length == 3)
		return argDate.split(dateSep)[1]
	else
		return 0
}

//------------------------------------------------------------------------------------
// function: isProperDay
//           Function to tell whether the given day of the given month is valid
//------------------------------------------------------------------------------------
function isProperDay(argDay, argMonth, argYear) {
	if ((isWhiteSpace(argDay)) || (argDay == 0))
		return false

	if ((argDay > 0) && (argDay < daysInMonth(argMonth, argYear) + 1))
		return true
	else 
		return false
}

//------------------------------------------------------------------------------------
// function: isProperMonth
//           Function to tell whether the given month is a valid one
//------------------------------------------------------------------------------------
function isProperMonth(argMonth) {
	if ((isWhiteSpace(argMonth)) || (argMonth == 0))
		return false
	
	if ((argMonth > 0) && (argMonth < 13))
		return true
	else
		return false
}

//------------------------------------------------------------------------------------
// function: isProperYear
//           Function to tell whether the given Year is a valid one
//------------------------------------------------------------------------------------
function isProperYear(argYear) {
	if ((isWhiteSpace(argYear)) || (argYear.toString().length > 4) || (argYear.toString().length == 3))
		return false
	
	switch (argYear.toString().length) {
		case 1:
			if (argYear >=0 && argYear < 10)
				return true
			else
				return false
			
		case 2:
			if (argYear >=0 && argYear < 100)
				return true
			else
				return false
			
		case 4:
			if (((argYear >=1900) || (argYear >=2000)) && ((argYear < 3000) || (argYear < 2000)))
				return true
			else
				return false
		
		default:
			return false
	}
}

//------------------------------------------------------------------------------------
// function: isProperDate
//           Function to tell whether the given date is valid or not
//           This function expects date in the format of mm/dd/yyyy or mm/dd/yy
//           or mm-dd-yyyy or mm-dd-yy
//------------------------------------------------------------------------------------
function isProperDate(argDate) {
	var tmpDay = getDay(argDate)
	var tmpMon = getMonth(argDate)
	var tmpYear = getYear(argDate)

	return isProperDay(tmpDay, tmpMon, tmpYear) && isProperMonth(tmpMon) && isProperYear(tmpYear)
}

//------------------------------------------------------------------------------------
// function: charOccurences
//           Function to return the number of times a given character is occuring in
//           the given string
//------------------------------------------------------------------------------------
function charOccurences(argString, argChar) {
	var intCt = 0

	for(var intI=0; intI < argString.length; intI++)
		if (argString.charAt(intI) == argChar)
			intCt++
	
	return intCt
}

//------------------------------------------------------------------------------------
// function: isProperEmail
//           Function to tell whether the given email is valid or not
//------------------------------------------------------------------------------------
function isProperEmail(argEmail) {
	if (charOccurences(argEmail, '@') + charOccurences(argEmail, '.') < 2)
		return false

	var atPos = argEmail.indexOf('@')
	var dotPos = argEmail.indexOf('.')

	if((atPos == 0) || (atPos == (argEmail.length - 1)))
		return false

	if((dotPos == 0) || (dotPos == (argEmail.length - 1)))
		return false
	
	if((atPos > dotPos) || (atPos == (dotPos - 1)))
		return false
	
	return true
}

//------------------------------------------------------------------------------------
// function: isProperNumber
//           Function to tell whether the given string is a proper number
//------------------------------------------------------------------------------------
function isProperNumber(argNumber) {
	var numberValue = Number(argNumber)
	
	if (isNaN(numberValue)) 
		return false
	else
		return !isWhiteSpace(argNumber)
}

//------------------------------------------------------------------------------------
// function: isProperAlphabetic
//           Function to tell whether the given string is a proper alphabetic string
//------------------------------------------------------------------------------------
function isProperAlphabetic(argString) {
	var alphabets = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"

	for(var intI=0; intI<argString.length; intI++)
		if (alphabets.indexOf(argString.charAt(intI)) == -1)
			return false
	
	return true
}

//------------------------------------------------------------------------------------
// function: objectValue
//           Function to return the value of the form element
//------------------------------------------------------------------------------------
function objectValue(argFrm, argElem) {
	var intI
	var objElem = null

	for (intI=0; intI<argFrm.length; intI++)
		if (argFrm[intI].name == argElem) 
			objElem = argFrm[intI]

	switch (objElem.type) {
		case 'text':
		case 'hidden':
		case 'password':
			return objElem.value
			break;
		
		case 'select-one':
			if (objElem.length == 0)
				return ''
			else 
				return objElem.options[objElem.selectedIndex].value
			break;
		
		case 'radio':
			for (intI=0; intI<argFrm.length; intI++)
				if (argFrm[intI].name == argElem) 
					if (argFrm[intI].checked)
						return argFrm[intI].value

			return ''
			break;
	}
}

//------------------------------------------------------------------------------------
// function: isProperZip
//           Function to validate a Zip code
//------------------------------------------------------------------------------------
function isProperZip(argZip) {
	
	if (((argZip.length == 5) || (argZip.length == 9)) && ( argZip == 69128 || argZip == 80001 || argZip == 80002 || argZip == 80003 || argZip == 80004 || argZip == 80005 || argZip == 80006 || argZip == 80007 || argZip == 80010 || argZip == 80011 || argZip == 80012 || argZip == 80013 || argZip == 80014 || argZip == 80015 || argZip == 80016 || argZip == 80017 || argZip == 80018 || argZip == 80019 || argZip == 80020 || argZip == 80021 || argZip == 80022 || argZip == 80024 || argZip == 80025 || argZip == 80026 || argZip == 80027 || argZip == 80028 || argZip == 80030 || argZip == 80031 || argZip == 80033 || argZip == 80034 || argZip == 80035 || argZip == 80036 || argZip == 80037 || argZip == 80038 || argZip == 80040 || argZip == 80041 || argZip == 80042 || argZip == 80044 || argZip == 80045 || argZip == 80046 || argZip == 80047 || argZip == 80101 || argZip == 80102 || argZip == 80103 || argZip == 80104 || argZip == 80105 || argZip == 80106 || argZip == 80107 || argZip == 80108 || argZip == 80109 || argZip == 80110 || argZip == 80111 || argZip == 80112 || argZip == 80113 || argZip == 80116 || argZip == 80117 || argZip == 80118 || argZip == 80120 || argZip == 80121 || argZip == 80122 || argZip == 80123 || argZip == 80124 || argZip == 80125 || argZip == 80126 || argZip == 80127 || argZip == 80128 || argZip == 80129 || argZip == 80130 || argZip == 80131 || argZip == 80132 || argZip == 80133 || argZip == 80134 || argZip == 80135 || argZip == 80136 || argZip == 80137 || argZip == 80138 || argZip == 80150 || argZip == 80151 || argZip == 80154 || argZip == 80155 || argZip == 80160 || argZip == 80161 || argZip == 80162 || argZip == 80163 || argZip == 80165 || argZip == 80166 || argZip == 80201 || argZip == 80202 || argZip == 80203 || argZip == 80204 || argZip == 80205 || argZip == 80206 || argZip == 80207 || argZip == 80208 || argZip == 80209 || argZip == 80210 || argZip == 80211 || argZip == 80212 || argZip == 80214 || argZip == 80215 || argZip == 80216 || argZip == 80217 || argZip == 80218 || argZip == 80219 || argZip == 80220 || argZip == 80221 || argZip == 80222 || argZip == 80223 || argZip == 80224 || argZip == 80225 || argZip == 80226 || argZip == 80227 || argZip == 80228 || argZip == 80229 || argZip == 80230 || argZip == 80231 || argZip == 80232 || argZip == 80233 || argZip == 80234 || argZip == 80235 || argZip == 80236 || argZip == 80237 || argZip == 80238 || argZip == 80239 || argZip == 80241 || argZip == 80243 || argZip == 80244 || argZip == 80246 || argZip == 80247 || argZip == 80248 || argZip == 80249 || argZip == 80250 || argZip == 80251 || argZip == 80252 || argZip == 80255 || argZip == 80256 || argZip == 80257 || argZip == 80259 || argZip == 80260 || argZip == 80261 || argZip == 80262 || argZip == 80263 || argZip == 80263 || argZip == 80264 || argZip == 80265 || argZip == 80266 || argZip == 80270 || argZip == 80271 || argZip == 80273 || argZip == 80274 || argZip == 80275 || argZip == 80279 || argZip == 80280 || argZip == 80281 || argZip == 80285 || argZip == 80290 || argZip == 80291 || argZip == 80292 || argZip == 80293 || argZip == 80294 || argZip == 80295 || argZip == 80299 || argZip == 80301 || argZip == 80302 || argZip == 80303 || argZip == 80304 || argZip == 80305 || argZip == 80306 || argZip == 80307 || argZip == 80308 || argZip == 80309 || argZip == 80310 || argZip == 80314 || argZip == 80321 || argZip == 80322 || argZip == 80323 || argZip == 80328 || argZip == 80329 || argZip == 80401 || argZip == 80402 || argZip == 80403 || argZip == 80419 || argZip == 80421 || argZip == 80422 || argZip == 80425 || argZip == 80425 || argZip == 80427 || argZip == 80432 || argZip == 80433 || argZip == 80436 || argZip == 80437 || argZip == 80438 || argZip == 80439 || argZip == 80442 || argZip == 80444 || argZip == 80447 || argZip == 80448 || argZip == 80452 || argZip == 80453 || argZip == 80454 || argZip == 80455 || argZip == 80456 || argZip == 80457 || argZip == 80465 || argZip == 80466 || argZip == 80470 || argZip == 80471 || argZip == 80474 || argZip == 80475 || argZip == 80476 || argZip == 80481 || argZip == 80482 || argZip == 80501 || argZip == 80502 || argZip == 80503 || argZip == 80504 || argZip == 80510 || argZip == 80511 || argZip == 80512 || argZip == 80513 || argZip == 80514 || argZip == 80515 || argZip == 80516 || argZip == 80517 || argZip == 80520 || argZip == 80521 || argZip == 80522 || argZip == 80523 || argZip == 80524 || argZip == 80525 || argZip == 80526 || argZip == 80527 || argZip == 80528 || argZip == 80530 || argZip == 80532 || argZip == 80533 || argZip == 80534 || argZip == 80535 || argZip == 80536 || argZip == 80537 || argZip == 80538 || argZip == 80539 || argZip == 80540 || argZip == 80541 || argZip == 80542 || argZip == 80543 || argZip == 80544 || argZip == 80545 || argZip == 80546 || argZip == 80547 || argZip == 80549 || argZip == 80550 || argZip == 80551 || argZip == 80553 || argZip == 80601 || argZip == 80602 || argZip == 80603 || argZip == 80610 || argZip == 80611 || argZip == 80612 || argZip == 80614 || argZip == 80615 || argZip == 80620 || argZip == 80621 || argZip == 80622 || argZip == 80623 || argZip == 80624 || argZip == 80631 || argZip == 80632 || argZip == 80633 || argZip == 80634 || argZip == 80638 || argZip == 80639 || argZip == 80640 || argZip == 80642 || argZip == 80643 || argZip == 80644 || argZip == 80645 || argZip == 80646 || argZip == 80648 || argZip == 80650 || argZip == 80651 || argZip == 80652 || argZip == 80729 || argZip == 80732 || argZip == 80808 || argZip == 80809 || argZip == 80813 || argZip == 80814 || argZip == 80816 || argZip == 80817 || argZip == 80819 || argZip == 80820 || argZip == 80827 || argZip == 80829 || argZip == 80830 || argZip == 80831 || argZip == 80832 || argZip == 80833 || argZip == 80835 || argZip == 80840 || argZip == 80841 || argZip == 80860 || argZip == 80863 || argZip == 80864 || argZip == 80866 || argZip == 80901 || argZip == 80903 || argZip == 80904 || argZip == 80905 || argZip == 80906 || argZip == 80907 || argZip == 80908 || argZip == 80909 || argZip == 80910 || argZip == 80911 || argZip == 80912 || argZip == 80912 || argZip == 80913 || argZip == 80914 || argZip == 80915 || argZip == 80916 || argZip == 80917 || argZip == 80918 || argZip == 80919 || argZip == 80920 || argZip == 80921 || argZip == 80922 || argZip == 80925 || argZip == 80926 || argZip == 80928 || argZip == 80929 || argZip == 80930 || argZip == 80931 || argZip == 80932 || argZip == 80933 || argZip == 80934 || argZip == 80935 || argZip == 80936 || argZip == 80937 || argZip == 80940 || argZip == 80941 || argZip == 80942 || argZip == 80943 || argZip == 80944 || argZip == 80945 || argZip == 80946 || argZip == 80947 || argZip == 80949 || argZip == 80950 || argZip == 80960 || argZip == 80962 || argZip == 80970 || argZip == 80977 || argZip == 80995 || argZip == 80997 || argZip == 81001 || argZip == 81002 || argZip == 81003 || argZip == 81004 || argZip == 81005 || argZip == 81006 || argZip == 81007 || argZip == 81008 || argZip == 81009 || argZip == 81010 || argZip == 81011 || argZip == 81012 || argZip == 81022 || argZip == 81023 || argZip == 81025 || argZip == 81212 || argZip == 81215 || argZip == 81221 || argZip == 81226 || argZip == 81240 || argZip == 81244 || argZip == 81246 || argZip == 81253 || argZip == 81290 || argZip == 82001 || argZip == 82002 || argZip == 82003 || argZip == 82005 || argZip == 82006 || argZip == 82007 || argZip == 82008 || argZip == 82009 || argZip == 82010 || argZip == 82050 || argZip == 82051 || argZip == 82052 || argZip == 82053 || argZip == 82054 || argZip == 82059 || argZip == 82060 || argZip == 82061 || argZip == 82070 || argZip == 82071 || argZip == 82072 || argZip == 82073 || argZip == 82081 || argZip == 82082 || argZip == 82084 || argZip == 82084 || argZip == 82210 || argZip == 82217 || argZip == 82221 || argZip == 85001 || argZip == 85002 || argZip == 85003 || argZip == 85004 || argZip == 85005 || argZip == 85006 || argZip == 85007 || argZip == 85008 || argZip == 85009 || argZip == 85010 || argZip == 85011 || argZip == 85012 || argZip == 85013 || argZip == 85014 || argZip == 85015 || argZip == 85016 || argZip == 85017 || argZip == 85018 || argZip == 85019 || argZip == 85020 || argZip == 85021 || argZip == 85022 || argZip == 85023 || argZip == 85024 || argZip == 85025 || argZip == 85026 || argZip == 85027 || argZip == 85028 || argZip == 85029 || argZip == 85030 || argZip == 85031 || argZip == 85032 || argZip == 85033 || argZip == 85034 || argZip == 85035 || argZip == 85036 || argZip == 85037 || argZip == 85038 || argZip == 85039 || argZip == 85040 || argZip == 85041 || argZip == 85042 || argZip == 85043 || argZip == 85044 || argZip == 85045 || argZip == 85046 || argZip == 85048 || argZip == 85050 || argZip == 85051 || argZip == 85053 || argZip == 85054 || argZip == 85055 || argZip == 85060 || argZip == 85061 || argZip == 85062 || argZip == 85063 || argZip == 85064 || argZip == 85065 || argZip == 85066 || argZip == 85067 || argZip == 85068 || argZip == 85069 || argZip == 85070 || argZip == 85071 || argZip == 85072 || argZip == 85073 || argZip == 85074 || argZip == 85075 || argZip == 85076 || argZip == 85077 || argZip == 85078 || argZip == 85079 || argZip == 85080 || argZip == 85082 || argZip == 85085 || argZip == 85086 || argZip == 85087 || argZip == 85098 || argZip == 85099 || argZip == 85201 || argZip == 85202 || argZip == 85203 || argZip == 85204 || argZip == 85205 || argZip == 85206 || argZip == 85207 || argZip == 85208 || argZip == 85210 || argZip == 85211 || argZip == 85212 || argZip == 85213 || argZip == 85214 || argZip == 85215 || argZip == 85216 || argZip == 85217 || argZip == 85218 || argZip == 85219 || argZip == 85220 || argZip == 85221 || argZip == 85224 || argZip == 85225 || argZip == 85226 || argZip == 85227 || argZip == 85228 || argZip == 85230 || argZip == 85232 || argZip == 85233 || argZip == 85234 || argZip == 85236 || argZip == 85239 || argZip == 85242 || argZip == 85244 || argZip == 85246 || argZip == 85247 || argZip == 85248 || argZip == 85249 || argZip == 85250 || argZip == 85251 || argZip == 85252 || argZip == 85253 || argZip == 85254 || argZip == 85255 || argZip == 85256 || argZip == 85257 || argZip == 85258 || argZip == 85259 || argZip == 85260 || argZip == 85261 || argZip == 85262 || argZip == 85263 || argZip == 85264 || argZip == 85266 || argZip == 85267 || argZip == 85268 || argZip == 85269 || argZip == 85271 || argZip == 85272 || argZip == 85273 || argZip == 85274 || argZip == 85275 || argZip == 85277 || argZip == 85278 || argZip == 85279 || argZip == 85280 || argZip == 85281 || argZip == 85282 || argZip == 85283 || argZip == 85284 || argZip == 85285 || argZip == 85287 || argZip == 85289 || argZip == 85290 || argZip == 85291 || argZip == 85296 || argZip == 85297 || argZip == 85299 || argZip == 85301 || argZip == 85302 || argZip == 85303 || argZip == 85304 || argZip == 85305 || argZip == 85306 || argZip == 85307 || argZip == 85308 || argZip == 85309 || argZip == 85310 || argZip == 85311 || argZip == 85312 || argZip == 85313 || argZip == 85318 || argZip == 85322 || argZip == 85323 || argZip == 85324 || argZip == 85326 || argZip == 85327 || argZip == 85329 || argZip == 85331 || argZip == 85335 || argZip == 85337 || argZip == 85338 || argZip == 85339 || argZip == 85340 || argZip == 85342 || argZip == 85343 || argZip == 85345 || argZip == 85351 || argZip == 85353 || argZip == 85354 || argZip == 85355 || argZip == 85358 || argZip == 85361 || argZip == 85363 || argZip == 85372 || argZip == 85373 || argZip == 85374 || argZip == 85375 || argZip == 85376 || argZip == 85377 || argZip == 85378 || argZip == 85379 || argZip == 85380 || argZip == 85381 || argZip == 85382 || argZip == 85383 || argZip == 85385 || argZip == 85387 || argZip == 85390 || argZip == 85931 || argZip == 86001 || argZip == 86002 || argZip == 86003 || argZip == 86004 || argZip == 86011 || argZip == 86015 || argZip == 86016 || argZip == 86017 || argZip == 86018 || argZip == 86020 || argZip == 86024 || argZip == 86035 || argZip == 86038 || argZip == 86046 || argZip == 86047 || argZip == 86312 || argZip == 86314 || argZip == 86320 || argZip == 86322 || argZip == 86323 || argZip == 86324 || argZip == 86325 || argZip == 86326 || argZip == 86327 || argZip == 86331 || argZip == 86334 || argZip == 86335 || argZip == 86336 || argZip == 86339 || argZip == 86340 || argZip == 86341 || argZip == 86342 || argZip == 86343 || argZip == 86351) )
		return isProperNumber(argZip)
	
	if (argZip.length == 10)
		return (isProperNumber(argZip.substr(0, 5)) && isProperNumber(argZip.substr(6, 4)) & (argZip.charAt(5) == '-'))
}

//------------------------------------------------------------------------------------
// function: isProperUSPhone
//           Function to validate a us phone number
//           Allowed formats 123-456-7890 or (123)456-7890
//------------------------------------------------------------------------------------
function isProperUSPhone(argPhone) {
	if (argPhone.length != 12 || argPhone.length != 13)
		return false

	if (argPhone.length != 12)
		return ((isProperNumber(argPhone.substr(0, 3)) && 
					(isProperNumber(argPhone.substr(4, 3)) || 
					 isProperAlphabetic(argPhone.substr(4, 3))) && 
					(isProperNumber(argPhone.substr(8, 4)) || 
					 isProperAlphabetic(argPhone.substr(8, 4)))))
	else
		return ((isProperNumber(argPhone.substr(1, 3)) && 
					(isProperNumber(argPhone.substr(5, 3)) || 
					 isProperAlphabetic(argPhone.substr(5, 3))) && 
					(isProperNumber(argPhone.substr(9, 4)) || 
					 isProperAlphabetic(argPhone.substr(9, 4)))))
}

//------------------------------------------------------------------------------------
// function: isProperUSSSN
//           Function to validate a us phone number
//------------------------------------------------------------------------------------
function isProperUSSSN(argSSN) {
	if (argSSN.length != 11)
		return false

	return  (isProperNumber(argSSN.substr(0, 3)) && isProperNumber(argSSN.substr(4, 2)) &&
			 isProperNumber(argSSN.substr(7, 4)) && (argSSN.charAt(3) == '-') && (argSSN.charAt(6) == '-'))
}

//------------------------------------------------------------------------------------
// function: actionFields
//           Function to parse the action arguments
//------------------------------------------------------------------------------------
function actionFields(argActions) {
	this.email			= (argActions.indexOf('[email]') > -1)
	this.required		= (argActions.indexOf('[req]') > -1)
	this.checkDate		= (argActions.indexOf('[date]') > -1)
	this.checkZip		= (argActions.indexOf('[zip]') > -1)
	this.checkNumber	= (argActions.indexOf('[number]') > -1)
	this.checkAlphabetic= (argActions.indexOf('[alpha]') > -1)
	this.checkUSPhone	= (argActions.indexOf('[usphone]') > -1)
	this.checkUSSSN		= (argActions.indexOf('[usssn]') > -1)

	if (argActions.indexOf('[len=') > -1) {
		this.checkLength = true

		var lenToCheck = ''
		var bolCont = true

		for (var intI=(argActions.indexOf('[len=') +  5);((intI < argActions.length) && bolCont); intI++)
			if (argActions.charAt(intI) != ']')
				lenToCheck += argActions.charAt(intI)
			else
				bolCont = false
		this.lengthToCheck = lenToCheck
	}
	else
		this.checkLength = false

	if (argActions.indexOf('[blankalert=') > -1) {
		this.blankAlert = true

		var alertString = ''
		var bolCont = true

		for (var intI=(argActions.indexOf('[blankalert=') +  12);((intI < argActions.length) && bolCont); intI++)
			if (argActions.charAt(intI) != ']')
				alertString += argActions.charAt(intI)
			else
				bolCont = false
		this.blankAlertMessage = alertString
	}
	else
		this.blankAlert = false
	
	if (argActions.indexOf('[invalidalert=') > -1) {
		this.invalidAlert = true

		var alertString = ''
		var bolCont = true

		for (var intI=(argActions.indexOf('[invalidalert=') +  14);((intI < argActions.length) && bolCont); intI++)
			if (argActions.charAt(intI) != ']')
				alertString += argActions.charAt(intI)
			else
				bolCont = false
		this.invalidAlertMessage = alertString
	}
	else
		this.invalidAlert = false

	if (argActions.indexOf('[equals=') > -1) {
		this.shouldEqual = true

		var equalsString = ''
		var bolCont = true

		for (var intI=(argActions.indexOf('[equals=') +  8);((intI < argActions.length) && bolCont); intI++)
			if (argActions.charAt(intI) != ']')
				equalsString += argActions.charAt(intI)
			else
				bolCont = false
		this.shouldEqualString = equalsString
	}
	else
		this.shouldEqual = false

}

//------------------------------------------------------------------------------------
// function: validateForm
//           Function to validate a HTML form
//------------------------------------------------------------------------------------
function validateForm(argForm) {
	var frmElements = argForm.elements
	var elemName
	var elemObj

	for (var intI=0; intI < frmElements.length; intI++) {// *
		elemObj = frmElements[intI]
		elemName = elemObj.name

		if ((elemObj.type == 'hidden') && (elemName.length > 5))
			if (elemName.substr(elemName.length - 5).toLowerCase() == '_vldt') {// **
				var objAction = new actionFields(objectValue(frmElements, elemName))
				var actElem = elemName.substr(0, elemName.length - 5)
				
				// Is it a required field?
				if (objAction.required) {
					if (isWhiteSpace(objectValue(frmElements, actElem))) {// ***
						alert (objAction.blankAlert?objAction.blankAlertMessage:actElem + ' cannot be left blank')
						return false
					} // ***
				}
				
				// Check the type validations
				if ((objectValue(frmElements, actElem) > '') && (!isWhiteSpace(objectValue(frmElements, actElem)))){// ***
					// Date
					if (objAction.checkDate)
						if (!isProperDate(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have an invalid date')
							return false
						} // ****

					// Number
					if (objAction.checkNumber)
						if (!isProperNumber(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have an invalid number')
							return false
						} // ****

					// Zip
					if (objAction.checkZip)
						if (!isProperZip(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' is not in our College Area')
							return false
						} // ****

					// Alphabetic
					if (objAction.checkAlphabetic)
						if (!isProperAlphabetic(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have invalid Alphabets')
							return false
						} // ****

					// Check US phone
					if (objAction.checkUSPhone)
						if (!isProperUSPhone(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have invalid Characters')
							return false
						} // ****

					// Check US SSN
					if (objAction.checkUSSSN)
						if (!isProperUSSSN(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have invalid Characters')
							return false
						} // ****

					// Check email
					if (objAction.email)
						if (!isProperEmail(objectValue(frmElements, actElem))) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have invalid Characters')
							return false
						} // ****

					// Check for length
					if (objAction.checkLength)
						if (objectValue(frmElements, actElem).length < objAction.lengthToCheck) {// ****
							alert (objAction.invalidAlert?objAction.invalidAlertMessage:actElem + ' cannot have invalid Alphabets')
							return false
						} // ****
				} // ***
			} // **
	} // *
		
	return true
}
