// JavaScript Document
function invokeScript(scripts) {
	try {
		if (scripts != '') {
			var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,
					function() {
						if (scripts !== null)
							script += arguments[1] + '\n';
						return '';
					});
			if (script)
				(window.execScript) ? window.execScript(script) : window
						.setTimeout(script, 0);
		}
		return false;
	} catch (e) {
		alert(e)
	}
}

function getFormValues(fobj) {
	var str = "";
	var valueArr = null;
	var val = "";
	var cmd = "";

	for ( var i = 0; i < fobj.elements.length; i++) {
		switch (fobj.elements[i].type) {
		case "hidden":
			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value)
					+ "&";
			break;
		case "text":
			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value)
					+ "&";
			break;
		case "password":
			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value)
					+ "&";
			break;
		case "textarea":
			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value)
					+ "&";
			break;
		case "radio":
			if (fobj.elements[i].checked) {
				str += fobj.elements[i].name + "="
						+ escape(fobj.elements[i].value) + "&";
			}
			break;
		case "checkbox":
			if (fobj.elements[i].checked) {
				str += fobj.elements[i].name + "="
						+ escape(fobj.elements[i].value) + "&";
			}
			break;
		case "select-one":
			str += fobj.elements[i].name
					+ "="
					+ fobj.elements[i].options[fobj.elements[i].selectedIndex].value
					+ "&";
			break;
		case "select-multiple":
			if (!fobj.elements[i].disabled) {
				for ( var j = 0; j < fobj.elements[i].length; j++) {
					var optElem = fobj.elements[i].options[j];
					if (optElem.selected == true) {
						str += fobj.elements[i].name + "="
								+ escape(optElem.value) + "&";
					}
				}
			}
			break;
		}
	}
	str = str.substr(0, (str.length - 1));
	return str;
}

function findFormID(fobj) {
	var formid = "";

	for ( var i = 0; i < fobj.elements.length; i++) {
		switch (fobj.elements[i].type) {
		case "hidden":
			if (fobj.elements[i].name == "ajaxformid") {
				formid = escape(fobj.elements[i].value);
				return formid;
			}
			break;
		}
	}
	return "myform";
}

var http = null;;

function sub(f, file) {
	var str = getFormValues(f);
	var formid = findFormID(f);
	http = sendRequest(file, str, formid);
}

function createRequestObject() {
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http = new XMLHttpRequest();
		if (http.overrideMimeType) {
			http.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
			}
		}
	}

	if (!http) {
		alert('Cannot create XMLHTTP instance');
		return false;
	} else {
		return http;
	}
}

function sendRequest(file, str, formid) {
	if (!formid) {
		formid = "myform";
	}
	// Open PHP script for requests
	http = createRequestObject();
	http.open("POST", file, true);
	http.setRequestHeader("Content-Type",
			"application/x-www-form-urlencoded; charset=UTF-8");
	http.onreadystatechange = function() {
		handleResponse(formid)
	};
	http.send(str);
	return http;
}

function handleResponse(formid) {
	if (http.readyState == 4 && http.status == 200) {
		// Text returned FROM PHP script
		var response = http.responseText;
		if (response) {
			document.getElementById(formid).innerHTML = response;
			invokeScript(response);
		} else {
			alert('There was a problem with the request.');
		}
	}
}
