// OnLoad handler class
OnLoadHandler = {

  eventContainer : [],
  eventOrder : 0,

  addEvent : function( f )
  {
    this.eventContainer[this.eventOrder++] = f;
  },
  loadEvents : function()
  {
    for( var x = 0; x < this.eventContainer.length; x++ )
    {
      this.eventContainer[x]();
    }
  }
}
window.onload = function() { OnLoadHandler.loadEvents(); }

var timer;
var initLeft = "890px";
var endLeft;

function rand (n){
  return ( Math.floor ( Math.random ( ) * n + 1 ) );
}

function initScroll(elm, nudge) {
	return;
  var intervalEvt = function () {
    scroll(elm, nudge);
  }
  elm.style.left = initLeft;
  timer = setInterval(intervalEvt, 30);
  elm.innerHTML = scrollText[rand(scrollText.length)-1];
  endLeft = (elm.offsetWidth + 50)*-1;
}

function scroll(elm, nudge) {
  elm.style.left = elm.offsetLeft - nudge + "px";
  if(parseInt(elm.style.left) < endLeft) {
    elm.style.left = initLeft;
    var random = rand(scrollText.length)-1;
    elm.innerHTML = scrollText[random];
    endLeft = (elm.offsetWidth + 50)*-1;
  }
}

function addAndSubmit(target, form, amount) {
  target.value = (target.value-0) + amount;
  form.submit();
  return false;
}

function doConfirm(question, url) {
  if(confirm(question)) {
    if(url) {
      window.location.href = url;
    } else {
      return true;
    }
  }
  return false;
}

function openURL(url) {
  window.location.href = url;
  return false;
}

function agreeTerms() {
  var chkBx = document.getElementById("agreeTerms");
  var submit = document.getElementById("orderSubmit");

  if(chkBx.checked == true) {
    submit.disabled = false;
  } else {
    submit.disabled = true;
  }
}


// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);

   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

//-->

var oFormElm;

function updateAmount(formElm) {
  oFormElm = formElm;
  var amount = formElm.amount;
  var submit = formElm.addItem;

  if(amount.value == 0) {
    amount.value = 1;
    amount.style.backgroundColor = "#ffffCC";
    submit.onmouseout = function () {
      resetAmount(oFormElm);
    }
  }
}

function resetAmount(formElm) {
  var amount = formElm.amount;
  var submit = formElm.addItem;

  if(amount.value == 1) {
    amount.value = 0;
    amount.style.backgroundColor = "#FFFFFF";
  }
  this.onmouseout = function () {}
}

var resetYears = false;

function initBrowser() {
  var modelSelect = document.getElementById("browserModel");
  modelSelect.disabled = true;
  modelSelect.options.length = 0;
  modelSelect.options[0] = new Option("Henter modeller...");

  var yearStartSelect = document.getElementById("browserStartyear");
  //var yearEndSelect = document.getElementById("browserEndyear");
  yearStartSelect.options.length = 0;
  //yearEndSelect.options.length = 0;
  yearStartSelect.disabled = true;
  //yearEndSelect.disabled = true;
  //yearStartSelect.options[0] = new Option("Henter årgange...");
  //yearEndSelect.options[0] = new Option("Henter årgange...");
  yearStartSelect.options[0] = new Option("Vent...");
  //yearEndSelect.options[0] = new Option("Vent...");

  getManufacturers();
}

function getManufacturers() {
  var manSelect = document.getElementById("browserMan");
  manSelect.disabled = true;
  manSelect.options.length = 0;
  manSelect.options[0] = new Option("Henter fabrikanter...");

  var url = "/shop/rpc.php";
  var pars = "getMan=1";
  var myAjax = new Ajax.Request(
      url,
      {method: 'post', parameters: pars, onComplete: setManufacturers}
  );
}

function setManufacturers(data) {
  var manSelect = document.getElementById("browserMan");
  manSelect.options.length = 0;

  var JSON = eval('(' + data.responseText + ')');
  var JSONLength = JSON.length;
  for(var i=0; i<JSONLength; i++) {
    manSelect.options[i] = new Option(decode64(JSON[i]), decode64(JSON[i]));
    if(decode64(JSON[i]) == document.getElementById("manValue").value) manSelect.options[i].selected = true;
  }

  manSelect.onchange = function () {
    getBrowserModel(this.value);
  }

  manSelect.disabled = false;
  getBrowserModel(manSelect.value);
}

