<!--//

function isResponseValidSignup(doc)
{
	var root = doc.documentElement;
	var xml_response;
	var data_element;
	var noErrorFound = true;
	// Get the root node's first child
	if (root.hasChildNodes())
	{
		// Assign the child nodes as xml response
		xml_response = root.childNodes;
	}
	// Look at only the first node
	if (xml_response[0].hasChildNodes())
	{
		// Get the nodes contained in the <xmlresponse>
		data_element = xml_response[0].childNodes;
		
		for (var i = 0; i < data_element.length || !noErrorFound; i++)
		{
			// Check for the node <error>
			if ( data_element[i].nodeName == "error" )
			{
				// We found at least one error while processing response
				noErrorFound = false;
			}
		}
	}
	return noErrorFound;
}

function setQueryStringSignup()
{
	queryString = "";
	var frm = this.document.signup_form;
	var numberElements = frm.elements.length;
	for (var i = 0; i < numberElements; i++)
	{
		if (i < numberElements - 1)
		{
			queryString += frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].value) + "&";
		}
		else
		{
			queryString += frm.elements[i].name + "=" + encodeURIComponent(frm.elements[i].value);
		}
	}
}
function handleResponseSignup()
{
	var bValidResponse = false;
	var element;

	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			// Set the content section to the message
			var output = "";

		    output += "<p class='medium'>Thank you for signing up.</p>\n";
		    output += "<p class='medium'>Please login to continue.</p>\n";
		
			var error_output = "";
			error_output += "<p class='medium'>We are sorry, an error was encountered while processing your request.</p>\n";
			error_output += "<p class='medium'>Please try again, or</p>\n";
			error_output += "<p class='medium'>Send an email to <script language='JavaScript' type='text/javascript'>runIt();</script>.</p>\n";
			
			// Pull back the XML from the request			
			var respXML = request.responseXML;
			
			//alert(request.responseText); // For debugging
			
			// Parse the XML Response to see that no errors encountered
			bValidResponse = isResponseValidSignup(respXML);
			
			element = document.getElementById("content");
			
			// If we have a valid response
			if (bValidResponse)
			{
				element.innerHTML = output;
				return true;
			}
			// Otherwise display an error message
			else
			{
				element.innerHTML = error_output;
				return false;
			}
		}
		else
		{
			error_output += "<br><p class='medium'>Browser returned the ready state, " + request.readyState + ", with a status of " + request.status + "</p>\n";
			element.innerHTML = error_output;
			return false;
		}
	}
}
function initReqSignup(reqType,url,isAsynch)
{
	request.onreadystatechange=handleResponseSignup;
	request.open(reqType,url,isAsynch);
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	request.send(queryString);
}

function httpRequestSignup(reqType, url, asynch)
{
	var element;
	if (window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
		if (!request)
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	if (request)
	{
		initReqSignup(reqType,url,asynch);
		return true;
	}
	else
	{
		var error_output = "";
		
	    error_output += "<p class='medium'>We are sorry, your browser does not support HTTP Requests.</p>\n";
	    error_output += "<p class='medium'>Please upgrade your browser and try again, or</p>\n";
	    error_output += "<p class='medium'>Send us an email directly from the <a href='contact_us.html'>Contact Us</a> page.</p>\n";	
		element = document.getElementById("content");
		element.innerHTML = error_output;
		return false;
	}
}

function validateSignupForm()
{
	var isValid = true;
	var isUnitedStates = false;
	var element;
	// Verify Contact Name
	if ( this.document.signup_form.contact_name.value == null || 
	     this.document.signup_form.contact_name.value == "" || 
		 isBlank(this.document.signup_form.contact_name.value)  )
	{
		element = document.getElementById("contact_name_element");
		element.innerHTML = "Please enter a contact name.";
		isValid = false;
	}
	else
	{
		element = document.getElementById("contact_name_element");
		element.innerHTML = "";
	}
	// Verify Organization Name
	if ( this.document.signup_form.organization_name.value == null || 
	     this.document.signup_form.organization_name.value == "" || 
		 isBlank(this.document.signup_form.organization_name.value)  )
	{
		element = document.getElementById("organization_name_element");
		element.innerHTML = "Please enter an organization name.";
		isValid = false;
	}
	else
	{
		element = document.getElementById("organization_name_element");
		element.innerHTML = "";
	}

	// Verify Email Address
	if ( !isValidEmail(this.document.signup_form.email_address.value)  )
	{
		element = document.getElementById("email_address_element");
		element.innerHTML = "Please enter a valid email address.";
		isValid = false;
	}
	else
	{
		element = document.getElementById("email_address_element");
		element.innerHTML = "";
	}
	
	if ( this.document.signup_form.user_password.value == null ||
	     this.document.signup_form.user_password.value == "" ||
	     isBlank(this.document.signup_form.user_password.value) )
	{
		element = document.getElementById("password_element");
		element.innerHTML = "Please enter a password.";
		isValid = false;
	}
	else
	{
		element = document.getElementById("password_element");
		element.innerHTML = "";
	}
	
	if ( this.document.signup_form.retype_password.value == null ||
	     this.document.signup_form.retype_password.value == "" ||
	     isBlank(this.document.signup_form.retype_password.value) )
	{
		element = document.getElementById("retype_password_element");
		element.innerHTML = "Please re-type your password.";
		isValid = false;
	}
	else
	{
		element = document.getElementById("retype_password_element");
		element.innerHTML = "";
	}
	
	if ( this.document.signup_form.retype_password.value != this.document.signup_form.user_password.value )
	{
	    element = document.getElementById("password_match_element");
	    element.innerHTML = "Your passwords do not match, please re-type them.";
	    isValid = false;
	}
	else
	{
	    element = document.getElementById("password_match_element");
	    element.innerHTML = "";
	}
	
	if (!isValid)
	{
		element = document.getElementById("sorry");
		element.innerHTML = "Sorry, we need more information to complete your request.<br />Please review the errors below indicated in red.<br /><br />";
	}
	else
	{
		element = document.getElementById("sorry");
		element.innerHTML = "";
	}
	// Jump to the top of the window
	window.scroll(0,0);
	
	return isValid;
}
function sendSignupData(url)
{
	var element;
	
	if ( !document.getElementById("content") )
	{
		return;
	}
	// Only make a request if we have a valid form
	if ( validateSignupForm() )
	{
		setQueryStringSignup();
		element = document.getElementById("content");
		element.innerHTML = "<p class='medium'>Processing your request, please wait.</p>\n";
		httpRequestSignup("POST",url,true);
	}

}
//-->
