var lastAnzahl = 100;
var neonId = 7;
var lastMerkmal = 0;
var lastSize = 0;
var oldprices = Object();

var blinkTimeoutId = 0;
var versandBlinkCount=0;
var currentNeonColor = 0;
// var previewIcons = Array();
// var previewIconsTimeout = 0;
// var nextPreviewIconId = 1;


function rememberNeonColor() {
  var neoncolor = document.getElementById("neoncolor");
  if (!neoncolor) return;
  currentNeonColor = neoncolor.value;
}

function switchBubble(ev)
{
  if (window.event) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
    }
  if (ev && ev.stopPropagation && ev.preventDefault) {
    ev.stopPropagation();
    ev.preventDefault();
  }
  var popupimg = getElFromEv(ev);
  var pos = findPos(popupimg);
  var posx = pos[0];
  var posy = pos[1];
  var bubble = document.getElementById("bubble");
  if (bubble)
  {
    if (bubble.style.display == "block") {
      fadeout("bubble");
      queue.enqueue(new Array("hidebubble", ""));
      doPostbacks();
    } else {
      setAlpha(bubble, 1);
      bubble.style.display="block";
      bubble.style.left = "50px";
      bubble.style.top = (posy - bubble.offsetHeight + 3) + "px";

      // warum geht es nur damit?
      var bubblecloselink = document.getElementById("bubblecloselink");
      if (bubblecloselink)
      {
        addEvent(bubblecloselink, "click", switchBubble, false);
      }
    }
  }  
}

var opacity = 1;
var elm;
function fadeout(elid)
{
   var el = document.getElementById(elid);
   elm = el;
   setAlpha(el, opacity);
 //  el.style.opacity = opacity;
 //  el.style.filter = 'alpha(opacity=' + opacity*100 + ')';

   if (opacity > 0)
   {
    opacity = opacity - .1;
    setTimeout('fadeout("' + elid + '")', 30);
  } else
  {
    el.style.display="none";
    opacity = 1;
  }
}


function setAlpha(el, alpha) {
    var alpha2 = alpha * 100;
    el.style.filter="alpha(opacity="+alpha2+")";
    el.style.mozOpacity=alpha;
    el.style.opacity=alpha;
}


function checkBLZ(ev)
{
  var blz = document.getElementById("blz");
  if (blz.value.length == 8)
  {
    queue.enqueue(new Array("blz/" + blz.value, "checkBLZCallback()"));
    doPostbacks();
  }
}

function checkBLZCallback()
{
  var bank = document.getElementById("bank");
  if (!bank) return;
  if (xmlHttp.responseText != "" && bank.value == "") bank.value = xmlHttp.responseText;
}



function switchAltLieferadresse()
{
  var el = document.getElementById("altaktiv");
  var elements = Array("alt_firma", "herra", "fraua", "alt_name", "alt_vorname", "alt_strasse", "alt_plz", "alt_hausnummer" ,  "alt_ort");
  if (el && el.checked)
  {
    switchEnable(elements, false, false);
  } else
  {
    switchEnable(elements, true, "1px solid #a5acb2;");
  }
}

function switchEnable(elements, value, bordervalue)
{
  for(i = 0; i <= elements.length; i++)
  {
    var current = document.getElementById(elements[i]);
    if (current)
    {
      current.disabled = value;
      if (value  == true) // Buttons sind deaktiviert
      {
        current.style.background = "#eee";
      } else
      {
        current.style.background = "#fff";
      }
    }
  }
}


function anzahlFarbe()
{
  var anzahl = document.getElementById("anzahl");
  if (!anzahl) return;
  var val = parseInt(anzahl.value, 10);
  if (anzahl.value=="") return;
  if (val <= 0)
  {
    anzahl.value = "0";
    anzahl.style.color = "red";
  } else
  {
    anzahl.style.color = "#444";
  }
}

function commitbutton(state)
{
  var cc = document.getElementById("commitchanges");
  if (!cc) return;
  cc.disabled = state;
  cc.value = (state) ? lang.changescommited : lang.commitchanges;

}

