var pageList;
var currentPage;
var navVisible="no";
var external;

function getUrlVars()
{
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

	for(var i = 0; i < hashes.length; i++)
	{
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	}
	return vars;
}


function login()
{
	var http_request=createAJAXConnection();
	var step1;

	http_request.onreadystatechange=function() { loadSession(http_request); };
	http_request.open("POST","forms.php",true);

	var getVars = getUrlVars();
//	alert(getVars['load']);
//	alert(document.getElementById("submitButton").parentNode.parentNode.getAttribute("id"));
	if('' != getVars[0])
	  login = getVars[0] + '=' + getVars['load'] + '&' + getVars[1] + '=' + getVars['state'] + '&' + getVars[2] + '=' + getVars['city'] + '&' + getVars[3] + '=' + getVars['creditProfile'];
	else
	  login = 'load=yes';

	if(getVars['load'] != '')
	 external = getVars['load'];

	if(null != document.getElementById("submitButton")){
	  var postData="page="+document.getElementById("submitButton").parentNode.parentNode.getAttribute("id")+"Data&"+login;
	  http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  http_request.send(postData);
	}
}

function loadSession(http_request)
{
	if (http_request.readyState==4)
		if (http_request.status==200)
		{
			var xmldoc=http_request.responseXML;
			if (xmldoc.documentElement) xmldoc=xmldoc.documentElement;
			var errors=xmldoc.getElementsByTagName("error");
			var fields=xmldoc.getElementsByTagName('field');
			var field;
			for (var i=0;i<fields.length;i++) 
			{
				field=document.getElementById(fields[i].getAttribute("id"));
				var errorField=document.getElementById(fields[i].getAttribute("id")).parentNode.nextSibling;
				if (field.tagName=="INPUT") {
					if (field.getAttribute("type")=="text") field.value=fields[i].firstChild.data;
					else if (field.getAttribute("type")=="checkbox") field.checked=true;
				}
				else if (field.tagName=="UL")
				{
					var options=field.getElementsByTagName("INPUT");
					for (var j=0;j<options.length;j++)
						if (options[j].value==fields[i].firstChild.data)
							options[j].setAttribute("checked","true");
				}
				else if (field.tagName=="SELECT")
				{
					if (field.value){
						field.value=fields[i].firstChild.data;
						selected_field = '';
					}else{
						var options=field.getElementsByTagName("option");
						for (var j=0;j<options.length;j++){
							if (options[j].firstChild.data==fields[i].firstChild.data){
								options[j].setAttribute("selected","selected");
								selected_field = fields[i].firstChild.data;
							}
						}
					}
				}
				
				while (!errorField.tagName) errorField=errorField.nextSibling;
				errorField.setAttribute("title","&nbsp;");
				errorField.setAttribute("alt","&nbsp;");
				errorField.setAttribute("src","/images/wizardimages/checkmark.gif");

				if(selected_field != ''){
					selected_field_name = selected_field.replace(/ /g, "-").toLowerCase();
					var sub_set_check = document.getElementById(selected_field_name);
	
					if(sub_set_check)
						sub_set_check.style.display="block";
				}
			}
		}
		else alert('There was a problem with the request.');	
}

function formSetup() {
	buildNav();
	loadEvents();
	login();

	if(external != null)
	 flipPage(external);

	//	toggleSubset();
}

