var curSelection=-1;
var curSuggestions=[];
var curSuggestionsImages=[];
var curSuggestionsUrnPages=[];
var curSize=0;
var curText="";
var curTextSel="";
var hideDelayTimerId=null;
var searchSuggestionTimerId=null;
var maxSuggestions=10;
var prevWndResizeEventHandler=null;
var prevWndOnLoadEventHandler=null;
var isMsie=false;
var suggestRequest=null;
var suggestionsLoaded=false;
var suggestDiv=null;
var curSearchType=1;
var curSuggType = 1;
var curLang = "tr-TR";

function attachEventListener(elemObj,eventType,eventHandler)
{
	var eventName="on"+eventType;
	if(elemObj.addEventListener)
		{elemObj.addEventListener(eventType,eventHandler,false);}
	else
	if(elemObj.attachEvent)
		{elemObj.attachEvent(eventName,eventHandler);}
	else
		{var f=elemObj[eventName];elemObj[eventName]=function()
			{
			var res1=f.apply(this,arguments);
			var res2=eventHandler.apply(this,arguments);
			if(res1==undefined) {return res2;}
			else
			{if(res2==undefined) {return res1;}
		     else
			 {return res2&&res1;}}
			};
		}
}

function initSearchSuggest(searchType, suggType, lang)
{
    curSearchType=searchType;
    curSuggType = suggType;
    curLang = lang;
	if(suggestionsLoaded) return;
	isMsie=navigator.userAgent.toLowerCase().indexOf("msie")!=-1;
	var searchBox=getSearchBox();
	if(searchBox)
	{
		curText=searchBox.value;
		searchBox.setAttribute("autocomplete","off");
		attachEventListener(searchBox,"keydown",onKeyDownEvent);
		attachEventListener(searchBox,"keyup",onKeyUpEvent);
		attachEventListener(searchBox,"keypress",onKeyPressedEvent);
		attachEventListener(searchBox,"blur",onFocusLost);
		prevWndResizeEventHandler=window.onresize;attachEventListener(window,"resize",onWindowResized);
		suggestionsLoaded=true;
	}
}

function onKeyDownEvent(event)
{
	var key=event.keyCode;
	switch(key)
	{
		case 40:
			moveDown();
			stopEvent(event);
			break;
		case 38:moveUp();
			stopEvent(event);
			break;
	}
}

function onKeyUpEvent(event)
{
	var key=event.keyCode;
	switch(key)
	{
		case 13:
		    if(curSuggType == 2 && curSelection!=-1)
        	    window.location.href=curSuggestionsUrnPages[curSelection]; 
            else
			    HideSuggestionsDiv();
			break;
		case 40:
			break;
		case 38:
			break;
		case 37:
			break;
		case 39:
			break;
		default:
		{
			var val=getSearchBox().value;
			if(val!=curText) {curText=val;setSearchSuggestionTimeout();}
		}
		break;
	}
}

function onKeyPressedEvent(event)
{
	if(event.keyCode==27&&getSearchSuggest().style.display!="none")
	{
		setSuggestionHideTimeout();
		getSearchBox().value=curText;
		return false;
	}
}

function onFocusLost(event)
{
	setSuggestionHideTimeout();
}

function onWindowResized(event)
{
	getSearchSuggest().style.width=getSearchBox().offsetWidth;
	if(prevWndResizeEventHandler) {prevWndResizeEventHandler(event);}
}

