/* *************************
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
		}
	}
}



