/*
Copyright (c) 2008, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.6.0
*/
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);
},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(F) {
    var E,A;
    try {
        A = new XMLHttpRequest();
        E = {conn:A,tId:F};
    } catch(D) {
        for (var B = 0; B < this._msxml_progid.length; ++B) {
            try {
                A = new ActiveXObject(this._msxml_progid[B]);
                E = {conn:A,tId:F};
                break;
            } catch(C) {
            }
        }
    } finally {
        return E;
    }
},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 || "");
        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) {
    var B;
    for (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) {
    var B;
    if (this._has_default_headers) {
        for (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 (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(M, H, C) {
    var L,B,K,I,P,J = false,F = [],O = 0,E,G,D,N,A;
    this.resetFormState();
    if (typeof M == "string") {
        L = (document.getElementById(M) || document.forms[M]);
    } else {
        if (typeof M == "object") {
            L = M;
        } else {
            return;
        }
    }
    if (H) {
        this.createFrame(C ? C : null);
        this._isFormSubmit = true;
        this._isFileUpload = true;
        this._formNode = L;
        return;
    }
    for (E = 0,G = L.elements.length; E < G; ++E) {
        B = L.elements[E];
        P = B.disabled;
        K = B.name;
        if (!P && K) {
            K = encodeURIComponent(K) + "=";
            I = encodeURIComponent(B.value);
            switch (B.type) {case"select-one":if (B.selectedIndex > -1) {
                A = B.options[B.selectedIndex];
                F[O++] = K + encodeURIComponent((A.attributes.value && A.attributes.value.specified) ? A.value : A.text);
            }break;case"select-multiple":if (B.selectedIndex > -1) {
                for (D = B.selectedIndex,N = B.options.length; D < N; ++D) {
                    A = B.options[D];
                    if (A.selected) {
                        F[O++] = K + encodeURIComponent((A.attributes.value && A.attributes.value.specified) ? A.value : A.text);
                    }
                }
            }break;case"radio":case"checkbox":if (B.checked) {
                F[O++] = K + I;
            }break;case"file":case undefined:case"reset":case"button":break;case"submit":if (J === false) {
                if (this._hasSubmitListener && this._submitElementValue) {
                    F[O++] = this._submitElementValue;
                } else {
                    F[O++] = K + I;
                }
                J = true;
            }break;default:F[O++] = K + I;}
        }
    }
    this._isFormSubmit = true;
    this._sFormData = F.join("&");
    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 (YAHOO.env.ua.ie) {
        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);
},appendPostData:function(A) {
    var D = [],B = A.split("&"),C,E;
    for (C = 0; C < B.length; C++) {
        E = B[C].indexOf("=");
        if (E != -1) {
            D[C] = document.createElement("input");
            D[C].type = "hidden";
            D[C].name = decodeURIComponent(B[C].substring(0, E));
            D[C].value = decodeURIComponent(B[C].substring(E + 1));
            this._formNode.appendChild(D[C]);
        }
    }
    return D;
},uploadFile:function(D, N, E, C) {
    var I = "yuiIO" + D.tId,J = "multipart/form-data",L = document.getElementById(I),O = this,K = (N && N.argument) ? N.argument : null,M,H,B,G;
    var A = {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", I);
    if (YAHOO.env.ua.ie) {
        this._formNode.setAttribute("encoding", J);
    } else {
        this._formNode.setAttribute("enctype", J);
    }
    if (C) {
        M = this.appendPostData(C);
    }
    this._formNode.submit();
    this.startEvent.fire(D, K);
    if (D.startEvent) {
        D.startEvent.fire(D, K);
    }
    if (N && N.timeout) {
        this._timeOut[D.tId] = window.setTimeout(function() {
            O.abort(D, N, true);
        }, N.timeout);
    }
    if (M && M.length > 0) {
        for (H = 0; H < M.length; H++) {
            this._formNode.removeChild(M[H]);
        }
    }
    for (B in A) {
        if (YAHOO.lang.hasOwnProperty(A, B)) {
            if (A[B]) {
                this._formNode.setAttribute(B, A[B]);
            } else {
                this._formNode.removeAttribute(B);
            }
        }
    }
    this.resetFormState();
    var F = function() {
        if (N && N.timeout) {
            window.clearTimeout(O._timeOut[D.tId]);
            delete O._timeOut[D.tId];
        }
        O.completeEvent.fire(D, K);
        if (D.completeEvent) {
            D.completeEvent.fire(D, K);
        }
        G = {tId:D.tId,argument:N.argument};
        try {
            G.responseText = L.contentWindow.document.body ? L.contentWindow.document.body.innerHTML : L.contentWindow.document.documentElement.textContent;
            G.responseXML = L.contentWindow.document.XMLDocument ? L.contentWindow.document.XMLDocument : L.contentWindow.document;
        } catch(P) {
        }
        if (N && N.upload) {
            if (!N.scope) {
                N.upload(G);
            } else {
                N.upload.apply(N.scope, [G]);
            }
        }
        O.uploadEvent.fire(G);
        if (D.uploadEvent) {
            D.uploadEvent.fire(G);
        }
        YAHOO.util.Event.removeListener(L, "load", F);
        setTimeout(function() {
            document.body.removeChild(L);
            O.releaseObject(D);
        }, 100);
    };
    YAHOO.util.Event.addListener(L, "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.6.0",build:"1321"});