function displaySuggestions(curSuggestions,curSuggestionsImages,curSuggestionsUrnPages)
{
	try
	{
		curSize=Math.min(maxSuggestions,curSuggestions.length);
	}
	catch(e)
	{curSize=0;}

	var ss=getSearchSuggest();
	ss.innerHTML='';
	if(curSize>0)
	{
		ss.style.display="";
		ss.innerHTML+='<div id="sugdivhdr" class="searchSuggestHdrDiv"> '+getSuggestionsDivTitle()+'</div>';
	}
	else
	{
		HideSuggestionsDiv();
	}

	for(i=0;i<curSize;++i)
	{
		if(curSuggType == 1)  // Kelime Önerisi yapılacak..
		{
		    var suggest='<div id="sugdiv'+i+'" onmouseover="javascript:suggestOver(this);" ';
		    suggest+='onmouseout="javascript:suggestOut(this);" ';
		    suggest+='onclick="javascript:setSearchByIndex('+i+');" ';
		    suggest+='class="suggest_link">'+getFormatedSuggestionLine(curSuggestions[i])+'</div>';
		    ss.innerHTML+=suggest;
		}
		else    // Resimli ürün önerisi yapılacak...
		{
		    var suggest='<div id="sugdiv'+i+'" onmouseover="javascript:suggestOver(this);" ';
		    suggest+='onmouseout="javascript:suggestOut(this);" ';
		    //suggest+='onclick="javascript:setSearchByIndex('+i+');" ';
		    suggest+='onclick="window.location.href=\'' + curSuggestionsUrnPages[i] + '\';" ';
		    //suggest+='onclick="alert(\'' + curSuggestionsUrnPages[i] + '\');" ';
		    suggest+='class="suggest_link"><table border="0" cellpadding="0" cellspacing="0"><tr><th><img border="0" src="' + curSuggestionsImages[i] + '"/></th><td><span>'+getFormatedSuggestionLine(curSuggestions[i])+'</span></td></tr></table></div>';
		    ss.innerHTML+=suggest;
		}
	}

//	if(curSize>0)
//	{ss.innerHTML+='<div id="sugdivfoot" class="searchSuggestFootDiv">&nbsp;</div>';}
}

function suggestOver(div_value)
{
	div_value.style.cursor="default";
	unhighlightCurrentSuggestion();
	divId=div_value.id;
	curSelection=divId.substr(6);
	highlightCurrentSuggestion(false);
}

function suggestOut(div_value)
{
	unhighlightSuggestion(div_value);
}

function setSearch(value)
{
	curTextSel=value;
	getSearchBox().value=value;
}

function setSearchByIndex(index)
{
	setSearch(curSuggestions[index]);
	getSearchSuggest().innerHTML='';
}

function highlightSuggestion(div_value)
{
	div_value.className='suggest_link_over';
}

function unhighlightSuggestion(div_value)
{
	div_value.className='suggest_link';
}

function highlightCurrentSuggestion(updateSearchBox)
{
	if(updateSearchBox && curSuggType == 1)
	{
		if(curSelection==-1) {setSearch(curText);}
		else
		{setSearch(curSuggestions[curSelection]);}
	}

	var selection=document.getElementById('sugdiv'+curSelection);
	highlightSuggestion(selection);
}

function unhighlightCurrentSuggestion()
{
	var selection=null;
	try
	{
		selection=document.getElementById('sugdiv'+curSelection);
	}
	catch(e){}
	
	if(selection) {unhighlightSuggestion(selection);}
}

function moveDown()
{
	if(curSize<=0) return;
	try
	{
		unhighlightCurrentSuggestion();
		if(curSelection>=curSize-1) {curSelection=-1;}
		else
		{++curSelection;}

		highlightCurrentSuggestion(true);
	}
	catch(ex)
	{}
}

function moveUp()
{
	if(curSize<=0) return;
	try
	{
		unhighlightCurrentSuggestion();
		if(curSelection<0) {curSelection=curSize-1;}
		else
		{--curSelection;}
		
		highlightCurrentSuggestion(true);
	}
	catch(ex)
	{}
}

function stopEvent(event)
{
	if(isMsie) {event.cancelBubble=true;}
	else
	{event.preventDefault();}
}

