/*    
    new Ajax(String url,Array data)
    onSuccess(Function function|String function_name,Mixed argument)
    onFailure(Function function|String function_name,Mixed argumen)
    onLoading(Function function|String function_name,Mixed argumen)
    onLoaded(Function function|String function_name,Mixed argumen)
    doRequest()
*/
function Ajax(url,data){var xmlHttp=null;var onSuccessCbF='';var onSuccessMth='';var onFailureCbF='';var onLoadingCbF='';var onLoadedCbF='';var onSuccessArg='';var onFailureArg='';var onLoadingArg='';var onLoadedArg='';var notrun=true;function init(){if(window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}else if(window.ActiveXObject){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}}this.doRequest=function(){init();xmlHttp.onreadystatechange=getResponse;xmlHttp.open("POST",url,true);xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlHttp.send(JSON.stringify(data));};function getResponse(){switch(xmlHttp.readyState){case 1:_onLoading();break;case 2:_onLoaded();break;case 4:if(xmlHttp.status==200){_onSuccess();}else{_onFailure();}break;default:break;}}function getXmlResponse(){return xmlHttp.responseXML;}function getTextResponse(){return xmlHttp.responseText;}function _onSuccess(){if(onSuccessCbF==''){delete xmlHttp;return false;}var output='';switch(onSuccessMth){default:case"text":output=getTextResponse();break;case"xml":output=getXmlResponse();break;}output=eval("("+output+")");eval("onSuccessCbF(output,onSuccessArg)");delete xmlHttp;return true;}function _onFailure(){var output=getTextResponse();if(onFailureCbF==''){alert(output);}else{eval("onFailureCbF(output,onFailureArg)");}delete xmlHttp;return true;}function _onLoading(){if(notrun){notrun=false;if(onLoadingCbF==''){delete xmlHttp;return false;}eval("onLoadingCbF(onLoadingArg)");delete xmlHttp;return true;}}function _onLoaded(){if(onLoadedCbF==''){delete xmlHttp;return false;}eval("onLoadedCbF(onLoadedArg)");delete xmlHttp;return true;};this.onSuccess=function(callback_fce,arg){if(typeof callback_fce=="string"){callback_fce=eval(callback_fce);}onSuccessCbF=callback_fce;onSuccessMth="text";onSuccessArg=arg;};this.onFailure=function(callback_fce,arg){if(typeof callback_fce=="string"){callback_fce = eval(callback_fce);}onFailureCbF=callback_fce;onFailureArg=arg;};this.onLoading=function(callback_fce,arg){if(typeof callback_fce=="string"){callback_fce = eval(callback_fce);}onLoadingCbF=callback_fce;onLoadingArg=arg;};this.onLoaded=function(callback_fce,arg){if(typeof callback_fce=="string"){callback_fce = eval(callback_fce);}onLoadedCbF=callback_fce;onLoadedArg=arg;}}if(!this.JSON){JSON=function(){function f(n){return n<10?'0'+n:n;}Date.prototype.toJSON=function(){return this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z';};var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;function quote(string){return escapeable.test(string)?'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"':'"'+string+'"';}function is_assoc(array){var len=array.length;var real_len=0;for(var key in array){real_len++;}if(len==real_len){return false;}else{return true;}}function stringify(key,holder,replacer){var i,k,v,length,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof replacer==='function'){value=replacer.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}partial=[];if(!is_assoc(value)){length=value.length;for(i=0;i<length;i+=1){partial[i]=stringify(i,value,replacer)||'null';}return'['+partial.join(',')+']';}if(typeof replacer==='object'){length=replacer.length;for(i=0;i<length;i+=1){k=replacer[i];if(typeof k==='string'){v=stringify(k,value,replacer);if(v){partial.push(quote(k)+':'+v);}}}}else{for(k in value){v=stringify(k,value,replacer);if(v){partial.push(quote(k)+':'+v);}}}return'{'+partial.join(',')+'}';}}return{stringify:function(value,replacer){if(typeof replacer!=='function'){if(!replacer){replacer=function(key,value){if(!Object.hasOwnProperty.call(this,key)){return undefined;}return value;};}else if(typeof replacer!=='object'||typeof replacer.length!=='number'){throw new Error('JSON.stringify');}}return stringify('',{'':value},replacer);},parse:function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}if(/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');},quote:quote};}();}