window.AJAX={url_append:function(a,b){b=AJAX.serialize(b);if(b.length){a+=(a.indexOf("?")==-1?"?":"&")+b}return a},serialize:function(e){var d="";if(typeof e=="undefined"){e=""}var a=function(g){for(var c in g){if(d.length){d+="&"}d+=encodeURIComponent(c)+"="+encodeURIComponent(g[c].toString())}};if(e instanceof Array){for(var b=0,f=e.length;b<f;b++){a(e[b])}}else{if(typeof e=="object"){a(e)}else{if(d.length){d+="&"}d+=(e+"")}}return d},catched:function(b,a){throw new Error("AJAX ERROR: "+b.toString()+": Server response: "+a)},update:function(id,url,data,method,args){if(!args||typeof args!="object"){args={}}args.url=url;args.data=(this.serialize(data)+"&"+this.serialize(args.data)).replace(/(^&+)|(&+$)/g,"");args.method=method;var request=null;args.onComplete=function(status,transport){if(status=="success"){var html=transport.responseText;var obj=(typeof id=="string"?document.getElementById(id):id);if(obj){obj.innerHTML=html}var scriptsRegExp="<script.*?>(?:\\s*<!\\-\\-)?\\s*((?:.|\\n)*?)<\\/script>";var allScripts=html.match(new RegExp(scriptsRegExp,"ig"));if(allScripts){var scriptsCount=allScripts.length;for(var i=0;i<scriptsCount;i++){try{eval(allScripts[i].match(new RegExp(scriptsRegExp,"i"))[1])}catch(e){AJAX.catched(e,html)}}}}request=null};request=new AJAX.request(args);return request},run:function(url,data,method,args){if(!args||typeof args!="object"){args={}}args.url=url;args.data=(this.serialize(data)+"&"+this.serialize(args.data)).replace(/(^&+)|(&+$)/g,"");args.method=method;if(args.headers&&typeof args.headers=="object"){args.headers.Accept="text/javascript"}else{args.headers={Accept:"text/javascript"}}var request=null;args.onComplete=function(status,transport){if(status=="success"){var script_body=transport.responseText.replace(/^\s*<\!\-\-\s*/,"");try{eval(script_body)}catch(e){AJAX.catched(e,script_body)}}request=null};request=new AJAX.request(args);return request},fire:function(callback,url,data,method,args){if(!args||typeof args!="object"){args={}}args.url=url;args.data=(this.serialize(data)+"&"+this.serialize(args.data)).replace(/(^&+)|(&+$)/g,"");args.method=method;var request=null;args.onComplete=function(status,transport){if(status=="success"){var data=transport.responseText;var content_type=transport.getResponseHeader("Content-Type");request=null;try{if(content_type.match(new RegExp("application/json"))){eval("data = "+data)}callback(data)}catch(e){AJAX.catched(e,data)}}};request=new AJAX.request(args);return request},form:function(k,j,f,m){var h=new Array();var d=location.pathname;var a="GET";if(typeof k=="string"){k=document.getElementById(k)}if(k&&k.elements){if(k.action.length){d=k.action}if(k.method.toUpperCase()=="POST"){a="POST"}for(var l=0,n=k.elements.length;l<n;l++){var g=k.elements[l];if(g.name&&!g.disabled){switch(g.type){case"radio":case"checkbox":if(g.checked){var e={};e[g.name]=g.value;h.push(e)}break;case"select-one":for(var o=0,b=g.options.length;o<b;o++){if(g.options[o].selected){var e={};e[g.name]=g.options[o].value;h.push(e);break}}break;case"select-multiple":for(var o=0,b=g.options.length;o<b;o++){if(g.options[o].selected){var e={};e[g.name]=g.options[o].value;h.push(e)}}break;default:var e={};e[g.name]=g.value;h.push(e)}}}}if(j=="run"){return this.run(d,h,a,m)}else{if(j=="update"){return this.update(f,d,h,a,m)}else{if(j=="fire"){return this.fire(f,d,h,a,m)}else{return false}}}}};AJAX.counter=0;AJAX.request=function(d){if(!d||typeof d!="object"){d={}}var m=AJAX.counter++;var b={onComplete:null,onError:null,onSuccess:null};var f=d.method?d.method.toUpperCase():"GET";var c=d.headers||{};var h=d.url||location.href;var s=d.data||{};var i=typeof d.async=="undefined"?true:d.async;var g=d.username||null;var a=d.password||null;var q=null;var j=d.timeout||0;if(d.onComplete&&typeof d.onComplete=="function"){b.onComplete=d.onComplete}if(d.onSuccess&&typeof d.onSuccess=="function"){b.onSuccess=d.onSuccess}if(d.onError&&typeof d.onError=="function"){b.onError=d.onError}if(d.transport&&typeof d.transport=="function"){q=d.transport()}else{if(d.transport&&typeof d.transport=="object"){q=d.transport}else{if(!q){try{q=new XMLHttpRequest()}catch(r){}}if(!q){try{q=new ActiveXObject("Msxml2.XMLHTTP")}catch(r){}}if(!q){try{q=new ActiveXObject("Microsoft.XMLHTTP")}catch(r){}}}}if(!q){throw new Error("Cannot create XmlHttpRequest object")}else{if(f=="GET"){h=AJAX.url_append(h,s);h=AJAX.url_append(h,"ajaxrndcmpnt="+Math.random())}if(g){q.open(f,h,i,g,a)}else{q.open(f,h,i)}if(f=="POST"){q.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}q.setRequestHeader("X-Requested-With","XMLHttpRequest");for(header_name in c){q.setRequestHeader(header_name,c[header_name])}var n=false;var p=false;var l=false;var o=null;var k=q.onreadystatechange=function(t){if(n){if(t=="aborted"||t=="timeout"||q.readyState==4){n=false;if(p){t="aborted"}else{if(l){t="timeout"}else{t="success"}}if(b.onComplete){b.onComplete(t,q)}if(t=="success"&&b.onSuccess){b.onSuccess(t,q)}if(t!="success"&&b.onError){b.onError(t,q)}try{q.onreadystatechange=null;q=null}catch(u){}if(o){clearTimeout(o);o=null}}}};this.abort=function(){if(n){p=true;q.abort();k("aborted")}};n=true;q.send(f=="POST"?AJAX.serialize(s):"");if(!i){k()}else{if(j>0){o=setTimeout(function(){l=true;k("timeout")},j)}}}};
