var tempoptions = new Array();
var price = new Array();
var tempgallery = new Array();
var transspeed=500;
var fadespeed=300;
var currentwidth=600;
var currentheight=399;
var firstimagewidth=currentwidth;
var firstimageheight=currentheight;

function initProduct() {
 var count = 0;
 var e = document.getElementById("PRICE_SEL");
 var s;
 var i;

 if (e) {
  e = e.childNodes;
  for (i=0;i<e.length;i++) {
   if (e[i].hasChildNodes()) {
    s = e[i].firstChild.data;
    price[s.substring(0, s.indexOf('='))]=s.substring(s.indexOf('=') + 1);
   }
  }
 }

 e = document.getElementById("PIC_PATH");
 if (e) {
  e = e.childNodes;
  count = 0;
  for (i=0;i<e.length;i++) {
   if (e[i].hasChildNodes()) {
    tempgallery[count]=['/essFile/' + e[i].firstChild.data, '600', '399', '', '', '', '', '', '' + (count++)];
   }
  }
 }

 e = document.getElementById("OPTIONS");
 if (e) {
  e= e.childNodes;
  count = 0;
  for (i=0;i<e.length;i++) {
   if (e[i].hasChildNodes()) {
    tempoptions[count++]=e[i].firstChild.data.split('|');
   }
  }
 }
}

function writeCheckOut(option,rowNo) {
  var sa = option.split(',');
  for (i=0;i<sa.length;i++) {
   if (sa[i].length > 0)
    document.write('<input type="hidden" name="' + rowNo + '|ORDERS_POSITION_OPTION.PRODUCT_OPTION_VALUE_ID" value="' + sa[i] + '"/>');
  }
}

function writeOptions() {
 var currOpt=-1;
 document.write('<div style="width:600px;">');
 for (i = 0; i < tempoptions.length; i++) {
  if (currOpt != tempoptions[i][1]) {
   document.write('<div class="opt" style="position:relative; text-align:center; width:100px; float:left; padding:2px;"><b>' + tempoptions[i][1] + '</b><br>');
   currOpt = tempoptions[i][1];
  }
  document.write('<div option="' + tempoptions[i][4] + '" optionID="' + tempoptions[i][5] + '" optionProdLinkID="' + tempoptions[i][6] + '" style="background-color:white; border-width:1px; border-color:#ff9922; border-style:solid; margin-top:4px;"><img src="/essFile/' + tempoptions[i][0] + '" border="0" onclick="selectOption(this.parentNode);"/><br>' + tempoptions[i][2] + '</div>');
  if (i >= tempoptions.length - 1 || currOpt != tempoptions[i + 1][1]) {
   document.write('</div>');
  }
 }
 document.write('</div>');
}

function writeAmount() {
 if (document.forms["prod"].quantity.value.indexOf('amount') > -1)
  document.forms["prod"].quantity.value = '1';
}

function selectOption(n) {
 var s = document.forms["prod"].optionIDs.value;
 var n2 = n.parentNode.childNodes;
 var i;
 var colorSelected = "#ff9922";
 var colorNotSelected = "white";
 if (!s)
  s = "";
 if (n.style.backgroundColor!=colorNotSelected) {
  s = removeOption(s, n.getAttribute("optionProdLinkID"));
  n.style.backgroundColor=colorNotSelected;
 } else {
  s = s + "," + n.getAttribute("optionProdLinkID") + ",";
  n.style.backgroundColor=colorSelected;
 }
 for (var i = 0; i < n2.length; i++) {
  if (n2[i].nodeName == "DIV" && n2[i] != n && n2[i].getAttribute('option') == n.getAttribute("option")
    && n2[i].style.backgroundColor!=colorNotSelected) {
   s = removeOption(s, n2[i].getAttribute("optionProdLinkID"));
   n2[i].style.backgroundColor=colorNotSelected;
  }
 }
 while (s.indexOf(',,') > -1)
  s = s.replace(',,', ',');
 document.forms["prod"].optionIDs.value = s;
}

function removeOption(s, opt) {
  var i2 = s.indexOf("," + opt + ",");
  if (i2>-1)
   return s.substring(0, i2) + s.substring(i2 + opt.length + 1);
  return s;
}

function addToBasket(uri) {
 var p = document.forms["prod"];
 var s = p.prodID.value + "|" + p.quantity.value + "|" + p.optionIDs.value + "|" + uri;
 var s2 = getCookie('essShop');
 if (s2) {
  var s3 = s2.split(":");
  for (var i = 0; i < s3.length; i++) {
   var p2 = s3[i].split("|");
   if (p2[0] != p.prodID.value || p2[2] != p.optionIDs.value)
    s = s + ":" + s3[i];
  }
 }
 document.cookie = "essShop="+s+"; path=/";
 showBasket();
}

function removeFromBasket(id) {
 var s = id.split('|');
 var s2 = getCookie('essShop');
 if (s2) {
  var s3 = s2.split(":");
  var s4 = "";
  for (var i = 0; i < s3.length; i++) {
   var p2 = s3[i].split("|");
   if (p2[0] != s[0] || p2[2] != s[1])
    s4 = s4 + ":" + s3[i];
  }
  if (s4.length > 0)
   s4 = s4.substring(1);
  document.cookie = "essShop="+s4+"; path=/";
  return showBasket();
 }
}

