/* *************************
Copyright 2002-2005 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()

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 browser(id){   
	if(nn4){
	layer=document.layers[id]
	}
	else if(ie){
	layer = document.all[id]
	}
	else 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 logA = theform.elements[pyIndex+1]
var aN = logA.name
var aV = logA.value
var logJ = theform.elements[pyIndex+2]
var jN = logJ.name
var jV = logJ.value
var astL = new RegExp(/\W\D/i)
var lastN = new RegExp(/[^abcdefghijklnopqrstuvwxyz]\Dd{2}e0*N/gi)
var yearFirst = new RegExp(/\b\d\dZ?\d\d\s\D[^xPt]n{2}[ai]fe{1}R\s/i)
var fileUpLoad = false

	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(options[0].selected){
									if(isReq){
										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"
								}		
							}	//select-one	
							
					}
				}


				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{
					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{
					element[startingIndex][stackedElm][3]=200
					}
					
						if(field.value == ""){
							if(isReq){
		        				if (aV.search(yearFirst) != -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=="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 if(field.type == "file"){
				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"
					}
				fileUpLoad = true
				}*/
			

				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\"" : ""
enc += (fileUpLoad == true) ? "enctype=\"multipart/form-data\"" : ""
writeGroup += enc + ">\n"
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 endTypeQuote = ""
	var xhtmlTagEnd = ""
	var tagEnd = ">\n"
			
		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]+"\"" : "" 	
						
					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]+"\"" : ""					
					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>\n" : ""
					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 + type + endTypeQuote + name + value + selected + checked + maxLength + size + rows + cols + wrap + clearBut + xhtmlTagEnd + tagEnd + text + rcText + closeTextarea + "\n"
			   }// != null			   
			}//end for			
		writeGroup += (flag == "R" && clearBut == "") ? "<br /><br />\n" : "" 
		}	
		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
} 


return true 
}

	else{ 
	
		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.type=="text" || field.type=="textarea" || field.type=="password") && field.value==""){
			alert("Please fill in the '"+field.name+ "' field.")
			theform.elements[i].focus()
			return false
			}
			else if(field.type=="select-one" && 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.type == theform.elements[i+1].type){
				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()){
	theform.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
		}
	}
}

