var stopKeys = new Array();
stopKeys[0] = 13;	// keyRet
stopKeys[1] = 18;	// keyAlt
stopKeys[2] = 9;	// keyTab
stopKeys[3] = 16;	// keyShift
stopKeys[4] = 17;	// keyCtrl
stopKeys[5] = 27;	// keyEsc
stopKeys[6] = 36;	// keyPos
stopKeys[7] = 37;	// keyArrLeft
stopKeys[8] = 38;	// keyArrUp
stopKeys[9] = 39;	// keyArrRight
stopKeys[10]= 40;	// keyArrDown

var lastQuery = null;

/**
 * htmlEntities
 *
 * Convert all applicable characters to HTML entities
 *
 * object string
 * return string
 *
 * example:
 *   test = 'äöü'
 *   test.htmlEntities() //returns '&auml;&ouml;&uuml;'
 */

String.prototype.htmlEntities = function()
{
  var chars = new Array ('&','à','á','â','ã','ä','å','æ','ç','è','é',
                         'ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô',
                         'õ','ö','ø','ù','ú','û','ü','ý','þ','ÿ','À',
                         'Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë',
                         'Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö',
                         'Ø','Ù','Ú','Û','Ü','Ý','Þ','€','\"','ß','<',
                         '>','¢','£','¤','¥','¦','§','¨','©','ª','«',
                         '¬','­','®','¯','°','±','²','³','´','µ','¶',
                         '·','¸','¹','º','»','¼','½','¾');

  var entities = new Array ('amp','agrave','aacute','acirc','atilde','auml','aring',
                            'aelig','ccedil','egrave','eacute','ecirc','euml','igrave',
                            'iacute','icirc','iuml','eth','ntilde','ograve','oacute',
                            'ocirc','otilde','ouml','oslash','ugrave','uacute','ucirc',
                            'uuml','yacute','thorn','yuml','Agrave','Aacute','Acirc',
                            'Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute',
                            'Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde',
                            'Ograve','Oacute','Ocirc','Otilde','Ouml','Oslash','Ugrave',
                            'Uacute','Ucirc','Uuml','Yacute','THORN','euro','quot','szlig',
                            'lt','gt','cent','pound','curren','yen','brvbar','sect','uml',
                            'copy','ordf','laquo','not','shy','reg','macr','deg','plusmn',
                            'sup2','sup3','acute','micro','para','middot','cedil','sup1',
                            'ordm','raquo','frac14','frac12','frac34');

  newString = this;
  for (var i = 0; i < chars.length; i++)
  {
    myRegExp = new RegExp();
    myRegExp.compile(chars[i],'g')
    newString = newString.replace (myRegExp, '&' + entities[i] + ';');
  }
  return newString;
}

//var zaehler = window.setTimeout( "getSuggestTimeout()", 30000 );
//window.clearTimeout(zaehler);

var keyup   = 0;
var keydown = 0;

var newtime = (new Date()).getTime();
var oldtime = 0;

var zaehler = "";
var call = 0;
var search = 0;

function clearTO()
{
  window.clearTimeout(zaehler);
  keydown = keydown + 1;
  oldtime = newtime;
  newtime = (new Date()).getTime();
}

function getSuggest(event)
{
  keyup = keyup + 1;
  window.clearTimeout(zaehler);
  var keyCode = event.keyCode;
  if(keyCode == 27){
    closeResult();
    return;
  }
  for(var i=0; i<stopKeys.length; i++) {
    if(keyCode == stopKeys[i])
      return;
  }
  oldtime = newtime;
  newtime = (new Date()).getTime();
  zaehler = window.setTimeout( "getSuggestTimeout()", 50 );
}

function getPath(){
	var path = window.location.pathname;
	var splitted = path.split('/');
	var correctpath = '/' +splitted[1] + '/' + 'suche?search=';
	return correctpath;
}

function getSuggestTimeout()
{
  call = call + 1;
  newtime = (new Date()).getTime();
  if( (newtime - oldtime) < 350 ){
    window.clearTimeout(zaehler);
    zaehler = window.setTimeout( "getSuggestTimeout()", 50 );
    return ;
  }
  search = search + 1;

  var suchstring = document.getElementById('search').value;
  if(suchstring.length < 3) {
    var resultDiv = document.getElementById('autovalues');
    resultDiv.style.display = 'none';
    resultDiv.style.visibility = 'hidden';
    return;
  }

  if(suchstring == lastQuery) {
    return;
  } else {
    lastQuery = suchstring;
  }

  //var sessionid = document.getElementById('jsessionid').value;
  suchstr = suchstring;

  var msg = new Message();
  msg.method = 'GET';
  msg.address = getPath() + suchstring; // + '&jsessionid=' + sessionid;
  msg.consumer = null;
  msg.refresh = false;
  msg.cache = false;
  msg.silent = true;
  msg.onError = alertErr;
  msg.onComplete = updateValues;

  Connection.sendMessage(msg);
}

function alertErr(errObj)
{
  //alert(errObj);
}