function getBrowserModel(man) {

  var modelSelect = document.getElementById("browserModel");
  modelSelect.disabled = true;
  modelSelect.options.length = 0;
  modelSelect.options[0] = new Option("Henter modeller...");

  var url = "/shop/rpc.php";
  var pars = "getModels=1&man="+man;
  var myAjax = new Ajax.Request(
      url,
      {method: 'post', parameters: pars, onComplete: setBrowserModel}
  );
}

function setBrowserModel(data) {
  var modelSelect = document.getElementById("browserModel");
  modelSelect.options.length = 0;

  var JSON = eval('(' + data.responseText + ')');
  var JSONLength = JSON.length;
  for(var i=0; i<JSONLength; i++) {
    modelSelect.options[i] = new Option(decode64(JSON[i]), decode64(JSON[i]));
    if(decode64(JSON[i]) == document.getElementById("modelValue").value) modelSelect.options[i].selected = true;
  }

  modelSelect.onchange = function () {
    resetYears = true;
    getBrowserYears(document.getElementById("browserMan").value, this.value);
  }

  modelSelect.disabled = false;
  getBrowserYears(document.getElementById("browserMan").value,modelSelect.value)
}

function getBrowserYears(man, model) {
  var yearStartSelect = document.getElementById("browserStartyear");
  //var yearEndSelect = document.getElementById("browserEndyear");
  yearStartSelect.options.length = 0;
  //yearEndSelect.options.length = 0;
  yearStartSelect.disabled = true;
  //yearEndSelect.disabled = true;
  //yearStartSelect.options[0] = new Option("Henter årgange...");
  //yearEndSelect.options[0] = new Option("Henter årgange...");
  yearStartSelect.options[0] = new Option("Henter..");
  //yearEndSelect.options[0] = new Option("Henter..");

  var url = "/shop/rpc.php";
  var pars = "getYears=1&man="+man+"&model="+encodeURIComponent(model);
  var myAjax = new Ajax.Request(
      url,
      {method: 'post', parameters: pars, onComplete: setBrowserYears}
  );
}

function setBrowserYears(data) {
  var yearStartSelect = document.getElementById("browserStartyear");
  //var yearEndSelect = document.getElementById("browserEndyear");
  yearStartSelect.options.length = 0;
  //yearEndSelect.options.length = 0;

  var JSON = eval('(' + data.responseText + ')');
  var JSONLength = JSON.length;
  if(!JSON[0]) {
    document.getElementById("years").style.display = "none";
  } else {
    document.getElementById("years").style.display = "block";
    for(var i=0; i<JSONLength; i++) {
      yearStartSelect.options[i] = new Option(JSON[i], JSON[i]);
      if(JSON[i] == document.getElementById("startYearValue").value) yearStartSelect.options[i].selected = true;

      //yearEndSelect.options[i] = new Option(JSON[i], JSON[i]);
      //if(JSON[i] == document.getElementById("endYearValue").value) yearEndSelect.options[i].selected = true;
    }
  }

  yearStartSelect.disabled = false;
  //yearEndSelect.disabled = false;

  if(document.getElementById("endYearValue").value == "" || resetYears) {
    resetYears = false;
    yearEndSelect.options[yearEndSelect.options.length-1].selected = true;
  }

  yearStartSelect.onchange = function () {
    var yearEndSelect = document.getElementById("browserEndyear");
    if(this.value > yearEndSelect.value) this.value = yearEndSelect.value;
  }

  yearEndSelect.onchange = function () {
    var yearStartSelect = document.getElementById("browserStartyear");
    if(this.value < yearStartSelect.value) this.value = yearStartSelect.value;
  }

}

function submitBrowser() {
  var formElm = document.getElementById("itemBrowser");
  formElm.submit();
  return false;
}

var timeout;

