/*
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.widget.DS_JSArray = YAHOO.util.LocalDataSource;
YAHOO.widget.DS_JSFunction = YAHOO.util.FunctionDataSource;
YAHOO.widget.DS_XHR = function (B, A, D) {
    var C = new YAHOO.util.XHRDataSource(B, D);
    C._aDeprecatedSchema = A;
    return C;
};
YAHOO.widget.DS_ScriptNode = function (B, A, D) {
    var C = new YAHOO.util.ScriptNodeDataSource(B, D);
    C._aDeprecatedSchema = A;
    return C;
};
YAHOO.widget.DS_XHR.TYPE_JSON = YAHOO.util.DataSourceBase.TYPE_JSON;
YAHOO.widget.DS_XHR.TYPE_XML = YAHOO.util.DataSourceBase.TYPE_XML;
YAHOO.widget.DS_XHR.TYPE_FLAT = YAHOO.util.DataSourceBase.TYPE_TEXT;
YAHOO.widget.AutoComplete = function (G, B, J, C) {
    if (G && B && J) {
        if (J instanceof YAHOO.util.DataSourceBase) {
            this.dataSource = J;
        } else {
            return;
        }
        this.key = 0;
        var D = J.responseSchema;
        if (J._aDeprecatedSchema) {
            var K = J._aDeprecatedSchema;
            if (YAHOO.lang.isArray(K)) {
                if ((J.responseType === YAHOO.util.DataSourceBase.TYPE_JSON) || (J.responseType === YAHOO.util.DataSourceBase.TYPE_UNKNOWN)) {
                    D.resultsList = K[0];
                    this.key = K[1];
                    D.fields = (K.length < 3) ? null : K.slice(1);
                } else {
                    if (J.responseType === YAHOO.util.DataSourceBase.TYPE_XML) {
                        D.resultNode = K[0];
                        this.key = K[1];
                        D.fields = K.slice(1);
                    } else {
                        if (J.responseType === YAHOO.util.DataSourceBase.TYPE_TEXT) {
                            D.recordDelim = K[0];
                            D.fieldDelim = K[1];
                        }
                    }
                }
                J.responseSchema = D;
            }
        }
        if (YAHOO.util.Dom.inDocument(G)) {
            if (YAHOO.lang.isString(G)) {
                this._sName = "instance" + YAHOO.widget.AutoComplete._nIndex + " " + G;
                this._elTextbox = document.getElementById(G);
            } else {
                this._sName = (G.id) ? "instance" + YAHOO.widget.AutoComplete._nIndex + " " + G.id : "instance" + YAHOO.widget.AutoComplete._nIndex;
                this._elTextbox = G;
            }
            YAHOO.util.Dom.addClass(this._elTextbox, "yui-ac-input");
        } else {
            return;
        }
        if (YAHOO.util.Dom.inDocument(B)) {
            if (YAHOO.lang.isString(B)) {
                this._elContainer = document.getElementById(B);
            } else {
                this._elContainer = B;
            }
            if (this._elContainer.style.display == "none") {}
            var E = this._elContainer.parentNode;
            var A = E.tagName.toLowerCase();
            if (A == "div") {
                YAHOO.util.Dom.addClass(E, "yui-ac");
            } else {}
        } else {
            return;
        }
        if (this.dataSource.dataType === YAHOO.util.DataSourceBase.TYPE_LOCAL) {
            this.applyLocalFilter = true;
        }
        if (C && (C.constructor == Object)) {
            for (var I in C) {
                if (I) {
                    this[I] = C[I];
                }
            }
        }
        this._initContainerEl();
        this._initProps();
        this._initListEl();
        this._initContainerHelperEls();
        var H = this;
        var F = this._elTextbox;
        YAHOO.util.Event.addListener(F, "keyup", H._onTextboxKeyUp, H);
        YAHOO.util.Event.addListener(F, "keydown", H._onTextboxKeyDown, H);
        YAHOO.util.Event.addListener(F, "focus", H._onTextboxFocus, H);
        YAHOO.util.Event.addListener(F, "blur", H._onTextboxBlur, H);
        YAHOO.util.Event.addListener(B, "mouseover", H._onContainerMouseover, H);
        YAHOO.util.Event.addListener(B, "mouseout", H._onContainerMouseout, H);
        YAHOO.util.Event.addListener(B, "click", H._onContainerClick, H);
        YAHOO.util.Event.addListener(B, "scroll", H._onContainerScroll, H);
        YAHOO.util.Event.addListener(B, "resize", H._onContainerResize, H);
        YAHOO.util.Event.addListener(F, "keypress", H._onTextboxKeyPress, H);
        YAHOO.util.Event.addListener(window, "unload", H._onWindowUnload, H);
        this.textboxFocusEvent = new YAHOO.util.CustomEvent("textboxFocus", this);
        this.textboxKeyEvent = new YAHOO.util.CustomEvent("textboxKey", this);
        this.dataRequestEvent = new YAHOO.util.CustomEvent("dataRequest", this);
        this.dataReturnEvent = new YAHOO.util.CustomEvent("dataReturn", this);
        this.dataErrorEvent = new YAHOO.util.CustomEvent("dataError", this);
        this.containerPopulateEvent = new YAHOO.util.CustomEvent("containerPopulate", this);
        this.containerExpandEvent = new YAHOO.util.CustomEvent("containerExpand", this);
        this.typeAheadEvent = new YAHOO.util.CustomEvent("typeAhead", this);
        this.itemMouseOverEvent = new YAHOO.util.CustomEvent("itemMouseOver", this);
        this.itemMouseOutEvent = new YAHOO.util.CustomEvent("itemMouseOut", this);
        this.itemArrowToEvent = new YAHOO.util.CustomEvent("itemArrowTo", this);
        this.itemArrowFromEvent = new YAHOO.util.CustomEvent("itemArrowFrom", this);
        this.itemSelectEvent = new YAHOO.util.CustomEvent("itemSelect", this);
        this.unmatchedItemSelectEvent = new YAHOO.util.CustomEvent("unmatchedItemSelect", this);
        this.selectionEnforceEvent = new YAHOO.util.CustomEvent("selectionEnforce", this);
        this.containerCollapseEvent = new YAHOO.util.CustomEvent("containerCollapse", this);
        this.textboxBlurEvent = new YAHOO.util.CustomEvent("textboxBlur", this);
        this.textboxChangeEvent = new YAHOO.util.CustomEvent("textboxChange", this);
        F.setAttribute("autocomplete", "off");
        YAHOO.widget.AutoComplete._nIndex++;
    } else {}
};
YAHOO.widget.AutoComplete.prototype.dataSource = null;
YAHOO.widget.AutoComplete.prototype.applyLocalFilter = null;
YAHOO.widget.AutoComplete.prototype.queryMatchCase = false;
YAHOO.widget.AutoComplete.prototype.queryMatchContains = false;
YAHOO.widget.AutoComplete.prototype.queryMatchSubset = false;
YAHOO.widget.AutoComplete.prototype.minQueryLength = 1;
YAHOO.widget.AutoComplete.prototype.maxResultsDisplayed = 10;
YAHOO.widget.AutoComplete.prototype.queryDelay = 0.2;
YAHOO.widget.AutoComplete.prototype.typeAheadDelay = 0.5;
YAHOO.widget.AutoComplete.prototype.queryInterval = 500;
YAHOO.widget.AutoComplete.prototype.highlightClassName = "yui-ac-highlight";
YAHOO.widget.AutoComplete.prototype.prehighlightClassName = null;
YAHOO.widget.AutoComplete.prototype.delimChar = null;
YAHOO.widget.AutoComplete.prototype.autoHighlight = true;
YAHOO.widget.AutoComplete.prototype.typeAhead = false;
YAHOO.widget.AutoComplete.prototype.animHoriz = false;
YAHOO.widget.AutoComplete.prototype.animVert = true;
YAHOO.widget.AutoComplete.prototype.animSpeed = 0.3;
YAHOO.widget.AutoComplete.prototype.forceSelection = false;
YAHOO.widget.AutoComplete.prototype.allowBrowserAutocomplete = true;
YAHOO.widget.AutoComplete.prototype.alwaysShowContainer = false;
YAHOO.widget.AutoComplete.prototype.useIFrame = false;
YAHOO.widget.AutoComplete.prototype.useShadow = false;
YAHOO.widget.AutoComplete.prototype.suppressInputUpdate = false;
YAHOO.widget.AutoComplete.prototype.resultTypeList = true;
YAHOO.widget.AutoComplete.prototype.queryQuestionMark = true;
YAHOO.widget.AutoComplete.prototype.toString = function () {
    return "AutoComplete " + this._sName;
};
YAHOO.widget.AutoComplete.prototype.getInputEl = function () {
    return this._elTextbox;
};
YAHOO.widget.AutoComplete.prototype.getContainerEl = function () {
    return this._elContainer;
};
YAHOO.widget.AutoComplete.prototype.isFocused = function () {
    return (this._bFocused === null) ? false : this._bFocused;
};
YAHOO.widget.AutoComplete.prototype.isContainerOpen = function () {
    return this._bContainerOpen;
};
YAHOO.widget.AutoComplete.prototype.getListEl = function () {
    return this._elList;
};
YAHOO.widget.AutoComplete.prototype.getListItemMatch = function (A) {
    if (A._sResultMatch) {
        return A._sResultMatch;
    } else {
        return null;
    }
};
YAHOO.widget.AutoComplete.prototype.getListItemData = function (A) {
    if (A._oResultData) {
        return A._oResultData;
    } else {
        return null;
    }
};
YAHOO.widget.AutoComplete.prototype.getListItemIndex = function (A) {
    if (YAHOO.lang.isNumber(A._nItemIndex)) {
        return A._nItemIndex;
    } else {
        return null;
    }
};
YAHOO.widget.AutoComplete.prototype.setHeader = function (B) {
    if (this._elHeader) {
        var A = this._elHeader;
        if (B) {
            A.innerHTML = B;
            A.style.display = "block";
        } else {
            A.innerHTML = "";
            A.style.display = "none";
        }
    }
};
YAHOO.widget.AutoComplete.prototype.setFooter = function (B) {
    if (this._elFooter) {
        var A = this._elFooter;
        if (B) {
            A.innerHTML = B;
            A.style.display = "block";
        } else {
            A.innerHTML = "";
            A.style.display = "none";
        }
    }
};
YAHOO.widget.AutoComplete.prototype.setBody = function (A) {
    if (this._elBody) {
        var B = this._elBody;
        YAHOO.util.Event.purgeElement(B, true);
        if (A) {
            B.innerHTML = A;
            B.style.display = "block";
        } else {
            B.innerHTML = "";
            B.style.display = "none";
        }
        this._elList = null;
    }
};
YAHOO.widget.AutoComplete.prototype.generateRequest = function (B) {
    var A = this.dataSource.dataType;
    if (A === YAHOO.util.DataSourceBase.TYPE_XHR) {
        if (!this.dataSource.connMethodPost) {
            B = (this.queryQuestionMark ? "?" : "") + (this.dataSource.scriptQueryParam || "query") + "=" + B + (this.dataSource.scriptQueryAppend ? ("&" + this.dataSource.scriptQueryAppend) : "");
        } else {
            B = (this.dataSource.scriptQueryParam || "query") + "=" + B + (this.dataSource.scriptQueryAppend ? ("&" + this.dataSource.scriptQueryAppend) : "");
        }
    } else {
        if (A === YAHOO.util.DataSourceBase.TYPE_SCRIPTNODE) {
            B = "&" + (this.dataSource.scriptQueryParam || "query") + "=" + B + (this.dataSource.scriptQueryAppend ? ("&" + this.dataSource.scriptQueryAppend) : "");
        }
    }
    return B;
};
YAHOO.widget.AutoComplete.prototype.sendQuery = function (B) {
    var A = (this.delimChar) ? this._elTextbox.value + B : B;
    this._sendQuery(A);
};
YAHOO.widget.AutoComplete.prototype.collapseContainer = function () {
    this._toggleContainer(false);
};
YAHOO.widget.AutoComplete.prototype.getSubsetMatches = function (E) {
    var D, C, A;
    for (var B = E.length; B >= this.minQueryLength; B--) {
        A = this.generateRequest(E.substr(0, B));
        this.dataRequestEvent.fire(this, D, A);
        C = this.dataSource.getCachedResponse(A);
        if (C) {
            return this.filterResults.apply(this.dataSource, [E, C, C, {
                scope: this
            }]);
        }
    }
    return null;
};
YAHOO.widget.AutoComplete.prototype.preparseRawResponse = function (C, B, A) {
    var D = ((this.responseStripAfter !== "") && (B.indexOf)) ? B.indexOf(this.responseStripAfter) : -1;
    if (D != -1) {
        B = B.substring(0, D);
    }
    return B;
};
YAHOO.widget.AutoComplete.prototype.filterResults = function (J, L, P, K) {
    if (J && J !== "") {
        P = YAHOO.widget.AutoComplete._cloneObject(P);
        var H = K.scope,
        O = this,
        B = P.results,
        M = [],
        D = false,
        I = (O.queryMatchCase || H.queryMatchCase),
        A = (O.queryMatchContains || H.queryMatchContains);
        for (var C = B.length - 1; C >= 0; C--) {
            var F = B[C];
            var E = null;
            if (YAHOO.lang.isString(F)) {
                E = F;
            } else {
                if (YAHOO.lang.isArray(F)) {
                    E = F[0];
                } else {
                    if (this.responseSchema.fields) {
                        var N = this.responseSchema.fields[0].key || this.responseSchema.fields[0];
                        E = F[N];
                    } else {
                        if (this.key) {
                            E = F[this.key];
                        }
                    }
                }
            }
            if (YAHOO.lang.isString(E)) {
                var G = (I) ? E.indexOf(decodeURIComponent(J)) : E.toLowerCase().indexOf(decodeURIComponent(J).toLowerCase());
                if ((!A && (G === 0)) || (A && (G > -1))) {
                    M.unshift(F);
                }
            }
        }
        P.results = M;
    } else {}
    return P;
};
YAHOO.widget.AutoComplete.prototype.handleResponse = function (C, A, B) {
    if ((this instanceof YAHOO.widget.AutoComplete) && this._sName) {
        this._populateList(C, A, B);
    }
};
YAHOO.widget.AutoComplete.prototype.doBeforeLoadData = function (C, A, B) {
    return true;
};
YAHOO.widget.AutoComplete.prototype.formatResult = function (B, D, A) {
    var C = (A) ? A : "";
    return C;
};
YAHOO.widget.AutoComplete.prototype.doBeforeExpandContainer = function (D, A, C, B) {
    return true;
};
YAHOO.widget.AutoComplete.prototype.destroy = function () {
    var B = this.toString();
    var A = this._elTextbox;
    var D = this._elContainer;
    this.textboxFocusEvent.unsubscribeAll();
    this.textboxKeyEvent.unsubscribeAll();
    this.dataRequestEvent.unsubscribeAll();
    this.dataReturnEvent.unsubscribeAll();
    this.dataErrorEvent.unsubscribeAll();
    this.containerPopulateEvent.unsubscribeAll();
    this.containerExpandEvent.unsubscribeAll();
    this.typeAheadEvent.unsubscribeAll();
    this.itemMouseOverEvent.unsubscribeAll();
    this.itemMouseOutEvent.unsubscribeAll();
    this.itemArrowToEvent.unsubscribeAll();
    this.itemArrowFromEvent.unsubscribeAll();
    this.itemSelectEvent.unsubscribeAll();
    this.unmatchedItemSelectEvent.unsubscribeAll();
    this.selectionEnforceEvent.unsubscribeAll();
    this.containerCollapseEvent.unsubscribeAll();
    this.textboxBlurEvent.unsubscribeAll();
    this.textboxChangeEvent.unsubscribeAll();
    YAHOO.util.Event.purgeElement(A, true);
    YAHOO.util.Event.purgeElement(D, true);
    D.innerHTML = "";
    for (var C in this) {
        if (YAHOO.lang.hasOwnProperty(this, C)) {
            this[C] = null;
        }
    }
};
YAHOO.widget.AutoComplete.prototype.textboxFocusEvent = null;
YAHOO.widget.AutoComplete.prototype.textboxKeyEvent = null;
YAHOO.widget.AutoComplete.prototype.dataRequestEvent = null;
YAHOO.widget.AutoComplete.prototype.dataReturnEvent = null;
YAHOO.widget.AutoComplete.prototype.dataErrorEvent = null;
YAHOO.widget.AutoComplete.prototype.containerPopulateEvent = null;
YAHOO.widget.AutoComplete.prototype.containerExpandEvent = null;
YAHOO.widget.AutoComplete.prototype.typeAheadEvent = null;
YAHOO.widget.AutoComplete.prototype.itemMouseOverEvent = null;
YAHOO.widget.AutoComplete.prototype.itemMouseOutEvent = null;
YAHOO.widget.AutoComplete.prototype.itemArrowToEvent = null;
YAHOO.widget.AutoComplete.prototype.itemArrowFromEvent = null;
YAHOO.widget.AutoComplete.prototype.itemSelectEvent = null;
YAHOO.widget.AutoComplete.prototype.unmatchedItemSelectEvent = null;
YAHOO.widget.AutoComplete.prototype.selectionEnforceEvent = null;
YAHOO.widget.AutoComplete.prototype.containerCollapseEvent = null;
YAHOO.widget.AutoComplete.prototype.textboxBlurEvent = null;
YAHOO.widget.AutoComplete.prototype.textboxChangeEvent = null;
YAHOO.widget.AutoComplete._nIndex = 0;
YAHOO.widget.AutoComplete.prototype._sName = null;
YAHOO.widget.AutoComplete.prototype._elTextbox = null;
YAHOO.widget.AutoComplete.prototype._elContainer = null;
YAHOO.widget.AutoComplete.prototype._elContent = null;
YAHOO.widget.AutoComplete.prototype._elHeader = null;
YAHOO.widget.AutoComplete.prototype._elBody = null;
YAHOO.widget.AutoComplete.prototype._elFooter = null;
YAHOO.widget.AutoComplete.prototype._elShadow = null;
YAHOO.widget.AutoComplete.prototype._elIFrame = null;
YAHOO.widget.AutoComplete.prototype._bFocused = null;
YAHOO.widget.AutoComplete.prototype._oAnim = null;
YAHOO.widget.AutoComplete.prototype._bContainerOpen = false;
YAHOO.widget.AutoComplete.prototype._bOverContainer = false;
YAHOO.widget.AutoComplete.prototype._elList = null;
YAHOO.widget.AutoComplete.prototype._nDisplayedItems = 0;
YAHOO.widget.AutoComplete.prototype._sCurQuery = null;
YAHOO.widget.AutoComplete.prototype._sPastSelections = "";
YAHOO.widget.AutoComplete.prototype._sInitInputValue = null;
YAHOO.widget.AutoComplete.prototype._elCurListItem = null;
YAHOO.widget.AutoComplete.prototype._bItemSelected = false;
YAHOO.widget.AutoComplete.prototype._nKeyCode = null;
YAHOO.widget.AutoComplete.prototype._nDelayID = -1;
YAHOO.widget.AutoComplete.prototype._nTypeAheadDelayID = -1;
YAHOO.widget.AutoComplete.prototype._iFrameSrc = "javascript:false;";
YAHOO.widget.AutoComplete.prototype._queryInterval = null;
YAHOO.widget.AutoComplete.prototype._sLastTextboxValue = null;
YAHOO.widget.AutoComplete.prototype._initProps = function () {
    var B = this.minQueryLength;
    if (!YAHOO.lang.isNumber(B)) {
        this.minQueryLength = 1;
    }
    var E = this.maxResultsDisplayed;
    if (!YAHOO.lang.isNumber(E) || (E < 1)) {
        this.maxResultsDisplayed = 10;
    }
    var F = this.queryDelay;
    if (!YAHOO.lang.isNumber(F) || (F < 0)) {
        this.queryDelay = 0.2;
    }
    var C = this.typeAheadDelay;
    if (!YAHOO.lang.isNumber(C) || (C < 0)) {
        this.typeAheadDelay = 0.2;
    }
    var A = this.delimChar;
    if (YAHOO.lang.isString(A) && (A.length > 0)) {
        this.delimChar = [A];
    } else {
        if (!YAHOO.lang.isArray(A)) {
            this.delimChar = null;
        }
    }
    var D = this.animSpeed;
    if ((this.animHoriz || this.animVert) && YAHOO.util.Anim) {
        if (!YAHOO.lang.isNumber(D) || (D < 0)) {
            this.animSpeed = 0.3;
        }
        if (!this._oAnim) {
            this._oAnim = new YAHOO.util.Anim(this._elContent, {},
            this.animSpeed);
        } else {
            this._oAnim.duration = this.animSpeed;
        }
    }
    if (this.forceSelection && A) {}
};
YAHOO.widget.AutoComplete.prototype._initContainerHelperEls = function () {
    if (this.useShadow && !this._elShadow) {
        var A = document.createElement("div");
        A.className = "yui-ac-shadow";
        A.style.width = 0;
        A.style.height = 0;
        this._elShadow = this._elContainer.appendChild(A);
    }
    if (this.useIFrame && !this._elIFrame) {
        var B = document.createElement("iframe");
        B.src = this._iFrameSrc;
        B.frameBorder = 0;
        B.scrolling = "no";
        B.style.position = "absolute";
        B.style.width = 0;
        B.style.height = 0;
        B.tabIndex = -1;
        B.style.padding = 0;
        this._elIFrame = this._elContainer.appendChild(B);
    }
};
YAHOO.widget.AutoComplete.prototype._initContainerEl = function () {
    YAHOO.util.Dom.addClass(this._elContainer, "yui-ac-container");
    if (!this._elContent) {
        var C = document.createElement("div");
        C.className = "yui-ac-content";
        C.style.display = "none";
		
        this._elContent = this._elContainer.appendChild(C);
		
        var B = document.createElement("div");
        B.className = "yui-ac-hd";
        B.style.display = "none";
        this._elHeader = this._elContent.appendChild(B);
        var D = document.createElement("div");
        D.className = "yui-ac-bd";
        this._elBody = this._elContent.appendChild(D);
        var A = document.createElement("div");
        A.className = "yui-ac-ft";
        A.id = "yui-ac-ft";
        A.style.display = "block";
		A.innerHTML = "<a href='javascript:void(0)' onclick='listacompleta()'>Vai alla lista completa dei risultati</a>";
        this._elFooter = this._elContent.appendChild(A);
    } else {}
};
YAHOO.widget.AutoComplete.prototype._initListEl = function () {
    var C = this.maxResultsDisplayed;
    var A = this._elList || document.createElement("ul");
    var B;
	var S;
    while (A.childNodes.length < C) {
        B = document.createElement("li");
        B.style.display = "none";
        B._nItemIndex = A.childNodes.length;
        A.appendChild(B);
    }		
    if (!this._elList) {
        var D = this._elBody;
        YAHOO.util.Event.purgeElement(D, true);
        D.innerHTML = "";
        this._elList = D.appendChild(A);
    }
};
YAHOO.widget.AutoComplete.prototype._enableIntervalDetection = function () {
    var A = this;
    if (!A._queryInterval && A.queryInterval) {
        A._queryInterval = setInterval(function () {
            A._onInterval();
        },
        A.queryInterval);
    }
};
YAHOO.widget.AutoComplete.prototype._onInterval = function () {
    var A = this._elTextbox.value;
    var B = this._sLastTextboxValue;
    if (A != B) {
        this._sLastTextboxValue = A;
        this._sendQuery(A);
    }
};
YAHOO.widget.AutoComplete.prototype._clearInterval = function () {
    if (this._queryInterval) {
        clearInterval(this._queryInterval);
        this._queryInterval = null;
    }
};
YAHOO.widget.AutoComplete.prototype._isIgnoreKey = function (A) {
    if ((A == 9) || (A == 13) || (A == 16) || (A == 17) || (A >= 18 && A <= 20) || (A == 27) || (A >= 33 && A <= 35) || (A >= 36 && A <= 40) || (A >= 44 && A <= 45) || (A == 229)) {
        return true;
    }
    return false;
};
YAHOO.widget.AutoComplete.prototype._sendQuery = function (G) {
    if (this.minQueryLength < 0) {
        this._toggleContainer(false);
        return;
    }
    var I = (this.delimChar) ? this.delimChar : null;
    if (I) {
        var B = -1;
        for (var F = I.length - 1; F >= 0; F--) {
            var D = G.lastIndexOf(I[F]);
            if (D > B) {
                B = D;
            }
        }
        if (I[F] == " ") {
            for (var E = I.length - 1; E >= 0; E--) {
                if (G[B - 1] == I[E]) {
                    B--;
                    break;
                }
            }
        }
        if (B > -1) {
            var H = B + 1;
            while (G.charAt(H) == " ") {
                H += 1;
            }
            this._sPastSelections = G.substring(0, H);
            G = G.substr(H);
        } else {
            this._sPastSelections = "";
        }
    }
    if ((G && (G.length < this.minQueryLength)) || (!G && this.minQueryLength > 0)) {
        if (this._nDelayID != -1) {
            clearTimeout(this._nDelayID);
        }
        this._toggleContainer(false);
        return;
    }
    G = encodeURIComponent(G);
    this._nDelayID = -1;
    if (this.dataSource.queryMatchSubset || this.queryMatchSubset) {
        var A = this.getSubsetMatches(G);
        if (A) {
            this.handleResponse(G, A, {
                query: G
            });
            return;
        }
    }
    if (this.responseStripAfter) {
        this.dataSource.doBeforeParseData = this.preparseRawResponse;
    }
    if (this.applyLocalFilter) {
        this.dataSource.doBeforeCallback = this.filterResults;
    }
    var C = this.generateRequest(G);
    this.dataRequestEvent.fire(this, G, C);
    this.dataSource.sendRequest(C, {
        success: this.handleResponse,
        failure: this.handleResponse,
        scope: this,
        argument: {
            query: G
        }
    });
};
YAHOO.widget.AutoComplete.prototype._populateList = function (K, F, C) {
    if (this._nTypeAheadDelayID != -1) {
        clearTimeout(this._nTypeAheadDelayID);
    }
    K = (C && C.query) ? C.query : K;
    var H = this.doBeforeLoadData(K, F, C);
    if (H && !F.error) {
        this.dataReturnEvent.fire(this, K, F.results);
        if (this._bFocused || (this._bFocused === null)) {
            var M = decodeURIComponent(K);
            this._sCurQuery = M;
            this._bItemSelected = false;
            var R = F.results,
            A = Math.min(R.length, this.maxResultsDisplayed),
            J = (this.dataSource.responseSchema.fields) ? (this.dataSource.responseSchema.fields[0].key || this.dataSource.responseSchema.fields[0]) : 0;
            if (A > 0) {
                if (!this._elList || (this._elList.childNodes.length < A)) {
                    this._initListEl();
                }
                this._initContainerHelperEls();
                var I = this._elList.childNodes;
                for (var Q = A - 1; Q >= 0; Q--) {
                    var P = I[Q],
                    E = R[Q];
                    if (this.resultTypeList) {
                        var B = [];
                        B[0] = (YAHOO.lang.isString(E)) ? E : E[J] || E[this.key];
                        var L = this.dataSource.responseSchema.fields;
                        if (YAHOO.lang.isArray(L) && (L.length > 1)) {
                            for (var N = 1, S = L.length; N < S; N++) {
                                B[B.length] = E[L[N].key || L[N]];
                            }
                        } else {
                            if (YAHOO.lang.isArray(E)) {
                                B = E;
                            } else {
                                if (YAHOO.lang.isString(E)) {
                                    B = [E];
                                } else {
                                    B[1] = E;
                                }
                            }
                        }
                        E = B;
                    }
                    P._sResultMatch = (YAHOO.lang.isString(E)) ? E : (YAHOO.lang.isArray(E)) ? E[0] : (E[J] || "");
                    P._oResultData = E;
                    P.innerHTML = this.formatResult(E, M, P._sResultMatch);
                    P.style.display = "";
                }
                if (A < I.length) {
                    var G;
                    for (var O = I.length - 1; O >= A; O--) {
                        G = I[O];
                        G.style.display = "none";
                    }
                }
                this._nDisplayedItems = A;
                this.containerPopulateEvent.fire(this, K, R);
                if (this.autoHighlight) {
                    var D = this._elList.firstChild;
                    this._toggleHighlight(D, "to");
                    this.itemArrowToEvent.fire(this, D);
                    this._typeAhead(D, K);
                } else {
                    this._toggleHighlight(this._elCurListItem, "from");
                }
                H = this.doBeforeExpandContainer(this._elTextbox, this._elContainer, K, R);
                this._toggleContainer(H);
            } else {
                this._toggleContainer(false);
            }
            return;
        }
    } else {
        this.dataErrorEvent.fire(this, K);
    }
};
YAHOO.widget.AutoComplete.prototype._clearSelection = function () {
    var C = this._elTextbox.value;
    var B = (this.delimChar) ? this.delimChar[0] : null;
    var A = (B) ? C.lastIndexOf(B, C.length - 2) : -1;
    if (A > -1) {
        this._elTextbox.value = C.substring(0, A);
    } else {
        this._elTextbox.value = "";
    }
    this._sPastSelections = this._elTextbox.value;
    this.selectionEnforceEvent.fire(this);
};
YAHOO.widget.AutoComplete.prototype._textMatchesOption = function () {
    var A = null;
    for (var B = this._nDisplayedItems - 1; B >= 0; B--) {
        var C = this._elList.childNodes[B];
        var D = ("" + C._sResultMatch).toLowerCase();
        if (D == this._sCurQuery.toLowerCase()) {
            A = C;
            break;
        }
    }
    return (A);
};
YAHOO.widget.AutoComplete.prototype._typeAhead = function (B, D) {
    if (!this.typeAhead || (this._nKeyCode == 8)) {
        return;
    }
    var A = this,
    C = this._elTextbox;
    if (C.setSelectionRange || C.createTextRange) {
        this._nTypeAheadDelayID = setTimeout(function () {
            var F = C.value.length;
            A._updateValue(B);
            var G = C.value.length;
            A._selectText(C, F, G);
            var E = C.value.substr(F, G);
            A.typeAheadEvent.fire(A, D, E);
        },
        (this.typeAheadDelay * 1000));
    }
};
YAHOO.widget.AutoComplete.prototype._selectText = function (D, A, B) {
    if (D.setSelectionRange) {
        D.setSelectionRange(A, B);
    } else {
        if (D.createTextRange) {
            var C = D.createTextRange();
            C.moveStart("character", A);
            C.moveEnd("character", B - D.value.length);
            C.select();
        } else {
            D.select();
        }
    }
};
YAHOO.widget.AutoComplete.prototype._toggleContainerHelpers = function (D) {
    var E = this._elContent.offsetWidth + "px";
    var B = this._elContent.offsetHeight + "px";
    if (this.useIFrame && this._elIFrame) {
        var C = this._elIFrame;
        if (D) {
            C.style.width = E;
            C.style.height = B;
            C.style.padding = "";
        } else {
            C.style.width = 0;
            C.style.height = 0;
            C.style.padding = 0;
        }
    }
    if (this.useShadow && this._elShadow) {
        var A = this._elShadow;
        if (D) {
            A.style.width = E;
            A.style.height = B;
        } else {
            A.style.width = 0;
            A.style.height = 0;
        }
    }
};
YAHOO.widget.AutoComplete.prototype._toggleContainer = function (I) {
    var D = this._elContainer;
    if (this.alwaysShowContainer && this._bContainerOpen) {
        return;
    }
    if (!I) {
        this._toggleHighlight(this._elCurListItem, "from");
        this._nDisplayedItems = 0;
        this._sCurQuery = null;
        if (!this._bContainerOpen) {
            this._elContent.style.display = "none";
            return;
        }
    }
    var A = this._oAnim;
    if (A && A.getEl() && (this.animHoriz || this.animVert)) {
        if (A.isAnimated()) {
            A.stop(true);
        }
        var G = this._elContent.cloneNode(true);
        D.appendChild(G);
        G.style.top = "-9000px";
        G.style.width = "";
        G.style.height = "";
        G.style.display = "";
        var F = G.offsetWidth;
        var C = G.offsetHeight;
        var B = (this.animHoriz) ? 0 : F;
        var E = (this.animVert) ? 0 : C;
        A.attributes = (I) ? {
            width: {
                to: F
            },
            height: {
                to: C
            }
        } : {
            width: {
                to: B
            },
            height: {
                to: E
            }
        };
        if (I && !this._bContainerOpen) {
            this._elContent.style.width = B + "px";
            this._elContent.style.height = E + "px";
        } else {
            this._elContent.style.width = F + "px";
            this._elContent.style.height = C + "px";
        }
        D.removeChild(G);
        G = null;
        var H = this;
        var J = function () {
            A.onComplete.unsubscribeAll();
            if (I) {
                H._toggleContainerHelpers(true);
                H._bContainerOpen = I;
                H.containerExpandEvent.fire(H);
            } else {
                H._elContent.style.display = "none";
                H._bContainerOpen = I;
                H.containerCollapseEvent.fire(H);
            }
        };
        this._toggleContainerHelpers(false);
        this._elContent.style.display = "";
        A.onComplete.subscribe(J);
        A.animate();
    } else {
        if (I) {
            this._elContent.style.display = "";
            this._toggleContainerHelpers(true);
            this._bContainerOpen = I;
            this.containerExpandEvent.fire(this);
        } else {
            this._toggleContainerHelpers(false);
            this._elContent.style.display = "none";
            this._bContainerOpen = I;
            this.containerCollapseEvent.fire(this);
        }
    }
};
YAHOO.widget.AutoComplete.prototype._toggleHighlight = function (A, C) {
    if (A) {
        var B = this.highlightClassName;
        if (this._elCurListItem) {
            YAHOO.util.Dom.removeClass(this._elCurListItem, B);
            this._elCurListItem = null;
        }
        if ((C == "to") && B) {
            YAHOO.util.Dom.addClass(A, B);
            this._elCurListItem = A;
        }
    }
};
YAHOO.widget.AutoComplete.prototype._togglePrehighlight = function (B, C) {
    if (B == this._elCurListItem) {
        return;
    }
    var A = this.prehighlightClassName;
    if ((C == "mouseover") && A) {
        YAHOO.util.Dom.addClass(B, A);
    } else {
        YAHOO.util.Dom.removeClass(B, A);
    }
};
YAHOO.widget.AutoComplete.prototype._updateValue = function (C) {
    if (!this.suppressInputUpdate) {
        var F = this._elTextbox;
        var E = (this.delimChar) ? (this.delimChar[0] || this.delimChar) : null;
        var B = C._sResultMatch;
        var D = "";
        if (E) {
            D = this._sPastSelections;
            D += B + E;
            if (E != " ") {
                D += " ";
            }
        } else {
            D = B;
        }
        F.value = D;
        if (F.type == "textarea") {
            F.scrollTop = F.scrollHeight;
        }
        var A = F.value.length;
        this._selectText(F, A, A);
        this._elCurListItem = C;
    }
};
YAHOO.widget.AutoComplete.prototype._selectItem = function (A) {
    this._bItemSelected = true;
    this._updateValue(A);
    this._sPastSelections = this._elTextbox.value;
    this._clearInterval();
    this.itemSelectEvent.fire(this, A, A._oResultData);
    this._toggleContainer(false);
};
YAHOO.widget.AutoComplete.prototype._jumpSelection = function () {
    if (this._elCurListItem) {
        this._selectItem(this._elCurListItem);
    } else {
        this._toggleContainer(false);
    }
};
YAHOO.widget.AutoComplete.prototype._moveSelection = function (G) {
    if (this._bContainerOpen) {
        var F = this._elCurListItem;
        var E = -1;
        if (F) {
            E = F._nItemIndex;
        }
        var C = (G == 40) ? (E + 1) : (E - 1);
        if (C < -2 || C >= this._nDisplayedItems) {
            return;
        }
        if (F) {
            this._toggleHighlight(F, "from");
            this.itemArrowFromEvent.fire(this, F);
        }
        if (C == -1) {
            if (this.delimChar) {
                this._elTextbox.value = this._sPastSelections + this._sCurQuery;
            } else {
                this._elTextbox.value = this._sCurQuery;
            }
            return;
        }
        if (C == -2) {
            this._toggleContainer(false);
            return;
        }
        var D = this._elList.childNodes[C];
        var A = this._elContent;
        var B = ((YAHOO.util.Dom.getStyle(A, "overflow") == "auto") || (YAHOO.util.Dom.getStyle(A, "overflowY") == "auto"));
        if (B && (C > -1) && (C < this._nDisplayedItems)) {
            if (G == 40) {
                if ((D.offsetTop + D.offsetHeight) > (A.scrollTop + A.offsetHeight)) {
                    A.scrollTop = (D.offsetTop + D.offsetHeight) - A.offsetHeight;
                } else {
                    if ((D.offsetTop + D.offsetHeight) < A.scrollTop) {
                        A.scrollTop = D.offsetTop;
                    }
                }
            } else {
                if (D.offsetTop < A.scrollTop) {
                    this._elContent.scrollTop = D.offsetTop;
                } else {
                    if (D.offsetTop > (A.scrollTop + A.offsetHeight)) {
                        this._elContent.scrollTop = (D.offsetTop + D.offsetHeight) - A.offsetHeight;
                    }
                }
            }
        }
        this._toggleHighlight(D, "to");
        this.itemArrowToEvent.fire(this, D);
        if (this.typeAhead) {
            this._updateValue(D);
        }
    }
};
YAHOO.widget.AutoComplete.prototype._onContainerMouseover = function (A, C) {
    var D = YAHOO.util.Event.getTarget(A);
    var B = D.nodeName.toLowerCase();
    while (D && (B != "table")) {
        switch (B) {
        case "body":
            return;
        case "li":
            if (C.prehighlightClassName) {
                C._togglePrehighlight(D, "mouseover");
            } else {
                C._toggleHighlight(D, "to");
            }
            C.itemMouseOverEvent.fire(C, D);
            break;
        case "div":
            if (YAHOO.util.Dom.hasClass(D, "yui-ac-container")) {
                C._bOverContainer = true;
                return;
            }
            break;
        default:
            break;
        }
        D = D.parentNode;
        if (D) {
            B = D.nodeName.toLowerCase();
        }
    }
};
YAHOO.widget.AutoComplete.prototype._onContainerMouseout = function (A, C) {
    var D = YAHOO.util.Event.getTarget(A);
    var B = D.nodeName.toLowerCase();
    while (D && (B != "table")) {
        switch (B) {
        case "body":
            return;
        case "li":
            if (C.prehighlightClassName) {
                C._togglePrehighlight(D, "mouseout");
            } else {
                C._toggleHighlight(D, "from");
            }
            C.itemMouseOutEvent.fire(C, D);
            break;
        case "ul":
            C._toggleHighlight(C._elCurListItem, "to");
            break;
        case "div":
            if (YAHOO.util.Dom.hasClass(D, "yui-ac-container")) {
                C._bOverContainer = false;
                return;
            }
            break;
        default:
            break;
        }
        D = D.parentNode;
        if (D) {
            B = D.nodeName.toLowerCase();
        }
    }
};
YAHOO.widget.AutoComplete.prototype._onContainerClick = function (A, C) {
    var D = YAHOO.util.Event.getTarget(A);
    var B = D.nodeName.toLowerCase();
    while (D && (B != "table")) {
        switch (B) {
        case "body":
            return;
        case "li":
            C._toggleHighlight(D, "to");
            C._selectItem(D);
            return;
        default:
            break;
        }
        D = D.parentNode;
        if (D) {
            B = D.nodeName.toLowerCase();
        }
    }
};
YAHOO.widget.AutoComplete.prototype._onContainerScroll = function (A, B) {
    B._elTextbox.focus();
};
YAHOO.widget.AutoComplete.prototype._onContainerResize = function (A, B) {
    B._toggleContainerHelpers(B._bContainerOpen);
};
YAHOO.widget.AutoComplete.prototype._onTextboxKeyDown = function (A, B) {
    var C = A.keyCode;
    if (B._nTypeAheadDelayID != -1) {
        clearTimeout(B._nTypeAheadDelayID);
    }
    switch (C) {
    case 9:
        if (!YAHOO.env.ua.opera && (navigator.userAgent.toLowerCase().indexOf("mac") == -1) || (YAHOO.env.ua.webkit > 420)) {
            if (B._elCurListItem) {
                if (B.delimChar && (B._nKeyCode != C)) {
                    if (B._bContainerOpen) {
                        YAHOO.util.Event.stopEvent(A);
                    }
                }
                B._selectItem(B._elCurListItem);
            } else {
                B._toggleContainer(false);
            }
        }
        break;
    case 13:
        if (!YAHOO.env.ua.opera && (navigator.userAgent.toLowerCase().indexOf("mac") == -1) || (YAHOO.env.ua.webkit > 420)) {
            if (B._elCurListItem) {
                if (B._nKeyCode != C) {
                    if (B._bContainerOpen) {
                        YAHOO.util.Event.stopEvent(A);
                    }
                }
                B._selectItem(B._elCurListItem);
            } else {
                B._toggleContainer(false);
            }
        }
        break;
    case 27:
        B._toggleContainer(false);
        return;
    case 39:
        B._jumpSelection();
        break;
    case 38:
        if (B._bContainerOpen) {
            YAHOO.util.Event.stopEvent(A);
            B._moveSelection(C);
        }
        break;
    case 40:
        if (B._bContainerOpen) {
            YAHOO.util.Event.stopEvent(A);
            B._moveSelection(C);
        }
        break;
    default:
        B._bItemSelected = false;
        B._toggleHighlight(B._elCurListItem, "from");
        B.textboxKeyEvent.fire(B, C);
        break;
    }
    if (C === 18) {
        B._enableIntervalDetection();
    }
    B._nKeyCode = C;
};
YAHOO.widget.AutoComplete.prototype._onTextboxKeyPress = function (A, B) {
    var C = A.keyCode;
    if (YAHOO.env.ua.opera || (navigator.userAgent.toLowerCase().indexOf("mac") != -1) && (YAHOO.env.ua.webkit < 420)) {
        switch (C) {
        case 9:
            if (B._bContainerOpen) {
                if (B.delimChar) {
                    YAHOO.util.Event.stopEvent(A);
                }
                if (B._elCurListItem) {
                    B._selectItem(B._elCurListItem);
                } else {
                    B._toggleContainer(false);
                }
            }
            break;
        case 13:
            if (B._bContainerOpen) {
                YAHOO.util.Event.stopEvent(A);
                if (B._elCurListItem) {
                    B._selectItem(B._elCurListItem);
                } else {
                    B._toggleContainer(false);
                }
            }
            break;
        default:
            break;
        }
    } else {
        if (C == 229) {
            B._enableIntervalDetection();
        }
    }
};
YAHOO.widget.AutoComplete.prototype._onTextboxKeyUp = function (A, C) {
    var B = this.value;
    C._initProps();
    var D = A.keyCode;
    if (C._isIgnoreKey(D)) {
        return;
    }
    if (C._nDelayID != -1) {
        clearTimeout(C._nDelayID);
    }
    C._nDelayID = setTimeout(function () {
        C._sendQuery(B);
    },
    (C.queryDelay * 1000));
};
YAHOO.widget.AutoComplete.prototype._onTextboxFocus = function (A, B) {
    if (!B._bFocused) {
        B._elTextbox.setAttribute("autocomplete", "off");
        B._bFocused = true;
        B._sInitInputValue = B._elTextbox.value;
        B.textboxFocusEvent.fire(B);
    }
};
YAHOO.widget.AutoComplete.prototype._onTextboxBlur = function (A, C) {
    if (!C._bOverContainer || (C._nKeyCode == 9)) {
        if (!C._bItemSelected) {
            var B = C._textMatchesOption();
            if (!C._bContainerOpen || (C._bContainerOpen && (B === null))) {
                if (C.forceSelection) {
                    C._clearSelection();
                } else {
                    C.unmatchedItemSelectEvent.fire(C, C._sCurQuery);
                }
            } else {
                if (C.forceSelection) {
                    C._selectItem(B);
                }
            }
        }
        if (C._bContainerOpen) {
            C._toggleContainer(false);
        }
        C._clearInterval();
        C._bFocused = false;
        if (C._sInitInputValue !== C._elTextbox.value) {
            C.textboxChangeEvent.fire(C);
        }
        C.textboxBlurEvent.fire(C);
    }
};
YAHOO.widget.AutoComplete.prototype._onWindowUnload = function (A, B) {
    if (B && B._elTextbox && B.allowBrowserAutocomplete) {
        B._elTextbox.setAttribute("autocomplete", "on");
    }
};
YAHOO.widget.AutoComplete.prototype.doBeforeSendQuery = function (A) {
    return this.generateRequest(A);
};
YAHOO.widget.AutoComplete.prototype.getListItems = function () {
    var C = [],
    B = this._elList.childNodes;
    for (var A = B.length - 1; A >= 0; A--) {
        C[A] = B[A];
    }
    return C;
};
YAHOO.widget.AutoComplete._cloneObject = function (D) {
    if (!YAHOO.lang.isValue(D)) {
        return D;
    }
    var F = {};
    if (YAHOO.lang.isFunction(D)) {
        F = D;
    } else {
        if (YAHOO.lang.isArray(D)) {
            var E = [];
            for (var C = 0, B = D.length; C < B; C++) {
                E[C] = YAHOO.widget.AutoComplete._cloneObject(D[C]);
            }
            F = E;
        } else {
            if (YAHOO.lang.isObject(D)) {
                for (var A in D) {
                    if (YAHOO.lang.hasOwnProperty(D, A)) {
                        if (YAHOO.lang.isValue(D[A]) && YAHOO.lang.isObject(D[A]) || YAHOO.lang.isArray(D[A])) {
                            F[A] = YAHOO.widget.AutoComplete._cloneObject(D[A]);
                        } else {
                            F[A] = D[A];
                        }
                    }
                }
            } else {
                F = D;
            }
        }
    }
    return F;
};
YAHOO.register("autocomplete", YAHOO.widget.AutoComplete, {
    version: "2.6.0",
    build: "1321"
});