/*******************************************************************************

FILE: mud_Scripts.js
REQUIRES: mud_API.js
AUTHOR: Takashi Okamoto mud(tm) - http://www.mudcorp.com/
VERSION: 1.0 - initial public release
DATE: 11/12/2005

*******************************************************************************/

////////////////////////////////////////////////////////////////////////////////
// GLOBAL VARS

var req;

////////////////////////////////////////////////////////////////////////////////
// FUNCTIONS

function loadXMLDoc(url, postData) {
	req = false;
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		}
		catch(e) {
			req = false;
		}
	}
	else if(window.ActiveXObject) {
		isIE = true;
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
        	try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
				req = false;
        	}
		}
	}
	if(req) {
		
		req.onreadystatechange = processReqChange;
		req.open("POST", url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(postData);
	}
}

function processReqChange() {
	// only if req shows "loaded"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			var item = req.responseXML.getElementsByTagName('item')[0];
			if (getElementTextNS("", "status", item, 0) == 'ERROR') { 
				getRawObject("status").innerHTML = "ERROR: Could not send message. Please try again.";
			}
			else {
				unsetDisplay("contactForm");
				var name = getRawObject('sendername').value;
				getRawObject("status").innerHTML = "Thanks " + name + ". Your message has been sent.";
			}
		}
	}
}

// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
	var result = "";
	if (prefix && isIE) {
		// IE/Windows way of handling namespaces
		result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
	} else {
		result = parentElem.getElementsByTagName(local)[index];
	}
	if (result) {
		// get text, accounting for possible
		// whitespace (carriage return) text nodes 
		if (result.childNodes.length > 1) {
			return result.childNodes[1].nodeValue;
		} else {
			return result.firstChild.nodeValue;    		
		}
	}
	else {
		return "";
	}
}

function checkFields() {
	var sendername = getRawObject('sendername').value;
	sendername = sendername.replace(/&/g,"\&");
	sendername = sendername.replace(/\+/g,"\+");
	sendername = sendername.replace(/\=/g,"\=");
	
	var senderemail = getRawObject('senderemail').value;
	senderemail = senderemail.replace(/&/g,"\&");
	senderemail = senderemail.replace(/\+/g,"\+");
	senderemail = senderemail.replace(/\=/g,"\=");
	
	var message = getRawObject('message').value;
	message = message.replace(/&/g,"\&");
	message = message.replace(/\+/g,"\+");
	message = message.replace(/\=/g,"\=");
	
	if (!sendername || !senderemail || !message) {
		alert('Please make sure all fields are filled.');
		return false;
	}
	else if (!isIEMac) {
		var postData = "xml=true&sendername="+sendername+"&senderemail="+senderemail+"&message="+message;
		loadXMLDoc('/send.php', postData);
		return false;
	}
	else return true;
}

////////////////////////////////////////////////////////////////////////////////
// INIT

function mudInit() {
	initDHTMLAPI();
}

////////////////////////////////////////////////////////////////////////////////
// WINDOW EVENTS

// gecko, safari, konqueror and generic
if (typeof window.addEventListener != 'undefined') {
	window.addEventListener('load', mudInit, false);
}
// opera 7
else if (typeof document.addEventListener != 'undefined') {
	document.addEventListener('load', mudInit, false);
}
// win/ie
else if (typeof window.attachEvent != 'undefined') {
	window.attachEvent("onload", mudInit);
}
// rest
else {
	window.onload = mudInit;
}
