/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.4.1
*/
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=windows-1251",
		_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.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);},
		setDefaultPostHeader:function(A){
			if(typeof A=="string"){
				this._default_post_header=A;
			}
			else{
				if(typeof A=="boolean"){this._use_default_post_header=A;}
			}
		  },
		  setDefaultXhrHeader:function(A){
		  	if(typeof A=="string"){this._default_xhr_header=A;}
		  	else{this._use_default_xhr_header=A;}
		   },
		  setPollingInterval:function(A){if(typeof A=="number"&&isFinite(A)){this._polling_interval=A;}},
		  createXhrObject:function(E){
		  	var D,A;
		  	try{
		  		A=new XMLHttpRequest();
		  		D={conn:A,tId:E};
		  	}
		  	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};
		  				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){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);
		  			}
		  		}
		  		if((F.toUpperCase()=="POST"&&this._use_default_post_header)&&this._isFormSubmit===false){
		  			this.initHeader("Content-Type",this._default_post_header);
		  		}
		  		if(this._has_default_headers||this._has_http_headers){
		  			this.setHeader(D);
		  		}
		  		this.handleReadyState(D,E);
		  		D.conn.send(A||null);
		  		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);
		  			A[this._customEvents[B][0]].subscribe(C.customevents[B]);
		  		}
		  	}
		  },
		  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);
		  			}
		  			else{
		  				G.success.apply(G.scope,[C]);
		  			}
		  		}
		  		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);}
		  						else{G.failure.apply(G.scope,[C]);
		  						}
		  					}
		  					break;
		  			default:
		  				C=this.createResponseObject(F,B);
		  				if(G&&G.failure){
		  					if(!G.scope){
		  						G.failure(C);
		  					}
		  					else{G.failure.apply(G.scope,[C]);}
		  				}
		  		}
		  		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]);
		  			}
		  		}
		  	}
		  //}
			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]);}}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{return ;}
					}
				if(E){
					var F=this.createFrame(B?B:null);
					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);
				this.initHeader("Content-Type",this._default_form_header);
				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{
				if(typeof secureURI=="string"){C.src=A;}
			}
		}
		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);
	},
	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(this._formNode.encoding){
			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);
				}
				else{
					M.upload.apply(M.scope,[P]);
				}
			}
			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);
			},
			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);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);}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;A=null;}}};YAHOO.register("connection",YAHOO.util.Connect,{version:"2.4.1",build:"742"});
	