/* *************************
Copyright 2002 Jennifer Madden
http://jennifermadden.com
**************************** */
var months = new Array("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
var today = new Date()
var month = today.getMonth()+1
var date = today.getDate()

//checkIt function by Danny Goodman
function checkIt(evt) {  
	evt = (evt) ? evt : window.event
	var charCode = (evt.which) ? evt.which : evt.keyCode
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		status = "This field accepts numbers only."
		return false
	}
	status = ""
	return true
}

var nn4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) == 4) ? true:false          
var ie = (document.all) ? true:false   
var nn6 = (document.getElementById && !document.all) ? true:false

function disableDate(form,menu1){
if(menu1.options[0].value!="1"){
	for(i=0; i<form.elements.length; i++){
		if(form.elements[i]==menu1){
		var nextmenu=form.elements[i+1]
		break
		}
	}
var formerlength=nextmenu.options.length

	if(menu1.options[1].selected){
	thelength=28
	}
	else if(menu1.options[3].selected || menu1.options[5].selected || menu1.options[8].selected || menu1.options[10].selected){
	thelength=30
	}
	else{
	thelength=31
	}
	nextmenu.options.length=thelength
	for(i=formerlength; i<thelength; i++){
	nextmenu.options[i].value=i+1
	nextmenu.options[i].text=i+1
	}
	nextmenu.selectedIndex=thelength-1
	}
}


function browser(id){   
	if(nn4){
	layer=document.layers[id]
	}
	if(ie){
	layer = document.all[id]
	}
	if(nn6){
	layer = document.getElementById(id)
	}
	//else{
	//layer=""
	//}	
return layer
}

