// Flags, die kennzeichnen, ob der Benutzer an diesen Combos bereits eine
// Aenderung gemacht hat
var bHst_kuerzel = false;
var bDimension = false;
var bSchl_quer = false;
var bSchl_durchm = false;
var bSchl_speed = false;
var bLoadindex = false;
var bSeason = false;
var bSchl_strassenkz = false;
var bSchl_tltt = false;
var bSchl_bauart = false;
var seasoncombination = false;
var bNoCboChange = false;
var bRunflat = false;
var iSanduhren = 10;

function notifyCboChange(cbo)
{
  if (bNoCboChange)
    return;
  var f = cbo.form;
  var aw_sub = f.typ.value;
  var bPkw = (aw_sub == 41 || aw_sub == 43 || aw_sub == 44 || aw_sub == 42);
  var bZwrad = (aw_sub == 31 || aw_sub == 32 || aw_sub == 33);

  // Flag setzen, dass die uebergebene Combo veraendert wurde
  if (cbo.name=='hst_kuerzel') bHst_kuerzel = true;
  if (cbo.name=='dimension') bDimension = true;
  if (cbo.name=='schl_quer') bSchl_quer = true;
  if (cbo.name=='schl_durchm') bSchl_durchm = true;
  if (cbo.name=='schl_speed') bSchl_speed = true;
  if (cbo.name=='loadindex') bLoadindex = true;
  if (cbo.name=='season') bSeason = true;
  if (cbo.name=='schl_strassenkz') bSchl_strassenkz = true;
  if (cbo.name=='schl_tltt') bSchl_tltt = true;
  if (cbo.name=='schl_bauart') bSchl_bauart = true;
  if (cbo.name=='runflat') bRunflat = true;

  if(bRunflat && f.runflat.value == 1)
    aw_sub = 42;

  // Alle Combowerte laden, falls bereits veraendert, ansonsten Leerstring
  var vHst_kuerzel = bHst_kuerzel ? f.hst_kuerzel.value : '';
  var vDimension = bDimension ? f.dimension.value : '';
  var vSchl_quer = bSchl_quer ? f.schl_quer.value : '';
  var vSchl_durchm = bSchl_durchm ? f.schl_durchm.value : '';
  var vSchl_speed = bSchl_speed ? f.schl_speed.value : '';
  var vLoadindex = bLoadindex ? f.loadindex.value : '';
  if (bPkw)
  {
    var vSeason = bSeason ? f.season.value : '';
    if(aw_sub != 44 && aw_sub != 43)
      var vRunflat = bRunflat ? f.runflat.value : '';
  }
  var vSchl_strassenkz = bSchl_strassenkz ? f.schl_strassenkz.value : '';
  var vSchl_tltt = bSchl_tltt ? f.schl_tltt.value : '';
  var vSchl_bauart = bSchl_bauart ? f.schl_bauart.value : '';

  // URL zusammenbasteln
  var url = '/json/changereifen.jsp?aw_sub='+aw_sub;
  if (bPkw)
    url += '&trgcnt=9';	// Anzahl der Targets
  if (bZwrad)
    url += '&trgcnt=8'; // Anzahl der Targets
  url += '&target1=hst_kuerzel&selected1='+vHst_kuerzel;
  url += '&target2=dimension&selected2='+vDimension;
  url += '&target3=schl_quer&selected3='+vSchl_quer;
  url += '&target4=schl_durchm&selected4='+vSchl_durchm;
  url += '&target5=schl_speed&selected5='+vSchl_speed;
  if (bPkw)
  {
    url += '&target6=loadindex&selected6='+vLoadindex;
    url += '&target7=season&selected7='+vSeason;
    if(aw_sub != 44 && aw_sub != 43)
      url += '&target8=runflat&selected8='+vRunflat;
  }
  if (bZwrad)
  {
    url += '&target6=schl_bauart&selected6='+vSchl_bauart;
    url += '&target7=schl_tltt&selected7='+vSchl_tltt;
    url += '&target8=schl_strassenkz&selected8='+vSchl_strassenkz;
  }

  // Combos deaktivieren, solange die aebertragung dauert
  f.hst_kuerzel.disabled = true;
  f.dimension.disabled = true;
  f.schl_quer.disabled = true;
  f.schl_durchm.disabled = true;
  f.schl_speed.disabled = true;
  if (bPkw)
  {
    f.loadindex.disabled = true;
    f.season.disabled = true;
    if(aw_sub != 44 && aw_sub != 43)
      f.runflat.disabled = true;
  }
  if (bZwrad)
  {
    f.schl_bauart.disabled = true;
    f.schl_tltt.disabled = true;
    f.schl_strassenkz.disabled = true;
  }

  if(f && document.getElementById('sanduhr-'+f.name))
	  document.getElementById('sanduhr-'+f.name).style.display='block';
  else
	  document.getElementById('sanduhr').style.display='block';
  setAnchor(f);
  sndReq(url, handleMultiComboResponse);
}

