﻿function isIE7()
{
	return navigator.appVersion.indexOf("MSIE 7.")!=-1;
}

function initRequest(pageId)
{
var oRequest;
	
	showBlanket();
	
	if (window.XMLHttpRequest)
	{
	// code for IE7+, Firefox, Chrome, Opera, Safari
		oRequest=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
	// code for IE6, IE5
		oRequest=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	oRequest.onreadystatechange=function()
	{
		
		if(oRequest.readyState==4)
		{
			var oXML = loadXML(oRequest.responseText);
			loadPage(oXML, pageId);
		}
	}
	oRequest.open("GET", "./ajaxfeeder.php?pageid="+pageId, true);
	oRequest.send(null);	
}

function loadPage(oXML, pageId)
{
	document.title = oXML.getElementsByTagName("title")[0].childNodes[0].nodeValue;
	var colDivs = document.getElementsByTagName("div");
	for(var i =0; i < colDivs.length; i++)
	{
		if(colDivs[i].className == "selected")
			colDivs[i].className = "standard";
	}

	switch(pageId){
		case "partners":
			document.getElementById("dvHP").style.display = "block";
			document.getElementById("dvCtrx").style.display = "block";
			document.getElementById("navBlank").className = "navBlank2";
			break;
		default:
			document.getElementById("dvHP").style.display = "none";
			document.getElementById("dvCtrx").style.display = "none";
			document.getElementById("navBlank").className = "navBlank";
	}
	
	switch(oXML.getElementsByTagName("page")[0].attributes.getNamedItem("style").value)
	{
		case "home":
			document.getElementById("dvContent").className = "dvContent";
			document.getElementById("dvBlue").className = "dvBlue";
			break;
		
		case "sub":
			document.getElementById("dvContent").className = "dvContentSub";
			document.getElementById("dvBlue").className = "dvBlueSub";
			break;
	}
	
	document.getElementById(oXML.getElementsByTagName("navdiv")[0].childNodes[0].nodeValue).className="selected";
	document.getElementById("imgGraphic").src=oXML.getElementsByTagName("sidepic")[0].attributes.getNamedItem("src").value;
	document.getElementById("imgGraphic").alt=oXML.getElementsByTagName("sidepic")[0].attributes.getNamedItem("alt").value;
	if(isIE7()) //IE 7 compatibility
	{
		document.getElementById("contentMain").innerHTML = oXML.getElementsByTagName("content")[0].xml;
		document.getElementById("contentHeader").innerText = oXML.getElementsByTagName("header")[0].childNodes[0].xml;
	}
	else //Normal browsers
	{
		setElementContent(document.getElementById("contentMain"), XMLtoHTML(oXML.getElementsByTagName("content")[0],false));
		setElementContent(document.getElementById("contentHeader"), XMLtoHTML(oXML.getElementsByTagName("header")[0].childNodes[0],false));
	}
	
	hideBlanket();
}

function setElementContent(elem, HTMLNode)
{
	clearElement(elem);
	elem.appendChild(HTMLNode);
}

function clearElement(elem)
{
	for(node in elem.childNodes)
	{
		try{
		elem.removeChild(elem.childNodes[node]);
		}catch(e){}
	}
}

function loadXML(txt)
{
	try //Internet Explorer
	  {
	  var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async="false";
	  xmlDoc.loadXML(txt); 
	  }
	catch(e)
	  {
	  var parser=new DOMParser();
	  var xmlDoc=parser.parseFromString(txt,"text/xml");
	  }
	  return xmlDoc;
}

function XMLtoHTML(xml, notrecursive) {
	switch(xml.nodeType) {
		case 1: // Element Node
			var i;
			var html=document.createElement(xml.nodeName);
			for (i=0; i<xml.attributes.length; i++) {
				attr=xml.attributes.item(i);
				html.setAttribute(attr.name, attr.value);
			}
			if (!notrecursive) {
				for (i=0; i<xml.childNodes.length; i++) {
					html.appendChild(XMLtoHTML(xml.childNodes[i]));
				}
			}
			return html;
		case 3: // Text Node
			return document.createTextNode(xml.nodeValue);
	}
}

function contactHandler()
{	
var oRequest;
	showBlanket();
	document.getElementById("btnSubmit").disabled="disabled";
	
	if (window.XMLHttpRequest)
	{
	// code for IE7+, Firefox, Chrome, Opera, Safari
		oRequest=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
	// code for IE6, IE5
		oRequest=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	oRequest.onreadystatechange=function()
	{
		
		if(oRequest.readyState==4)
		{
			try
			{
				var oXML = loadXML(oRequest.responseText);
				var strValue = oXML.getElementsByTagName("response")[0].attributes.getNamedItem("value").value;
				switch(strValue)
				{
					case "success": //Mail was successfully sent
						clearElement(document.getElementById("dvForm"));
						var strMessage = "<div class=\"confMessage\">Thank you. Your request has been submitted. A representative will be in touch with you shortly.</div>";
						setElementContent(document.getElementById("dvForm"), XMLtoHTML(loadXML(strMessage).firstChild,false));
						break;
					case "error": //An error occurred
						strErr = oXML.getElementsByTagName("response")[0].attributes.getNamedItem("errcode").value;
						clearElement(document.getElementById("dvForm"));
						var strMessage = "<div class=\"errMessage\">An error has occured. Your request was not submitted. A possible reason may be an invalid email address. Please <a href=\"#contactus\" onclick=\"initRequest('contactus')\">try again</a> or contact us via one of the alternate methods below.</div>";
						if(isIE7()) //IE 7 compatibility
						{
							document.getElementById("dvForm").innerHTML = strMessage;
						}
						else //Normal browsers
						{
							var h = XMLtoHTML(loadXML(strMessage).firstChild,false);
							h.style.display = "inline";
							setElementContent(document.getElementById("dvForm"), h);
							elem = document.createElement("div");
							elem.id = "hiddenMessage";
							elem.appendChild(document.createTextNode(strErr));
							document.getElementById("dvForm").insertBefore(elem, document.getElementById("dvForm").firstChild);
						}						
						
						break;
					default: //Missing info
						var fields = document.getElementsByTagName("input");
						document.getElementById("fieldError").style.display = "inline";
						
						for(var i = 0; i < fields.length;i++)
						{
							fields[i].style.backgroundColor = "";
						}
						if(strValue=="subject")
						{
							document.getElementById("dvSubject").style.backgroundColor = "#f9a948";
						}
						else
						{
							var elem = document.getElementsByName(strValue)[0];
							elem.style.backgroundColor = "#f9a948";
							elem.style.borderColor = "red";
						}
						document.getElementById("btnSubmit").disabled="";
				}
			}
			catch(e)
			{
				strErr = e.description;
				clearElement(document.getElementById("dvForm"));
				var strMessage = "<div class=\"errMessage\">An error has occured. Your request was not submitted. A possible reason may be an invalid email address. Please <a href=\"#contactus\" onclick=\"initRequest('contactus')\">try again</a> or contact us via one of the alternate methods below.</div>";
				var h = XMLtoHTML(loadXML(strMessage).firstChild,false);
				h.style.display = "inline";
				setElementContent(document.getElementById("dvForm"), h);
				elem = document.createElement("div");
				elem.id = "hiddenMessage";
				elem.appendChild(document.createTextNode(strErr));
				document.getElementById("dvForm").insertBefore(elem, document.getElementById("dvForm").firstChild);
			}
			hideBlanket();
		}
	}

	oRequest.open("POST", "./ajaxmailer.php", true);
	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oRequest.send(getFormString(new Array("fullname", "address", "city", "state", "zip", "phone", "email", "subject", "comments")));	
	
	return false;
}

function getFormString(elements){
	
	var strValue="";
	for(var i in elements)
	{
		oElem = document.getElementsByName(elements[i])[0];
		switch(oElem.type)
		{
			case "text":
			case "textarea":
			case "select-one":
				strValue += oElem.name + "=" + escape(oElem.value) + "&";
				break;
			case "radio":
				strValue += oElem.name + "=" + escape(getRadioValue(oElem.name)) + "&";
				break;
		}
	}
	
	return strValue+"foo=bar";
}

function getRadioValue(button)
{
	oCol = document.getElementsByName(button);
	for(elem = 0; elem < oCol.length; elem++)
	{
		if(oCol[elem].checked)
		{
			return oCol[elem].value;
		}
	}
	return "";
}

function showBlanket(){
	document.getElementById("blanket").style.height = document.getElementById("dvGlobal").clientHeight+"px";
	document.getElementById("blanket").style.display = "inline";
}

function hideBlanket(){
	document.getElementById("blanket").style.display = "none";
}
