/*
## View: Common
## Toggles a element specified with id
*/
function toggleDisplay(elementId) {
  var element = document.getElementById(elementId);
  element.style.display = (element.style.display != 'none' ? 'none' : '');
}

/*
## View: Shopping basket
## Removes all items from basket
*/
function removeAll(form) {
   removeItems(form, true);
   form.submit();
}

/*
## View: Shopping basket
## Removes checked items from basket
*/
function removeItems(form) {
   removeItems(form, false);
}

/*
## View: Shopping basket
## Common function to remove items from basket,
## used by removeItems() and removeAll()
*/
function removeItems(form, removeall) {
  var size = form.elements.length;
  for (i=0;i<size;i++) {
    var element = form.elements[i];
    if (element.name != '' && element.name.indexOf("deleteItem") > -1 && (element.checked || removeall)) {
      var id = element.name.substring(10);
      var amount = document.getElementById('quantity_' + id);
      amount.value = '0';
    }
  }
  return true;
}

/*
## View: Signin
*/

/*
## View: Register
## Validates the user form...
*/

/*
## View: Register
## Checks if a username is available
*/
function checkUserName(userName) {
  ajax('./?module=Users&amp;action=Ajax.isUsernameAvailable&amp;username=' + userName, userNameCheckHandler);
}

/*
## View: Register
## Gives proper feedback if username is not available
## TODO: make this language friendly..
*/
function userNameCheckHandler(responseText) {
  var element = document.getElementById('userNameResponse');
  if (responseText == 'false') {
//    alert("Brukernavnet er opptatt. Fors\u00f8k p\u00E5 nytt med et annet brukernavn.");
    alert("Brukernavnet er opptatt. Fors\u00f8k p\u00E5 nytt med et annet brukernavn. Dersom du er registrert som kunde tidligere, kan du bruke \u0022Glemt passord\u0022 funksjonen p\u00E5 foreg\u00E5ende side for \u00E5 f\u00E5 tilsendt nytt passord.");
    document.getElementById('email').style.background = '#ed1c24';
    document.getElementById('email').style.color = '#ffffff';
  } else if (responseText == 'true') {
    document.getElementById('email').style.background = '#ffffff';
    document.getElementById('email').style.color= '#000000';
  }
}

/*
## View: Signin
## Gives proper feedback if user exist
## TODO: make this language friendly..
*/

function checkUser(userName) {
  ajax('./?module=Users&amp;action=Ajax.isUsernameAvailable&amp;username=' + userName, userCheckHandler);
}

function userCheckHandler(responseText) {
  var element = document.getElementById('userResponse');
  if (responseText == 'false') {

  } else if (responseText == 'true') {
    alert("Dette brukernavnet eksisterer ikke. Sjekk at du har skrevet korrekt brukernavn.");
  }
}

/*
## View: Register
## ajax function, performs a url lookup and calls function specified in parameter
*/
function ajax(url, responseHandler) {
  var xmlHttp;
  try {
    xmlHttp = new XMLHttpRequest;
  }
  catch (e) {
    try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
      try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) { alert("Your browser does not support AJAX"); }
    }
  }
  xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4) {
      if (xmlHttp.status != 200 && xmlHttp.status != 0) alert("No response from AJAX("+xmlHttp.status+")");
      else responseHandler(xmlHttp.responseText);
    }
  };
  xmlHttp.open('GET', url);
  xmlHttp.send(null);
}

/*
## View: Register
## Live update of hidden username field
*/
function updateUserName() {
  var emailText = document.getElementById('email').value;
  var userNameEl = document.getElementById('userName');
  userNameEl.value = emailText;
}

/*
## View: Checkout
## Changes payment method and displays information
## about choosen payment method
*/
function changePaymentMethod(elementId) {
  hidePaymentInfoBoxes();
  var elementToDisplay = document.getElementById(elementId + 'Info');
  elementToDisplay.style.display = 'block';
  setDeliveryMethod(elementId);
  return true;
}

/*
## View: Checkout
## Hides payment info boxes that are visible
*/
function hidePaymentInfoBoxes() {
  var payCODInfoEl = document.getElementById('payCODInfo');
  payCODInfoEl.style.display = 'none';

  var payCreditInfoEl = document.getElementById('payCreditInfo');
  payCreditInfoEl.style.display = 'none';
}

/*
## View: Checkout
## Sets the correct delivery options depending
## on payment method
*/
function setDeliveryMethod(paymentEl) {}

/*
## View: Checkout
## Changes the type of delivery, this will also set the handling fee
*/
function changeDeliveryMethod(elementId, fee) {
  hideDeliveryInfoBoxes();
  var elementToDisplay = document.getElementById(elementId + 'Info');
  elementToDisplay.style.display = 'block';
  setHandlingFee(fee);
  return true;
}

/*
## View: Checkout
## Hides delivery info boxes
*/
function hideDeliveryInfoBoxes() {
  var deliverServiceInfoEl = document.getElementById('deliverServiceInfo');
  deliverServiceInfoEl.style.display = 'none';

  var deliverCourierInfoEl = document.getElementById('deliverCourierInfo');
  deliverCourierInfoEl.style.display = 'none';

  var deliverPickupInfoEl = document.getElementById('deliverPickupInfo');
  deliverPickupInfoEl.style.display = 'none';
}

/*
## View: Checkout
## Sets the order handling fee on handlingFee-elements
*/
function setHandlingFee(fee) {
  var handlingFeeEl = document.getElementById('handlingFee');
  handlingFeeEl.value = fee;
  var orderSummaryHandlingFeeEl = document.getElementById('orderSummaryHandlingFee');
  if (fee != 0) {
    fee = fee / 100;
  }
  orderSummaryHandlingFeeEl.innerHTML = fee;
  updateTotalPrice(fee);
}

/*
## View: Checkout
## Updates the total price after a change of handling fee
*/
function updateTotalPrice(fee) {
  var orderSummaryGoodsEl = document.getElementById('orderSummaryGoods');
  var orderSummaryTotalEl = document.getElementById('orderSummaryTotal');
  if (fee <= 0) {
    fee = 0;
  }
  orderSummaryTotalEl.innerHTML = (orderSummaryGoodsEl.innerHTML.replace('.','').replace(',', '.') * 1 + fee).toFixed(2);
}
