/*

SimpleAjax for SimpleJS ver 0.1 beta

------------------------------------

SimpleJS is developed by Christophe "Dyo" Lefevre (http://bleebot.com/)

$ajax function is based on Simple AJAX Code-Kit (SACK)

Gregory Wild-Smith (http://www.twilightuniverse.com/)

*/

var enableCache=true;

var jsCache=new Array();

var DynObj=new Array();

function $ajax(_1){

this.xmlhttp=null;

this.resetData=function(){

this.method="POST";

this.queryStringSeparator="?";

this.argumentSeparator="&";

this.URLString="";

this.encodeURIString=true;

this.execute=false;

this.element=null;

this.elementObj=null;

this.requestFile=_1;

this.vars=new Object();

this.responseStatus=new Array(2);

};

this.resetFunctions=function(){

this.onLoading=function(){

};

this.onLoaded=function(){

};

this.onInteractive=function(){

};

this.onCompletion=function(){

};

this.onError=function(){

};

this.onFail=function(){

};

};

this.reset=function(){

this.resetFunctions();

this.resetData();

};

this.crAjx=function(){

try{

this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e1){

try{

this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

catch(e2){

this.xmlhttp=null;

}

}

if(!this.xmlhttp){

if(typeof XMLHttpRequest!="undefined"){

this.xmlhttp=new XMLHttpRequest();

}else{

this.failed=true;

}

}

};

this.setVar=function(_2,_3){

this.vars[_2]=Array(_3,false);

};

this.encVar=function(_4,_5,_6){

if(true==_6){

return Array(encodeURIComponent(_4),encodeURIComponent(_5));

}else{

this.vars[encodeURIComponent(_4)]=Array(encodeURIComponent(_5),true);

}

};

this.processURLString=function(_7,_8){

encoded=encodeURIComponent(this.argumentSeparator);

regexp=new RegExp(this.argumentSeparator+"|"+encoded);

varArray=_7.split(regexp);

for(i=0;i<varArray.length;i++){

urlVars=varArray[i].split("=");

if(true==_8){

this.encVar(urlVars[0],urlVars[1]);

}else{

this.setVar(urlVars[0],urlVars[1]);

}

}

};

this.createURLString=function(_9){

if(this.encodeURIString&&this.URLString.length){

this.processURLString(this.URLString,true);

}

if(_9){

if(this.URLString.length){

this.URLString+=this.argumentSeparator+_9;

}else{

this.URLString=_9;

}

}

this.setVar("rndval",new Date().getTime());

urlstringtemp=new Array();

for(key in this.vars){

if(false==this.vars[key][1]&&true==this.encodeURIString){

encoded=this.encVar(key,this.vars[key][0],true);

delete this.vars[key];

this.vars[encoded[0]]=Array(encoded[1],true);

key=encoded[0];

}

urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0];

}

if(_9){

this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator);

}else{

this.URLString+=urlstringtemp.join(this.argumentSeparator);

}

};

this.runResponse=function(){

eval(this.response);

};

this.runAJAX=function(_a){

if(this.failed){

this.onFail();

}else{

this.createURLString(_a);

if(this.element){

this.elementObj=$(this.element);

}

if(this.xmlhttp){

var _b=this;

if(this.method=="GET"){

totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString;

this.xmlhttp.open(this.method,totalurlstring,true);

}else{

this.xmlhttp.open(this.method,this.requestFile,true);

try{

this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

}

catch(e){

}

}

this.xmlhttp.onreadystatechange=function(){

switch(_b.xmlhttp.readyState){

case 1:

_b.onLoading();

break;

case 2:

_b.onLoaded();

break;

case 3:

_b.onInteractive();

break;

case 4:

_b.response=_b.xmlhttp.responseText;

_b.responseXML=_b.xmlhttp.responseXML;

_b.responseStatus[0]=_b.xmlhttp.status;

_b.responseStatus[1]=_b.xmlhttp.statusText;

if(_b.execute){

_b.runResponse();

}

if(_b.elementObj){

elemNodeName=_b.elementObj.nodeName;

elemNodeName.toLowerCase();

if(elemNodeName=="input"||elemNodeName=="select"||elemNodeName=="option"||elemNodeName=="textarea"){

_b.elementObj.value=_b.response;

}else{

_b.elementObj.innerHTML=_b.response;

}

}

if(_b.responseStatus[0]=="200"){

_b.onCompletion();

}else{

_b.onError();

}

_b.URLString="";

break;

}

};

this.xmlhttp.send(this.URLString);

}

}

};

this.reset();

this.crAjx();

}

function ajax_installScript(_c){

if(!_c){

return;

}

if(window.execScript){

window.execScript(_c);

}else{

if(window.jQuery&&jQuery.browser.safari){

STO(_c,0);

}else{

STO(_c,0);

}

}

}

function $ajax_show(_d,_e,_f,_10,_11){

if(_11=="appear"){

$opacity(_d,0,101,600);

}

if(_11=="highlight"){

$highlight(_d);

}

var _12=$(_d);

_12.innerHTML=DynObj[_e].response;

if(_11=="blind"){

$(_d).style.position="";

$blinddown(_d);

}

if(enableCache){

jsCache[_f]=DynObj[_e].response;

}

DynObj[_e]=false;

ajax_parseJs(_12);

}

function $ajaxreplace(_13,url){

$opacity(_13,100,0,400);

$(_13).style.height="";

scr="$ajaxload('"+_13+"','"+url+"',false,'appear',false)";

STO(scr,800);

}

function $ajaxload(_15,url,_17,_18,_19){

if(_18=="appear"){

changeOpac(0,_15);

}

if(_18=="blind"){

var ids=$(_15).style;

ids.overflow="hidden";

ids.display="block";

ids.height="0px";

}

if(_19){

if(enableCache&&jsCache[url]){

if(_18=="appear"){

$opacity(_15,0,101,600);

}

if(_18=="highlight"){

$highlight(_15);

}

$(_15).innerHTML=jsCache[url];

if(_18=="blind"){

$(_15).style.position="";

$blinddown(_15);

}

return;

}

}

var _1b=DynObj.length;

if(_17!=false){

$(_15).innerHTML=_17;

}

DynObj[_1b]=new $ajax();

DynObj[_1b].requestFile=url;

DynObj[_1b].onCompletion=function(){

$ajax_show(_15,_1b,url,_17,_18);

};

DynObj[_1b].runAJAX();

}

function ajax_parseJs(obj){

var _1d=obj.getElementsByTagName("SCRIPT");

var _1e="";

var _1f="";

for(var no=0;no<_1d.length;no++){

if(_1d[no].src){

var _21=document.getElementsByTagName("head")[0];

var _22=document.createElement("script");

_22.setAttribute("type","text/javascript");

_22.setAttribute("src",_1d[no].src);

}else{

if(DHTMLSuite.clientInfoObj.isOpera){

_1f=_1f+_1d[no].text+"\n";

}else{

_1f=_1f+_1d[no].innerHTML;

}

}

}

if(_1f){

ajax_installScript(_1f);

}

}
