// GLOBAL CONFIG ////////////////
////////////////////////////////
  var d = document;  
  var ie = document.all;
  var baseURL = d.getElementsByTagName('base')[0].href;
// MENU /////////////////////////
  var menu        =  2;             // 0 = off; 1 = Suckerfish; 2 = vertical slider
  var menuids     = ["suckermenu"]  // Enter id(s) of SuckerTree UL menus, separated by commas
// VERTICAL SLIDER //////////////
  var bnavHeight  = 21;              // height of one button in px
  var timerlen    = 5;
  var slideAniLen = 400;            // slider length in milliseconds
  var timerID     = new Array(); var startTime = new Array(); var obj = new Array(); var endHeight = new Array(); var moving = new Array(); var dir = new Array(); 
/////////////////////////////////

// AJAX
  var Ajaxqueue = 0;
  var Ajax = {
    getTransport: function() {
      Ajaxqueue++;
      return ((window.ActiveXObject) ?  new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest()) || false;
    },
  
    Request: function(url, options) {
      this.options = options;
      this.transport = Ajax.getTransport();
      
        this.transport.open(this.options.method.toUpperCase(), url, false);
        this.transport.setRequestHeader('Encoding', 'UTF-8');
  
        if(this.options.method.toLowerCase() == 'post') this.transport.setRequestHeader('Content-length', this.options.postBody.length);
        this.transport.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
        this.transport.setRequestHeader('Connection', 'close');
        this.transport.send((this.options.method.toLowerCase() == 'post') ? this.options.postBody : null);
        if(this.transport.readyState == 4) this.onStateChange();
  
        return this.transport.responseText;
    },
    
    onStateChange: function(req) {
      if(this.options.container && $(this.options.container)) $(this.options.container).innerHTML = this.transport.responseText;
      if(typeof this.options.onComplete == 'function') this.options.onComplete();
      Ajaxqueue = 0;
    }
  };

// AJAX FADE DIVS
  var divFader = new Array(); var divFaderTimer = new Array();
  function initDivFader(objID, action, timer)
  {  
    d.getElementById(objID).style.height = (ie ? d.getElementById(objID).offsetHeight: d.getElementById(objID).clientHeight) + 'px';
    d.getElementById(objID).style.overflow = 'hidden';
     
    var div = d.getElementById(objID).getElementsByTagName('div')[0];
        div.style.cssFloat = 'left';
        div.style.styleFloat = 'left';
        div.style.overflow = 'hidden';
        div.style.position = 'relative';
        div.style.width = '100%';
    
    divFader[objID] = {'action' : action};
    divFaderTimer[objID] = window.setInterval("fadeDiv('" + objID + "')", timer * 1000);     // window.setInterval
  }
  
  function fadeDiv(objID)
  {
    if(Ajaxqueue > 0) return window.setTimeout("fadeDiv('" + objID + "')", 500);
    
    var action     = divFader[objID]['action'];
    var newContent = Ajax.Request(baseURL + '/ajax.php/?action=' + action, {method: 'get'}).split('<!-- ajax content start -->')[1].split('<!-- ajax content end -->')[0];

    $('#' + objID).prepend('<div id="fadeContent_' + objID + '" style="display:none">' + newContent + '</div>')
    $('#fadeContent_' + objID).slideDown('slow', function() { $(this).next().remove(); });
  }
  
// MENU
  function buildmenu()
  {
    if(menu != 0)
    {
      for(var i=0; i<menuids.length; i++)
      {
        var ultags = document.getElementById(menuids[i]).getElementsByTagName('ul');
        for(var t=0; t<ultags.length; t++)
        {
          switch(menu)
          {
            case 1:
              ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].onmouseover = function()
              {
                this.className = 'kat_active';
                this.parentNode.getElementsByTagName('div')[0].style.display = 'block';
              }
              ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].onmouseout = function()
              {
                this.className = 'kat';
                this.parentNode.getElementsByTagName('div')[0].style.display = 'none';
              }
            break;
            case 2:
              var litags = ultags[t].parentNode.getElementsByTagName('ul')[0].getElementsByTagName('li');
          document.getElementById('debug').innerHTML += ultags[t].parentNode.tagName;

              ultags[t].parentNode.id = 'menu_' + t;
              ultags[t].parentNode.style.height = litags.length * bnavHeight;
              if(ultags[t].parentNode.className != 'open') ultags[t].parentNode.style.display = 'none';
              if(readCookie('menu_' + t) == 'true') {
                ultags[t].parentNode.style.display = 'block';
                ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].className = 'kat_active';
              }

              ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].onclick = function()
              {
                var divTag = this.parentNode.getElementsByTagName('div')[0];
                this.className = (divTag.style.display == 'none') ? 'kat_active' : 'kat';
                
                obj[divTag.id] = document.getElementById(divTag.id);
                endHeight[divTag.id] = parseInt(obj[divTag.id].style.height);
                switch(divTag.style.display)
                {
                  default:
                  case 'block':
                    writeCookie(divTag.id, false);
                    if(moving[divTag.id]) return;
                    moving[divTag.id] = true;
                    dir[divTag.id] = 'up';
                  break;
                  case 'none':
                    writeCookie(divTag.id, true);
                    if(moving[divTag.id]) return false;
                    moving[divTag.id] = true;
                    divTag.style.height = '1px';
                    divTag.style.display = 'block';
                  break;
                }
                
                startTime[divTag.id] = (new Date()).getTime();

                timerID[divTag.id] = setInterval('slidetick(\'' + divTag.id + '\');',timerlen);
                    
              return false;
            }              
            break;
          }
        }
      }
    }
  }