function updateValues(xmlObj)
{
  var respObj = xmlObj.responseXML;
  var i = 0;
  var resultTable = '';
  var resultDiv = document.getElementById('autovalues');
  var results = respObj.getElementsByTagName('results');
  if(respObj != null)
  {
    var items = respObj.getElementsByTagName('item');
    var itemName = '';
    var itemLink = '';
    var itemDar = '';
    var itemHrst = '';
    var itemImg = '';
    var itemMnt = '';
    var itemEinh = '';
    var itemPZN = '';
    var itemRez = '';
    var itemTMP = '';
    var coloredTD = "background-color:#feedd5; ";
    var tmpColor = null;
    resultTable = resultTable + '<table cellpadding="0" cellspacing="0" style="width:100%; border:1px solid #33b0c2; background-color:#E4F2F3">';
    //resultTable = resultTable + '<tr><td colspan="4">timediff: ' + (newtime - oldtime) + ' clear:'+keydown+' start:'+keyup+' called:'+call+' searched'+search+'</td></tr>';
    resultTable = resultTable + '<tr><th colspan="3" style="background-color:#feedd5; border-bottom:1px solid #33b0c2; padding-top:2px; padding-bottom:2px">Vorschl&auml;ge zu Ihrem Suchbegriff</th>';
    resultTable = resultTable + '<th colspan="1" style="background-color:#feedd5; border-bottom:1px solid #33b0c2; padding-top:2px; padding-bottom:2px; text-align:right;"><a href="javascript:void(0);" onclick="javascript:document.autosuggest.submit();">... komplette Suchliste</a>&nbsp;&nbsp;';
    resultTable = resultTable + '<a onClick="javascript:closeResult()" href="javascript:void(0)"><img style="padding:2px;border:0;width:15px;height:15px" src="/shop/pics/close.png" alt="schliessen"/></a></th></tr>';
    for(i = 0; i < items.length; i++)
    {
      if(i % 2 == 1)
        tmpColor = coloredTD;
      else
        tmpColor = '';
      itemTMP = items[i].getElementsByTagName('mpkname')[0].childNodes;
      if(itemTMP.length > 0) itemName = itemTMP[0].nodeValue.htmlEntities();

      itemTMP = items[i].getElementsByTagName('presentation')[0].childNodes;
      if(itemTMP.length > 0) itemDar = itemTMP[0].nodeValue.htmlEntities();

      itemTMP = items[i].getElementsByTagName('company')[0].childNodes;
      if(itemTMP.length > 0) itemHrst = itemTMP[0].nodeValue.htmlEntities();

      itemTMP = items[i].getElementsByTagName('mpklink')[0].childNodes;
      if(itemTMP.length > 0) itemLink = itemTMP[0].nodeValue;
      //itemLink = itemLink.replace('shop', 'www');

      itemTMP = items[i].getElementsByTagName('mpkimage')[0].childNodes;
      if(itemTMP.length > 0) itemImg = itemTMP[0].nodeValue;

      itemTMP = items[i].getElementsByTagName('mount')[0].childNodes;
      if(itemTMP.length > 0) itemMnt = itemTMP[0].nodeValue;

      itemTMP = items[i].getElementsByTagName('einheit')[0].childNodes;
      if(itemTMP.length > 0) itemEinh = itemTMP[0].nodeValue.htmlEntities();

      itemTMP = items[i].getElementsByTagName('rez')[0].childNodes;
      if(itemTMP.length > 0) itemRez = itemTMP[0].nodeValue;

      itemTMP = items[i].getElementsByTagName('pzn')[0].childNodes;
      if(itemTMP.length > 0) itemPZN = itemTMP[0].nodeValue;
      resultTable = resultTable + '<tr>';
      resultTable = resultTable + '<td style="' + tmpColor + 'padding:1px"><img src=\"' + itemImg + '\" /></td><td style="' + tmpColor + 'padding:1px">' + itemPZN + '</td>';
      resultTable = resultTable + '<td style="' + tmpColor + 'padding:1px"><a href="' + itemLink + '">' + itemName + '</a><br />' + itemHrst + '</td>';
      resultTable = resultTable + '<td style="' + tmpColor + 'padding:1px;text-align:right">' + itemDar + '<br />';
      resultTable = resultTable + itemMnt + ' ' + itemEinh + ' - ';
      if(itemRez == 2)
        resultTable = resultTable + '<b>rezeptpfl.</b>';
      else
        resultTable = resultTable + 'rezeptfrei';
      resultTable = resultTable + '</td>';
      resultTable = resultTable + '</tr>';
    }
    resultTable = resultTable + '</table>';
  }
  if(i > 0)
  {
    resultDiv.style.width = '500px';
    resultDiv.style.display = 'block';
    resultDiv.style.visibility = 'visible';
    resultDiv.innerHTML = resultTable;
  }
  else
  {
    resultDiv.style.display = 'none';
    resultDiv.style.visibility = 'hidden';
  }
}

function closeResult(){
  var resultDiv = document.getElementById('autovalues');
  resultDiv.style.display = 'none';
  resultDiv.style.visibility = 'hidden';
}