function notifyCboChangeFastSearch(cbo)
{
  if (bNoCboChange)
    return;
  var f = document.frmSchnellsuche;
  var aw_sub = "41";

  // Flag setzen, dass die uebergebene Combo veraendert wurde
  if (cbo.name=='hst_kuerzel_s') bHst_kuerzel = true;
  else if (cbo.name=='dimension_s') bDimension = true;
  else if (cbo.name=='schl_quer_s') bSchl_quer = true;
  else if (cbo.name=='schl_durchm_s') bSchl_durchm = true;
  else if (cbo.name=='schl_speed_s') bSchl_speed = true;
  else if (cbo.name=='seasoncombination_s') seasoncombination = true;

  if (f.seasoncombination_s.value.split('_')[1])
  {
	  aw_sub = f.seasoncombination_s.value.split('_')[0];
	  f.aw_sub.value = aw_sub;
	  f.season_s.value = f.seasoncombination_s.value.split('_')[1];
  }
  else
  {
	  //Werte des 1. Eintrages setzen
	  f.aw_sub.value = 41;
	  f.season_s.value = 1;
  }
  
  //Motorradreifen verlinken auf die dafür vorgesehene Suchseite
  if (aw_sub.charAt(0) == "3")
	  location.href="/netto/shop/suche/motorrad.html?typ=" + aw_sub;

  // Alle Combowerte laden, falls bereits veraendert, ansonsten Leerstring
  var vHst_kuerzel = bHst_kuerzel ? f.hst_kuerzel_s.value : '';
  var vDimension = bDimension ? f.dimension_s.value : '';
  var vSchl_quer = bSchl_quer ? f.schl_quer_s.value : '';
  var vSchl_durchm = bSchl_durchm ? f.schl_durchm_s.value : '';
  var vSchl_speed = bSchl_speed ? f.schl_speed_s.value : '';
  var vSeason = seasoncombination ? f.seasoncombination_s.value : '';


  // URL zusammenbasteln
  var url = '/json/changereifen.jsp?aw_sub='+aw_sub;

  url += '&trgcnt=6';	// Anzahl der Targets

  url += '&target1=hst_kuerzel_s&selected1='+vHst_kuerzel;
  url += '&target2=dimension_s&selected2='+vDimension;
  url += '&target3=schl_quer_s&selected3='+vSchl_quer;
  url += '&target4=schl_durchm_s&selected4='+vSchl_durchm;
  url += '&target5=schl_speed_s&selected5='+vSchl_speed;
  url += '&target6=seasoncombination_s&selected6='+vSeason;

  // Combos deaktivieren, solange die uebertragung dauert
  f.hst_kuerzel_s.disabled = true;
  f.dimension_s.disabled = true;
  f.schl_quer_s.disabled = true;
  f.schl_durchm_s.disabled = true;
  f.schl_speed_s.disabled = true;
  f.seasoncombination_s.disabled = true;


  document.getElementById('sanduhr_schnellsuche').style.display='block';
  setAnchorFastSearch();
  sndReq(url, handleMultiComboFastResponse);
}

