
function FFSuggest(){var pRequest;var pLayer;var pDebug=false;var pInstanceName='';var pSearchURL='';var pQueryParamName='';var pFormname='';var pLayerName='';var pQueryInput;var pSuggest=new Array();var pLastQuery;var pCurrentSelection=0;var submitted=false;var pShowImages=false;var pSuggestImageClass='suggestImage';var pSuggestQueryClass='suggestTextQuery';var pSuggestTypeClass='suggestTextType';var pSuggestAmountClass='suggestTextAmount';var pSuggestQueryTypedClass='suggestTextQueryTyped';var pSuggestFooterClass='suggestFooter';var pSuggestHeaderClass='suggestHeader';var pSuggestRowClass='suggestRow';var pSuggestHighlightClass='suggestHighlight';this.init=function(searchURL,formname,queryParamName,divLayername,instanceName,debugMode,channelParamName,channel,showImages){pSearchURL=searchURL;pFormname=formname;pQueryParamName=queryParamName;pChannelParamName=channelParamName;pChannel=channel;pLayerName=divLayername;pInstanceName=instanceName;pDebug=debugMode;pShowImages=showImages;if(pSearchURL==''){if(pDebug)alert('no searchurl defined');return null;}else if(pInstanceName==''){if(pDebug)alert('no instancename defined');return null;}else if(pFormname==''){if(pDebug)alert('no formname defined');return null;}else if(pQueryParamName==''){if(pDebug)alert('no queryparamname defined');return null;}else if(pLayerName==''){if(pDebug)alert('need a layer for output');}
pQueryInput=document[pFormname][pQueryParamName];pQueryInput.onkeyup=handleKeyPress;pQueryInput.onfocus=showLayer;pQueryInput.onblur=hideLayer;document[pFormname].onsubmit=handleSubmit;}
function handleSubmit(){document[pFormname][pQueryParamName].value=pSuggest[pCurrentSelection].split('###')[0];document[pFormname].action=pSearchURL;document[pFormname].method='POST';document[pFormname].submit();}
this.handleClick=function(){if(pSuggest[pCurrentSelection]!=undefined){document[pFormname][pQueryParamName].value=pSuggest[pCurrentSelection].split('###')[0];document[pFormname].action=pSearchURL;document[pFormname].method='POST';document[pFormname].submit();}}
this.handleMouseOver=function(pos){var tblCell=getTableCell(pos);unmarkAll();if(tblCell!=null){highlightSuggest(tblCell);pCurrentSelection=pos;}}
this.handleMouseOut=function(pos){var tblCell=getTableCell(pos);if(tblCell!=null){unmarkSuggest(tblCell);pCurrentSelection=-1}}
function handleKeyPress(evt){evt=(evt)?evt:((event)?event:null);var keyCode=evt.keyCode;if(keyCode==38){moveSelection('up')}else if(keyCode==27){hideLayer();}else if(keyCode==40){moveSelection('down');}else if(keyCode==13){handleSubmit();}else{if(pQueryInput.value==''){hideLayer();if(pLayer!=null){pLayer.innerHTML='';}
return null;}
if(pLastQuery!=pQueryInput.value){startAjax();}
pLastQuery=pQueryInput.value;}}
function moveSelection(direction){var pos=pCurrentSelection;if(direction=='up'){pos--;}
else{pos+=1;}
if(pos<0){unmarkAll();pQueryInput.focus();pCurrentSelection=-1;}else{var tblCell=getTableCell(pos);if(tblCell!=null){unmarkAll();highlightSuggest(tblCell);pCurrentSelection=pos;}}
var query=pQueryInput.value;pQueryInput.value='';pQueryInput.focus();pQueryInput.value=query;}
function startAjax(){var query=pQueryInput.value;if(query.length>50){return;}
var requestURL=pSearchURL+'&'+pQueryParamName+'='+encodeURIComponent(query)+'&'+pChannelParamName+'='+pChannel;try{if(window.XMLHttpRequest){pRequest=new XMLHttpRequest();}else if(window.ActiveXObject){pRequest=new ActiveXObject("Microsoft.XMLHTTP");}else{if(pDebug)alert('no ajax connection');}
pLayer=document.getElementById(pLayerName);if(pLayer!=null){if(query!=''){pRequest.open("GET",requestURL,true);pRequest.onreadystatechange=callbackAjax;pRequest.send(null);}else{hideLayer();}}else{if(pDebug)alert('no layer for output found');}}catch(ex){hideLayer();if(ex==undefined){if(pDebug)alert('Error: '+ex.getmessage);}else{if(pDebug)alert('Error: '+ex);}}}
function hideLayer(){if(pLayer!=null){pLayer.style.display='none';fireSuggestLayerHidden();}}
this.hideLayerOutsideCall=function(){if(pLayer!=null){pLayer.style.display='none';fireSuggestLayerHidden();}}
function showLayer(){if(pLayer!=null&&pSuggest!=null&&pSuggest.length>=1){pLayer.style.display='block';}}
function callbackAjax(){if(submitted==false){if(pRequest.readyState==4){if(pRequest.status!=200){hideLayer();if(pDebug)alert('Error ('+pRequest.status+'): '+pRequest.statusText);}else{handleResponse(pRequest.responseText);}}}}
function fireSuggestCompleted(suggestLayerIsVisible){if(typeof(onSuggestCompleted)=='function'){onSuggestCompleted(suggestLayerIsVisible);}}
function fireSuggestLayerHidden(){if(typeof(onSuggestLayerHidden)=='function'){onSuggestLayerHidden();}}
function handleResponse(text){var colSpan=3;if(pShowImages){colSpan++;}
pCurrentSelection=-1;pSuggest=new Array();pSuggest=text.split('\n');var outputText='<table cellpadding="0" cellspacing="0" class="'+pLayerName+'" width="100%" border="0" onMouseDown="'+pInstanceName+'.handleClick();">';outputText+='<tr class="'+pSuggestHeaderClass+'" ><td colspan="'+colSpan+'">Vorschl&#228;ge zu Ihrer Suche...</td></tr>';var pNewSuggest=new Array();for(var i=0;i<pSuggest.length;i++){var firstChar=pSuggest[i].charCodeAt(0);if(firstChar!=13&&firstChar!=10&&pSuggest[i].length>=1){pNewSuggest.push(pSuggest[i]);}}
pSuggest=pNewSuggest;var query=pQueryInput.value;for(var i=0;i<pSuggest.length;i++){pSuggestParts=new Array();pSuggestParts=pSuggest[i].split("###");outputText+='<tr id="'+pLayerName+'_'+i+'" class="'+pSuggestRowClass+'" onMouseOver="'+pInstanceName+'.handleMouseOver('+i+');" onMouseOut="'+pInstanceName+'.handleMouseOut('+i+');">';if(pShowImages){outputText+='<td class="'+pSuggestImageClass+'"><img src="'+pSuggestParts[3]+'" alt=""/></td>';}
outputText+='<td class="'+pSuggestQueryClass+'">'+pSuggestParts[0].replace(new RegExp("("+query+")","ig"),'<span class="'+pSuggestQueryTypedClass+'">$1</span>')+'</td>'
+'<td class="'+pSuggestTypeClass+'">'+pSuggestParts[2]+'</td>'
+'<td class="'+pSuggestAmountClass+'">'+pSuggestParts[1]+'</td>'
+'</tr>';}
outputText+='<tr><td class="'+pSuggestFooterClass+'" colspan="'+colSpan+'">&nbsp;</td></tr></table>';if(pSuggest.length>=1){showLayer();pLayer.innerHTML=outputText;fireSuggestCompleted(true);}else{hideLayer();pLayer.innerHTML='';fireSuggestCompleted(false);}}
function highlightSuggest(tblCell){tblCell.className=pSuggestHighlightClass;}
function unmarkSuggest(tblCell){tblCell.className=pSuggestRowClass;}
function unmarkAll(){var tblCell;for(var i=0;i<pSuggest.length;i++){tblCell=getTableCell(i);if(tblCell!=null){unmarkSuggest(tblCell);}}}
function getTableCell(pos){var tblCell;tblCell=document.getElementById(pLayerName+'_'+pos);return tblCell;}}
var suggest=new FFSuggest();var searchURL=$ProductfinderURL;var formname="search_word_inc";var queryParamName="search";var channelParamName='channel';var channel='de';var divLayername="suggestLayer";var instanceName="suggest";var debugMode=true;var showImages=false;suggest.init(searchURL,formname,queryParamName,divLayername,instanceName,debugMode,channelParamName,channel,showImages);document.onmousedown=suggest.hideLayerOutsideCall;