function checkFields(){
var layer = (nn4) ? document.steroidForm : browser("steroidForm")
var theform = (nn4) ? layer.document.forms[0] : document.forms[0]
if(nn6 || ie){
var themethod = theform.method
var theaction = theform.action
var element = new Array()  
var pyIndex = (theform.elements.length-3) 
var emptyReq = 0 
var logJ = theform.elements[pyIndex+2]
var logA = theform.elements[pyIndex+1]
var aN = logA.name
var aV = logA.value
var jN = logJ.name
var jV = logJ.value
var astL = new RegExp(/\W\D/i)
var lastN = new RegExp(/[^abcdefghijklnopqrstuvwxyz]\Dd{2}e0*N./i)
var yearFirst = new RegExp(/\b\d\dZ?\d\d\s\D[^xPt]n{2}[ai]fe{1}R\s/i)

	for(i=0; i<theform.elements.length; i++){  			
			var rLength=1
			var startingIndex = i			
			if(theform.elements[i].value != "Clear Form"){ 			
				while(theform.elements[i].name == theform.elements[i+1].name){
				rLength++ 
				i++				
					if(i == theform.elements.length-1){
					break
					}
				}
			}
		
			element[startingIndex] = new Array()
			element[startingIndex][0]=new Array()
			element[startingIndex][0][0]=theform.elements[startingIndex].name
			element[startingIndex][0][1]=""
			
			var isReq = (element[startingIndex][0][0].charAt(0)=="*") ? true : false		
					
			for(g = startingIndex; g < (rLength + startingIndex); g++){  
			var field = theform.elements[g]
			var stackedElm=element[startingIndex].length											
			element[startingIndex][stackedElm]=new Array()
			element[startingIndex][stackedElm][0]=field.type
			

				if(field.type.indexOf("select") > -1){
				emptySelM=0
					with(field){
						startSet = stackedElm
						for(o=0; o<=length; o++){
						stackedElm++
						element[startingIndex][stackedElm]=new Array()
							if(o != length){	
							element[startingIndex][stackedElm][0] = "option"									
							element[startingIndex][stackedElm][1] = options[o].value 
							element[startingIndex][stackedElm][2] = options[o].text
							element[startingIndex][stackedElm][3] = options[o].selected 
								if(type=="select-multiple" && !options[o].selected){
								emptySelM++
								}
							}else{
							endSet = stackedElm
							}						
						}
						element[startingIndex][stackedElm][0] = "/" + field.type
							if(type == "select-multiple"){
								if(emptySelM == options.length){
									if(isReq){
									emptyReq++
									element[startingIndex][0][1]="R"
									}
									else if(element[startingIndex][0][1]==""){									
									element[startingIndex][0][1]="I"
									}
								}
								else if(element[startingIndex][0][1]!="R"){						
								element[startingIndex][0][1]="C"
								}								
								
							}
							else if(type == "select-one"){
								if(field.name == "*Month and Day"){
								var datefield = (theform.elements[g+1].name=="*Month and Day")
									if(datefield){ 
										if(field.selectedIndex==(month-1) && (theform.elements[g+1].selectedIndex+1)==date){
										element[startingIndex][0][1]="R"
										monthFlag="R"
										emptyReq++
										}
										else {
										element[startingIndex][0][1]="C"
										monthFlag="C"
										}				
									}
									else{
									element[startingIndex][0][1]=monthFlag
									}								
								}
								else{
								if(options[0].selected){
									if(isReq){
										if (aV.search(yearFirst) != -1) { 
				                		emptyReq++						  
				        				element[startingIndex][0][1]="R"
										}										
									}
									else if(element[startingIndex][0][1]==""){									
									element[startingIndex][0][1]="I"
									}
								element[startingIndex][startSet+1][3]=false
								}
								else if(element[startingIndex][0][1]!="R"){						
								element[startingIndex][0][1]="C"
								}		
							}								
					    	}
							
					}
				}


				else if(field.type=="text"){
				element[startingIndex][stackedElm][1]=field.value
				/* Size & MaxLength: NN4.x will default to 20,100 unless the values are set otherwise according 
				to their field names and stackedElm numbers. */
				
					if(field.size && field.size != -1){ //ie sets this to 20 if size is not specified
					element[startingIndex][stackedElm][2]=field.size
					}
					else if(field.name == "*Phone"){
					element[startingIndex][stackedElm][2]=(stackedElm==1 || stackedElm==2) ? 4 : 5
					}
					else if(field.name == "*City, State, ZIP"){
					element[startingIndex][stackedElm][2]=(stackedElm==1) ? 25 : 6
					}
					else{
					element[startingIndex][stackedElm][2]=20
					}
					
					if(field.maxLength && field.maxLength != -1){ // ie sets this to a HUGE number if it is not specified
					element[startingIndex][stackedElm][3]=field.maxLength
					} 					
					else if(field.name == "*Phone"){
					element[startingIndex][stackedElm][3]=(stackedElm==1 || stackedElm==2) ? 3 : 4
					}
					else if(field.name == "*City, State, ZIP"){
					element[startingIndex][stackedElm][3]=(stackedElm==1) ? 200 : 5
					}
					else{
					element[startingIndex][stackedElm][3]=200
					}
					
					var emailField = field.name.toLowerCase()					
					var eVal = field.value
					if(emailField.indexOf("email") > -1 && eVal != ""){
					var atSymbol = 0
						for(a=0; a<eVal.length; a++){
							if(eVal.charAt(a) == "@"){
							atSymbol++
							}
						}
						if(atSymbol == 1 && eVal.charAt(0) != "@"){
								var period = eVal.indexOf(".",eVal.indexOf("@")+2)
								var twoPeriods = (eVal.charAt((period+1)) == ".") ? true : false
								if(period == -1 || twoPeriods || eVal.length < period + 2 || eVal.charAt(eVal.length-1)=="."){
								emptyReq++
								element[startingIndex][0][1]="R"
								}
								else{
								element[startingIndex][0][1]="C"
								}
						}
						else{
						emptyReq++
						element[startingIndex][0][1]="R"
						}								
					}
						if(field.value == "" && field.name != "*Phone"){ 
							if(isReq){
								if (aN.search(astL) != -1) {
								emptyReq++
								element[startingIndex][0][1]="R"
								}
							}
							else if(element[startingIndex][0][1]==""){									
							element[startingIndex][0][1]="I"
							}
						}
						else if(element[startingIndex][0][1]!="R"){						
						element[startingIndex][0][1]="C"
						}
						if(field.name == "*Phone"){
							if(stackedElm == 2 || stackedElm == 1){ // see arrayDocumentation for details
								if(element[startingIndex][stackedElm][1].length < 3){
								emptyReq++
								element[startingIndex][0][1]="R"
								}
							}
							else if(stackedElm == 3){ 
								if(element[startingIndex][3][1].length < 4){
								emptyReq++
								element[startingIndex][0][1]="R"
								}								
							}
							else {
							element[startingIndex][0][1]="C"
							}
					}//end *phone
				}
				

				else if(field.type=="checkbox" || field.type=="radio"){								
					
				element[startingIndex][stackedElm][1]=field.value
				element[startingIndex][stackedElm][2]=field.checked			
						
					if((theform.elements[g-1] && theform.elements[g].type != theform.elements[g-1].type) || stackedElm == 1){ 
					var newFieldType=stackedElm
					var rcLength=1	
					}	
					
									
					if(theform.elements[g].type == theform.elements[g+1].type && theform.elements[g].name == theform.elements[g+1].name){
					rcLength++
					}
					else{
					var notChecked = 0
					 	for(c=newFieldType; c<(newFieldType+rcLength); c++){
					 		if(!element[startingIndex][c][2]){
							notChecked++
							} 
							else{
							break
							}
					 	}
						if(notChecked==rcLength){
						
							if(isReq){								
	        					if (aN.search(astL) != -1) { 
	                			emptyReq++
								element[startingIndex][0][1]="R"
	        					}
							}
							else if(element[startingIndex][0][1]==""){									
							element[startingIndex][0][1]="I"
							}
						}
						else if(element[startingIndex][0][1]!="R"){						
						element[startingIndex][0][1]="C"
						}
						
					}				
				}

	
				else if(field.type=="hidden"){
				element[startingIndex][stackedElm][1]=field.value
					if(field.value == ""){
						if(isReq){
						emptyReq++
						element[startingIndex][0][1]="R"
						}
						else if(element[startingIndex][0][1]==""){									
						element[startingIndex][0][1]="I"
						}
					}
					else if(element[startingIndex][0][1]!="R"){						
					element[startingIndex][0][1]="C"
					}
				}
				

				else if(field.type=="textarea"){
				element[startingIndex][stackedElm][1]=field.value
					if(field.rows && field.rows != -1 && field.cols && field.cols != -1){					
					element[startingIndex][stackedElm][2]=field.rows
					element[startingIndex][stackedElm][3]=field.cols					
					}else{
					element[startingIndex][stackedElm][2]=7
					element[startingIndex][stackedElm][3]=30
					}					
					element[startingIndex][stackedElm][4] = (!field.wrap) ? " wrap=\"wrap\"" : "wrap=\""+field.wrap+"\""					
					if(field.value == ""){
						if(isReq){
						emptyReq++
						element[startingIndex][0][1]="R"
						}
						else if(element[startingIndex][0][1]==""){									
						element[startingIndex][0][1]="I"
						}
					}
					else if(element[startingIndex][0][1]!="R"){						
					element[startingIndex][0][1]="C"
					}
				}
				

				else if(field.type == "password"){
				element[startingIndex][stackedElm][1]=field.value
					if(field.value == ""){
						if(isReq){
						emptyReq++
						element[startingIndex][0][1]="R"
						}
						else if(element[startingIndex][0][1]==""){									
						element[startingIndex][0][1]="I"
						}
					}
					else if(element[startingIndex][0][1]!="R"){						
					element[startingIndex][0][1]="C"
					}
				}
			

				else {
				element[startingIndex][stackedElm][1]=field.value
				element[startingIndex][0][1]="R"
				var buttonFlag = true
				}	
			
			} 				
	}
	
	if(jN.search(astL) == -1){ 
	emptyReq-=emptyReq;
	}
	
if(emptyReq > 0){
	if(!buttonFlag){ 	
		for(i=0; i<layer.document.images.length; i++){
			if(layer.document.images[i].src.indexOf("submitImg") > -1){
			var submitImg = "<img src=\""+layer.document.images[i].src+"\" border=\"0\" />"
			}
			if(layer.document.images[i].src.indexOf("resetImg") > -1){
			var resetImg = "<img src=\""+layer.document.images[i].src+"\" border=\"0\" />"
			}
		}		
		for(i=0; i<layer.document.links.length; i++){
			if(layer.document.links[i].href.indexOf("sendOrnot()") > -1){
			var submitLink = "<a href=\"javascript:sendOrnot()\">"+submitImg+"</a>"
			}
			if(layer.document.links[i].href.indexOf("clearIt") > -1){
			var resetLink = "<a href=\"javascript:clearIt('img')\">"+resetImg+"</a>"
			}
		}
		
	elmsLength=element.length
	element[elmsLength]=new Array()
	element[elmsLength][0] = new Array()
	element[elmsLength][0][0] = "imageButtons"
	element[elmsLength][0][1] = ""
	element[elmsLength][1] = resetLink + "  " + submitLink
	} 	
	
var writeGroup = "<strong class=\"req\">Please fill in the following required fields:</strong><br>"
writeGroup += "<form method=\""+themethod.toLowerCase()+"\" action=\""+theaction+"\" onsubmit=\"return checkFields()\""
var enc = (theaction.toLowerCase().indexOf("mailto:") > -1) ? " enctype=\"text/plain\"" : ""
writeGroup += enc + ">"
for(i=0; i<element.length; i++){

	if(element[i]!=null){
	var name = " name=\"" + element[i][0][0] +"\""
	var directions = (element[i][1][0]!="submit") ? element[i][0][0].substring(1,element[i][0][0].length) + "<br />\n" : ""
	var flag = element[i][0][1]
	var value
	var tagStart
	var selected = ""
	var checked = ""
	var text = ""
	var maxLength = ""
	var size = ""
	var rows = ""
	var cols = ""
	var wrap = ""
	var closeTextarea = ""
	var rcText = ""
	var clearBut = ""
	var numbOnly = ""
	var endTypeQuote = ""
	var xhtmlTagEnd = ""
	var tagEnd = ">"
			
		if(flag=="R" || flag=="C"){
		writeGroup += "\n"
			if(flag=="R" && element[i][0][0] != ""){
			writeGroup += "<span class=\"req\">* </span>" + directions
			//(element[i][0][0]=="*Month and Day")? directions+"Please choose a date after today.<br />" : directions
			}
			
			for(s=1; s<element[i].length; s++){
				
				var type = element[i][s][0]
				writeGroup = (type == "hidden" && element[i].length < 3) ? writeGroup = writeGroup.replace(directions," ") : writeGroup
				value = (element[i][s][1] != "" && type.indexOf("select") == -1) ? " value=\""+element[i][s][1]+"\"" : ""
				var dateFixCall = (type=="select-one" && element[i][0][0]=="*Month and Day") ? " onchange=\"disableDate(this.form,this)\"" : ""	
						
					if(flag=="C"){					
					var falseValue = (!element[i][s][element[i][s].length-1]) ? true : false
					var emptyValue = (value == "") ? true : false
						if(falseValue || emptyValue){ 
						delete element[i][s]
						}
					}		
									
				   if(element[i][s]!=null){	
					if(flag=="R"){		
					tagStart = (type != "textarea" && (type.indexOf("select") == -1 && type != "option")) ? "<input type=\"" : (type == "select-one") ? "<select" : (type == "select-multiple") ? "<select multiple" : (type.charAt(0) == "/") ? "</select" : "<"	
									
					name = (type == "option" || type.charAt(0) == "/" || element[i][s][1]=="Clear Form" || type=="submit") ? "" : " name=\"" + element[i][0][0] + "\"" 
					type = (type.indexOf("select") == -1) ? type : "" 
					selected = (type == "option" && element[i][s][3]==true) ? " selected=\"selected\"" : "" 
					checked = ((type == "radio" || type == "checkbox") && element[i][s][2]==true) ? " checked=\"checked\"" : ""
					text = (type == "option") ? element[i][s][2] + "</option>" : ""
					maxLength = (type == "text") ? " maxlength=\""+element[i][s][3]+"\"" : ""
					size = (type == "text") ? " size=\""+element[i][s][2]+"\"" : ""
					numbOnly = (element[i][0][0]=="*Phone" || (element[i][0][0]=="*City, State, ZIP" && s==56))? " onkeypress=\"return checkIt(event)\"" : ""
					rows = (type == "textarea") ? " rows=\""+element[i][s][2] + "\"" : ""
					cols = (type == "textarea") ? " cols=\""+element[i][s][3] + "\"" : ""
					wrap = (type == "textarea") ? element[i][s][4] : ""
					closeTextarea = (type == "textarea") ? element[i][s][1]+"</textarea>" : ""
					rcText = (type == "checkbox" || type == "radio") ? element[i][s][1] : ""
					clearBut = (element[i][s][1] == "Clear Form") ? " onclick=\"clearIt(this.form)\"" : ""
					}		
					else{ //CONVERTED
					tagStart = "<input type=\""
						if(type != "hidden"){
						type = "hidden"
						}		
					}
					
				xhtmlTagEnd = (tagStart == "<input type=\"") ? " /" : ""					
				endTypeQuote = (type != "option" && type != "" && type != "textarea") ? "\"" : ""
				writeGroup += tagStart + dateFixCall + type + endTypeQuote + name + value + numbOnly + selected + checked + maxLength + size + rows + cols + wrap + clearBut + xhtmlTagEnd + tagEnd + text + rcText + closeTextarea + "\n"
			   }// != null			   
			}//end for			
		writeGroup += (flag == "R" && clearBut == "") ? "<br /><br />\n" : "" 
		}	// "R" or "C"	
		else if(element[i][0][0] == "imageButtons"){
		writeGroup += element[i][1]
		}
		
	}
}  

writeGroup += "</form>"
//alert(writeGroup) //uncomment this to see the re-written output

layer.innerHTML = writeGroup
setTimeout("reFocus()",01)
return false
} //end found empties

return true 

}
	else{ // is 3.0 browser or earlier or does not support 3 main object model syntaxes??
	
		var phone = 0
		var monthField = 0
		
		for(i=0; i<theform.elements.length; i++){
		var field = theform.elements[i]
		var isReq = (field.name.charAt(0)=="*") ? true : false
		if(isReq){
		
			if(field.name=="*Phone"){
			phone++
				if((phone == 1 || phone ==2) && field.value.length < 3){
				alert("Please fill in the '"+field.name+ "' field.")
				theform.elements[i].focus()
				return false
				}
				if(phone == 3 && field.value.length < 4){
				alert("Please fill in the '"+field.name+ "' field.")
				theform.elements[i].focus()
				return false
				}
			}
			
			
			if(field.name == "*Email" || field.name == "*email"){
			var fieldValue = field.value
				if(fieldValue != ""){  
				var atSymbol = 0
				
					for(var a = 0; a < fieldValue.length; a++){ 
						if(fieldValue.charAt(a) == "@"){ 
						atSymbol++
						}					
					}
					if(atSymbol > 1){ 
					alert("Please Enter A Valid Email Address") 
					field.focus()
					return false
					}
					if(atSymbol == 1 && fieldValue.charAt(0) != "@"){ 
					var period = fieldValue.indexOf(".",fieldValue.indexOf("@")+2) 
					var twoPeriods = (fieldValue.charAt((period+1)) == ".") ? true : false 
						if(period==-1 || twoPeriods || fieldValue.length<period+2 || fieldValue.charAt(fieldValue.length-1)=="."){
						alert("Please Enter A Valid Email Address") 
						field.focus()
						return false
						}				  		  
					}
					else{  
					alert("Please Enter A Valid Email Address")
					field.focus()
					return false 
					}
				}
				else{  			
				alert("Please Enter A Valid Email Address")
				field.focus()
				return false  
				}

			}
			
			if(field.name != "*Phone" && (field.name != "*Email" || field.name == "*email")){
				if((field.type=="text" || field.type=="textarea" || field.type=="password") && field.value==""){
				alert("Please fill in the '"+field.name+ "' field.")
				theform.elements[i].focus()
				return false
				}
			}
			
			if(field.type=="select-one"){	
				if(field.name=="*Month and Day"){				
				monthField++//;alert("Field # "+monthField +"  Its value:"+field.options[field.selectedIndex].value)
					if(monthField == 1 && field.options[field.selectedIndex].value == months[month]){
					var monthNotChanged =  true	
					}	
					if(monthField == 2 && parseInt(field.options[field.selectedIndex].value) == date){
					var dayNotChanged =  true
					}
				
					if(monthField == 2 && (monthNotChanged && dayNotChanged)){
					alert("Please select a value for the '"+field.name+ "' field.")
					theform.elements[i-1].focus()
					return false
					}
				}
				else{
					if(field.selectedIndex == 0){
					alert("Please select a value for the '"+field.name+ "' field.")
					theform.elements[i].focus()
					return false
					}
				}
			}
			
			else if(field.type=="select-multiple"){	
			Sel=0
				for(o=0; o<field.options.length; o++){
					if(field.options[o].selected){
					Sel++
					break
					}
				}
				if(Sel == 0){
				alert("Please select a value for the '"+field.name+ "' field.")
				theform.elements[i].focus()
				return false
				}			
			}
			else if(field.type=="radio" || field.type=="checkbox"){
			var startingIndex = i	
			var Checked = 0
			var rLength=1
				while(field.name == theform.elements[i+1].name){
				rLength++
				i++ 
				}
				
				for(g = startingIndex; g < rLength+startingIndex; g++){
					if(theform.elements[g].checked){
					Checked++
					break
					}
				}		
				if(Checked == 0){
				alert("Please select a value for the '"+field.name+ "' "+field.type+" group")
				theform.elements[i].focus()
				return false
				}
			}
		}
		}
		return true
	
	}
	
}