function handleMultiComboResponse()
{
  if(http.readyState == 4)
  {
    var res = http.responseText;
    res = res.replace(/\r|\n|\r\n/g, "");
    res = LTrim(res);
    var obj = eval("(" + res + ")");
    if (document.getElementById('sanduhr'))
    	document.getElementById('sanduhr').style.display='none';
    for (var i = 1; i < iSanduhren; i++)
    {
    	if (document.getElementById('sanduhr-frmSuche'+i))
    		document.getElementById('sanduhr-frmSuche'+i).style.display='none';
    }

    if(typeof(obj.targets) == "undefined")
      return;

    var elements;
    var selected;
    var defaults = "";
    for (var i = 0; i < obj.targets.length; i++)
    {
      var objt = obj.targets[i];
      selected = "";

      if(typeof(objt.content) != "undefined")
      {
        if (objt.selected)
        {
          if (objt.content.length == 1)
            objt.selected = objt.content[0][0];

          selected = objt.selected;

          if (objt.selected != 'Alle' || objt.selected == 'Alle' && objt.target == 'schl_speed' || objt.selected != 'Alle Reifen')
          {
            if (defaults != '')
              defaults += ';';
            switch(objt.target)
            {
              case "dimension": defaults+="di="; break;
              case "schl_quer": defaults+="q="; break;
              case "schl_durchm": defaults+="du="; break;
              case "schl_speed": defaults+="sp="; break;
              case "season": defaults+="se"; break;
              case "runflat": defaults+="rf"; break;
            }
            defaults+=objt.selected;
          }
        }

        // alle Cbos mit dem namen befüllen
    	elements = document.getElementsByName(objt.target);
	    for (var j = 0; j < elements.length; j++)
	     {
	    	if (elements[j].type == "select-one")
	    		fillCombo(elements[j], objt.content, selected);
	    }
      }

    	//Alle Forms durchlaufen und nur die Forms nehmen welche mit frmSuche beginnen und das HerstellerFeld haben
      for (var j = 0; j < document.forms.length; j++)
      {
      	var f = document.forms[j];
      	if (f.name.match("^frmSuche")=="frmSuche" && f.hst_kuerzel)
      		f.elements[objt.target].disabled = false;
      }
      //document.frmSchnellsuche.elements[objt.target].disabled = false;
    }
    getAnchor(defaults);
  }
}

function handleMultiComboFastResponse()
{
  if(http.readyState == 4)
  {
    var res = http.responseText;
    res = res.replace(/\r|\n|\r\n/g, "");
    res = LTrim(res);
    var obj = eval("(" + res + ")");
    document.getElementById('sanduhr_schnellsuche').style.display='none';
    if(typeof(obj.targets) == "undefined")
      return;

    var defaults = "";
    for (var i = 0; i < obj.targets.length; i++)
    {
      var objt = obj.targets[i];
      if(typeof(objt.content) != "undefined")
      {
        if (objt.selected)
        {
          if (objt.content.length == 1)
            objt.selected = objt.content[0][0];
          fillCombo(document.getElementsByName(objt.target)[0], objt.content, objt.selected);
          if (objt.selected != 'Alle' || objt.selected == 'Alle' && objt.target == 'schl_speed_s' || objt.selected != 'Alle Reifen')
          {
            if (defaults != '')
              defaults += ';';
            switch(objt.target)
            {
              case "dimension_s": defaults+="di="; break;
              case "schl_quer_s": defaults+="q="; break;
              case "schl_durchm_s": defaults+="du="; break;
              case "schl_speed_s": defaults+="sp="; break;
              case "seasoncombination_s": defaults+="awse="; break;
              case "runflat_s": defaults+="rf"; break;
            }
            defaults+=objt.selected;
          }
        }
        else
          fillCombo(document.getElementsByName(objt.target)[0], objt.content, "");
      }
      //document.frmSuche.elements[objt.target].disabled = false;
      document.frmSchnellsuche.elements[objt.target].disabled = false;
    }
    //document.frmSchnellsuche.elements["seasoncombination_s"].disabled = false;
    getAnchorFast(defaults);
  }
}