function updateWK(ev)
{
  commitbutton(false);
  var el = getElFromEv(ev);
  var val = parseInt(el.value, 10); // die "10" wegen dem parseInt-Bug bei 08 und 09
  var anzahl  = (val > 0) ? val : 0;

  if (el.value!="")
  {
    el.value = anzahl;
  }

  if (!oldprices[el.name] || (oldprices[el.name] && oldprices[el.name] != anzahl))
  {
    oldprices[el.name] = anzahl;
    queue.enqueue(new Array("warenkorb/" + el.name + "/" + anzahl, "updateWKCallback()"));
    doPostbacks();
  }
}

function updateWKSelects(ev)
{
  commitbutton(false);
  var el = getElFromEv(ev);
  var val = parseInt(el.value, 10); // die "10" wegen dem parseInt-Bug bei 08 und 09
  var value = (val > 0) ? val : 0;

  queue.enqueue(new Array("warenkorb/" + el.name + "/" + value, "updateWKCallback()"));
  doPostbacks();
}


function updateWKCallback()
{
  var warenkorb = eval('(' + xmlHttp.responseText + ')');
  // alert(warenkorb.preise.length);
  for(var i = 0; i < warenkorb.preise.length; i+=2)
  {
    var wkid = warenkorb.preise[i];
    var wkpreis = warenkorb.preise[i+1];
    var preisspan = document.getElementById("preis-anzahl-" + wkid);
    if (preisspan) preisspan.innerHTML = wkpreis;

    // neue Preisoptionen in das Dropdown laden
    var temp = "warenkorb.sizes.id"+wkid;
    var sizes = eval(temp);
    var temp = "product-" + wkid;
    var sel = document.getElementById(temp);
    
    var motiv = document.getElementById("motiv-" + wkid);
    if (motiv) 
    {
      motiv.src = eval("warenkorb.sizes.motiv"+wkid);
    }
    motiv = false;
    
    if (sizes && sel)
    {
      var buffer = "";
      // sel.innerHTML = "";
      while (sel.length > 0) {
       sel.options[ sel.length - 1] = null;
      }
      for(var j = 0; j < sizes.length; j+=2)
      {
        var temp = "warenkorb.sizes.cur"+wkid;
        var cursel = eval(temp);
        // alert(sizes[j] + " -- " + cursel);

        var act = (sizes[j] == cursel);
        //sel.innerHTML += "<option " + act + " value=\"" + sizes[j] + "\">" + sizes[j+1] + "</option>";
        var NeuerEintrag = new Option(sizes[j+1],sizes[j],false,act);
        sel.options[sel.length] = NeuerEintrag;
      }
    }

    // neue Merkmalsoptionen in das Dropdown laden
    var temp = "warenkorb.merkmale.id"+wkid;
    var merkmale = eval(temp);
    var temp = "merkmal-" + wkid;
    var sel = document.getElementById(temp);

    if (merkmale && sel)
    {
      var buffer = "";
      // sel.innerHTML = "";
      while (sel.length > 0) {
       sel.options[ sel.length - 1] = null;
      }
      for(var j = 0; j < merkmale.length; j+=2)
      {
        var temp = "warenkorb.merkmale.cur"+wkid;
        var cursel = eval(temp);
        // alert(sizes[j] + " -- " + cursel);

        var act = (merkmale[j] == cursel);
        //sel.innerHTML += "<option " + act + " value=\"" + sizes[j] + "\">" + sizes[j+1] + "</option>";
        var NeuerEintrag = new Option(merkmale[j+1],merkmale[j],false,act);
        sel.options[sel.length] = NeuerEintrag;
      }
    }




  }
  varsToHTML(warenkorb, Array("zwischensumme", "versandvalue", "expressvalue", "rechnungssumme", "gesamtnetto", "produktanzahl", "zwischensummetop", "mwst", "rabattvalue", "proofvalue"));

  var temp;
  temp = document.getElementById(warenkorb.versandtarget);
  if (temp) temp.checked = true;

  temp = document.getElementById(warenkorb.lieferdauer);
  if (temp) temp.checked = true;

  temp = document.getElementById(warenkorb.zahlungsart);
  if (temp) temp.checked = true;

  changeButtons(warenkorb.bactive, "");
  changeButtons(warenkorb.binactive, "disabled");
  //alert(warenkorb.versandblink);
  
  if (warenkorb.versandblink == "red") versandBlink("versandvalue", warenkorb.versandblink);
  if (warenkorb.expressblink == "red") versandBlink("expressvalue", warenkorb.expressblink);
  if (warenkorb.versandblink == "green") versandBlink("versandvalue", warenkorb.versandblink);
  if (warenkorb.expressblink == "green") versandBlink("expressvalue", warenkorb.expressblink);
  
  commitbutton(true);
}


