var anzreiter = 4;
var bar = new Array();
var pic = new Array();
var i;

for (i=1;i<=anzreiter;i++) {
  pic[i] = new Image();
  pic[i].src = "/shop/pix/s/nav/nav_" + i + "_b.png";
}

function submenu(lx,item,rx,all) {
  var ln = item - 1;
  var rn = item;
  var kn = document.getElementById("zs" + rn);
  var cn = document.getElementById("content");
  var nn = cn.firstChild;
  document.getElementById("tab_0").src = "/shop/pix/s/nav/nav_tab_lw.png";
  for (i=1;i<anzreiter;i++) {
    document.getElementById("tab_" + i).src = "/shop/pix/s/nav/nav_tab_cw.png";
    document.getElementById("nav_" + i).src = "/shop/pix/s/nav/nav_" + i + "_w.png";
  }
  document.getElementById("tab_" + anzreiter).src = "/shop/pix/s/nav/nav_tab_rw.png";
  document.getElementById("nav_" + anzreiter).src = "/shop/pix/s/nav/nav_" + anzreiter + "_w.png";

  document.getElementById("tab_" + ln).src = "/shop/pix/s/nav/nav_tab_" + lx + ".png";
  document.getElementById("nav_" + item).src = pic[item].src;
  document.getElementById("tab_" + rn).src = "/shop/pix/s/nav/nav_tab_" + rx + ".png";
  document.getElementById("bar").innerHTML = bar[item];
  if (kn && all == 0) {
    kn = kn.cloneNode(true);
    while (nn.nodeType != 1) nn = nn.nextSibling;
    cn.replaceChild(kn,nn);
    while (nn = kn.nextSibling) cn.removeChild(nn);
    cn = document.getElementById("active");
    if (cn) {
      cn.removeAttribute("class");
      nn = cn.firstChild;
      while (nn.nodeType != 1) nn = nn.nextSibling;
      kn = nn.nextSibling;
      while (nn = kn.nextSibling) cn.removeChild(nn);
    }
  }
}

function check_plz(id) {
  var ele = document.getElementById(id);
  var plz = ele.value.replace(/[^0-9]/g,"");
  ele.value = plz.substr(0,5);
}

function openwin(verweis) {
  fenster = open(verweis,"Shopinfo","toolbar=no,scrollbars=yes,location=no,status=no,menubar=no,height=450,width=430");
}

function picwin(verweis) {
  fenster = open(verweis,"Detail","toolbar=no,scrollbars=yes,location=no,status=no,menubar=no,height=450,width=450");
}

function infowin(verweis) {
  fenster = open(verweis,"Detail","toolbar=no,scrollbars=yes,location=no,status=no,menubar=no,height=450,width=560");
}

function wk_aktual(verweis) {
  fenster = open(verweis,"WKInfo","toolbar=no,scrollbars=0,location=no,status=no,menubar=no,height=150,width=200");
}

function alertpopup() {
  alert("Sie haben eine ungültige Menge eingegeben!")
}

function open_zs_popup(seite) { // Zusatzseiten-Popup
  f_url = seite;
  f_name = "zs_popup";
  f_props = "width=900,height=700,left=100,top=100,scrollbars=yes,resizable=yes";
  f = open(f_url,f_name,f_props);
  f.focus();
  if (open_zs_popup.arguments[1]) f.print();
}

function wk_check(form) {
  if (form.wkausf_1 && form.wkausf_1.value == "xxnoinputxx") {
    alert("Achtung! bitte zuerst Ausführung wählen.");
    return false;
  }
  if (form.wkausf_2 && form.wkausf_2.value == "xxnoinputxx") {
    alert("Achtung! bitte zuerst Ausführung wählen.");
    return false;
  }
}

function feld_not_ok(feld,msg) {
  alert(msg);
  feld.select();
  feld.focus();
}

function addBookmark() {
  if (window.external && (typeof window.external.AddFavorite != "undefined")) { // Internet Explorer
    window.external.AddFavorite(document.URL, document.title);
  } else if (window.sidebar && (typeof window.sidebar.addPanel != "undefined")) { // Mozilla-based
    window.sidebar.addPanel(document.title, document.URL, "");
  } else if (window.opera && window.print) { // Opera
    var elem = document.createElement('a');
    elem.setAttribute('href',document.URL);
    elem.setAttribute('title',document.title);
    elem.setAttribute('rel','sidebar');
    elem.click();
  }
}