function buildNav()
{
	if(document.getElementById("submitButton") != null)
	  var items=document.getElementById("submitButton").parentNode.parentNode.getElementsByTagName('h4'); //Build navigation bar
	else
	  var items = '';

	var item;
	var formNavigation;
	currentPage="submit";
/*	if (!items.length || !document.getElementById("formNavigation")) return false; */
	if (items.length<2) return false;
	formNavigation=document.createElement("ul");
	formNavigation.setAttribute("class","horizList");
	formNavigation.setAttribute("id","formNavigation");
	document.getElementById("submitButton").parentNode.insertBefore(formNavigation,document.getElementById("submitButton").parentNode.firstChild);
	setVisibility("formNavigation","none");
	pageList=new Array;
	for (var i=0;i<items.length;i++) pageList[i]=items[i].parentNode.getAttribute("id");
	currentPage=pageList[0];
	document.getElementById("submitButton").getElementsByTagName("button")[0].
		getElementsByTagName("img")[0].setAttribute("src","../images/wizardimages/gobutton.jpg");
	if (pageList.length>1) {
		for (var i=0;i<pageList.length;i++)
		{
			item=document.createElement("li");
			item.setAttribute("id",pageList[i]+'NavButton');
			item.innerHTML="<a href=\"javascript:checkPage('"+pageList[i]+"')\"><img src=\"../images/wizardimages/step"+(i+1)+"off.jpg\" alt=\"Step "+(i+1)+"\" /></a>";
			if (i>0) setVisibility(pageList[i],"none");
			else item.firstChild.firstChild.src=item.firstChild.firstChild.src.replace("off.jpg","on.jpg");
			document.getElementById("formNavigation").appendChild(item);
		}
//		flipPage(currentPage);
	}
}

function setVisibility(objectID,state) { document.getElementById(objectID).style.display=state;}

//function toggleSubset() {	// hide and reveal co-borrower fields state = block or none
//	document.getElementById("renovation-purchase-loan").style.display="none";
//	document.getElementById("renovation-refinance-loan").style.display="none";
//
//	document.getElementById("coBlastName").parentNode.parentNode.style.display=state;
//	document.getElementById("coBDate").parentNode.parentNode.style.display=state;
//
//}

function loadEvents() 
{
	if(null != document.getElementById("submitButton"))
	  var form=document.getElementById("submitButton").parentNode;

	if(null != form){
		form.style.display="block";
		var inputs=form.getElementsByTagName("input");
		for (var i=0;i<inputs.length;i++)
			if (inputs[i].getAttribute("type")=="radio" || inputs[i].getAttribute("type")=="checkbox") inputs[i].onclick=validate;
			else if (inputs[i].getAttribute("type")=="text") inputs[i].onblur=validate;
		inputs=form.getElementsByTagName("select");
		for (var i=0;i<inputs.length;i++) inputs[i].onchange=validate;
		inputs=form.getElementsByTagName("textarea");
		for (var i=0;i<inputs.length;i++) inputs[i].onblur=validate;
		var submit = document.getElementById("submitButton").getElementsByTagName("button")[0];
		submit.onclick=continueClicked;
		submit.setAttribute("type","button");
	}
}

function continueClicked()
{
	var i;
	if (!pageList)
		checkPage("submit");
	else
	{
		for (i=0;pageList[i]!=currentPage && i<pageList.length;i++);
		if (i==pageList.length-1)
			checkPage("submit");
		else
			checkPage(pageList[i+1]);
	}
}

function checkPage(pageID)
{
	var http_request=createAJAXConnection();
	http_request.onreadystatechange=function() { processResponse(http_request); };
	http_request.open('POST',"forms.php",true);
	var postData="page="+document.getElementById("submitButton").parentNode.parentNode.getAttribute("id")+"Data&load="+pageID;
	if (!pageList)
		if(document.getElementsByTagName("form")[1] != null){
			var page = document.getElementsByTagName("form")[1];
		}else{
			var page = document;
		}
	else{
		if(document.getElementsByTagName("form")[1] != null){
			var page = document.getElementsByTagName("form")[1];
		}else{
			var page = document.getElementById(currentPage);
		}
	}

	var inputs=page.getElementsByTagName("input");
	for (var i=0;i<inputs.length;i++)
		if (inputs[i].getAttribute("type")!="checkbox")
		{
			temp=getFieldData(inputs[i]);
			if (temp!=null) postData=postData+"&"+temp;
		}
	inputs=page.getElementsByTagName("select");
	for (var i=0;i<inputs.length;i++)
		{
			temp=getFieldData(inputs[i]);
			if (temp!=null) postData=postData+"&"+temp;
		}
	inputs=page.getElementsByTagName("textarea");
	for (var i=0;i<inputs.length;i++)
		{
			temp=getFieldData(inputs[i]);
			if (temp!=null) postData=postData+"&"+temp;
		}

	if(pageID=="submit") postData=postData+"&submit=yes";
	http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");;
	http_request.send(postData);
}

