
YAHOO.example.FnMultipleFields = function() { // Define a custom search function for the DataSource

    var matchNames = function(sQuery) {
        // Case insensitive matching   
        var query = sQuery.toLowerCase(),
             contact,
            i = 0,
             l = myContacts.length,
             matches = [];

        // Match against each name of each contact   
        for (; i < l; i++) {
            contact = myContacts[i];
            if ((contact.airportCode.toLowerCase().indexOf(query) > -1) ||
                 (contact.airportName.toLowerCase().indexOf(query) > -1) ||
                 (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) {
                matches[matches.length] = contact;
            }
        }

        return matches;
    };
    // Use a FunctionDataSource   
    var oDS = new YAHOO.util.FunctionDataSource(matchNames);
    oDS.responseSchema = {
        fields: ["airportCode", "airportName"]
    }

    // Instantiate AutoComplete   

    var oAC = new YAHOO.widget.AutoComplete("fromCity", "yuiContainer", oDS);
    oAC.useShadow = true;
    oAC.resultTypeList = false;

    var oAC1 = new YAHOO.widget.AutoComplete("toCity", "yuiContainer1", oDS);
    oAC1.useShadow = true;
    oAC1.resultTypeList = false;



    // Custom formatter to highlight the matching letters   
    oAC.formatResult = function(oResultData, sQuery, sResultMatch) {
        var query = sQuery.toLowerCase(),
             airportCode = oResultData.airportCode,
             airportName = oResultData.airportName,
             nname = oResultData.nname || "", // Guard against null value   
            query = sQuery.toLowerCase(),
             airportCodeMatchIndex = airportCode.toLowerCase().indexOf(query),
             airportNameMatchIndex = airportName.toLowerCase().indexOf(query),
             nnameMatchIndex = nname.toLowerCase().indexOf(query),
             displayairportCode, displayairportName, displaynname;

        if (airportCodeMatchIndex > -1) {
            displayairportCode = highlightMatch(airportCode, query, airportCodeMatchIndex);
        }
        else {
            displayairportCode = airportCode;
        }

        if (airportNameMatchIndex > -1) {
            displayairportName = highlightMatch(airportName, query, airportNameMatchIndex);
        }
        else {
            displayairportName = airportName;

        }


        if (nnameMatchIndex > -1) {
            displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
        }
        else {
            displaynname = nname ? "(" + nname + ")" : "";
        }

        return displayairportCode + " " + displayairportName + " " + displaynname;

    };


    //stops here next Autocompleter

    oAC1.formatResult = function(oResultData, sQuery, sResultMatch) {
        var query = sQuery.toLowerCase(),
             airportCode = oResultData.airportCode,
             airportName = oResultData.airportName,
             nname = oResultData.nname || "", // Guard against null value   
            query = sQuery.toLowerCase(),
             airportCodeMatchIndex = airportCode.toLowerCase().indexOf(query),
             airportNameMatchIndex = airportName.toLowerCase().indexOf(query),
             nnameMatchIndex = nname.toLowerCase().indexOf(query),
             displayairportCode, displayairportName, displaynname;

        if (airportCodeMatchIndex > -1) {
            displayairportCode = highlightMatch(airportCode, query, airportCodeMatchIndex);
        }
        else {
            displayairportCode = airportCode;

        }

        if (airportNameMatchIndex > -1) {
            displayairportName = highlightMatch(airportName, query, airportNameMatchIndex);
        }
        else {
            displayairportName = airportName;
        }




        if (nnameMatchIndex > -1) {
            displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
        }
        else {
            displaynname = nname ? "(" + nname + ")" : "";
        }

        return displayairportCode + " " + displayairportName + " " + displaynname;

    };


    // Helper function for the formatter   
    var highlightMatch = function(full, snippet, matchindex) {
        return full.substring(0, matchindex) +
                 "<span class='match'>" +
                 full.substr(matchindex, snippet.length) +
                 "</span>" +
                 full.substring(matchindex + snippet.length);
    };

    // Define an event handler to populate a hidden form field   
    // when an item gets selected and populate the input field   
    var myHiddenField = YAHOO.util.Dom.get("myHidden");

    var myHandler = function(sType, aArgs) {
        var myAC = aArgs[0]; // reference back to the AC instance   

        var elLI = aArgs[1]; // reference to the selected LI element   
        var oData = aArgs[2]; // object literal of selected item's result data   

        // update hidden form field with the selected item's ID   
        myHiddenField.value = oData.id;
        myAC.getInputEl().value = oData.airportCode;

        //GetMerchantDetails();

    };

    //oAC.itemSelectEvent.subscribe(myHandler);

    //oAC1.itemSelectEvent.subscribe(myHandler);
    return {
        oDS: oDS,
        oAC1: oAC1,
        oAC: oAC
    };


} ();