// DIV SLIDER
  function slidetick(objname)
  {
    var sL = (dir[objname] == 'left' || dir[objname] == 'right') ? 300 : slideAniLen;
    var elapsed = (new Date()).getTime() - startTime[objname];
    if (elapsed > sL) endSlide(objname)
    else {
      var d = Math.round(elapsed / sL * endHeight[objname]);
      if(dir[objname] == 'up' || dir[objname] == 'left') d = endHeight[objname] - d;

      if(dir[objname] == 'left' || dir[objname] == 'right') obj[objname].style.width = d + '%'; 
      else obj[objname].style.height = d + 'px';
    }
  }
  
  function endSlide(objname)
  {
    clearInterval(timerID[objname]);

    if(dir[objname] == 'up') obj[objname].style.display = 'none';

    if(dir[objname] == 'right') obj[objname].style.width = '100%'; 
    else if(dir[objname] == 'left') {
      obj[objname].style.width = 0; 
      obj[objname].parentNode.removeChild(obj[objname]);
    }
    else obj[objname].style.height = endHeight[objname] + "px";

    delete(moving[objname]); delete(timerID[objname]); delete(startTime[objname]); delete(endHeight[objname]); delete(obj[objname]); delete(dir[objname]);
  }
  
// NAVIGATION
  function initNavigation()
  {
    var tags = document.getElementById('navi').getElementsByTagName('a');
    for(var i=0;i<tags.length;i++)
    {
      var loadImage = new Image();
          loadImage.src = (tags[i].firstChild.src.indexOf('_hover') == -1) ? tags[i].firstChild.src.replace(/\.jpg/g, '_hover.jpg') : tags[i].firstChild.src.replace(/\_hover\.jpg/g, '.jpg');

      if(tags[i].firstChild.src.indexOf('_hover') == -1) {
        tags[i].onmouseover = function() {
          this.firstChild.src = (this.firstChild.src.indexOf('_hover') == -1) ? this.firstChild.src.replace(/\.jpg/g, '_hover.jpg') : this.firstChild.src.replace(/\_hover.\.jpg/g, 'jpg');
        }
        tags[i].onmouseout = function() {
          this.firstChild.src = (this.firstChild.src.indexOf('_hover') == -1) ? this.firstChild.src.replace(/\.jpg/g, '_hover.jpg') : this.firstChild.src.replace(/\_hover\.jpg/g, '.jpg');
        }
      }
    }
  }
  
// HANDLE COOKIES
  function writeCookie(cookie,value)
  {
    document.cookie = cookie+"="+value+";path=/";
  }
  
  function readCookie(name) 
  {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    
    while (i < clen) 
    {
      var j = i + alen;
         
      if(document.cookie.substring(i, j) == arg)
      {
        var endstr = document.cookie.indexOf (";", j);
        if(endstr == -1) endstr = document.cookie.length;
            
        return unescape(document.cookie.substring(j, endstr));
      }
      
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
    }
    
    return null;
  }
  
  function deleteCookie (name) {
    var exp = new Date();
    exp.setTime (exp.getTime() - 1);
    document.cookie = name + "=;path=/;expires=" + exp.toGMTString();
  }

