YAHOO.example.CustomFormatting = function(){
    var oDS = new YAHOO.util.ScriptNodeDataSource(installPath);

    oDS.responseSchema = {
        resultsList: 'ResultSet.Result',
        fields: ['content','url']
    };

    oDS.scriptCallbackParam = 'callback';


    var oAC = new YAHOO.widget.AutoComplete('myInput', 'myContainer', oDS);

    oAC.generateRequest = function(sQuery) {
        return '?q=' + sQuery +'&storeId='+storeId;
    };

    oAC.maxResultsDisplayed  = maxResultsDisplayed;
    oAC.resultTypeList = false;
    oAC.queryDelay = queryDelay;
    oAC.minQueryLength = 3;
    oAC.setHeader(defaultHeader);
    oAC.setFooter(defaultFooter);
    oAC.openInNewWindow = openInNewWindow;
    oAC.emptyText = emptyText;

    oAC.formatResult = function(oResultData, sQuery, sResultMatch) {
        this.sQuery = sQuery;
        return oResultData.content;
    };

    var validateForm = function() {
        return true;
    };

    oAC.itemSelectEvent.subscribe(function(sType, aArgs) {
        document.getElementById('myInput').value = this.sQuery;
        if(aArgs[0].openInNewWindow) {
            var win = window.open(aArgs[2]['url'], '_blank', '');
            win.focus();
        }
        else window.location = aArgs[2]['url'];
    });

    oAC.textboxFocusEvent.subscribe(function() {
        var oInput = document.getElementById('myInput');
        oInput.style.backgroundImage = '';
        if(oInput.value == this.emptyText) oInput.value = '';
    });

    oAC.textboxBlurEvent.subscribe(function() {
        var oInput = document.getElementById('myInput');
        if(oInput.value == '') oInput.value = this.emptyText;
    });

    oAC.dataRequestEvent.subscribe(function() {
        var myInput=document.getElementById('myInput');
        myInput.style.backgroundImage = 'url("'+preloaderImage+'")';
        myInput.style.backgroundRepeat = 'no-repeat';
        myInput.style.backgroundPosition = 'right';
        setTimeout("document.getElementById('myInput').style.backgroundImage = ''",10000);
    });

    oAC.dataReturnEvent.subscribe(function() {
        var myInput=document.getElementById('myInput');
        myInput.style.backgroundImage = '';
    });

    oAC.dataErrorEvent.subscribe(function() {
        var myInput=document.getElementById('myInput');
        myInput.style.backgroundImage = '';
    });

    return {
        oDS: oDS,
        oAC: oAC,
        validateForm: validateForm
    }
};