function initZipCitySearch(inputElm) {
  clearTimeout(timeout)
  var timeOutEvt = function () {
    doZipCitySearch(inputElm);
  }
  if(inputElm.value.length >= 4) {
    timeout = setTimeout(timeOutEvt, 50);
  }
}

function doZipCitySearch(inputElm) {
  var target = document.getElementById("zipResults");
  var url = "/shop/rpc.php";
  var pars = "getZip="+inputElm.value;
  var myAjax = new Ajax.Request(
      url,
      {method: 'post', parameters: pars, onComplete: parseZipCitySearch}
  );
  target.innerHTML = ""
  inputElm.select();
}

function parseZipCitySearch(data) {
  var target = document.getElementById("zipResults");
  var JSON = eval('(' + data.responseText + ')');
  var JSONLength = JSON.length;
  if(JSONLength > 0) {
    target.innerHTML = ""
    var newTable = document.createElement("table");
    newTable.className = "suppliers";

    var newThead = document.createElement("thead");
    var newTr2 = document.createElement("tr");

    var newTh = document.createElement("th");
    var newText = document.createTextNode("Navn");
    newTh.appendChild(newText);
    newTr2.appendChild(newTh);

    var newTh = document.createElement("th");
    var newText = document.createTextNode("Adresse");
    newTh.appendChild(newText);
    newTr2.appendChild(newTh);

    var newTh = document.createElement("th");
    var newText = document.createTextNode("Post nr./by");
    newTh.appendChild(newText);
    newTr2.appendChild(newTh);

    var newTh = document.createElement("th");
    var newText = document.createTextNode("Tlf.");
    newTh.appendChild(newText);
    newTr2.appendChild(newTh);

    newThead.appendChild(newTr2);
    newTable.appendChild(newThead);

    var newTbody = document.createElement("tbody");
    for(i=0; i<JSONLength; i++) {
      var newTr = document.createElement("tr");

      var newTd = document.createElement("td");
      var newText = document.createTextNode(decode64(JSON[i]["name"]));
      newTd.appendChild(newText);
      newTr.appendChild(newTd);

      var newTd = document.createElement("td");
      var newText = document.createTextNode(decode64(JSON[i]["address"]));
      newTd.appendChild(newText);
      newTr.appendChild(newTd);

      var newTd = document.createElement("td");
      var newText = document.createTextNode(decode64(JSON[i]["zip_city"]));
      newTd.appendChild(newText);
      newTr.appendChild(newTd);

      var newTd = document.createElement("td");
      var newText = document.createTextNode(JSON[i]["phone"]);
      newTd.appendChild(newText);
      newTr.appendChild(newTd);
      newTbody.appendChild(newTr);
    }
    newTable.appendChild(newTbody);
    target.appendChild(newTable);
  } else {
    target.innerHTML = "Der blev ikke fundet nogle resultater..."
  }
}

function addItemOnclick(elm) {
  if(elm.form.amount.value == 1) {
    elm.onmouseout = function () { }
  }
  if(doConfirm('Varen er i restordre. Vi vender tilbage med leveringstid. Ønsker du at fortsætte?')) {
    return true;
  } else {
    resetAmount(elm.form);
    elm.form.reset();
    return false;
  }
}

function resizeAcc() {
  if(document.getElementById("itemDetails") && document.getElementById("itemAcc")) {
    var details = document.getElementById("itemDetails");
    var acc = document.getElementById("itemAcc");

    if(details.offsetHeight > acc.offsetHeight) {
      acc.style.height = details.offsetHeight + "px";
    } else if(acc.offsetHeight > details.offsetHeight) {
      details.style.height = acc.offsetHeight + "px";
    }
  }
}

function selectNewsImage() {
  if(newsImages.length > 0) {
    var target = document.getElementById('newsImage');
    var image = new Image();
    image.src = newsImages[rand(newsImages.length)-1];

    var w = image.width;
    var h = image.height;

    if(w > h) {
      if(w > 170) {
        w = 170;
        h = h/(image.width/w);
      }
    } else {
      if(h> 170) {
        h = 170;
        w = w/(image.width/h);
      }
    }

    image.style.width = w + "px";
    image.style.height = h + "px";

    target.appendChild(image);
  }
}