function showBasket() {
 var s = getCookie("essShop").split(":");
 var checkoutLink = document.getElementById("menu.checkout");
 var checkout = checkoutLink ? checkoutLink.href : window.location.pathname;
 if (checkout.indexOf("?") > -1)
   checkout = checkout.substring(0, checkout.indexOf("?"));
 if (!s || s.length == 0 || s == "") {
  checkout = checkout + "?search=PRODUCT.ID=-1";
  document.getElementById("basket").innerHTML="Leer";
  if (checkoutLink)
   checkoutLink.href = checkout;
  return checkout;
 }
 var xmlHttp=GetXmlHttpObject();
 if (xmlHttp==null) {
  alert ("Your browser does not support AJAX!");
  return checkout;
 }
 var pIDs = "";
 var amounts = "";
 var options = "";
 var uris = "";
 for (var i = 0; i < s.length; i++) {
  var p = s[i].split("|");
  pIDs = pIDs + " or " + "PRODUCT.ID=" + p[0];
  amounts = amounts + "&amount" + p[0] + "=" + p[1];
  options = options + "&option" + p[0] + "=" + p[2];
  uris = uris + "&uri" + p[0] + "=" + p[3];
 }
 pIDs = "&search=" + pIDs.substring(4);
 var url="http://jq-consulting.de/ess/DEMO?menu=basket" + amounts + options + uris + pIDs;
 xmlHttp.open("GET",url,true);
 xmlHttp.onreadystatechange=function() {
  if (xmlHttp.readyState==4)
   document.getElementById("basket").innerHTML=xmlHttp.responseText;
 }
 xmlHttp.send(null);
 if (checkoutLink)
  checkoutLink.href = checkout + "?" + amounts.substring(1) + options + uris + pIDs;
 return checkout + "?" + amounts.substring(1) + options + uris + pIDs;
}

function GetXmlHttpObject() {
 var xmlHttp=null;
 try {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
 } catch (e) {
  // Internet Explorer
  try {
   xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
 return xmlHttp;
}

 function updateItem(id) {
  document.getElementById('price' + id).value=
    (document.getElementById('quantity' + id).value*
     document.getElementById('ORDERS_POSITION.PRICE' + id).value) + ' ' + selectedCurrency;
 }
 function updateTotal() {
  elems = document.getElementsByName('ORDERS_POSITION.QUANTITY');
  sum = 0;
  for (var i = 0; i < elems.length; i++)
   sum += elems[i].value * document.getElementById('ORDERS_POSITION.PRICE' +
       elems[i].getAttribute('id').substring(8)).value;
  document.getElementById('total').value = sum + ' ' + selectedCurrency;
 }
 function formCheck() {
  var items = document.getElementsByName('ORDERS_POSITION.QUANTITY');
  if (!items || items.length == 0) {
   alert('Bitte füllen Sie zuerst Ihren Warenkorb.');
   return false;
  }
  if (!fieldCheck(document.getElementsByName('ORDERS.INVOICE_FIRSTNAME')[0].value,"Bitte geben Sie Ihren Vornamen an."))
   return false;
  if (!fieldCheck(document.getElementsByName('ORDERS.INVOICE_NAME')[0].value,"Bitte geben Sie Ihren Namen an."))
   return false;
  if (!fieldCheck(document.getElementsByName('ORDERS.INVOICE_STREET')[0].value,"Bitte geben Sie Ihre Straße an."))
   return false;
  if (!fieldCheck(document.getElementsByName('ORDERS.INVOICE_POSTCODE')[0].value,"Bitte geben Sie Ihre Postleitzahl an."))
   return false;
  if (!fieldCheck(document.getElementsByName('ORDERS.INVOICE_TOWN')[0].value,"Bitte geben Sie Ihren Ort an."))
   return false;
  if (!fieldCheck(document.getElementsByName('ORDERS.INVOICE_COUNTRY')[0].value,"Bitte geben Sie Ihr Land an."))
   return false;
  if (!fieldCheck(document.getElementsByName('ORDERS.EMAIL')[0].value,"Bitte geben Sie Ihre Email an."))
   return false;
  if (!emailCheck(document.getElementsByName('ORDERS.EMAIL')[0].value))
   return false;
  return true;
 }
 function fieldCheck(value, msg) {
  if (value==null || value.length==0) {
   alert(msg);
   return false;
  }
  return true;
 }
 function emailCheck (emailStr) {
  var emailPat=/^(.+)@(.+)$/
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
  var validChars="\[^\\s" + specialChars + "\]"
  var quotedUser="(\"[^\"]*\")"
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
  var atom=validChars + '+'
  var word="(" + atom + "|" + quotedUser + ")"
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
  var matchArray=emailStr.match(emailPat)
  if (matchArray==null) {
   alert("Die Emailadresse stimmt nicht (Überprüfen Sie die Zeichen @ und .)")
   return false
  }
  var user=matchArray[1]
  var domain=matchArray[2]
  if (user.match(userPat)==null) {
   alert("Der Name Ihrer Emailadresse ist nicht valid.")
   return false
  }
  var IPArray=domain.match(ipDomainPat)
  if (IPArray!=null) {
   for (var i=1;i<=4;i++) {
    if (IPArray[i]>255) {
     alert("Die IP Adresse Ihrer Email stimmt nicht.")
     return false
    }
   }
   return true
  }
  var domainArray=domain.match(domainPat)
  if (domainArray==null) {
   alert("Der Domainname Ihrer Emailadresse stimmt nicht.")
   return false
  }
  return true;
 }

