// within the including form - 
//<FORM Action="Submit.asp" method="post" onSubmit=" this.optCategory.chooser = true;this.txtWebAddress. = true;  this.txtdate.checkdate = true; this.txtEmail.checkemail = true; this.txtMoviePara2.mandatory= true; this.txtMoviePara1.textmax = 50; this.txtMoviePara1.maxwordcount = 25; return verify(this);">

function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

function IsEmailValid(s)
{
var AtSym    = s.value.indexOf('@')
var Period   = s.value.lastIndexOf('.')
var Space    = s.value.indexOf(' ')
var Length   = s.value.length - 1   // Array is from 0 to length-1

if ((AtSym < 1) ||                     // '@' cannot be in first position
   (Period <= AtSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
   (Period == Length ) ||             // Must be atleast one valid char after '.'
   (Space  != -1))                    // No empty spaces permitted
   return true;
else   
	return false;
}

function IsURLValid(s)
{
var HttpSym    = s.value.indexOf('http://')
var Period   = s.value.lastIndexOf('.')
var Space    = s.value.indexOf(' ')
var Length   = s.value.length - 1   // Array is from 0 to length-1

if ((HttpSym != 0) ||                     // 'http://' must be in first position
   (Period <= HttpSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
   (Period == Length ) ||             // Must be atleast one valid char after '.'
   (Space  != -1))                    // No empty spaces permitted
   return true;
else   
	return false;
}


function CheckDate(objName) {
<!-- Begin
<!-- Original:  Mike Welagen (welagenm@hotmail.com) -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
var datefield = objName;
if (chkdate(objName) == false) {
return true;
}
else {
return false;
   }
}
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;
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)) {
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)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
if (strDatestyle == "US") {
datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
}
else {
datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
//  End -->


// This is the function that performs form verification. It will be invoked from the onSubmit() event handler. The handler should return whatever value this function returns.
function verify(f)
{
	  //alert(f);
    var msg;
    var empty_fields = "";
    var errors = "";
    //alert(f);
    // Loop through the elements of the form, looking for all text and textarea elements that don't have an "optional" property defined. Then, check for fields that are empty and make a list of them. Also, if any of these elements have a "min" or a "max" property defined, then verify that they are numbers and that they are in the right range. Put together error messages for fields that are wrong.
    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];
        
		if (e.chooser) {		// check to see if options selected
		           if (e.options[0].selected) {
						errors += "\n - The " + e.name + " must be selected.";
						continue;
					}			
		//	if (e.value == "" ) {
		//		errors += "\n - The " + e.name.substring(3) + " must be selected.";
		//		continue;
		//	}	
		}		
		
		if (e.checkemail){       // check to see if any email addresses are OK
			if(IsEmailValid(e)) {
				if (!isblank(e.value)){		
					errors += "\n - The " + e.name + " must be in a valid email format.";
					continue;
				}
			}	
		}
		
		if (e.checkurl){       // check to see if any email addresses are OK
			if(IsURLValid(e)) {
				if (!isblank(e.value)){		
					errors += "\n - The " + e.name + " must be in a valid URL format (http://...).";
					continue;
				}
			}	
		}
		
		if (e.checkdate) {       // check to see if any email addresses are OK
			if(CheckDate(e)) {				
				errors += "\n - The " + e.name + " must be in a valid date format (mm/dd/yy).";
				continue;
			}		
		}
			
		 if (e.textmax != null) {  // check text field maximumlengths
	          var k = e.value.length;
	          if (k > e.textmax) {
	              errors += "\n - The field " + e.name + " is too long - it is " + k + " characters, and is only allowed to be " + e.textmax + ".";
	              continue;
	          }
	      }
	
	      // Check text field maximumlengths
	       if (e.textmin != null) { 
	           var d = e.value.length;
	           if (d < e.textmax) {
	               errors += "\n - The field " + e.name + " is too short - it is " + d + " characters, and is must be at least " + e.textmin;
	           }
	       }
	 
	  // Check text field wordcount
	       if (e.maxwordcount != null) { 
	             var h = e.value;
	             h = h.split(" ");
				 if (h.length > e.maxwordcount) {
	                 errors += "\n - The field " + e.name + " is too long - it is only allowed to be " + e.maxwordcount + " words.";
	             }
	         }
			
	      // Now check for fields that are supposed to be numeric.
	      if (e.numeric || (e.min != null) || (e.max != null)) { 
		  	if (!isblank(e.value)){		
	           var v = parseFloat(e.value);
	           if (isNaN(v) || 
	               ((e.min != null) && (v < e.min)) || 
	               ((e.max != null) && (v > e.max))) {
	               errors += "\n - The field " + e.name + " must be a number";
	               if (e.min != null) 
	                   errors += " that is greater than " + e.min;
	               if (e.max != null && e.min != null) 
	                   errors += " and less than " + e.max;
	               else if (e.max != null)
	                   errors += " that is less than " + e.max;
	           }
			 }
	       }
		  
		//check if the field is empty
	       if (((e.type == "text") || (e.type == "password") || (e.type == "textarea")) && !(!(e.mandatory) || (e.optmax != null))) {        
	           if ((e.value == null) || (e.value == "") || isblank(e.value)) {
	               empty_fields += "\n          " + e.name;
	               continue;
	           }
	       }
	   }
    // Now, if there were any errors, display the messages, and return false to prevent the form from being submitted.  Otherwise return true.
    if (!empty_fields && !errors) return true;

    msg  = "______________________________________________________\n\n"
    msg += "The form was not submitted because of the following error(s).\n";
    msg += "Please correct these error(s) and re-submit.\n";
    msg += "______________________________________________________\n\n"

    if (empty_fields) {
        msg += "- The following required field(s) are empty:" 
                + empty_fields;
        if (errors) msg += "\n";
    }
    msg += errors;
    alert(msg);
    return false;
}

