function _Request(fnCallBack,sType,sUrl,sPostData){
try{
var oAjax= new XMLHttpRequest();
if(!oAjax){
return false;
}
oAjax.open(sType,sUrl,true);
if((new String(sType)).toLowerCase()=='post'){
oAjax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
oAjax.setRequestHeader("Content-length",sPostData.length);
oAjax.setRequestHeader("Connection","close");
}else if(oAjax.overrideMimeType){
oAjax.setRequestHeader("Connection","close");
}
oAjax.onreadystatechange=function(){
if(oAjax.readyState==4){
fnCallBack(oAjax);
}
}
oAjax.send(sPostData);
}catch(e){}
}
function _Get(o) {
switch(typeof(o)){
case 'object':
return o;
break;
case 'string':
return document.getElementById(o);
break;
}
return null;
}
function _Element(sTag, oAttr, oParent){
var eTmp=document.createElement(sTag);
for(var sKey in oAttr){
if(typeof(oAttr[sKey]) == 'string'){
eTmp[sKey] = oAttr[sKey];
}else if((new String(typeof(oAttr[sKey]))).toLowerCase() == 'object') {
for(var subKey in oAttr[sKey]) {
eTmp[sKey][subKey] = oAttr[sKey][subKey];
}
}
}
oParent.appendChild(eTmp);
return _Get(eTmp);
}
function _Listen(e, sType, fnCallBack){
try{
var oEl = _Get(e);
if(oEl.addEventListener){
oEl.addEventListener(sType, fnCallBack, true);
}else{
oEl.attachEvent('on'+sType, fnCallBack);
}
}catch(e){}
}
function _Restore(sFormId) {
var oForm = _Get(sFormId);
var aInput = oForm.getElementsByTagName('input');
for(var i = 0; i < aInput.length; i++){
if((new String(aInput[i].type)).toLowerCase()=='submit' && aInput[i].restore){
aInput[i].restore();
}
}
}
function _Form(sFormId, fnCallBack){
var oForm = _Get(sFormId);
oForm.onsubmit = function() {return false;}
var fnButtonClick = function(){
var aData = new Array();
if(this.name){
aData.push(this.name + '=' + escape(this.value));
this.disabled = true;
this.oldValue = this.value;
this.value = 'Loading';
this.restore = function() {
this.value = this.oldValue;
this.disabled = false;
}
setTimeout('_Restore("'+sFormId+'")', 1000);
}
var aInput = oForm.getElementsByTagName('input');
for(var i = 0; i < aInput.length; i++){
switch(aInput[i].type){
case 'radio':
case 'checkbox':
if(aInput[i].checked){
aData.push(aInput[i].name + '=' + escape(aInput[i].value));
}
break;
case 'text':
case 'password':
aData.push(aInput[i].name + '=' + escape(aInput[i].value));
break;
}
}
var aText = oForm.getElementsByTagName('textarea');
for(var i = 0; i < aText.length; i++){
aData.push(aText[i].name + '=' + escape(aText[i].innerHTML));
}
var aSelect = oForm.getElementsByTagName('select');
for(var i = 0; i < aSelect.length; i++){
if(aSelect[i].multiple){
for(var j = 0; j < aSelect[i].options.length; j++){
if(aSelect[i].options[j].selected){
aData.push(aSelect[i].name + '=' + escape(aSelect[i].options[j].value));
}
}
}else{
aData.push(aSelect[i].name + '=' + escape(aSelect[i].options[aSelect[i].selectedIndex].value));
}
}
var sAction = oForm.action;
var sData = aData.join('&');
var sPostData = null;
if((new String(oForm.method)).toLowerCase()=='post'){
sPostData = sData;
}else{
if(sAction.match('/\?/')){
sAction += '&'+sData;
}else{
sAction += '?'+sData;
}
}
_Request(fnCallBack, oForm.method, sAction, sPostData);
}
var aInput = oForm.getElementsByTagName('input');
for(var i = 0; i < aInput.length; i++){
if((new String(aInput[i].type)).toLowerCase()=='submit'){
aInput[i].onclick = function(){return false;}
_Listen(aInput[i], 'click', fnButtonClick);
}
}
}
