
var ajCli;

String.prototype.parseURL = function(query) {
	var url=this,
			rx=/^((?:ht|f|nn)tps?)\:\/\/(?:([^\:\@]*)(?:\:([^\@]*))?\@)?([^\/]*)([^\?\#]*)(?:\?([^\#]*))?(?:\#(.*))?$/,
			rg=[null,'scheme','user','pass','host','path','query','fragment'],
			r=url.match(rx),i,q,ret={};
	if (r==null) return ret;
	for (i=1; i<rg.length; i++) {
		if (r[i]!=undefined) ret[rg[i]]=r[i];
	}        
	if (ret.path=='') ret.path='/';
	if (query!=undefined && r[6]!=undefined) {
		var q=r[6];
		ret.query={};
		q=q.split('&');
		for (var i=0; i<q.length; i++) {
			q[i]=q[i].split('=',2);
			ret.query[unescape(q[i][0])]=unescape(q[i][1]);
		}
	}
	return ret;
}

function getAjaxClient() {
	if(ajCli != undefined) {
		return ajCli;
	}
	if(window.XMLHttpRequest) {
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject) {
		var ajOb = false;
		try {
			ajOb = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(E) {
			ajOb = new ActiveXObject("Microsoft.XMLHTTP");
		}
		return ajOb;
	}
	return false;
}

function getValue(element) {
	var value;
	switch(element.type) {
		case 'hidden':
		case 'text':
		case 'textarea': {
			value = element.value;
			break;
		}
		case 'radio': {
			value = element.value;
			break;
		}
		case 'checkbox': {
			value = (element.checked) ? element.value : '';
			break;
		}
	}
	return value;
}

function packageData(data) {
	var ds = '';
	for(var i=0;i<data.length;i++) {
		ds += data[i].name + '=' + data[i].value + '&';
	}
	return ds;
}

function sendDataASync(url,data,handler) {
	var a = getAjaxClient();
	if( a == false ) {
		alert ( "This browser doesn't support AJAX requests." );
		return false;
	}
	a.open('POST', url, true);
	a.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	if(handler != undefined) {
		a.onreadystatechange = handler;
	}
	else {
		a.onreadystatechange = function () {
			alert(this.readyState);
		}
	}
	a.send(packageData(data));
	return true;
}

function sendFormData(myForm,url,handler) {
	var e = myForm.elements;
	if(e == undefined) {
		alert('Invalid form object was passed.');
		return false;
	}
	var sendData = new Array();
	var sendPacket;
	for(var i=0; i< e.length; i++) {
		var el = e[i];
		if(el.name == "") {
			continue;
		}
		sendPacket       = new Object();
		sendPacket.name  = el.name;
		sendPacket.value = getValue(el);
		sendData.push(sendPacket);
	}
	if ( sendDataASync(url,sendData, handler) ) {
		return true ;
	}
	return false;
}