function createAJAXConnection()
{
	var http_request;
	if (window.XMLHttpRequest) //Mozilla, Safari, ...
	{
		http_request=new XMLHttpRequest();
		if (http_request.overrideMimeType)
			http_request.overrideMimeType("text/xml");
	}
	else if (window.ActiveXObject) // IE 
		try {
			http_request=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			try {
				http_request=new ActiveXObject("Msxm12.XMLHTTP");
			} catch (e) {}
		}
	else http_request=false;
	if (!http_request) 
		alert("Giving up :( Cannot create an XMLHTTP instance");
	return http_request;
}

function processResponse(http_request)
{
	if (http_request.readyState==4)
		if (http_request.status==200)
		{
			var xmldoc=http_request.responseXML;
			if (xmldoc.documentElement) xmldoc=xmldoc.documentElement;

//			alert(http_request.responseText);

			var errors=xmldoc.getElementsByTagName("error");
			var subset=xmldoc.getElementsByTagName("subset");

			if(subset.length > 0){
				var sub_id = subset[0].getAttribute("id");
				var selected_name = subset[0].getAttribute("name");
				var sub_set = document.getElementById(sub_id);
				var subset_list = sub_set.getElementsByTagName("option");

				//alert(sub_id + ' ----- ' + selected_name + ' +++ ' + sub_set.innerHTML  + ' ----- ' + subset_list[0].innerHTML);

				for(var i=0;i < subset_list.length;i++){
					var sub_field_name = subset_list[i].innerHTML.replace(/ /g, "-").toLowerCase();
					var common_field_set = document.getElementById('common-subset');
					var common_subset = document.getElementById('common-'+sub_id.toLowerCase());

					if(sub_field_name != 'select-one'){
						var sub_field_set = document.getElementById(sub_field_name);
						if(sub_field_name == selected_name){
							sub_field_set.style.display="block";
							if(null == common_subset) common_field_set.style.display = "block";
							else common_subset.style.display = "block";
						}else{
							sub_field_set.style.display="none";
						}
					}else{
						if(null == common_subset) common_field_set.style.display = "none:";
						else common_subset.style.display = "none";
					}

					//document.getElementById(sub_field_name).style.display=state;
				}
			}

			for (var i=0;i<errors.length;i++)
			{
				var errorField=document.getElementById(errors[i].getAttribute("id")).parentNode.nextSibling;
				while (!errorField.tagName) errorField=errorField.nextSibling;
				errorField.setAttribute("title",errors[i].firstChild.data);
				errorField.setAttribute("alt",errors[i].firstChild.data);
				if (errors[i].firstChild.data=="&nbsp;")
					errorField.setAttribute("src","/images/wizardimages/checkmark.gif");
				else
					errorField.setAttribute("src","/images/wizardimages/xmark.gif");
			}
			var pageto=xmldoc.getElementsByTagName('pageto');
			if (pageto.length>0)
				if ((pageto[0].firstChild.data=="submit")&&(currentPage=="submit")){
					if(document.getElementsByTagName("form")[1] != null)
						current_form = document.getElementsByTagName("form")[1];
					else
						current_form = document.getElementsByTagName("form")[0];

					var formName = current_form.parentNode.getAttribute("id");
					var redirect = xmldoc.getElementsByTagName('redirect')[0].firstChild.data;

					if(redirect != '&nbsp;'){
						window.location.href = redirect;
					}else if (formName == 'findAHome' || formName =="findAProperty"){
						var propertySearchSource=xmldoc.getElementsByTagName('propertySearchSource');
						var homeSearchSource=xmldoc.getElementsByTagName('homeSearchSource');

						if (propertySearchSource.length) findAProperty(propertySearchSource[0].firstChild.data);
						else findAProperty(null);

						if (homeSearchSource.length) findAProperty(homeSearchSource[0].firstChild.data);
						else findAProperty(null);
					}else location.href="http://"+location.hostname+"/confirmation.php";
				}else{
					flipPage(pageto[0].firstChild.data);
					if (navVisible=="no")
						setVisibility("formNavigation","block");
				}
		} else alert("There was a problem with the request.");	
}