function changeButtons(buttons, disablestate)
{
  if (!buttons) return;
  for(var i = 0; i < buttons.length; i++)
  {
    var current = document.getElementById(buttons[i])
    //if (current) current.disabled = disablestate;
    
    var currentlabel = document.getElementById("label_" + buttons[i])
    if (currentlabel) currentlabel.style.color = (disablestate=="disabled") ? "#999" : "#000";
    
  }
}

function varsToHTML(warenkorb, varnames)
{
  for(var i=0; i < varnames.length; i++)
  {
    var varname = varnames[i];
    var temp = document.getElementById(varname);
    if (temp) temp.innerHTML = warenkorb[varname];
  }
}


function updateRadios(ev)
{
  commitbutton(false);
  var el = getElFromEv(ev);
  if (el.type == "radio") {
    var query = "radio/" + el.name + "/" + el.value;
  } else if (el.type == "checkbox") {
    var val = (el.checked) ? "ja" : "nein";
    var query = "radio/" + el.name + "/" + val;
  }
  queue.enqueue(new Array(query, "updateWKCallback()"));
  doPostbacks();
}


function updatePrice(ev)
{
  commitbutton(true);
  var sizeid = getCheckedRadio("value").value;
  var merkmalradio = getCheckedRadio("merkmal");
  var merkmalid = (merkmalradio) ? merkmalradio.value : 0;
  
  var anzahl = parseInt(document.getElementById("anzahl").value, 10);
  var productid = document.getElementById("categoryid").value;

  var anzahlsend = anzahl;
  var reset = true;
  if (!anzahl && anzahl!==0)
  {
    anzahlsend = 0;
    reset = false;
  }
  if (!(anzahl >= 0) ) anzahl = 0;
  if (reset) document.getElementById("anzahl").value = anzahl;
//  if (anzahl != lastAnzahl || sizeid != lastSize || merkmalid != lastMerkmal)
//  {
    lastAnzahl = anzahl;
    lastSize = sizeid;
    lastMerkmal = merkmalid;
    queue.enqueue(new Array("price/" + productid + "-" + sizeid + "-" + anzahlsend + "-" + merkmalid + ".json", "updatePriceCallback()"));
    doPostbacks();
//  }
}


function updatePriceCallback(ev)
{
  eval('var price = ' + xmlHttp.responseText);
  var anzahl = parseInt(document.getElementById("anzahl").value, 10);
  var thecurrentbrutto = document.getElementById("thecurrentbrutto");
  
  var themwst = document.getElementById("themwst");
  var previewdiz = document.getElementById("previewdiz");
  // if (!thecurrentprice) return;
  // thecurrentprice.innerHTML = price.netto;
  thecurrentbrutto.innerHTML = price.brutto;
  if (previewdiz) previewdiz.innerHTML = price.previewdiz;
  themwst.innerHTML = price.mwst;


  var previewpicture = document.getElementById("previewpicture");
  var firstIcon = price.icons[1];
  if (previewpicture && firstIcon) {
    previewpicture.src = firstIcon;
  }
  
  rebuildIcons(price.icons);
  // Icons rotieren
  //clearTimeout(previewIconsTimeout);
  //previewIcons = price.icons;
  //nextPreviewIconId = 0;
  //rotatePreviewIcons();
  
  rebuildUpoptions(price.merkmale, price.currentmerkmal, anzahl);
}

function rebuildIcons(icons, anzahl) {
  if (!icons) return;
  var iconshtml = document.getElementById("productpreview_icons");
  if (!iconshtml) return;
  var temp = "";
  for(i = 0; i < icons.length; i = i +2) {
    if (icons[i] == "") continue;

    var smallVersion = icons[i];
    var bigVersion = icons[i + 1];

    temp += "<a href=\"" + bigVersion + "\"><img src=\"" + smallVersion + "\"></a>";
  }
  iconshtml.innerHTML = temp;
  
  initImageSelector();
}

