/** AutoSuggest Packed JS **/
if(typeof(bsn)=="undefined")_b=bsn={};if(typeof(_b.Autosuggest)=="undefined")_b.Autosuggest={};else alert("Autosuggest is already set!");_b.AutoSuggest=function(id,param){if(!document.getElementById)return 0;this.fld=_b.DOM.gE(id);if(!this.fld)return 0;this.sInp="";this.nInpC=0;this.aSug=[];this.iHigh=0;this.oP=param?param:{};var k,def={minchars:1,meth:"get",varname:"input",className:"autosuggest",timeout:2500,delay:500,offsety:-5,shownoresults:true,noresults:"No results!",maxheight:250,cache:true,maxentries:25};for(k in def){if(typeof(this.oP[k])!=typeof(def[k]))this.oP[k]=def[k]}var p=this;this.fld.onkeypress=function(ev){return p.onKeyPress(ev)};this.fld.onkeyup=function(ev){return p.onKeyUp(ev)};this.fld.setAttribute("autocomplete","off")};_b.AutoSuggest.prototype.onKeyPress=function(ev){var key=(window.event)?window.event.keyCode:ev.keyCode;var RETURN=13;var TAB=9;var ESC=27;var bubble=1;switch(key){case RETURN:this.setHighlightedValue();bubble=0;break;case ESC:this.clearSuggestions();break}return bubble};_b.AutoSuggest.prototype.onKeyUp=function(ev){var key=(window.event)?window.event.keyCode:ev.keyCode;var ARRUP=38;var ARRDN=40;var bubble=1;switch(key){case ARRUP:this.changeHighlight(key);bubble=0;break;case ARRDN:this.changeHighlight(key);bubble=0;break;default:this.getSuggestions(this.fld.value)}return bubble};_b.AutoSuggest.prototype.getSuggestions=function(val){if(val==this.sInp)return 0;_b.DOM.remE(this.idAs);this.sInp=val;if(val.length<this.oP.minchars){this.aSug=[];this.nInpC=val.length;return 0}var ol=this.nInpC;this.nInpC=val.length?val.length:0;var l=this.aSug.length;if(this.nInpC>ol&&l&&l<this.oP.maxentries&&this.oP.cache){var arr=[];for(var i=0;i<l;i++){if(this.aSug[i].value.substr(0,val.length).toLowerCase()==val.toLowerCase()||this.aSug[i].info=='as_header')arr.push(this.aSug[i])}this.aSug=arr;this.createList(this.aSug);return false}else{var pointer=this;var input=this.sInp;clearTimeout(this.ajID);this.ajID=setTimeout(function(){pointer.doAjaxRequest(input)},this.oP.delay)}return false};_b.AutoSuggest.prototype.doAjaxRequest=function(input){if(input!=this.fld.value)return false;var pointer=this;if(typeof(this.oP.script)=="function")var url=this.oP.script(encodeURIComponent(this.sInp));else var url=this.oP.script+this.oP.varname+"="+encodeURIComponent(this.sInp);if(!url)return false;var meth=this.oP.meth;var input=this.sInp;var onSuccessFunc=function(req){pointer.setSuggestions(req,input)};var onErrorFunc=function(status){alert("AJAX error: "+status)};var myAjax=new _b.Ajax();myAjax.makeRequest(url,meth,onSuccessFunc,onErrorFunc)};
_b.AutoSuggest.prototype.setSuggestions=function(req,input){
    if(input!=this.fld.value)return false;
    this.aSug=[];
    if(this.oP.json){
	var jsondata=eval('('+req.responseText+')');
	for(var i=0;i<jsondata.results.length;i++){
	    // The search result values.
	    this.aSug.push({
		    'id':jsondata.results[i].id,
			'value':jsondata.results[i].value,
			'info':jsondata.results[i].info,
			'url':jsondata.results[i].url,
			'agenturl':jsondata.results[i].agenturl,
			'photo':jsondata.results[i].photo,
			'agent':jsondata.results[i].agent}
		)
		}
    }else{
	var xml=req.responseXML;
	var results=xml.getElementsByTagName('results')[0].childNodes;
	for(var i=0;i<results.length;i++){
	    if(results[i].hasChildNodes())
		// The search result values.
		this.aSug.push({
			'id':results[i].getAttribute('id'),
			    'value':results[i].childNodes[0].nodeValue,
			    'info':results[i].getAttribute('info'),
			    'url':results[i].getAttribute('url'),
			    'agenturl':results[i].getAttribute('agenturl'),
			    'photo':results[i].getAttribute('photo'),
			    'agent':results[i].getAttribute('agent')})
		    }
    }
    this.idAs="as_"+this.fld.id;
    this.createList(this.aSug)
};
_b.AutoSuggest.prototype.createList=function(arr){
    var pointer=this;
    _b.DOM.remE(this.idAs);
    this.killTimeout();
    if(arr.length==0&&!this.oP.shownoresults)
	return false;
    var div=_b.DOM.cE("div",{id:this.idAs,className:this.oP.className});
    var hcorner=_b.DOM.cE("div",{className:"as_corner"});
    var hbar=_b.DOM.cE("div",{className:"as_bar"});
    var header=_b.DOM.cE("div",{className:"as_header"});
    header.appendChild(hcorner);
    header.appendChild(hbar);
    div.appendChild(header);
    var ul=_b.DOM.cE("ul",{id:"as_ul"});
    for(var i=0;i<arr.length;i++){
	if(arr[i].info=="plugin_header"){
	    var li=_b.DOM.cE("li",{className:"as_header"},arr[i].value);
	    ul.appendChild(li);
	    i++;
	}
	// The search result values.
	var url=arr[i].url;
	var val=arr[i].info; 
	var agency=arr[i].info;
	var agenturl=arr[i].agenturl;
	var photo=arr[i].photo;
	var agent=arr[i].agent;
	var agentText = agent;
	var agencyText = agency;
	
	var st=agent.toLowerCase().indexOf(this.sInp.toLowerCase());
	var len = this.sInp.length;
	if(st >= 0){
	    agentText = agent.substring(0,st)+"<em>"+agent.substring(st,st+len)+"</em>"+agent.substring(st+len);
	}
	st=agency.toLowerCase().indexOf(this.sInp.toLowerCase());
	if(st >= 0){
	    agencyText = agency.substring(0,st)+"<em>"+agency.substring(st,st+len)+"</em>"+agency.substring(st+len);
	}
	if (photo.length > 0) {
	    photo = "<img src=/images-agents/" + photo + " border=\"0\" /><br/>";
	}
	// Build the string for displaying a search result
	var output = "<div class=\"search_result\"" + photo + "<div class=\"search_agent\"> " + agentText + "</div> <br/><div class=\"search_agency\"> Travel Masters " + agencyText + " </div><hr/></div>";
	var span=_b.DOM.cE("span",{},output,true);
	var a=_b.DOM.cE("a",{href:url});
	var tl=_b.DOM.cE("span",{className:"tl"}," ");
	var tr=_b.DOM.cE("span",{className:"tr"}," ");
	a.appendChild(tl);
	a.appendChild(tr);
	a.appendChild(span);
	a.name=i+1;
	a.onmouseover=function(){
	    pointer.setHighlight(this.name)
	};
	var li=_b.DOM.cE("li",{},a);
	ul.appendChild(li);
    }
    if(arr.length==0&&this.oP.shownoresults){
	var li=_b.DOM.cE("li",{className:"as_warning"},this.oP.noresults);
	ul.appendChild(li)
    }
    div.appendChild(ul);
    var fcorner=_b.DOM.cE("div",{className:"as_corner"});
    var fbar=_b.DOM.cE("div",{className:"as_bar"});
    var footer=_b.DOM.cE("div",{className:"as_footer"});
    footer.appendChild(fcorner);
    footer.appendChild(fbar);
    div.appendChild(footer);
    var pos=_b.DOM.getPos(this.fld);
    div.style.left=pos.x+"px";
    div.style.top=(pos.y+this.fld.offsetHeight+this.oP.offsety)+"px";
    div.style.width=this.fld.offsetWidth+"px";
    div.onmouseover=function(){
	pointer.killTimeout()
    };
    div.onmouseout=function(){
	// hide the search results after a timeout.
	pointer.resetTimeout()
    };
    document.getElementsByTagName("body")[0].appendChild(div);
    this.iHigh=0;
    var pointer=this;
    this.toID=setTimeout(
			 function(){
			     pointer.clearSuggestions()
			 },this.oP.timeout)
};
_b.AutoSuggest.prototype.changeHighlight=function(key){var list=_b.DOM.gE("as_ul");if(!list)return false;var n;if(key==40)n=this.iHigh+1;else if(key==38)n=this.iHigh-1;if(n>list.childNodes.length)n=list.childNodes.length;if(n<1)n=1;this.setHighlight(n)};_b.AutoSuggest.prototype.setHighlight=function(n){var list=_b.DOM.gE("as_ul");if(!list)return false;if(this.iHigh>0)this.clearHighlight();this.iHigh=Number(n);if(list.childNodes[this.iHigh-1].className!="as_header")list.childNodes[this.iHigh-1].className="as_highlight";this.killTimeout()};_b.AutoSuggest.prototype.clearHighlight=function(){var list=_b.DOM.gE("as_ul");if(!list)return false;if(this.iHigh>0){if(list.childNodes[this.iHigh-1].className!="as_header")list.childNodes[this.iHigh-1].className="";this.iHigh=0}};
_b.AutoSuggest.prototype.setHighlightedValue=function(){
    if(this.iHigh){
	this.sInp=this.fld.value=this.aSug[this.iHigh-1].value;
	this.fld.focus();
	if(this.fld.selectionStart)
	    this.fld.setSelectionRange(this.sInp.length,this.sInp.length);
	this.clearSuggestions();
	if(typeof(this.oP.callback)=="function")
	    this.oP.callback(this.aSug[this.iHigh-1])
	}
};
_b.AutoSuggest.prototype.killTimeout=function(){clearTimeout(this.toID)};_b.AutoSuggest.prototype.resetTimeout=function(){clearTimeout(this.toID);var pointer=this;this.toID=setTimeout(function(){pointer.clearSuggestions()},1000)};_b.AutoSuggest.prototype.clearSuggestions=function(){this.killTimeout();var ele=_b.DOM.gE(this.idAs);var pointer=this;if(ele){var fade=new _b.Fader(ele,1,0,250,function(){_b.DOM.remE(pointer.idAs)})}};if(typeof(_b.Ajax)=="undefined")_b.Ajax={};_b.Ajax=function(){this.req={};this.isIE=false};_b.Ajax.prototype.makeRequest=function(url,meth,onComp,onErr){if(meth!="POST")meth="GET";this.onComplete=onComp;this.onError=onErr;var pointer=this;if(window.XMLHttpRequest){this.req=new XMLHttpRequest();this.req.onreadystatechange=function(){pointer.processReqChange()};this.req.open("GET",url,true);this.req.send(null)}else if(window.ActiveXObject){this.req=new ActiveXObject("Microsoft.XMLHTTP");if(this.req){this.req.onreadystatechange=function(){pointer.processReqChange()};this.req.open(meth,url,true);this.req.send()}}};_b.Ajax.prototype.processReqChange=function(){if(this.req.readyState==4){if(this.req.status==200){this.onComplete(this.req)}else{this.onError(this.req.status)}}};if(typeof(_b.DOM)=="undefined")_b.DOM={};_b.DOM.cE=function(type,attr,cont,html){var ne=document.createElement(type);if(!ne)return 0;for(var a in attr)ne[a]=attr[a];var t=typeof(cont);if(t=="string"&&!html)ne.appendChild(document.createTextNode(cont));else if(t=="string"&&html)ne.innerHTML=cont;else if(t=="object")ne.appendChild(cont);return ne};_b.DOM.gE=function(e){var t=typeof(e);if(t=="undefined")return 0;else if(t=="string"){var re=document.getElementById(e);if(!re)return 0;else if(typeof(re.appendChild)!="undefined")return re;else return 0}else if(typeof(e.appendChild)!="undefined")return e;else return 0};_b.DOM.remE=function(ele){var e=this.gE(ele);if(!e)return 0;else if(e.parentNode.removeChild(e))return true;else return 0};_b.DOM.getPos=function(e){var e=this.gE(e);var obj=e;var curleft=0;if(obj.offsetParent){while(obj.offsetParent){curleft+=obj.offsetLeft;obj=obj.offsetParent}}else if(obj.x)curleft+=obj.x;var obj=e;var curtop=0;if(obj.offsetParent){while(obj.offsetParent){curtop+=obj.offsetTop;obj=obj.offsetParent}}else if(obj.y)curtop+=obj.y;return{x:curleft,y:curtop}};if(typeof(_b.Fader)=="undefined")_b.Fader={};_b.Fader=function(ele,from,to,fadetime,callback){if(!ele)return 0;this.e=ele;this.from=from;this.to=to;this.cb=callback;this.nDur=fadetime;this.nInt=50;this.nTime=0;var p=this;this.nID=setInterval(function(){p._fade()},this.nInt)};_b.Fader.prototype._fade=function(){this.nTime+=this.nInt;var ieop=Math.round(this._tween(this.nTime,this.from,this.to,this.nDur)*100);var op=ieop/100;if(this.e.filters){try{this.e.filters.item("DXImageTransform.Microsoft.Alpha").opacity=ieop}catch(e){this.e.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+ieop+')'}}else{this.e.style.opacity=op}if(this.nTime==this.nDur){clearInterval(this.nID);if(this.cb!=undefined)this.cb()}};_b.Fader.prototype._tween=function(t,b,c,d){return b+((c-b)*(t/d))};

/** Init autosuggest on Search Input **/
jQuery(function() {


	//==================== Search With "agent" plugin =================================================	
	// Set autosuggest options with all plugins activated
	var options = {
		script:"/home/AjaxSearch/_doAjaxSearch.action.php?json=true&plugin=agentmysql&limit=8&",
		varname:"input",
		json:true,						// Returned response type
		shownoresults:true,				// If disable, display nothing if no results
		noresults:"No Results",			// String displayed when no results
		maxresults:8,					// Max num results displayed
		cache:false,					// To enable cache
		minchars:2,						// Start AJAX request with at leat 2 chars
		timeout:100000,					// AutoHide in XX ms
		callback: function (obj) { 		// Callback after click or selection
			// For example use :
						
			// Build HTML
			var html = obj.value + obj.info;
			$('#input_search_agent_response').html(html).show() ;
			
			// => TO submit form (general use)
			//$('#search_agent_value').val(obj.id); 
			//$('#form_search_agent').submit(); 
		}
	};
	// Init autosuggest
	var as_json = new bsn.AutoSuggest('input_search_agent', options);
	
	// Display a little watermak	
	$("#input_search_agent").Watermark("Type your agent's name...");	
});