// Setzt einen Anker, damit AJAX keine Probleme mit dem Zurueckbutton des Browsers hat
function setAnchor(form)
{
  var a = '#';
  // Anker zusammenstellen
  var f = document.frmSuche;
  if (form)
	  f = form;
  var aw_sub = f.typ.value;
  var bPkw = (aw_sub == 41 || aw_sub == 43 || aw_sub == 44 || aw_sub == 42);
  var bZwrad = (aw_sub == 31 || aw_sub == 32 || aw_sub == 33);
  a += 'aws=' + aw_sub + ';';

  a += 'h=' + f.hst_kuerzel.value + ';';
  a += 'di=' + f.dimension.value + ';';
  a += 'q=' + f.schl_quer.value + ';';
  a += 'du=' + f.schl_durchm.value + ';';
  a += 'sp=' + f.schl_speed.value + ';';
  if (bPkw) a += 'l=' + f.loadindex.value + ';';
  if (bPkw) a += 'se=' + f.season.value + ';';
  if (bPkw && aw_sub == 41) a += 'rf=' + f.runflat.value + ';';
  if (bZwrad) a += 'st=' + f.schl_strassenkz.value + ';';
  if (bZwrad) a += 't=' + f.schl_tltt.value + ';';
  if (bZwrad) a += 'b=' + f.schl_bauart.value + ';';
  a = a.substr(0, a.length-1);
  // Anker an die aktuelle Seite anhängen bzw. bestehenden Anker ersetzen
  var l = document.location.href;
  if (l.indexOf('#') > 0)
    l = l.substring(0, l.indexOf('#'));
  // Aktuelle Seite in der History durch neue ersetzen
  document.location.replace(l + a);
}

//Setzt einen Anker, damit AJAX keine Probleme mit dem Zurueckbutton des Browsers hat
function setAnchorFastSearch()
{
  var a = '#';
  // Anker zusammenstellen
  var f = document.frmSchnellsuche;

  a += 'awse=' + f.seasoncombination_s.value + ';';
  a += 'h=' + f.hst_kuerzel_s.value + ';';
  a += 'di=' + f.dimension_s.value + ';';
  a += 'q=' + f.schl_quer_s.value + ';';
  a += 'du=' + f.schl_durchm_s.value + ';';
  a += 'sp=' + f.schl_speed_s.value + ';'
  a += 'fa=' + f.schnell.value + ';'
//  a += 'se=' + f.season_s.value + ';';
  a = a.substr(0, a.length-1);
  // Anker an die aktuelle Seite anhängen bzw. bestehenden Anker ersetzen
  var l = document.location.href;
  if (l.indexOf('#') > 0)
    l = l.substring(0, l.indexOf('#'));
  // Aktuelle Seite in der History durch neue ersetzen
  document.location.replace(l + a);
}

// Holt den Anker, wertet ihn aus und setzt die Comboboxen entsprechend
function getAnchor(defaults)
{
  var a = document.location.hash;
  // Nur was machen, wenn der Anker angegeben ist
  if(a.length > 1 && a.substr(0,1) == "#")
  {
    if (defaults == null)
      defaults = '';
    // Anker in einzelne Felder aufsplitten
    a = a.substr(1, a.length-1);
    var p = a.split(';');
    var p2 = defaults.split(';');
    var o = null;

    for (var j = 0; j < document.forms.length; j++)
    {
    	var f = document.forms[j];

    	//Alle Forms durchlaufen und nur die Forms nehmen welche mit frmSuche beginnen und das HerstellerFeld haben
    	if (f.name.match("^frmSuche")!="frmSuche" || !f.hst_kuerzel)
    		continue;


	    // Alle Felder durchlaufen
	    for (var i=0; i<p.length; i++)
	    {
	      o = null;
	      // Nur gültige Felder beachten
	      if (p[i].indexOf('=') > 0)
	      {
	        // Je nach Feldname die entsprechende Combobox setzen
	        switch (p[i].substring(0, p[i].indexOf('=')))
	        {
	          case "h": o = f.hst_kuerzel; bHst_kuerzel = (o.selectedIndex > 0 && bHst_kuerzel); break;
	          case "di": o = f.dimension; bDimension = (o.selectedIndex > 0 && bDimension); break;
	          case "q": o = f.schl_quer; bSchl_quer = (o.selectedIndex > 0 && bSchl_quer); break;
	          case "du": o = f.schl_durchm; bSchl_durchm = (o.selectedIndex > 0 && bSchl_durchm); break;
	          case "sp": o = f.schl_speed; bSchl_speed = (o.selectedIndex > 0 && bSchl_speed); break;
	          case "l": o = f.loadindex; bLoadindex = (o.selectedIndex > 0 && bLoadindex); break;
	          case "se": o = f.season; bSeason = (o.selectedIndex > 0 && bSeason); break;
	          case "rf": o = f.runflat; bRunflat = (o.selectedIndex > 0 && bRunflat); break;
	          case "st": o = f.schl_strassenkz; bSchl_strassenkz = (o.selectedIndex > 0 && bSchl_strassenkz); break;
	          case "t": o = f.schl_tltt; bSchl_tltt = (o.selectedIndex > 0 && bSchl_tltt); break;
	          case "b": o = f.schl_bauart; bSchl_bauart = (o.selectedIndex > 0 && bSchl_bauart); break;
	          case "aws": var runflat = "trRunflat";
	          		if (document.getElementById("trRunflat-"+f.name))
	          			{runflat = "trRunflat-"+f.name;}
	          		if(p[i].substr(p[i].indexOf('=')+1) == "41")
	                  document.getElementById(runflat).style.display = '';
	                else if (document.getElementById(runflat) != null)
	                  document.getElementById(runflat).style.display = 'none';
	        }
	        var val = p[i].substr(p[i].indexOf('=')+1);
	        // Notfalls die Cboauswahl mit defaults überschreiben
//	        for (var i2=0; i2<p2.length; i2++)
//	        {
//	          if (p2[i2].indexOf('=') > 0 && p2[i2].substring(0, p2[i2].indexOf('=')) == p[i].substring(0, p[i].indexOf('=')))
//	            val = p2[i2].substr(p2[i2].indexOf('=')+1);
//	        }
	        // Comboboxwert setzen ohne einen Ajax-Aufruf auszulösen
	        if (o != null)
	        {
	          bNoCboChange = true;
	          selectCboByValue(o, val);
	          bNoCboChange = false;
	        }
	      }
	    }
	  }
  }
}