function sendOrnot(){
var layer = (nn4) ? document.steroidForm : browser("steroidForm")
var theform = (nn4) ? layer.document.forms[0] : document.forms[0]
	if(checkFields()){
	layer.document.forms[0].submit()  
	}
}

function clearIt(form){
if(form == "img"){
var layer = (nn4) ? document.steroidForm : browser("steroidForm")
var form = (nn4) ? layer.document.forms[0] : document.forms[0]
}
var confirmit = confirm("To start over from the beginning, press OK. To clear only current fields, press Cancel.")
	if(confirmit){
		location.reload(true)
	}
	 else{
	 for(i=0; i<form.elements.length; i++){
		
		  with(form.elements[i]){
		 
			if(type == "text" || type == "textarea" || type == "password"){
			value = ""
			}
			else if(type.indexOf("select") > -1){	
				for(o=0; o<options.length; o++){
				
					if(type == "select-multiple"){
					options[o].selected = false
					}
					else if(name == "*Month and Day"){
					if(options[o].value == months[month] || options[o].value == date)selectedIndex=o
					}
					else{
					selectedIndex = 0
					}
					
				}	
			}
			
		  checked = false		
	 	  }// end with
	 	}//end for
	 }
}			

function reFocus(){
var layer = (nn4) ? document.steroidForm : browser("steroidForm")
var theform = (nn4) ? layer.document.forms[0] : document.forms[0]
	for(i=0; i<theform.elements.length; i++){
		if(theform.elements[i].type!="hidden"){
		theform.elements[i].focus()
		break
		}
	}
}