function getFormatedSuggestionLine(curSuggestion)
{
	var lowercaseCurrentText=curText.toLowerCase();
	var lowercaseCurrentSuggestion=curSuggestion.toLowerCase();
	var len=curText.length;
	var start=lowercaseCurrentSuggestion.indexOf(lowercaseCurrentText);
	
	if(start==-1) {return curSuggestion;}
	return curSuggestion.substr(0,start)+"<b>"+curSuggestion.substr(start,len)+"</b>"+curSuggestion.substr(start+len);
}

function getSearchBox()
{
	return document.getElementById(aramaClientID + '_txtARM_KEYWORD');
}

function getSearchSuggest()
{
	if(!suggestDiv) {suggestDiv=createSuggestionDiv(getSearchBox());}
	return suggestDiv;
}

function findPos(obj)
{
	var curleft=curtop=0;
	if(obj.offsetParent)
	{
		do {curleft+=obj.offsetLeft;curtop+=obj.offsetTop;}
		while(obj=obj.offsetParent);
	}
	return[curleft,curtop];
}

function createSuggestionDiv(parent)
{
	var suggestionDiv=document.createElement("div");
	suggestionDiv.className="searchSuggestDiv";
	//suggestionDiv.style.border="1px solid black";
	//suggestionDiv.style.backgroundColor="white";
	//suggestionDiv.style.color="black";
	suggestionDiv.style.position="absolute";
	var parentPos=findPos(parent);
	suggestionDiv.style.left=parentPos[0];
	
	if(isMsie) {suggestionDiv.style.top=parentPos[1]+parent.offsetHeight;}

	suggestionDiv.style.width=parent.offsetWidth;
	suggestionDiv.style.zIndex="130";
	suggestionDiv.style.display="none";
	suggestionDiv.id="search_suggest";
	parent.parentNode.appendChild(suggestionDiv);
	return suggestionDiv;
}

function setSuggestionHideTimeout()
{
	hideDelayTimerId=setTimeout(function()
		{return(function()
			{
				hideDelayTimerId=null;
				HideSuggestionsDiv();});}(),300);
}

function setSearchSuggestionTimeout()
{
	if(searchSuggestionTimerId)
	{
		clearTimeout(searchSuggestionTimerId);
		searchSuggestionTimerId=null;
	}
	searchSuggestionTimerId=setTimeout(function()
		{return(function()
			{
				searchJSONSuggest();
				searchSuggestionTimerId=null;
				curSelection=-1;});}(),600);
}

function getSuggestionsDivTitle()
{
	return document.getElementById(aramaClientID + '_lbfARAMA_ONERI').innerHTML;
}

function HideSuggestionsDiv()
{
	curSize=0;
	getSearchSuggest().innerHTML='';
	getSearchSuggest().style.display="none";
	curSelection=-1;
}

function searchJSONSuggest()
{
	var searchInCtrl=document.getElementById(aramaClientID + '_drpKAT_AD');

	curText=getSearchBox().value;
	if(curText.length<=2) {HideSuggestionsDiv();return;}

	var str = encodeURIComponent(curText);
	if (searchInCtrl != null && searchInCtrl.value != "")
	    $.post('/userControls/kutu/ascArama_ajx.aspx', 'searchType=' + curSearchType + '&suggType=' + curSuggType + '&keyword=' + str + '&katkod=' + searchInCtrl.value + '&lang=' + curLang, function(data) {
	        eval(data);
	    });
	else
	    $.post('/userControls/kutu/ascArama_ajx.aspx', 'searchType=' + curSearchType + '&suggType=' + curSuggType + '&keyword=' + str + '&lang=' + curLang, function(data) {
	        eval(data);
	    });
}

function updateCompletion()
{
	if(suggestRequest) 
	{
		suggestRequest=null;
	}
	
	curSuggestions=completion[1];
	curSuggestionsImages=completion[2];
	curSuggestionsUrnPages=completion[3];
	displaySuggestions(curSuggestions,curSuggestionsImages,curSuggestionsUrnPages);
}

