/**
* @author Masson Cedric - cedric@skipass.com - massonced74@gmail.com
* @date 15/04/2008
*
* speedsearch object.
* 
* Gestion de recherche ajax générique.
* Consulter la doc des différentes fonctions ci dessous pour voir les possibilités.
* S'appuye sur les librairies autocomplete de yahoo. ainsi que sur le modèle speedsearch developé coté serveur.
* 
*/
var searchEngine = new Array();  

	searchEngine = function(options){
		var input_id = options['input'];
		var container = options['container'];
		var url_dest = options['adress'];
		var list_type = options['list_type'];
		var node = options['node'];
		
		if(options['onSelect'] != null){
			var onSelect = eval(options['onSelect']);
		}
		
		if(options['loader_element'] != null){
			var loader_element = options['loader_element'] ;
		}
		
		if((input_id==undefined)||(container==undefined)||(url_dest==undefined)||(list_type==undefined)){
			throw "Speedsearch Invalid arguments";
		}
		
		// Define a custom formatter function
	    fnCustomFormatter = function(oResultItem, sQuery) {
	        var sName = oResultItem[0];
	        var sOption = oResultItem[1];
	        var sKeyQuery = sName.substr(0, sQuery.length);
	        var sKeyRemainder = sName.substr(sQuery.length);
	        var aMarkup = ["<div style='float:left;'>",
	            sName,
	            "</div><div id='proposition_option' style='float:right;'>",
	            sOption,
	            "</div><br class='clear' style='line-height:1;'/>"];
	            
	        return (aMarkup.join(""));
	    };
		var myHandler = function(myAutoComp, listItem) {
			if(typeof(onSelect) == 'function'){
				onSelect(listItem[2]);
			}
			if(loader_element!=null){
		    	loader_element.style.display = 'none';
		    }
			return false;
		};
		
		YAHOO.example.ACXml = new function(){
		    // Instantiate an XHR DataSource and define schema as an array:
		    // ["Multi-depth.object.notation.to.find.a.single.result.item",
		    //  "Query Key","Additional Param Name 1", ..., "Additional Param Name n"]
		    this.oACDS = new YAHOO.widget.DS_XHR(url_dest, [node, "Title", "Option","url"]);
		    this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_XML;
		    this.oACDS.queryMatchContains = true;
		    this.oACDS.scriptQueryAppend = "lt="+list_type+"&node="+node; 
		
		    // Instantiate AutoComplete
		    this.oAutoComp = new YAHOO.widget.AutoComplete(input_id,container, this.oACDS);
		    this.oAutoComp.formatResult = fnCustomFormatter; 
			this.oAutoComp.itemSelectEvent.subscribe(myHandler);
			
			this.oAutoComp.doBeforeSendQuery = function(sQuery) {
			    //Affichage d'un loader si dŽfini
			    if(loader_element!=null){
			    	loader_element.style.display = 'block';
			    }
			    return sQuery;
			};
			this.oAutoComp.dataReturnEvent.subscribe(function() {
   			    //Cache d'un loader si dŽfini
			    if(loader_element!=null){
			    	loader_element.style.display = 'none';
			    }
			});
			this.oAutoComp.containerCollapseEvent.subscribe(function() {
   			    //Cache d'un loader si dŽfini
			    if(loader_element!=null){
			    	loader_element.style.display = 'none';
			    }
			});
		};
}

searchEngine.prototype =
{
	setDestAdress:function(url){
	}
	,
	display:function(){
	}
}

