/*
	ajax_functions.js
	Version 3.1 
	03.03.2009 17:07	zwob & stahmann GbR Bremen
*/

function sAus()
{
        var obj = document.getElementById('search_suggest');
        if ( obj )
        {
                obj.style.display='none';
        }
}


function addDebugDiv()
{
	var obj = document.getElementById("col1_content");
	if ( obj )
	{
		var newdiv = document.createElement('div');
		newdiv.setAttribute('id', 'debug_div');
		newdiv.style.backgroundColor = "#FFA";
		newdiv.style.position = "absolute";
		newdiv.style.left = "500px";
		newdiv.style.top = "220px";
		newdiv.style.padding = "4px";
		newdiv.style.border = "solid 1px red";
		newdiv.style.fontSize = "10px";
		newdiv.style.display = "block";
		newdiv.innerHTML = "<b>Debug Ausgabe</b> <a href='#' onclick='clearDebug();return false;'>Leeren</a>";
		obj.appendChild(newdiv);

		return document.getElementById('debug_div');
	}

	alert("Warnung:\nDebug function addDebugDiv() kann auf das\nElement ganzeBreite nicht zugreifen.");

	return null;
}
function writeDebug(text)
{
	 return true; //deaktiviert

	var obj = document.getElementById("debug_div");
	if ( !obj )
	{
		obj = addDebugDiv();
	}

	if ( obj )
	{
		obj.innerHTML += "<br>"+text;
	}
}
function clearDebug(text)
{
	 return TRUE; //deaktiviert

	var obj = document.getElementById("debug_div");


	if ( obj )
	{
		obj.innerHTML = "<b>Debug Ausgabe</b> <a href='#' onclick='clearDebug();return false;'>Leeren</a>";
	}
}



var BrowserName = navigator.appName;

if (BrowserName == "Netscape")
{
	// Speziell fuer Firefox. Fuehrt allerdings wahrscheinlich zu Problemen 
	// wenn es mehr als ein Suchfeld mit Vorschlaegen auf der Seite gibt. 
	document.onkeypress = getkeycode;
}



var ssActivated = true;


// Liefert das browserspezifische XmlHttpRequest-Objekt oder false
function getXmlHttpRequestObject()
{
	var http_request = false;
	
	// Nicht-IE
	if (window.XMLHttpRequest)
	{
		http_request = new XMLHttpRequest();

		if (http_request.overrideMimeType) http_request.overrideMimeType('text/xml');

		return http_request;
	}
	
	
	// IE
	if(window.ActiveXObject)
 	{
 		try
		{
                	http_request = new ActiveXObject("Msxml2.XMLHTTP");
            	}
		catch (e) 
		{
			try
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
                	}
			catch (e) {}
            	}
        }
		
  	if (!http_request)
	{
		if(window.ActiveXObject) displayAXHinweis();
		
		alert("Ihr Browser unterstuetzt wichtige Funktionen des Shops nicht!\nBitte nehmen Sie ein Update vor oder aktivieren Sie ActiveXObjects.\nWenn Sie Hilfe benoetigen - fragen Sie uns!");
	}
	
	return http_request;
}



/***************************************************
 *  Bereich fuer die SearchSuggest-Functionen
 *  
 ***************************************************/   

// Das Objekt fuer den Auto-Suggest
var searchReq = getXmlHttpRequestObject();
// Variable fuer searchsuggest Timeout
var searchTimeout='';
// Called from keyup on the search textbox.
function triggerSearch(){
	writeDebug("function triggerSearch()");
if (searchTimeout!=''){
	clearTimeout(searchTimeout);
	writeDebug("timeout cleared");		
	}
	else{
	writeDebug("timeout started");	
	}	
	searchTimeout=setTimeout('searchSuggest()',200);
}
// Starts the AJAX request.
function searchSuggest()
{
writeDebug("function searchSuggest()");

	
	if (!ssActivated) return true;


	if (searchReq != null)
	{
		if (searchReq.readyState == 4 || searchReq.readyState == 0)
		{
			if (!document.getElementById('txtSearchID')) return 0;

			var q = document.getElementById('txtSearchID').value;

			var qq = q.replace(/\s/gi, "");
			if (qq.length < 2) return true;

			searchReq.open("GET", '/onlineshop/ajax/suggest3.php?q=' + escape(q), true);
			searchReq.onreadystatechange = handleSearchSuggest; 
			searchReq.send(null);
		}	
  		return true;
	}
	else return 0;
}

