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"});