function setCboFastSearch(cbo, val)
{
    // Comboboxwert setzen ohne einen Ajax-Aufruf auszulösen
    bNoCboChange = true;
    selectCboByValue(cbo, val);
    bNoCboChange = false;
}

function getAnchorFast(defaults)
{
  var a = document.location.hash;
  // Nur was machen, wenn der Anker angegeben ist
  if(a.length > 1 && a.substr(0,1) == "#")
  {
    if (defaults == null)
      defaults = '';
    // Anker in einzelne Felder aufsplitten
    a = a.substr(1, a.length-1);
    var p = a.split(';');
    var p2 = defaults.split(';');
    var f = document.frmSchnellsuche;
    var o = null;
    // Alle Felder durchlaufen
    for (var i=0; i<p.length; i++)
    {
      o = null;
      // Nur gültige Felder beachten
      if (p[i].indexOf('=') > 0)
      {
        // Je nach Feldname die entsprechende Combobox setzen
        switch (p[i].substring(0, p[i].indexOf('=')))
        {
          case "h": o = f.hst_kuerzel_s; bHst_kuerzel = (o.selectedIndex > 0 && bHst_kuerzel); break;
          case "di": o = f.dimension_s; bDimension = (o.selectedIndex > 0 && bDimension); break;
          case "q": o = f.schl_quer_s; bSchl_quer = (o.selectedIndex > 0 && bSchl_quer); break;
          case "du": o = f.schl_durchm_s; bSchl_durchm = (o.selectedIndex > 0 && bSchl_durchm); break;
          case "sp": o = f.schl_speed_s; bSchl_speed = (o.selectedIndex > 0 && bSchl_speed); break;
          case "awse": o = f.seasoncombination_s; seasoncombination = (o.selectedIndex > 0 && seasoncombination); break;

        }
        var val = p[i].substr(p[i].indexOf('=')+1);
        // Notfalls die Cboauswahl mit defaults überschreiben
        for (var i2=0; i2<p2.length; i2++)
        {
          if (p2[i2].indexOf('=') > 0 && p2[i2].substring(0, p2[i2].indexOf('=')) == p[i].substring(0, p[i].indexOf('=')))
            val = p2[i2].substr(p2[i2].indexOf('=')+1);
        }
        // Comboboxwert setzen ohne einen Ajax-Aufruf auszulösen
        if (o != null)
        {
          bNoCboChange = true;
          selectCboByValue(o, val);
          bNoCboChange = false;
        }
      }
    }
  }
}


