	function formControl()
	{
		this.form=document.getElementById('onlineform');
		this.objArr=Array();
		this.objArrCount=0;
		this.scanPage=scanPage;
		this.scanNode=scanNode;
		this.sH=sH;
		this.checkComplete=checkComplete;
		this.saveCheckbox=saveCheckbox;
		
		this.scanPage();
		this.sH();
	}
	function checkComplete()
	{
		var comp=true;
		var incomp=null;
		for(var i=0;i<this.objArr.length;i++)
		{
			var node=this.objArr[i];
			var complete=node.checkAnswered();
			if(!complete)
			{
				node.div.className='formItemIncomplete';
				comp=false;
				if(incomp==null){
					incomp=node.div;
				}
			}
			else
			{
				node.div.className='formItem';
			}
		}
		if(!comp)
		{
			alert('Please complete the required fields.');
			setFocus(incomp);
		}
		else
		{
			for(var i=0;i<this.objArr.length;i++)
			{
				for(var q=0;q<this.objArr[i].iArr.length;q++)
				{
					var input=this.objArr[i].iArr[q];
					if(input.type=='checkbox')
					{
						this.saveCheckbox(input);
					}
				}
			}
			document.onlineform.submit();
		}
	}
	function sH()
	{
		for(var i=0;i<this.objArr.length;i++)
		{
			var childArr=this.objArr[i].childArr;
			for(var q=0;q<childArr.length;q++)
			{
				childArr[q].style.display='none';
			}
		}
		for(var i=0;i<this.objArr.length;i++)
		{
			this.objArr[i].show();
		}
	}
	function scanPage()
	{
		if(this.form)
		{
			this.scanNode(this.form);
		}
	}
	function scanNode(par){
		for(var i=0;i<par.childNodes.length;i++)
		{
			var node=par.childNodes[i];
			if(node.className=='formItem')
			{
				this.objArr[this.objArrCount]=new formObj(this.objArrCount,node,this);
				this.objArrCount++;
			}else if(node.childNodes.length!=0){
				this.scanNode(node);
			}
		}
	}
	
	function formObj(i,div,control)
	{
		this.control=control;
		//alert('formObj'+arr);
		this.div=div;
		this.pos=i;
		this.type='';
		this.iArr=Array();
		this.childArr=Array();
		this.childToInput=Array();
		this.required=false;	//ACTUALLY NEEDS TO BE INSTRUCTED
		this.selectHouse=false;    /* used to keep stop inputs */
		this.agree= false; /*	used for agreement check boxes ONLY	*/
		this.show=show;
		this.addOnClick=addOnClick;
		this.findAnsNodes=findAnsNodes;
		this.checkAnsNode=checkAnsNode;
		this.getInputs=getInputs;
		this.findRequired=findRequired;
		this.findChildren=findChildren;
		this.checkAnswered=checkAnswered;
		
		this.getInputs(this.div);
		if(!this.selectHouse){
			this.findChildren();
		}
		this.addOnClick();
		this.findRequired(this.div);
	}
	
	function checkAnswered()
	{
		var answered=true;
		if((this.div.style.display!='none')&&(this.iArr.length>0)&&(this.required))
		{
			var mSel=false;
			for(var i=0;i<this.iArr.length;i++)
			{
				var input=this.iArr[i];
				if(input.type=='selectHouse'){
					if(input.arr.length>0){
						mSel=true;
					}
				}else if(input.type=='radio')
				{
					//alert('RADIO CHECK ::'+input.checked);
					if(input.checked==true)
					{
						mSel=true;
					}
				}
				else if(input.type=='text')
				{
					//alert('TEXT CHECK ::'+input.value);
					if(input.value=='')
					{
						answered=false;
					}
					mSel=true;
				}
				else if(input.type=='checkbox')
				{
					//DONT CHECK CHECKBOX because it is always filled out
					if(this.agree){
						if(!input.checked){
							answered=false;
						}
					}
					mSel=true;
				}
				else if(input.tagName=='OPTION')
				{	
					//alert(input.selectedIndex+'::'+input.options[input.selectedIndex]+'::'+input.options[input.selectedIndex]);
					mSel=true;
					if((input.selected)&&(input.value==''))
					{
						answered=false;
					}else{

					}
				}else if(input.tagName=='TEXTAREA'){
					//alert('::'+input.value+'--isTEXTAREA--'+input.innerHTML+'::');
					if(input.value==''){
						answered=false;
					}
					mSel=true;
				}
			}
			if(!mSel)
			{
				answered=false;
			}
		}
		
		return answered;
	}
	function show()
	{
		//alert('show')
		if(this.div.style.display!='none') //CHECK TO SEE IF THIS DIV IS HIDDEN
		{
			for(var i=0;i<this.iArr.length;i++)
			{
				var input=this.iArr[i];
				var selected=false;
				var checkbox='';
				if(input.type=='radio')
				{
					//alert(input.checked);
					if(input.checked)
					{
						selected=true;
					}
				}
				else if(input.type=='checkbox')
				{
					selected=true;
					if(input.checked)
					{
						checkbox='true';
					}
					else
					{
						checkbox='false';
					}
				}
				else if(input.tagName=='OPTION')
				{
					if(input.selected){
						selected=true;
					}
				}
				//alert(selected);
				if(selected)
				{
					if(checkbox!='')
					{
						for(var q=0;q<this.childArr.length;q++)
						{
							var child=this.childArr[q];
							if(child.id==input.name+checkbox)
							{
								child.style.display='block';
							}
						}
					}
					else
					{
					for(var q=0;q<this.childToInput.length;q++)
					{
						if(this.childToInput[q][1]==i)
						{
							//alert('found to show::'+this.childToInput[q][0]+'::'+this.childArr[this.childToInput[q][0]].id);
							this.childArr[this.childToInput[q][0]].style.display='block';
						}
					}
					}
				}
			}
		}
	}
	function findRequired(par){
		for(var i=0;i<par.childNodes.length;i++){
			var node=par.childNodes[i];
			if(node.className=="required"){
				this.required=true;
			}else if(node.childNodes.length>0){
				this.findRequired(node);
			}
		}
	}
	function findChildren()
	{
		//alert('checking');
		for(var i=0;i<this.iArr.length;i++)
		{
			var input=this.iArr[i];
			var iNames=inputNames(input.id);
			for(var q=0;q<iNames.length;q++)
			{
				if(input.type=='radio')
				{
					this.findAnsNodes(iNames[q],i);
				}
				else if(input.type=='checkbox')
				{
					this.findAnsNodes(input.name+'true',i);
					this.findAnsNodes(input.name+'false',i);
				}
				else if(input.tagName=='OPTION'){
					if((input.id!=null)&&(input.id!='')){
						var nodeid=input.id;
						input.id='';
						this.findAnsNodes(nodeid,i);
					}
				}
			}
		}
	}
	function inputNames(str)
	{
		var inputArray=str.split(':');
		return inputArray;
	}
	function findAnsNodes(ansNodeName,iPos)
	{
		// FIND ANSNODES
		//alert('findAnsNodes'+iPos);
		if(ansNodeName!='')
		{
			var form=this.control.form;
			this.checkAnsNode(form,ansNodeName,iPos);
		}
	}
	function checkAnsNode(parNode,ansNodeName,iPos){
			for(var q=0;q<parNode.childNodes.length;q++)
			{
				
				var node=parNode.childNodes[q];
				//alert(node.nodeName);
				if((node.id==ansNodeName)&&(node.nodeName!="INPUT")&&(node.nodeName!="OPTION"))
				{
					var childPos=this.childArr.length;
					this.childArr[childPos]=node;
					this.childToInput[this.childToInput.length]=Array(childPos,iPos);
				}else if(node.childNodes.length!=0){
					this.checkAnsNode(node,ansNodeName,iPos);
				}
			}
	}
	function addOnClick()
	{
		if(this.childArr.length>0)
		{
			for(var i=0;i<this.iArr.length;i++)
			{
				//alert('click+'+this.meta+'+'+this.iArr[i]);
				var input=this.iArr[i];
				if(input.nodeName=="OPTION"){
					input=input.parentNode;
					input.onchange=function(){
						formControl.sH();
					}
				}else{
				input.onclick=function(){
									formControl.sH();
							};
				}
			}
		}
	}
	function getInputs(div)
	{
		for(var q=0;q<div.childNodes.length;q++)
		{
			var node=div.childNodes[q];
			//alert(node);
			if(!this.selectHouse){
			if(node.id=='selectHouse'){
				this.selectHouse=true;
				var dataInit=node.innerHTML.split(',');
				/*  the second argument is evaled because it is an array's name . . . */
				selectControl=new selectControl(dataInit[0],eval(dataInit[1]));
				this.iArr[this.iArr.length]=selectControl;
				this.required=true;
				preview('');
			}else if(node.tagName=='INPUT')
			{
				//alert(node.type+'::XXX'+node.id);
				this.iArr[this.iArr.length]=node;
				if(node.type=='text'){
					addCaps(node);
				}else if(node.type=='checkbox'){
					if(node.className=='agree'){
						this.agree=true;
					}
				}
			}
			else if(node.tagName=='OPTION')
			{
				this.iArr[this.iArr.length]=node;
			}else if(node.tagName=='TEXTAREA'){
				this.iArr[this.iArr.length]=node;
				addCaps(node);
			}
			else if(node.className=='required')
			{
				this.required=true;
			}
			else if(node.hasChildNodes())
			{
				this.getInputs(node);
			}
			}
		}
	}
	function saveCheckbox(input)
	{
		var hidden=document.createElement('input');
		hidden.type='hidden';
		hidden.name=input.name;
		if(input.checked)
		{
			hidden.value='true';
		}
		else
		{
			hidden.value='false';
		}
		this.form.appendChild(hidden);
	}
	function addCaps(node){
		node.onblur=capitalize;
	}
	function capitalize(input){
		//alert(input+'caps plz'+this);
		var val=this.value;
		var valarr=val.split('');
		var first=true;
		var newval='';
		for(var i=0;i<valarr.length;i++){
			var chari=valarr[i];
			if(first){
				chari=chari.toUpperCase();
				//alert('capsing-'+chari);
				newval+=chari.toUpperCase();
				first=false;
			}else{
				newval+=chari;
			}
		}
		//alert('newval='+newval); 
		this.value=newval;
	}
