var toppos;
(function($){$.fn.jsonSuggest=function(searchData,settings){var defaults={minCharacters:1,maxResults:10,wildCard:"",caseSensitive:false,notCharacter:"!",maxHeight:210,highlightMatches:true,onSelect:undefined,ajaxResults:false};settings=$.extend(defaults,settings);return this.each(function(){function regexEscape(txt,omit){var specials=['/','.','*','+','?','|','(',')','[',']','{','}','\\'];if(omit){for(var i=0;i<specials.length;i++){if(specials[i]===omit){specials.splice(i,1);}}}
																																																																																																																								 
var escapePatt=new RegExp('(\\'+specials.join('|\\')+')','g');
return txt.replace(escapePatt,'\\$1');
}
var obj=$(this),wildCardPatt=new RegExp(regexEscape(settings.wildCard||''),'g'),results=$('<div />'),currentSelection,pageX,pageY;
function selectResultItem(item){
	obj.val(item.text);
	//$("input#id").val(item.id);
	//alert('dd');
	$(results).html('').hide();
	//alert('ee');
	linkurl = '/'+item.alias+'-'+item.id;
	//alert(linkurl);
	window.location = linkurl; //redirects to homepage
	
	if(typeof settings.onSelect==='function'){settings.onSelect(item);}
}
function setHoverClass(el){$('div.resultItem',results).removeClass('hover');
$(el).addClass('hover');
currentSelection=el;
}
function buildResults(resultObjects,sFilterTxt){sFilterTxt="("+sFilterTxt+")";
var bOddRow=true,i,iFound=0,filterPatt=settings.caseSensitive?new RegExp(sFilterTxt,"g"):new RegExp(sFilterTxt,"ig");
$(results).html('').hide();

for(i=0;i<resultObjects.length;i+=1){
	var item=$('<div />'),text=resultObjects[i].text;
	var id  =$('<div />'),id=resultObjects[i].id;
	if(settings.highlightMatches===true){
		text=text.replace(filterPatt,"<strong>$1</strong>");
	}
	$(item).append('<p class="text">'+text+'</p>');
	//$(item +' text' ).append('<span class="estid">'+id+'</span>');
	if(typeof resultObjects[i].extra==='string'){$(item).append('<p class="extra">'+resultObjects[i].extra+'</p>');}
	if(typeof resultObjects[i].image==='string'){$(item).prepend('<img src="'+resultObjects[i].image+'" />').append('<br style="clear:both;" />');}
	$(item).addClass('resultItem').addClass((bOddRow)?'odd':'even').click(function(n){return function(){selectResultItem(resultObjects[n]);
	};
	}(i)).mouseover(function(el){return function(){setHoverClass(el);
	};
	}(item));
	$(results).append(item);
	bOddRow=!bOddRow;
	iFound+=1;
	if(typeof settings.maxResults==='number'&&iFound>=settings.maxResults){
		break;
	}
}

if($('div',results).length>0){
	currentSelection=undefined;
	$(results).prepend("<div class=\"hotellist_title\"><span class=\"hotel_icons\">Hotels</span></div>");
	$(results).show().css('height','auto');
	if($(results).height()>settings.maxHeight){
		$(results).css({'overflow':'hidden','height':settings.maxHeight+'px'});
		toppos = -(settings.maxHeight + 8)+'px';
		$(results).css({'top':toppos});
		
	} else {
			$(results).show().css('height',$(results).height());
			toppos = -($(results).height() + 8);
			$(results).css({'top':toppos});
	}
		//alert(toppos);	
	}}

function runSuggest(e){if(this.value.length<settings.minCharacters){$(results).html('').hide();return false;}
var resultObjects=[],sFilterTxt=(!settings.wildCard)?regexEscape(this.value):regexEscape(this.value,settings.wildCard).replace(wildCardPatt,'.*'),bMatch=true,filterPatt,i;if(settings.notCharacter&&sFilterTxt.indexOf(settings.notCharacter)===0){sFilterTxt=sFilterTxt.substr(settings.notCharacter.length,sFilterTxt.length);if(sFilterTxt.length>0){bMatch=false;}}
sFilterTxt=sFilterTxt||'.*';sFilterTxt=settings.wildCard?'^'+sFilterTxt:sFilterTxt;filterPatt=settings.caseSensitive?new RegExp(sFilterTxt):new RegExp(sFilterTxt,"i");if(settings.ajaxResults===true){resultObjects=searchData(this.value,settings.wildCard,settings.caseSensitive,settings.notCharacter);if(typeof resultObjects==='string'){resultObjects=JSON.parse(resultObjects);}}
else{for(i=0;i<searchData.length;i+=1){if(filterPatt.test(searchData[i].text)===bMatch){resultObjects.push(searchData[i]);}}}
buildResults(resultObjects,sFilterTxt);}
function keyListener(e){switch(e.keyCode){case 13:$(currentSelection).trigger('click');return false;case 40:if(typeof currentSelection==='undefined'){currentSelection=$('div.resultItem:first',results).get(0);}
else{currentSelection=$(currentSelection).next().get(0);}
setHoverClass(currentSelection);if(currentSelection){$(results).scrollTop(currentSelection.offsetTop);}
return false;case 38:if(typeof currentSelection==='undefined'){currentSelection=$('div.resultItem:last',results).get(0);}
else{currentSelection=$(currentSelection).prev().get(0);}
setHoverClass(currentSelection);if(currentSelection){$(results).scrollTop(currentSelection.offsetTop);}
return false;default:runSuggest.apply(this,[e]);}}

$(results).addClass('jsonSuggestResults').css({'top':-($(results).height()),'left':obj.position().left+'px','width':'361px'}).hide();obj.after(results).keyup(keyListener).blur(function(e){var resPos=$(results).offset();resPos.bottom=resPos.top+$(results).height();resPos.right=resPos.left+$(results).width();
																																																																												if(pageY<resPos.top||pageY>resPos.bottom||pageX<resPos.left||pageX>resPos.right){$(results).hide();}}).focus(function(e){
																																																																							$(results).css({'top':-($(results).height() + 8)+'px','left':'-59px'});
																																																																													if($('div',results).length>0){$(results).show();}}).attr('autocomplete','off');$().mousemove(function(e){pageX=e.pageX;pageY=e.pageY;});if($.browser.opera){obj.keydown(function(e){if(e.keyCode===40){return keyListener(e);}});}

settings.notCharacter=regexEscape(settings.notCharacter||'');if(!settings.ajaxResults){if(typeof searchData==='function'){searchData=searchData();}
if(typeof searchData==='string'){searchData=JSON.parse(searchData);}}});};})(jQuery);