// POPUP LAYER
  function checkLoading()
  {
  	if(window.innerHeight && window.scrollMaxY) {	
  		yScroll = window.innerHeight + window.scrollMaxY;
  	} else if (document.body.scrollHeight > document.body.offsetHeight){
  		yScroll = document.body.scrollHeight;
  	} else { 
  		yScroll = document.body.offsetHeight;
  	}
  	
  	if(self.innerHeight) {	
  		windowHeight = self.innerHeight;
  	} else if (document.documentElement && document.documentElement.clientHeight) { 
  		windowHeight = document.documentElement.clientHeight;
  	} else if (document.body) { 
  		windowHeight = document.body.clientHeight;
  	}	
  	
  	if(yScroll < windowHeight){
  		pageHeight = windowHeight;
  	} else { 
  		pageHeight = yScroll;
  	}
    document.getElementById('loading').style.height = pageHeight + 'px';
  }
  
  function popupWindow(url)
  {
    if(!document.getElementById('loading'))
    {
      var div = document.createElement('div');
          div.setAttribute('id', 'loading');
          div.onclick = function() { closePopup() };
      document.getElementsByTagName('body')[0].appendChild(div);
      
      var div = document.createElement('div');
          div.setAttribute('id', 'loadingDiv');
          div.onclick = function() { closePopup() };
      document.getElementsByTagName('body')[0].appendChild(div);
      
      checkLoading();
    }
    
    document.getElementById('loadingDiv').innerHTML = '<iframe id="popupframe" frameboders="0" allowtransparency="true" src="' + url + '" scrolling="no"></iframe>';
    document.getElementById('loading').style.display = 'inline';
    document.getElementById('loadingDiv').style.display = 'inline';
  }
  
  function closePopup()
  {
    document.getElementById('loadingDiv').style.display = 'none';
    document.getElementById('loading').style.display = 'none';
  }
  