function flipPage(pageID)
{
	setVisibility(currentPage,"none");
	setVisibility(pageID,"block");

	if(null != external)
		document.getElementById("formNavigation").style.display="block";
	else
		document.getElementById("splashArrow").style.display="none";

	var currentNav=document.getElementById(currentPage+"NavButton").firstChild.firstChild;
	currentNav.src=currentNav.src.replace("on.jpg","check.jpg");
	currentPage=pageID;
	currentNav=document.getElementById(currentPage+"NavButton").firstChild.firstChild;
	currentNav.src=currentNav.src.replace("off.jpg","on.jpg");
	currentNav.src=currentNav.src.replace("check.jpg","on.jpg");
	var submit = document.getElementById("submitButton").getElementsByTagName("button")[0].getElementsByTagName("img")[0];
	if (currentPage=="submit") submit.setAttribute("src","../images/wizardimages/submitbuttons.jpg");
	else submit.setAttribute("src","../images/wizardimages/continuebutton.jpg");	
}

function validate()
{
	var http_request=createAJAXConnection();
	http_request.onreadystatechange=function() { processResponse(http_request); };
	http_request.open("POST","forms.php",true);

	if(document.getElementsByTagName("form")[1] != null)
		cur_form = document.getElementsByTagName("form")[1];
	else
		cur_form = document.getElementsByTagName("form")[0];

	var postData="page="+cur_form.parentNode.getAttribute("id")+"Data&"; // set name of xml validation file
	postData=postData+getFieldData(this);
	http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	http_request.send(postData);
}

function getFieldData(obj)
{
	var postData=null;
	
	if (obj.getAttribute("type")=="radio")
	{
		if (obj.checked)	//radio button
			postData=obj.parentNode.parentNode.getAttribute("id")+"="+encodeURI(obj.getAttribute("value"));
	}
	else if (obj.tagName=="SELECT") 										//dropdown
	{
		if (obj.value) postData=obj.getAttribute("id")+"="+encodeURI(obj.value);
		else
		{
			var options=obj.getElementsByTagName("option");
			postData=obj.getAttribute("id")+"=";
			for (var i=0;i<options.length;i++) if (options[i].getAttribute("selected"))
			{
				postData=postData+encodeURI(options[i].firstChild.data);
				break;
			}
		}
	}
	else if (obj.tagName=="TEXTAREA") {
		postData=obj.getAttribute("id")+"="+encodeURI(obj.value);
	}
	else if (obj.getAttribute("type")=="text") 											//text box
		postData=obj.getAttribute("id")+"="+encodeURI(obj.value);
	else if (obj.getAttribute("type")=="checkbox")										// clicked on checkbox
		postData=obj.getAttribute("id")+"="+encodeURI(obj.checked);
	//	else postData=null;
	if (postData) {
		var rexp = new RegExp("\\+", "g");
		postData=postData.replace(rexp,"\%2B");
	}
	return postData;
}

function findAProperty(propertySearch)
{
	if (propertySearch!=null) {
		var url=location.href.substring(0,location.href.indexOf('/',7))+'/navPage.html?targetPage=http://'+unescape(propertySearch);
	}
	location.href=url;
}

if (window.addEventListener) window.addEventListener("load",formSetup,false);
else window.attachEvent("onload",formSetup);