// Called when the AJAX response is returned.
function handleSearchSuggest()
{
	if (searchReq.readyState == 4)
	{
writeDebug("function handleSearchSuggest() readyState=4");

		var ss = document.getElementById('search_suggest');
		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		var letzteselement = str.length-1;
		ss.innerHTML += str[letzteselement];

		var flag = "";
		var type = "";

		if (str[0]!="") document.getElementById('cntsuggests').value=str.length-1;
		if (str.length > 1)
		{
			var searchinput = document.getElementById('txtSearchID').value;
			var matchstring = "";
			var Ergebnis = "";
			var display = "";
			var suggest = "";
			var preis_produkte = "";
        		 suggest += '    <div id="suggLayer">';
				 suggest += '     <div class="suggItem">';
				 suggest += '       <div class="suggName help"><strong>Einige Vorschl&auml;ge zu Ihrem Suchbegriff:</strong></div>';
				 suggest += '       <div class="suggCat help">&nbsp;</div>';
				 suggest += '     </div>';
			for(i=0; i < str.length-1; i++)
			{
				if (str[i]!='')
				{
					flag = document.getElementById("vorschlagflags"+i).value;
					if (flag == "010") 	{ type = "Hersteller"; 	}					
					if (flag == "100")	{ type = "Suchbegriff"; }
					if (flag == "110")	{ type = "Suchbegriff"; }
					if (flag == "000")	{ type = "Produkt"; 	}
                    if (flag == '001')  { var type = 'Artikelgruppe'; }


					matchstring = new RegExp (searchinput, "i");

					Ergebnis = str[i].match(matchstring);
					if(Ergebnis)
					{
						display = str[i].replace(new RegExp("("+Ergebnis+")","i"),"<strong>"+Ergebnis+"</strong>");
					}
					else display = str[i];
            
					preis_produkte = document.getElementById('vorschlag_preis_produkte'+i).value;
			
/*					if (type=='Suchbegriff' && cnt_produkte=='')
					{ }
					else
					{*/
						

						
						
						suggest += ' <div class="suggItem" onmouseover="this.className=\'suggItemOver\';" onmouseout="this.className=\'suggItem\';"';
						suggest += 'onclick="javascript:setSearch(\'' + str[i] + '\', ' + i + ');" id="suchzelle1'+i+'">';
					
						suggest += '<div class="suggName">'+ display +'</div> <div class="suggCat">';

						if (type=='Hersteller' || type=='Glossar')  suggest += type;  
						if (type=='Produkt' && preis_produkte!='') suggest += preis_produkte + ' &euro;'; 
            
						suggest += '</div>';
				/*	}*/
				}
				suggest += ' </div>';	
			}
			suggest += '</div>';
			ss.innerHTML += suggest;
		}
	
		if(document.getElementById('search_suggest').innerHTML != '')
		{
			document.getElementById('search_suggest').style.display='block';
		}
		else
		{
			document.getElementById('search_suggest').style.display='none';
		}
	}
}

//Mouse over function
function suggestOver(i)
{
writeDebug("function suggestOver("+i+")");

	var obj1 = document.getElementById("suggItem"+i);


	if (obj1) { obj1.style.backgroundColor='#874d51';obj1.style.color='#ffffff'; }

}
//Mouse out function
function suggestOut(i)
{
writeDebug("function suggestOut("+i+")");

	var obj1 = document.getElementById("suggItem"+i);


	if (obj1) { obj1.style.backgroundColor='transparent';obj1.style.color='#874d51'; }

}
//Click function
/*function setSearch(value, selectedrow)
{
writeDebug("function setSearch("+value+", "+selectedrow+")");
	document.getElementById('txtSearchID').value = value;
	document.getElementById('selectedsuggest').value = value;
	// Versteckte Formularfelder mit passenden Werten zur aktuellen Markierung versehen, damit diese einfach per enter-Taste uebergeben werden koennen.
	document.getElementById("hiddensearchflags").value=document.getElementById("vorschlagflags" + selectedrow).value;
	document.getElementById('search_suggest').innerHTML = '';
	document.getElementById('frmSearch').submit();
}*/



function setSearch(value, selectedrow) {
	document.getElementById('wert').value = "1";
	document.getElementById('txtSearchID').value =document.getElementById("vorschlagname" + selectedrow).value;
	document.getElementById('selectedsuggest').value  =document.getElementById("wert" + selectedrow).value;
	// Versteckte Formularfelder mit passenden Werten zur aktuellen Markierung versehen, damit diese einfach per enter-Taste Ã¼bergeben werden kÃ¶nnen.
	document.getElementById("hiddensearchflags").value=document.getElementById("vorschlagflags" + selectedrow).value;
	document.getElementById('search_suggest').innerHTML = '';

  /*document.forms['frmSearch'].submit(); */	
  document.getElementById('frmSearch').submit(); 
}



