$(document).ready(function () {
	var query = new s2.tuifly.util.Query();
	var id    = query.param("product");
	if(id) {
	s2.tuifly.widget.dialog.bordshopLayer('/de/bordshop/'+id+'.htm')
	}	
	})



/*  */
// Use products and shipping costs from "bordshop_fromreddot.js"
// Bordmenu menu
var bordShopCookieName = "bordShopCart";
var elementIdCartAmount = "amount01";
var elementIdCartTotal = "sum01";
var elementIdCartShipping = "shipping01";
var elementIdCartTotalInclShipping = "sum02";
var elementIdDivCartNotEmpty = "divCartNotEmpty";
var elementIdDivCartEmpty = "divCartEmpty";
//
// Define structs
//
function CartItem(product, amount)
{
 this.product = product;
 this.amount = amount;
}
function toggleSubmenu(which) {
 if (which.childNodes[2].style.display == 'block') {
  which.childNodes[2].style.display = 'none';}
 else {which.childNodes[2].style.display = 'block';}
}
// Used to write product description into html page
function shopWriteProductDescription(pID)
{
 document.write(bordShopProducts[pID].name); 
}
// Used to write product price into html page
function shopWriteProductPrice(pID)
{
 var price = bordShopProducts[pID].price.toFixed(2).replace(".",",");
 document.write(price);
}
// Used to write product price into html page
function shopWriteTotalPrice()
{
 var price = 0.0;
 var cartItems = getCartItemsFromCookie();
 for(var i=0; i<cartItems.length; i++)
 {
  price += cartItems[i].product.price;
 }
 document.write(price.toFixed(2).replace(".",","));
}
function shopOnLoad()
{
 shopSetCartVisible();
 shopUpdateTotalPrice();
}

// Checks if shopping cart is not empty
function shopSetCartVisible()
{
 var elementDivCartNotEmpty = document.getElementById(elementIdDivCartNotEmpty);
 var elementDivCartEmpty = document.getElementById(elementIdDivCartEmpty);
 var distinctProductCount = getDistinctProductCount();
 
 if(elementDivCartNotEmpty)
 {
  if(distinctProductCount>0)
  {
   elementDivCartNotEmpty.style.display = "block";
  }
  else
  {
   elementDivCartNotEmpty.style.display = "none";
  }
 }
 if(elementDivCartEmpty)
 {
  if(distinctProductCount==0)
  {
   elementDivCartEmpty.style.display = "block";
  }
  else
  {
   elementDivCartEmpty.style.display = "none";
  }
 }
}

