YAHOO.util.Connect={_msxml_progid:["Microsoft.XMLHTTP","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP"],_http_headers:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:"application/x-www-form-urlencoded; charset=UTF-8",_default_form_header:"application/x-www-form-urlencoded",_use_default_xhr_header:true,_default_xhr_header:"XMLHttpRequest",_has_default_headers:true,_default_headers:{},_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,_submitElementValue:null,_hasSubmitListener:(function(){if(YAHOO.util.Event){YAHOO.util.Event.addListener(document,"click",function(B){var A=YAHOO.util.Event.getTarget(B);
if(A.nodeName.toLowerCase()=="input"&&(A.type&&A.type.toLowerCase()=="submit")){YAHOO.util.Connect._submitElementValue=encodeURIComponent(A.name)+"="+encodeURIComponent(A.value)
}});
return true
}return false
})(),startEvent:new YAHOO.util.CustomEvent("start"),completeEvent:new YAHOO.util.CustomEvent("complete"),successEvent:new YAHOO.util.CustomEvent("success"),failureEvent:new YAHOO.util.CustomEvent("failure"),uploadEvent:new YAHOO.util.CustomEvent("upload"),abortEvent:new YAHOO.util.CustomEvent("abort"),_customEvents:{onStart:["startEvent","start"],onComplete:["completeEvent","complete"],onSuccess:["successEvent","success"],onFailure:["failureEvent","failure"],onUpload:["uploadEvent","upload"],onAbort:["abortEvent","abort"]},setProgId:function(A){this._msxml_progid.unshift(A);
YAHOO.log("ActiveX Program Id  "+A+" added to _msxml_progid.","info","Connection")
},setDefaultPostHeader:function(A){if(typeof A=="string"){this._default_post_header=A;
YAHOO.log("Default POST header set to  "+A,"info","Connection")
}else{if(typeof A=="boolean"){this._use_default_post_header=A
}}},setDefaultXhrHeader:function(A){if(typeof A=="string"){this._default_xhr_header=A;
YAHOO.log("Default XHR header set to  "+A,"info","Connection")
}else{this._use_default_xhr_header=A
}},setPollingInterval:function(A){if(typeof A=="number"&&isFinite(A)){this._polling_interval=A;
YAHOO.log("Default polling interval set to "+A+"ms","info","Connection")
}},createXhrObject:function(E){var D,A;
try{A=new XMLHttpRequest();
D={conn:A,tId:E};
YAHOO.log("XHR object created for transaction "+E,"info","Connection")
}catch(C){for(var B=0;
B<this._msxml_progid.length;
++B){try{A=new ActiveXObject(this._msxml_progid[B]);
D={conn:A,tId:E};
YAHOO.log("ActiveX XHR object created for transaction "+E,"info","Connection");
break
}catch(C){}}}finally{return D
}},getConnectionObject:function(A){var C;
var D=this._transaction_id;
try{if(!A){C=this.createXhrObject(D)
}else{C={};
C.tId=D;
C.isUpload=true
}if(C){this._transaction_id++
}}catch(B){}finally{return C
}},asyncRequest:function(F,C,E,A){var D=(this._isFileUpload)?this.getConnectionObject(true):this.getConnectionObject();
var B=(E&&E.argument)?E.argument:null;
if(!D){YAHOO.log("Unable to create connection object.","error","Connection");
return null
}else{if(E&&E.customevents){this.initCustomEvents(D,E)
}if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(D,E,C,A);
return D
}if(F.toUpperCase()=="GET"){if(this._sFormData.length!==0){C+=((C.indexOf("?")==-1)?"?":"&")+this._sFormData
}}else{if(F.toUpperCase()=="POST"){A=A?this._sFormData+"&"+A:this._sFormData
}}}if(F.toUpperCase()=="GET"&&(E&&E.cache===false)){C+=((C.indexOf("?")==-1)?"?":"&")+"rnd="+new Date().valueOf().toString()
}D.conn.open(F,C,true);
if(this._use_default_xhr_header){if(!this._default_headers["X-Requested-With"]){this.initHeader("X-Requested-With",this._default_xhr_header,true);
YAHOO.log("Initialize transaction header X-Request-Header to XMLHttpRequest.","info","Connection")
}}if((F.toUpperCase()=="POST"&&this._use_default_post_header)&&this._isFormSubmit===false){this.initHeader("Content-Type",this._default_post_header);
YAHOO.log("Initialize header Content-Type to application/x-www-form-urlencoded; UTF-8 for POST transaction.","info","Connection")
}if(this._has_default_headers||this._has_http_headers){this.setHeader(D)
}this.handleReadyState(D,E);
D.conn.send(A||"");
YAHOO.log("Transaction "+D.tId+" sent.","info","Connection");
if(this._isFormSubmit===true){this.resetFormState()
}this.startEvent.fire(D,B);
if(D.startEvent){D.startEvent.fire(D,B)
}return D
}},initCustomEvents:function(A,C){for(var B in C.customevents){if(this._customEvents[B][0]){A[this._customEvents[B][0]]=new YAHOO.util.CustomEvent(this._customEvents[B][1],(C.scope)?C.scope:null);
YAHOO.log("Transaction-specific Custom Event "+A[this._customEvents[B][1]]+" created.","info","Connection");
A[this._customEvents[B][0]].subscribe(C.customevents[B]);
YAHOO.log("Transaction-specific Custom Event "+A[this._customEvents[B][1]]+" subscribed.","info","Connection")
}}},handleReadyState:function(C,D){var B=this;
var A=(D&&D.argument)?D.argument:null;
if(D&&D.timeout){this._timeOut[C.tId]=window.setTimeout(function(){B.abort(C,D,true)
},D.timeout)
}this._poll[C.tId]=window.setInterval(function(){if(C.conn&&C.conn.readyState===4){window.clearInterval(B._poll[C.tId]);
delete B._poll[C.tId];
if(D&&D.timeout){window.clearTimeout(B._timeOut[C.tId]);
delete B._timeOut[C.tId]
}B.completeEvent.fire(C,A);
if(C.completeEvent){C.completeEvent.fire(C,A)
}B.handleTransactionResponse(C,D)
}},this._polling_interval)
},handleTransactionResponse:function(F,G,A){var D,C;
var B=(G&&G.argument)?G.argument:null;
try{if(F.conn.status!==undefined&&F.conn.status!==0){D=F.conn.status
}else{D=13030
}}catch(E){D=13030
}if(D>=200&&D<300||D===1223){C=this.createResponseObject(F,B);
if(G&&G.success){if(!G.scope){G.success(C);
YAHOO.log("Success callback. HTTP code is "+D,"info","Connection")
}else{G.success.apply(G.scope,[C]);
YAHOO.log("Success callback with scope. HTTP code is "+D,"info","Connection")
}}this.successEvent.fire(C);
if(F.successEvent){F.successEvent.fire(C)
}}else{switch(D){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:C=this.createExceptionObject(F.tId,B,(A?A:false));
if(G&&G.failure){if(!G.scope){G.failure(C);
YAHOO.log("Failure callback. Exception detected. Status code is "+D,"warn","Connection")
}else{G.failure.apply(G.scope,[C]);
YAHOO.log("Failure callback with scope. Exception detected. Status code is "+D,"warn","Connection")
}}break;
default:C=this.createResponseObject(F,B);
if(G&&G.failure){if(!G.scope){G.failure(C);
YAHOO.log("Failure callback. HTTP status code is "+D,"warn","Connection")
}else{G.failure.apply(G.scope,[C]);
YAHOO.log("Failure callback with scope. HTTP status code is "+D,"warn","Connection")
}}}this.failureEvent.fire(C);
if(F.failureEvent){F.failureEvent.fire(C)
}}this.releaseObject(F);
C=null
},createResponseObject:function(A,G){var D={};
var I={};
try{var C=A.conn.getAllResponseHeaders();
var F=C.split("\n");
for(var E=0;
E<F.length;
E++){var B=F[E].indexOf(":");
if(B!=-1){I[F[E].substring(0,B)]=F[E].substring(B+2)
}}}catch(H){}D.tId=A.tId;
D.status=(A.conn.status==1223)?204:A.conn.status;
D.statusText=(A.conn.status==1223)?"No Content":A.conn.statusText;
D.getResponseHeader=I;
D.getAllResponseHeaders=C;
D.responseText=A.conn.responseText;
D.responseXML=A.conn.responseXML;
if(G){D.argument=G
}return D
},createExceptionObject:function(H,D,A){var F=0;
var G="communication failure";
var C=-1;
var B="transaction aborted";
var E={};
E.tId=H;
if(A){E.status=C;
E.statusText=B
}else{E.status=F;
E.statusText=G
}if(D){E.argument=D
}return E
},initHeader:function(A,D,C){var B=(C)?this._default_headers:this._http_headers;
B[A]=D;
if(C){this._has_default_headers=true
}else{this._has_http_headers=true
}},setHeader:function(A){if(this._has_default_headers){for(var B in this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers,B)){A.conn.setRequestHeader(B,this._default_headers[B]);
YAHOO.log("Default HTTP header "+B+" set with value of "+this._default_headers[B],"info","Connection")
}}}if(this._has_http_headers){for(var B in this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,B)){A.conn.setRequestHeader(B,this._http_headers[B]);
YAHOO.log("HTTP header "+B+" set with value of "+this._http_headers[B],"info","Connection")
}}delete this._http_headers;
this._http_headers={};
this._has_http_headers=false
}},resetDefaultHeaders:function(){delete this._default_headers;
this._default_headers={};
this._has_default_headers=false
},setForm:function(K,E,B){this.resetFormState();
var J;
if(typeof K=="string"){J=(document.getElementById(K)||document.forms[K])
}else{if(typeof K=="object"){J=K
}else{YAHOO.log("Unable to create form object "+K,"warn","Connection");
return
}}if(E){var F=this.createFrame((window.location.href.toLowerCase().indexOf("https")===0||B)?true:false);
this._isFormSubmit=true;
this._isFileUpload=true;
this._formNode=J;
return
}var A,I,G,L;
var H=false;
for(var D=0;
D<J.elements.length;
D++){A=J.elements[D];
L=A.disabled;
I=A.name;
G=A.value;
if(!L&&I){switch(A.type){case"select-one":case"select-multiple":for(var C=0;
C<A.options.length;
C++){if(A.options[C].selected){if(window.ActiveXObject){this._sFormData+=encodeURIComponent(I)+"="+encodeURIComponent(A.options[C].attributes.value.specified?A.options[C].value:A.options[C].text)+"&"
}else{this._sFormData+=encodeURIComponent(I)+"="+encodeURIComponent(A.options[C].hasAttribute("value")?A.options[C].value:A.options[C].text)+"&"
}}}break;
case"radio":case"checkbox":if(A.checked){this._sFormData+=encodeURIComponent(I)+"="+encodeURIComponent(G)+"&"
}break;
case"file":case undefined:case"reset":case"button":break;
case"submit":if(H===false){if(this._hasSubmitListener&&this._submitElementValue){this._sFormData+=this._submitElementValue+"&"
}else{this._sFormData+=encodeURIComponent(I)+"="+encodeURIComponent(G)+"&"
}H=true
}break;
default:this._sFormData+=encodeURIComponent(I)+"="+encodeURIComponent(G)+"&"
}}}this._isFormSubmit=true;
this._sFormData=this._sFormData.substr(0,this._sFormData.length-1);
YAHOO.log("Form initialized for transaction. HTML form POST message is: "+this._sFormData,"info","Connection");
this.initHeader("Content-Type",this._default_form_header);
YAHOO.log("Initialize header Content-Type to application/x-www-form-urlencoded for setForm() transaction.","info","Connection");
return this._sFormData
},resetFormState:function(){this._isFormSubmit=false;
this._isFileUpload=false;
this._formNode=null;
this._sFormData=""
},createFrame:function(A){var B="yuiIO"+this._transaction_id;
var C;
if(window.ActiveXObject){C=document.createElement('<iframe id="'+B+'" name="'+B+'" />');
if(typeof A=="boolean"){C.src="javascript:false"
}}else{C=document.createElement("iframe");
C.id=B;
C.name=B
}C.style.position="absolute";
C.style.top="-1000px";
C.style.left="-1000px";
document.body.appendChild(C);
YAHOO.log("File upload iframe created. Id is:"+B,"info","Connection")
},appendPostData:function(A){var D=[];
var B=A.split("&");
for(var C=0;
C<B.length;
C++){var E=B[C].indexOf("=");
if(E!=-1){D[C]=document.createElement("input");
D[C].type="hidden";
D[C].name=B[C].substring(0,E);
D[C].value=B[C].substring(E+1);
this._formNode.appendChild(D[C])
}}return D
},uploadFile:function(D,M,E,C){var N=this;
var H="yuiIO"+D.tId;
var I="multipart/form-data";
var K=document.getElementById(H);
var J=(M&&M.argument)?M.argument:null;
var B={action:this._formNode.getAttribute("action"),method:this._formNode.getAttribute("method"),target:this._formNode.getAttribute("target")};
this._formNode.setAttribute("action",E);
this._formNode.setAttribute("method","POST");
this._formNode.setAttribute("target",H);
if(YAHOO.env.ua.ie){this._formNode.setAttribute("encoding",I)
}else{this._formNode.setAttribute("enctype",I)
}if(C){var L=this.appendPostData(C)
}this._formNode.submit();
this.startEvent.fire(D,J);
if(D.startEvent){D.startEvent.fire(D,J)
}if(M&&M.timeout){this._timeOut[D.tId]=window.setTimeout(function(){N.abort(D,M,true)
},M.timeout)
}if(L&&L.length>0){for(var G=0;
G<L.length;
G++){this._formNode.removeChild(L[G])
}}for(var A in B){if(YAHOO.lang.hasOwnProperty(B,A)){if(B[A]){this._formNode.setAttribute(A,B[A])
}else{this._formNode.removeAttribute(A)
}}}this.resetFormState();
var F=function(){if(M&&M.timeout){window.clearTimeout(N._timeOut[D.tId]);
delete N._timeOut[D.tId]
}N.completeEvent.fire(D,J);
if(D.completeEvent){D.completeEvent.fire(D,J)
}var P={};
P.tId=D.tId;
P.argument=M.argument;
try{P.responseText=K.contentWindow.document.body?K.contentWindow.document.body.innerHTML:K.contentWindow.document.documentElement.textContent;
P.responseXML=K.contentWindow.document.XMLDocument?K.contentWindow.document.XMLDocument:K.contentWindow.document
}catch(O){}if(M&&M.upload){if(!M.scope){M.upload(P);
YAHOO.log("Upload callback.","info","Connection")
}else{M.upload.apply(M.scope,[P]);
YAHOO.log("Upload callback with scope.","info","Connection")
}}N.uploadEvent.fire(P);
if(D.uploadEvent){D.uploadEvent.fire(P)
}YAHOO.util.Event.removeListener(K,"load",F);
setTimeout(function(){document.body.removeChild(K);
N.releaseObject(D);
YAHOO.log("File upload iframe destroyed. Id is:"+H,"info","Connection")
},100)
};
YAHOO.util.Event.addListener(K,"load",F)
},abort:function(E,G,A){var D;
var B=(G&&G.argument)?G.argument:null;
if(E&&E.conn){if(this.isCallInProgress(E)){E.conn.abort();
window.clearInterval(this._poll[E.tId]);
delete this._poll[E.tId];
if(A){window.clearTimeout(this._timeOut[E.tId]);
delete this._timeOut[E.tId]
}D=true
}}else{if(E&&E.isUpload===true){var C="yuiIO"+E.tId;
var F=document.getElementById(C);
if(F){YAHOO.util.Event.removeListener(F,"load");
document.body.removeChild(F);
YAHOO.log("File upload iframe destroyed. Id is:"+C,"info","Connection");
if(A){window.clearTimeout(this._timeOut[E.tId]);
delete this._timeOut[E.tId]
}D=true
}}else{D=false
}}if(D===true){this.abortEvent.fire(E,B);
if(E.abortEvent){E.abortEvent.fire(E,B)
}this.handleTransactionResponse(E,G,true);
YAHOO.log("Transaction "+E.tId+" aborted.","info","Connection")
}return D
},isCallInProgress:function(B){if(B&&B.conn){return B.conn.readyState!==4&&B.conn.readyState!==0
}else{if(B&&B.isUpload===true){var A="yuiIO"+B.tId;
return document.getElementById(A)?true:false
}else{return false
}}},releaseObject:function(A){if(A&&A.conn){A.conn=null;
YAHOO.log("Connection object for transaction "+A.tId+" destroyed.","info","Connection");
A=null
}}};
YAHOO.register("connection",YAHOO.util.Connect,{version:"2.5.2",build:"1076"});