function getkeycode(Ereignis)
{
writeDebug("function getkeycode(");

	if (typeof selectedrow == "undefined")
	{
		selectedrow = -1;
	}

	if (!Ereignis) Ereignis = window.event;
	if (Ereignis)
	{
		var Tastencode = -1;

		if (Ereignis.keyCode)
		{
			Tastencode = Ereignis.keyCode;
		}
		else if (Ereignis.which)
		{
			Tastencode = Ereignis.which;
		}
		
		if (Tastencode=='38' || Tastencode == '40')
		{
			ssActivated = false;
			changeselection(Tastencode);
		}
		else if (Tastencode=='13') 
		{
			ssActivated = true;
			onReturnCopySelectedSuggest();
			selectedrow=-1;
		}
		else
		{
			ssActivated = true;
			selectedrow=-1;
		}
	}

writeDebug("function getkeycode(");
}




function onReturnCopySelectedSuggest()
{
	// Kopiert den zwischengespeicherten Suggest-Wert
	// in das form input txtSearchID

	var obj1 = document.getElementById("selectedsuggest");
	var obj2 = document.getElementById("txtSearchID");
	if ( obj1 && obj2 )
	{
		//if (obj1.value != "") obj2.value = obj1.value;
	}
	return true;
}


function changeselection (Tastencode)
{
writeDebug("function changeselection(");

	if (typeof selectedrow == 'undefined')
	{
		selectedrow = -1;
	}


	if (!Tastencode)
	{
		Ereignis = window.event;
		if (Ereignis.which)
		{
			Tastencode = Ereignis.which;
		}
		else if (Ereignis.keyCode)
		{
			Tastencode = Ereignis.keyCode;
		}
	}



	if (document.getElementById("cntsuggests"))
	{
		var cntsuggests = document.getElementById("cntsuggests").value;
	}
	else
	{
		var cntsuggests = 0;
	}

	if (Tastencode == '38' && cntsuggests>0)
	{
		// NACH OBEN;
		if (selectedrow>0)
		{
			selectedrow = selectedrow - 1;
			if (selectedrow=='-2') selectedrow=-1;

			var previousrow = selectedrow-1;
			var nextrow = selectedrow+1;

			if (document.getElementById("suchzelle1" + selectedrow).className!='')
			{
				// suggestOver(selectedrow);
				document.getElementById("suchzelle1" + selectedrow).className = 'suggItemOver';
			}

			if (document.getElementById("suchzelle1" + nextrow).className!='')
			{
				// suggestOut(nextrow);
				document.getElementById("suchzelle1" + nextrow).className = 'suggItem';
}
		}
	}

	if (Tastencode == '40' && cntsuggests>0)
	{
		// NACH UNTEN;
		if (selectedrow < cntsuggests - 1)
		{
			selectedrow = selectedrow + 1;
			var previousrow = selectedrow-1;
			var nextrow = selectedrow+1;

			//suggestOver(selectedrow);
		  document.getElementById("suchzelle1" + selectedrow).className = 'suggItemOver';
		  
			if (selectedrow!=0)
			{
				if (document.getElementById("suchzelle1" + previousrow).className!='')
				{
					//suggestOut(previousrow);
					document.getElementById("suchzelle1" + previousrow).className = 'suggItem';
				}
			}
		}
	}

	if ((Tastencode == '38' || Tastencode=='40') && selectedrow>=0 && cntsuggests>0)
	{
		/* Auslösen */
		
	/*	document.getElementById("selectedsuggest").value=document.getElementById("vorschlagname" + selectedrow).value;
		document.getElementById("hiddensearchflags").value=document.getElementById("vorschlagflags" + selectedrow).value;
*/

	document.getElementById('wert').value = "1";
	document.getElementById('txtSearchID').value =document.getElementById("vorschlagname" + selectedrow).value;
	document.getElementById('selectedsuggest').value  =document.getElementById("wert" + selectedrow).value;
	document.getElementById("hiddensearchflags").value=document.getElementById("vorschlagflags" + selectedrow).value;



		
	}
	else
	{
		selectedrow=-1;
	}
}


function sleep(ms)
{
	var zeit=(new Date()).getTime();
	var stoppZeit=zeit+ms;
	while((new Date()).getTime()<stoppZeit) {};
} 