// Used to update amount, sum and sum+shipping in shopping carts (if-cases for each variable)
// This is a window.onload function!
// If amount is changed in cart overview step add product - onload just update total price
function shopUpdateTotalPrice()
{
 var elementAmount = document.getElementById(elementIdCartAmount);
 var elementTotal = document.getElementById(elementIdCartTotal);
 var elementShipping = document.getElementById(elementIdCartShipping);
 var elementTotalInclShipping = document.getElementById(elementIdCartTotalInclShipping);
 
 var amount = 0;
 var total = 0.0;
 var shipping = bordShopShipping;
 var cartItems = getCartItemsFromCookie();
 if(cartItems)
 {
  for(var i=0; i<cartItems.length; i++)
  {
   total += (cartItems[i].product.price * cartItems[i].amount) - 0;
   amount += cartItems[i].amount - 0;
  }
 }

 if (total >= bordShopNoShippingTotal)
 {
  shipping = 0.0;
 }
 if(elementAmount)
 {
  elementAmount.firstChild.data = amount;
 }
 if(elementTotal)
 {
  elementTotal.firstChild.data = total.toFixed(2).replace(".",",");
 }
 if(elementShipping)
 {
  elementShipping.firstChild.data = shipping.toFixed(2).replace(".",",");
 }
 if(elementTotalInclShipping)
 {
  var totalInclShipping = total + shipping;
  elementTotalInclShipping.firstChild.data = totalInclShipping.toFixed(2).replace(".",",");
 }
}
// Used to add the selected product to cookie
// Also refreshing shopping cart
function shopAddProduct(pID)
{
 s2.tuifly.widget.dialog.ajaxLayerClose()
 if(isProductInCart(pID))
 {
  alert("Dieses Produkt ist bereits im Warenkorb."); // TODO
  return;
 }
 
 var cartItems = getCartItemsFromCookie();
 if(!cartItems)
 {
  cartItems = new Array();
 }
 
 var product = bordShopProducts[pID]; 
 if(!product)
 {
  alert("Invalid product id: " + product);
 }
 
 var newCartItem = new CartItem(product, 1); 
// debugCartItem(newCartItem);
 cartItems.push(newCartItem);
 
 storeCartItemsToCookie(cartItems);
 alert(cartItems.length + " Produkt" + (cartItems.length>1 ? "e" : "") + " im Warenkorb"); // TODO
}
// Used to remove a product from the cookie (cart overview step)
// Also reloading the page
function shopRemoveProduct(pID)
{
 var cartItems = getCartItemsFromCookie();
 if(!cartItems || cartItems.length==0)
 {
  return;
 }
 
 for(var i=0; i<cartItems.length; i++)
 {
  if(cartItems[i].product.id == pID)
  {
   cartItems.splice(i, 1);
  }
 }
 
 storeCartItemsToCookie(cartItems);
 document.location.reload();
}
// Used to write the shopping cart (write a table-row for every product)
// This will be done with DOM
function shopWriteCart()
{
 var cartItems = getCartItemsFromCookie();
 if(!cartItems || cartItems.length==0)
 {
  return;
 }
 
 var cartHTML = "";
 
 for(var i=0; i<cartItems.length; i++)
 {
  cartHTML += "<tr>";
  cartHTML += "<td class=\"one\">" + cartItems[i].product.name + "</td>";
  cartHTML += "<td class=\"two\"><input id=\"" + getElementIdProductAmount(cartItems[i].product.id) + "\" type=\"text\" value=\"" + cartItems[i].amount + "\" onchange=\"shopChangeAmount('" + cartItems[i].product.id + "');\" /></td>";
  cartHTML += "<td class=\"three\">" + cartItems[i].product.price.toFixed(2).replace("\.",",") + " &euro;</td>";
  cartHTML += "<td class=\"four\"><a href=\"#\" onclick=\"shopRemoveProduct('" + cartItems[i].product.id + "');\">l&ouml;schen</a></td>";
  cartHTML += "</tr>";
 }
 document.write(cartHTML);
}
// Used to write the shopping cart summary (write a table-row for every product)
// This will be done with DOM
function shopWriteSummary()
{
 var cartItems = getCartItemsFromCookie();
 if(!cartItems || cartItems.length==0)
 {
  return;
 }
 
 var cartHTML = "";
 
 for(var i=0; i<cartItems.length; i++)
 {
  cartHTML += "<tr>\n";
  cartHTML += "<td class=\"one\">" + cartItems[i].product.name + "</td>\n";
  cartHTML += "<td class=\"two\"><span>" + cartItems[i].amount + "</span><input id=\"" + getElementIdProductId(cartItems[i].product.id) + "\" type=\"hidden\" name=\"" + getElementIdProductId(cartItems[i].product.id) + "\" value=\"" + cartItems[i].product.id + "\" /><input id=\"" + getElementIdProductName(cartItems[i].product.id) + "\" type=\"hidden\" name=\"" + getElementIdProductName(cartItems[i].product.id) + "\" value=\"" + cartItems[i].product.name.replace("\"", "").replace("\'", "") + "\" /><input id=\"" + getElementIdProductAmount(cartItems[i].product.id) + "\" type=\"hidden\" name=\"" + getElementIdProductAmount(cartItems[i].product.id) + "\" value=\"" + cartItems[i].amount + "\" /></td>\n";
  cartHTML += "<td class=\"three\">" + cartItems[i].product.price.toFixed(2).replace("\.",",") + " &euro;</td>";
  cartHTML += "<td class=\"four\">&nbsp;</td>\n";
  cartHTML += "</tr>\n";
 }
 document.write(cartHTML);
 
}
// Used to validate the shopping cart (cart overview step)
// e.g. is amount not set to "-5" or something
function validateCart() {
}
// Used to validate the address (invoice step)
// e.g. is zip 5 numbers
function validateAddress() {
 var message = "Bitte überprüfen Sie Ihre Rechnungsanschrift:<br/>";
 var addressOk = true;
 var currentElement = document.getElementById("firstname");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Vorname<br/>";
  addressOk = false;
 }
 currentElement = document.getElementById("lastname");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Familienname<br/>";
  addressOk = false;
 }
 currentElement = document.getElementById("street");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Straße/Hausnummer<br/>";
  addressOk = false;
 }
 currentElement = document.getElementById("plz");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Postleitzahl<br/>";
  addressOk = false;
 }
 currentElement = document.getElementById("city");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Ort<br/>";
  addressOk = false;
 }
 currentElement = document.getElementById("email");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - E-Mail<br/>";
  addressOk = false;
 }
 currentElement = document.getElementById("fon");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Telefon<br/>";
  addressOk = false;
 }
 if (!addressOk)
 {
  alert(message);
 }
 return addressOk;
}
// Used to validate the payment data (invoice step)
// e.g. is zip 5 numbers
function validatePayment() {
 var message = "Bitte überprüfen Sie Ihre Zahlungsinformationen:<br/>";
 var paymentOk = true;
 var currentElement = document.getElementById("paymenttype");
 if ((!currentElement) || (currentElement.value == ""))
 {
  message = message + " - Zahlungsart<br/>";
  alert(message);
  return false;
 }
 var paymentType = currentElement.value;
 if (paymentType == "ELV")
 {
  currentElement = document.getElementById("accountholder");
  if ((!currentElement) || (currentElement.value == ""))
  {
   message = message + " - Kontoinhaber<br/>";
   paymentOk = false;
  }
  currentElement = document.getElementById("accountnumber");
  if ((!currentElement) || (currentElement.value == ""))
  {
   message = message + " - Kontonummer<br/>";
   paymentOk = false;
  }
  currentElement = document.getElementById("blz");
  if ((!currentElement) || (currentElement.value == ""))
  {
   message = message + " - Bankleitzahl<br/>";
   paymentOk = false;
  }
 }
 else
 {
  currentElement = document.getElementById("accountholder");
  if ((!currentElement) || (currentElement.value == ""))
  {
   message = message + " - Karteninhaber<br/>";
   paymentOk = false;
  }
  currentElement = document.getElementById("accountnumber");
  if ((!currentElement) || (currentElement.value == ""))
  {
   message = message + " - Kartennummer<br/>";
   paymentOk = false;
  }
  currentElement = document.getElementById("valid_month");
  if ((!currentElement) || (currentElement.value == ""))
  {
   message = message + " - Gültig bis<br/>";
   paymentOk = false;
  } else {
   // javascript has jan. = 0
   var month = currentElement.value - 1;
   currentElement = document.getElementById("valid_year");
   if ((!currentElement) || (currentElement.value == ""))
   {
    message = message + " - Gültig bis<br/>";
    paymentOk = false;
   }
   else
   {
    var year = currentElement.value - 0;
    var now = new Date();
    if (year <= now.getFullYear() && ((year != now.getFullYear()) || (month < now.getMonth())))
    {
     message = message + " - Gültig bis<br/>";
     paymentOk = false;
    }
   }
  }
 }
 if (!paymentOk)
 {
  alert(message);
 }
 return paymentOk;
}
// Used to validate the checkbox for AGB
function validateAGB()
{ 
 if ( document.getElementById("agb").checked == false ) 
 { 
  alert('Bitte akzeptieren Sie die AGBs.'); return false; 
 }
 else return true; 
}  
// Used to submit the form (invoice step)
// Call "validateAddress()" and send mail to customer and TUIfly and write order in database
function submitBordshop() {
 if (validateAddress() && validatePayment() && validateAGB())
 {
  this.document.forms["bordshop"].submit();
 }
}

      $(document).ready(function() {
          shopOnLoad()
      });