function showBig(ev) {
  el = getElFromEv(ev);
  el = ascendDOM(el, "a");
  var previewpicture = document.getElementById("previewpicture");
  if (previewpicture) {
    previewpicture.src = el.href;
  }
  
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
		}
	if (ev && ev.stopPropagation && ev.preventDefault) {
		ev.stopPropagation();
		ev.preventDefault();
	}

}

/*
function rotatePreviewIcons() {
  var previewpicture = document.getElementById("previewpicture");
  if (!previewpicture) return;
  var newsrc = previewIcons[nextPreviewIconId];
  if (typeof(newsrc) != "undefined" && newsrc != previewpicture.src) previewpicture.src = newsrc;
  previewIconsTimeout = setTimeout("rotatePreviewIcons()", 2000);
  nextPreviewIconId = (nextPreviewIconId < (previewIcons.length - 1))  ? nextPreviewIconId + 1 : 0;
}
*/

function rebuildUpoptions(merkmale, currentMerkmal, anzahl) {
  var upoptions = document.getElementById("upoptions");
  if (!upoptions) return;
  if (merkmale.length == 0) return;
  // var temp = "<p>Wünschen Sie eine Sonderoptik?</p>";
  var temp = "";
  temp += "<table style=\"padding:0 20px 0 0 ;margin:0 0 0 10px;width:100%\"><tr><th>" + lang.sonderoptik + "</th><th>" + lang.aufpreisprostueck + "</th></tr><tr>";
  for(var i = 0; i < merkmale.length; i=i+3) {
    var sel = (currentMerkmal == merkmale[i]) ? "checked=\"checked\" " : "";
    temp += "<td style=\"padding:0;margin:0;\"><input " + sel + "type=\"radio\" name=\"merkmal\" value=\"" + merkmale[i] + "\" id=\"merkmal-" + merkmale[i] + "\"> <label for=\"merkmal-" + merkmale[i] + "\">" + merkmale[i+1] + "</label>"

    if (merkmale[i] == neonId) {
      temp += " <select name='neoncolor' id='neoncolor' style='font-size:80%' onChange='rememberNeonColor()'>";
      for(j = 1; j < neon.length; j++) {
        sel = (currentNeonColor == j) ? "selected" : "";
        temp += "<option " + sel + " value='" + j + "'>" + neon[j] + "</option>";
      }
      temp += "</select>";
    }
    temp += "</td>";
    if (anzahl > 0) 
    {
      temp += "<td style=\"padding:0;margin:0;text-align:right\"><span style=\"color:#465e06;font-weight:bold;\">" + merkmale[i+2] + "</span> <span style=\"color:#777;font-size:80%\">" + lang.euro + "</td></tr>" ;
    } else {
      temp += "<td style=\"padding:0;margin:0;\">--</td></tr>" ;
    }
  }
  temp += "</table>";
  upoptions.innerHTML = temp;

  var inputs = upoptions.getElementsByTagName("input");
  if (inputs) {
    for(i=0; i < inputs.length; i++)
    {
      var current = inputs[i];
      if (current.type=="radio")
      {
        addEvent(current, "click", updatePrice, false);
      }
    }
  }
}


// für das Upload-Formular
function getCheckedRadio(name)
{
  var radios = document.getElementsByName(name);
  if (!radios) return false;
  for( i = 0; i < radios.length; i++ )
  {
    if( radios[i].checked == true )
      return radios[i];
  }
  return false;
}


function showLoading(ev)
{
  var el = getElFromEv(ev);
  el.value = lang.bitteWarten;
  var loading = document.getElementById("loading");
  if(loading) loading.style.display="block";
}

function versandBlink(target, col)
{
  if (col=="") return;
  var el = document.getElementById(target);  
  if (col=="reset")
  {
    clearTimeout(blinkTimeoutId);
      versandBlinkCount = 0;
      el.style.visibility = "visible";
      el.style.color = "#333";
      el.style.fontWeight="normal";
  } else
  {
    el.style.visibility = (el.style.visibility=="hidden") ? "visible" : "hidden";
    el.style.color=col;
    el.style.fontWeight="bold";
    versandBlinkCount++;
    if (versandBlinkCount<12)
    {
      blinkTimeoutId = setTimeout("versandBlink('"+target+"','"+col+"')",100);
    } else
    {
      versandBlinkCount = 0;
      el.style.visibility = "visible";
      el.style.color = "#333";
      el.style.fontWeight="normal";
    }
  }
}