//XML functions

//Converts form data to a query string
//used to pass variables to php script 
//to generate XML search results
function formData2QueryString(docForm) {

	var strSubmit       = '';
	var formElem;
	var strLastElemName = '';
	var skip_area = false;
	var skip_city = false;

	for (i = 0; i < docForm.elements.length; i++) {
		formElem = docForm.elements[i];
		//refresh hack
		if(formElem.name == 'Area' && skip_area){
			continue;
		}
		if(formElem.name == 'City' && skip_city){
			continue;
		}
		switch (formElem.type) {
			// Text, select, hidden, password, textarea elements
			case 'radio':
				if(formElem.checked){
					strSubmit += formElem.name + '=' + escape(formElem.value) + '&';
				}
			break;

			case 'text':
			case 'select-one':
			case 'hidden':
			case 'password':
			case 'textarea':
				strSubmit += formElem.name + 
				'=' + escape(formElem.value) + '&'
			break;
		}
	}

	return strSubmit;
}

//decodes urlencoded strings
function URLDecode( encoded)
{
	// Replace + with ' '
	// Replace %xx with equivalent character
	// Put [ERROR] in output if %xx is invalid.
	var HEXCHARS = "0123456789ABCDEFabcdef"; 
	var plaintext = "";
	var i = 0;
	while (i < encoded.length) {
		var ch = encoded.charAt(i);
		if (ch == "+") {
			plaintext += " ";
			i++;
		} else if (ch == "%") {
			if (i < (encoded.length-2) 
			&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
			&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
			plaintext += unescape( encoded.substr(i,3) );
			i += 3;
		} else {
			plaintext += "%[ERROR]";
			i++;
		}
		} else {
			plaintext += ch;
			i++;
		}
	} // while
	return plaintext;
};


//Creates XML object, gets results from XML document
//and sends results to strResultFunc
function xmlhttpPost(strURL, strSubmit, strResultFunc, strWaitFunc, requestMethod) {
	/*
	if (xmlHttpReq != null && xmlHttpReq.readyState != 0 && xmlHttpReq.readyState != 4) { 
		xmlHttpReq.abort(); 
	} 
	*/

	var xmlHttpReq;

	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
		if(xmlHttpReq.overrideMimeType) {
			xmlHttpReq.overrideMimeType('text/xml');
		}
	}
	// IE
	else if (window.ActiveXObject) {
		xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}

	//make request based on requestMethod
	if(requestMethod = 'POST'){
		xmlHttpReq.open('POST', strURL, true);
		xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	}else{
		xmlHttpReq.open('GET', strURL + "?" + strSubmit, true);
		strSubmit = null;
	}

	xmlHttpReq.onreadystatechange = function() {
		if (xmlHttpReq.readyState == 4) {
			if(strResultFunc)
				eval(strResultFunc + "(xmlHttpReq)");
		}else{
			if(strWaitFunc)
				eval(strWaitFunc + "()");
		}
	}
	xmlHttpReq.send(strSubmit);
}

//extracts tag data from XML document
function getTag(xmldoc, tagname){
	return xmldoc.getElementsByTagName(tagname);
}

//extracts tag data from XML document
function getTagData(xmldoc, tagname){
	if(xmldoc.getElementsByTagName(tagname)[0]){
		if(xmldoc.getElementsByTagName(tagname)[0].firstChild){
			return xmldoc.getElementsByTagName(tagname)[0].firstChild.data;
		}
	}
	return '';
}