// ADD FLASH
  function addFlash()
  {    
    var ret        = new Object();
    ret.embedAttrs = new Object();
    ret.params     = new Object();
    ret.objAttrs   = new Object();

    for(var i=0; i < arguments.length; i=i+2)
    {
      ret.objAttrs[arguments[i]]   = arguments[i+1];
      ret.embedAttrs[arguments[i]] = ret.params[arguments[i]] = arguments[i+1];
      ret.params[arguments[i]]     = arguments[i+1];
    }

    ret.objAttrs['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';
    ret.embedAttrs['type']  = 'application/x-shockwave-flash';

    var str = '<object ';
    for(var i in ret.objAttrs)   str += i + '="' + ret.objAttrs[i] + '" '; str += '>';
    for(var i in ret.params)     str += '<param name="' + i + '" value="' + ret.params[i] + '" /> ';  str += '<embed ';
    for(var i in ret.embedAttrs) str += i + '="' + ret.embedAttrs[i] + '" '; str += ' ></embed></object>';

    document.write(str);
  }
  
  
  ///////////////////////////////////////////
  var temp, temp2, cookieArray, cookieArray2, cookieCount;
  function buildNavigation() {
  
    cookieCount = 0;
  
    if(document.cookie) {
      cookieArray = document.cookie.split(";");
      cookieArray2 = new Array();
  
      for(i in cookieArray) {
        cookieArray2[cookieArray[i].split("=")[0].replace(/ /g,"")]=cookieArray[i].split("=")[1].replace(/ /g,"");
      }
    }
  
    cookieArray = (document.cookie.indexOf("state=")>=0) ? cookieArray2["state"].split(",") : new Array();  
    temp = document.getElementById("suckermenu");
    
    for(var o=0;o<temp.getElementsByTagName("li").length;o++){
  
      if(temp.getElementsByTagName("li")[o].getElementsByTagName("ul").length>0) {
      
        temp.getElementsByTagName("li")[o].getElementsByTagName("a")[0].id = 'navi_' + o;
        temp.getElementsByTagName("li")[o].getElementsByTagName("a")[0].onclick = function(){
          showhide(this, this.parentNode, true);
          return false;
        }
  
        temp.getElementsByTagName("li")[o].getElementsByTagName("ul")[0].style.display = "none";
  
        if(readCookie('navi_' + o) == 'true'){
          showhide(temp.getElementsByTagName("li")[o].getElementsByTagName('a')[0], temp.getElementsByTagName("li")[o]);
        }
  
        cookieCount++;
      }
    }
  
  }
  
  function showhide(lnk, el, animate) {
  
    $(lnk).attr('class', ($(el).find('ul:first').css('display') == 'block') ? 'kat' : 'kat_active');

    if(($(el).find('ul:first').css('display') == 'block')) {
      $(el).find('ul:first').hide(animate); 
      deleteCookie(lnk.id);
    } else {
      $(el).find('ul:first').show(animate); 
      writeCookie(lnk.id, 'true');
    }
  }
  
  function initKeySearch() {
    var input = document.getElementById('keynr').getElementsByTagName('input');
    input[0].parentNode.onsubmit = function() { document.getElementById('keysubmit').className = 'submit_loading'; document.getElementById('keysubmit').blur(); }
    for(var i=0;i<input.length;i++) {
      if(input[i].type == 'text') {
        input[i].onkeyup = function() {
          if(this.className == 'key1') {
            if(this.value.length == 4 && document.getElementById('key2').value.length == 3) { this.blur(); this.parentNode.submit(); document.getElementById('keysubmit').className = 'submit_loading'; }
            else if(this.value.length == 4) document.getElementById('key2').focus();
          } else {
            if(this.value.length == 3 && document.getElementById('key1').value.length == 4) { this.blur(); this.parentNode.submit(); document.getElementById('keysubmit').className = 'submit_loading'; }
            else if(this.value.length == 3) document.getElementById('key1').focus();
          }
        }
      }
    }
  }
  
  function initTeilefinder() {
    var selects = document.getElementById('teilefinder').getElementsByTagName('select');
    for(var i=0;i<selects.length;i++) {
      selects[i].onchange = function() { teileFinder(this.id, this.value) }
    }
  }
  
  var search_teil = '', search_hersteller = '';
  function teileFinder(id, value) {
    switch(id) {
      case 'teil':
        search_teil = value;
        document.getElementById('hersteller').innerHTML = '';
        var opt = document.createElement('option');
            opt.setAttribute('value', '');
            opt.innerHTML = '2. Hersteller wählen:';
        document.getElementById('hersteller').appendChild(opt);
          
        var hersteller = new Array('Alfa Romeo', 'Audi', 'BMW', 'Chevrolet', 'Chrysler', 'Citroen', 'Dacia', 'Daewoo', 'Daihatsu', 'Fiat', 'Ford', 'Honda', 'Hyundai', 'Isuzu', 'Iveco', 'Jeep', 'Kia', 
                                   'Land Rover', 'Mazda', 'Mercedes', 'Mitsubishi', 'Nissan', 'Opel', 'Peugeot', 'Renault', 'Rover', 'Saab', 'Seat', 'Skoda', 'Subaru', 'Suzuki', 'Toyota', 'VW Volkswagen', 'Volvo', 'Wartburg');
        for(var i=0;i<hersteller.length;i++) {
          var opt = document.createElement('option');
              opt.setAttribute('value', hersteller[i]);
              opt.innerHTML = hersteller[i];
          document.getElementById('hersteller').appendChild(opt);
        }
      break;
      case 'hersteller':
        var i; var selectbox = document.getElementById('modell');
        for(i=selectbox.options.length-1;i>=1;i--) {
          selectbox.remove(i);
        }
        
        var options = document.getElementById('modell').getElementsByTagName('option');
        for(var i=1;i<options.length;i++) {
          document.getElementById('modell').remove(i);
        }
      
        search_hersteller = value;
        var modell = Ajax.Request(baseURL + '/ajax.php/?action=modell&hersteller=' + value, {method: 'get'});
        var modells = modell.split('||');
            
        for(var i=0;i<modells.length;i++) {
          if(modells[i].length > 0) {
            var optn = document.createElement('option');
                optn.text = modells[i];
                optn.value = modells[i];
            document.getElementById('modell').options.add(optn);
          }
        }
        
        if(modell.length == 48) {
          var finderString = search_hersteller + ' ' + search_teil;
          document.location.href = 'advanced_search_result.php?search_in_description=0&keywords=' + escape(finderString.replace('  ', ' '));
        }
      break;
      case 'modell':
        var finderString = search_hersteller + ' ' + value.replace(search_hersteller, '') + ' ' + search_teil;
        document.location.href = 'advanced_search_result.php?search_in_description=0&keywords=' + escape(finderString.replace('  ', ' '));
      break;
    }
  }
  
  function checkoutOrder(s) {
    $('<div style="padding:2px 15px"><img src="images/ajax-loader.gif" alt="" style="vertical-align:middle" />&nbsp;&nbsp;&nbsp;bitte warten...</div>').insertAfter(s);
    $(s).css('display', 'none');
    
    return true;
  }
  
  function rowOverEffect(object) {
    if (object.className == 'moduleRow') object.className = 'moduleRowOver';
  }
  
  function rowOutEffect(object) {
    if (object.className == 'moduleRowOver') object.className = 'moduleRow';
  } 
  
  var selected; 
  function selectRowEffect(object, buttonSelect) {
    if (!selected) {
      if (document.getElementById) {
        selected = document.getElementById('defaultSelected');
      } else {
        selected = document.all['defaultSelected'];
      }
    }
  
    if (selected) selected.className = 'moduleRow';
    object.className = 'moduleRowSelected';
    selected = object;
  
    var radio = selected.getElementsByTagName('input');
    if(radio[0]) {
      radio[0].checked=true;
    } 
  } 