﻿/*
 * Post a form using AJAX
 * url - the page to handle submit.
 * parameters - the parameters to submit
 * funStr - a script to handle the XMLHttpRequest state change, the XMLHttpRequest Object named "http_request".
 */
function makePOSTRequest(url, parameters, funcStr) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	
	http_request.onreadystatechange = function(){eval(funcStr);};
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

/*
 * Form a parameters string from a Form object.
 * obj - a html form.
 */
function getParamsStr(obj) {
	var getstr = "";
	
	var objList = obj.getElementsByTagName("input");
	if ( objList ){
		for (i=0; i<objList.length; i++) {
			if ((objList[i].type == "text") || (objList[i].type == "hidden")) {
				getstr += (objList[i].name + "=" + objList[i].value + "&");
			}
		}
	}
	
	var selectList = obj.getElementsByTagName("select");
	if ( selectList ){
		for (i=0; i<selectList.length; i++) {
			getstr += (selectList[i].name + "=" + selectList[i].value + "&");
		}
	}
	if(obj.getElementsByTagName("textarea")) {
		for (i=0; i<obj.getElementsByTagName("textarea").length; i++) {
			getstr += obj.getElementsByTagName("textarea")[i].name + "=" + 
			escape(encodeURI(obj.getElementsByTagName("textarea")[i].value)) + "&";
		}
	}
	return getstr;
}

function getParamsStr2(obj) {
	  var getstr = '';
	  for (i=0; i<obj.getElementsByTagName("input").length; i++) {
			if (obj.getElementsByTagName("input")[i].type == "text") {
			   getstr += obj.getElementsByTagName("input")[i].name + "=" + 
					   obj.getElementsByTagName("input")[i].value + "&";
			}
			if (obj.getElementsByTagName("input")[i].type == "password") {
			   getstr += obj.getElementsByTagName("input")[i].name + "=" + 
					   obj.getElementsByTagName("input")[i].value + "&";
			}
			if (obj.getElementsByTagName("input")[i].type == "hidden") {
			   getstr += obj.getElementsByTagName("input")[i].name + "=" + 
					   obj.getElementsByTagName("input")[i].value + "&";
			}
			if (obj.getElementsByTagName("input")[i].type == "checkbox") {
			   if (obj.getElementsByTagName("input")[i].checked) {
				  getstr += obj.getElementsByTagName("input")[i].name + "=" + 
					   obj.getElementsByTagName("input")[i].value + "&";
			   } else {
				  getstr += obj.getElementsByTagName("input")[i].name + "=&";
			   }
			}
			if (obj.getElementsByTagName("input")[i].type == "radio") {
			   if (obj.getElementsByTagName("input")[i].checked) {
				  getstr += obj.getElementsByTagName("input")[i].name + "=" + 
					   obj.getElementsByTagName("input")[i].value + "&";
			   }
			 }  
		  }
	  for (i=0; i<obj.getElementsByTagName("select").length; i++) {
			   getstr += obj.getElementsByTagName("select")[i].name + "=" + 
					   obj.getElementsByTagName("select")[i].value + "&";
		}
	  for (i=0; i<obj.getElementsByTagName("textarea").length; i++) {
			   getstr += obj.getElementsByTagName("textarea")[i].name + "=" + 
					   escape(encodeURI(obj.getElementsByTagName("textarea")[i].value)) + "&";
		}
 	return getstr;
}


/*
 * To Submit a form by Ajax
 * from - is a HTML Form Object
 * funcStr - is a javascript to be execute when callback.
 */
function ajaxFormSubmit( formObj, funcStr ){
	if ( (formObj) && (formObj.tagName == 'FORM')){
		var params = getParamsStr( formObj );
		makePOSTRequest( formObj.action, params, funcStr );
	}
	
	return false;
}


function evalScripts(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)
	}
}