function FFSuggest() {

  var pRequest;
  var pLayer;
  var pDebug = false;
  var pInstanceName = '';
  var pSearchURL = '';
  var pQueryParamName = '';
  var pMandantParamName = '';
  var pMandant = '';
  var pFormname = '';
  var pLayerName = '';
  var pQueryInput;
  var pSuggest = new Array();
  var pLastQuery;
  var pCurrentSelection = 0;
  var submitted = false;

  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, mandantParamName, mandant) {
    pSearchURL = searchURL;
    pFormname = formname;
    pQueryParamName = queryParamName;
    pMandantParamName = mandantParamName;
    pMandant = mandant;
    pLayerName = divLayername;
    pInstanceName = instanceName;
     pDebug = debugMode;
    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() {
    submitted = true;
    if (pSuggest[pCurrentSelection] != undefined) {
      var txt = "suggest=1&artnum="
      var pSuggestParts = new Array();
      pSuggestParts = pSuggest[pCurrentSelection].split('###');
      if (window.location.hostname == "localhost") pSuggestParts[3] = "";
      if (pSuggestParts[3].length > 0) {
        if (pSuggestParts[2] == "Kategorie") txt = "suggest=2&rubnum=";
        document.location.href = "/cgi-bin/shop/absperrtechnik.cgi?action=quickstart&" + txt + pSuggestParts[3];
        return false;
      } else {
        document[pFormname][pQueryParamName].value = pSuggestParts[0];
      }
    }
  }

  this.handleClick = function() {
    if (pSuggest[pCurrentSelection] != undefined) {
      var txt = "suggest=1&artnum="
      var pSuggestParts = new Array();
      pSuggestParts = pSuggest[pCurrentSelection].split('###');
      if (window.location.hostname == "localhost") pSuggestParts[3] = "";
      if (pSuggestParts[3].length > 0) {
        if (pSuggestParts[2] == "Kategorie") txt = "suggest=2&rubnum=";
        document.location.href = "/cgi-bin/shop/absperrtechnik.cgi?action=quickstart&" + txt + pSuggestParts[3];
      } else {
        document[pFormname][pQueryParamName].value = pSuggestParts[0];
        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 (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;
    var requestURL = pSearchURL +'?'+ pQueryParamName +'='+ escape(query) +'&'+ pMandantParamName +'='+ pMandant;
    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';
    }
  }

  this.hideLayerOutsideCall = function() {
    if (pLayer != null) {
      pLayer.style.display = 'none';
    }
  }

  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);
        }
      }
    }
  }

  // calls the callback for "outside" listeners if the callback is implemented
  function fireSuggestCompleted(suggestLayerIsVisible) {
    if (typeof(onSuggestCompleted) == 'function') {
      onSuggestCompleted(suggestLayerIsVisible);
    }
  }

  function handleResponse(text) {
    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 nowrap="nowrap" colspan="3">Vorschläge für Ihre Suche...</td></tr>';

    var pNewSuggest = new Array();
    for (var i in pSuggest) {
      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 in pSuggest) {
      pSuggestParts = new Array();
      pSuggestParts = pSuggest[i].split('###');

      outputText += '<tr id="' + pLayerName + '_' + i + '" class="'+pSuggestRowClass+'" onMouseOver="' + pInstanceName + '.handleMouseOver(' + i + ');" onMouseOut="' + pInstanceName + '.handleMouseOut(' + i + ');">'
                +'<td nowrap="nowrap" class="'+ pSuggestQueryClass +'">' + pSuggestParts[0].replace(new RegExp("("+query+")","ig"),'<span class="'+pSuggestQueryTypedClass+'">$1</span>') + '</td>'
                +'<td nowrap="nowrap" class="'+ pSuggestTypeClass +'">' + pSuggestParts[2] + '</td>'
                +'<td nowrap="nowrap" class="'+ pSuggestAmountClass +'">' + pSuggestParts[1] + '</td>'
            +'</tr>';
    }
    // outputText += '<tr><td class="'+pSuggestFooterClass+'" colspan="3">&nbsp;</td></tr></table>';
    outputText += '</table>';

    if (pSuggest.length >= 1) {
      showLayer();
      pLayer.innerHTML = outputText;

      // calback for "outside" listeners
      fireSuggestCompleted(true);
    } else {
      hideLayer();
      pLayer.innerHTML = '';

      // calback for "outside" listeners
      fireSuggestCompleted(false);
    }

  }

  function highlightSuggest(tblCell) {
    tblCell.className = pSuggestHighlightClass;
  }

  function unmarkSuggest(tblCell) {
    tblCell.className = pSuggestRowClass;
  }

  function unmarkAll() {
    var tblCell;
    for (var i in pSuggest) {
      tblCell = getTableCell(i);
      if (tblCell != null) {
        unmarkSuggest(tblCell);
      }
    }
  }

  function getTableCell(pos) {
    var tblCell;
    tblCell = document.getElementById(pLayerName + '_' + pos);
    return tblCell;
  }
}