//window.onload = 
// Helper functions
//
// Returns "true" if cart contains product, "false" otherwise
function isProductInCart(pID)
{
 var cartItems = getCartItemsFromCookie();
 if(cartItems)
 {
  for(var i=0; i<cartItems.length; i++)
  {
   if(cartItems[i].product.id == pID)
   {
    return true;
   }
  }
 }
 return false;
}
// Returns an array of CartItem objects, e.g.
//
function getCartItemsFromCookie()
{
 var cartItems;
 var allCookies = document.cookie;
 var pos = allCookies.indexOf(bordShopCookieName + "=");
 if(pos > -1)
 {
  var start = pos + bordShopCookieName.length + 1;
  var end = allCookies.indexOf(";", start);
  if(end < 0)
  {
   end = allCookies.length;
  }
  var value = unescape(allCookies.substring(start, end));
  if(value.length > 0)
  {
   var itemPairs = value.split(",");
   cartItems = new Array();
   for(var i=0; i<itemPairs.length; i++)
   {
    var currentItem = itemPairs[i].split("/");
    if(currentItem.length != 2)
    {
     continue;
    }
    
    var currentProductId = currentItem[0];
    var currentAmount = currentItem[1];
    var currentProduct = bordShopProducts[currentProductId];
    if(!currentProduct)
    {
     alert("Invalid product id: " + currentProductId);
    }
    cartItems.push(new CartItem(currentProduct, currentAmount));
   }
  }
 }
 
 return cartItems;
}
// Returns the number of different products in the shopping cart
function getDistinctProductCount()
{
 var cartItems = getCartItemsFromCookie();
 if(cartItems)
 {
  return cartItems.length;
 }
 
 return 0;
}
// Stores an array of CartItem objects in the cart cookie
//
function storeCartItemsToCookie(cartItems)
{
 var cookieValue = "";
 if(cartItems)
 {
  for(var i=0; i<cartItems.length; i++)
  {
   cookieValue += cartItems[i].product.id + "/" + cartItems[i].amount;
   if(i < cartItems.length-1)
   {
    cookieValue += ",";
   }
  }
  cookieValue = bordShopCookieName + "=" + escape(cookieValue) + "; path=/";
  document.cookie = cookieValue;
 }
 shopUpdateTotalPrice();
}
//
function shopChangeAmount(pID)
{
 var elementIdProductAmount = document.getElementById(getElementIdProductAmount(pID));
 if(!elementIdProductAmount)
 {
  alert("No such element: " + getElementIdProductAmount(pID));
  return;
 }
 
 // Check if amount is a valid number
 var newAmount = elementIdProductAmount.value;
 var error;
 if(isNaN(newAmount))
 {
  alert("Bitte geben Sie eine gültige Zahl ein");
  error = 1;
 }
 
 // Round down and check valid range
 newAmount = Math.floor(newAmount);
 if(newAmount<1)
 {
  alert("Bitte geben Sie eine Menge größer 1 ein.");
  error = 1;
 }
 if(newAmount>99)
 {
  alert("Die maximale Bestellmenge für diesen Artikel beträgt 99 Stück.");
  error = 1;
 }
 
 // If amount is invalid, reset to stored value in shopping cart cookie
 if(error)
 {
  var cartItem = findCartItemByProducId(pID);
  if(cartItem)
  {
   elementIdProductAmount.value = cartItem.amount;
  }
  return;
 }
 else
 {
  elementIdProductAmount.value = newAmount;
 }
 
 var cartItems = getCartItemsFromCookie();
 if(cartItems)
 {
  for(var i=0; i<cartItems.length; i++)
  {
   if(cartItems[i].product.id == pID)
   {
    cartItems[i].amount = elementIdProductAmount.value;
    storeCartItemsToCookie(cartItems);
    break;
   }
  }
 }
}
// Returns the cart item for the given product id from the shopping cart
function findCartItemByProducId(pID)
{
 var cartItems = getCartItemsFromCookie();
 if(cartItems)
 {
  for(var i=0; i<cartItems.length; i++)
  {
   if(cartItems[i].product.id == pID)
   {
    return cartItems[i];
   }
  }
 }
 
 return null;
}
function getElementIdProductAmount(pID)
{
 return "pAmount:" + pID;
}
function getElementIdProductId(pID)
{
 return "pID:" + pID;
}
function getElementIdProductName(pID)
{
 return "pName:" + pID;
}
// Debug alert for CartItems
function debugCartItem(cartItem)
{
 alert(cartItem.product.id + "/" + cartItem.product.price + "/"  + cartItem.product.name + "/"  + cartItem.amount);
}

function switchPaymentFields(obj) {
 if(obj) obj.parentNode.parentNode.className = "address formData multiple " + obj.value; 
}

function setHTTPS() {
    var vormals = document.getElementById("orderLink").href;
    document.getElementById("orderLink").href = vormals.replace(/http:/g, "https:");    
}

// Used to clear the cart (remove the cookie) after booking
function shopClearCart()
{
  document.cookie = bordShopCookieName + "=; path=/";
}
// 
//