// browser sniffer
function Browser(){
  this.uA = navigator.userAgent.toLowerCase();
  this.aN = navigator.appName.toLowerCase();
  this.iE = this.aN.indexOf('microsoft') != -1 ? 1 : 0;
  this.mac =  this.uA.indexOf('mac') != -1 ? 1 : 0;
  this.win = this.uA.indexOf('windows') != -1 ? 1 : 0;
  this.safari =  this.uA.indexOf('webkit') != -1 ? 1 : 0;
  this.opera =  this.uA.indexOf('opera') != -1 ? 1 : 0;    
  this.mozilla = this.aN.indexOf('netscape') != -1 && !this.safari ? 1 : 0;
  this.winMozilla = this.mozilla && this.win ? 1 : 0;
  this.winIE = this.iE && this.win && !this.opera ? 1 : 0;
  this.winIE6Down = this.winIE && parseInt(this.uA.split('msie ')[1].substring(0,1)) <= 6 ? 1: 0;
  this.macIE = this.iE && this.mac ? 1 : 0;
};

var browser = new Browser();

// getElementById wrapper
if (typeof document.getElementById != 'undefined'){
  var getEl = function(id){
    var el = document.getElementById(id);
    if (!el){
      error('elById: element width id "' + id + '" not found in DOM');
      return false;
    }
    return(el);
  };
}
else {
  error('document.getElementById not supported');
}
  

// array for DOMContentLoaded events
var DOMCLEvents = [];  
var executeDOMCLEvents = function(){
  if(DOMCLEvents.preventExecution){
    return;
  }
  DOMCLEvents.preventExecution = true;
  for (var i = 0; i < DOMCLEvents.length; i++){
    DOMCLEvents[i]();
  }
};

//event listening
if (window.addEventListener){
  var addEvent = function(obj, eventType, functionName){
    if (eventType == 'DOMContentLoaded'){
      DOMCLEvents[DOMCLEvents.length] = functionName;
    }
    obj.addEventListener(eventType, functionName, false);
    return true;
  };
  if (/WebKit/i.test(navigator.userAgent)){ //for safari
    var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {            
    clearInterval(_timer); executeDOMCLEvents();}}, 10);
  };
  addEvent(window,'load',executeDOMCLEvents); //for opera < 9, ..
  addEvent(window,'DOMContentLoaded',function(){DOMCLEvents.preventExecution = true;}); //not for firefox
}
else if(window.attachEvent && Function.apply){ //for ie 5.5+
  var addEvent = function(obj, eventType, functionName){
    if (eventType == 'DOMContentLoaded'){
      DOMCLEvents[DOMCLEvents.length] = functionName;
      return true;
    }
    var r = obj.attachEvent("on"+eventType, function() { functionName.apply(obj); });
    return r;
  };
  document.write('<script type="text/javascript" id="__ie_onload" defer="defer" src="javascript:void(0);"><\/script>');
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      executeDOMCLEvents();
    }
  }
}
else {
  error("event handling not supported");
}


//power animator dev 1.2, mDI, march 2006, adds partial clipping
var animTimer = [];
animate = function (oArg){
  clearTimeout(animTimer[oArg.timerName]);
  var cD,cS,pS,pD
  cD = !oArg.currDist ? 0 : oArg.currDist;
  cS = !oArg.currSpeed ? 0 : oArg.currSpeed;
  cS = !oArg.currSpeed && !oArg.easeIn ? oArg.speed : cS;
  pS = !oArg.peakSpeed ? oArg.speed : oArg.peakSpeed;
  if (oArg.peakDist){
    pD = oArg.peakDist;
  }
  else { 
    pD = oArg.easeIn && oArg.easeOut ? parseInt((oArg.dist)/(oArg.easeIn+oArg.easeOut)*oArg.easeIn) : 0;
  }
  if (cD >= pD && oArg.easeOut){
    cS = parseInt(((oArg.dist-cD)+((oArg.speed-cS)/2))/(oArg.easeOut+0.5)+1);
    if (cS > pS){
      cS = pS;
    }
  }
  else if (oArg.easeIn){
    cS = parseInt((cD+((oArg.speed-cS)/2))/(oArg.easeIn-0.5)+1);
    if (cS > oArg.speed){
      cS = oArg.speed;
    }
  }
  if (cD+cS > oArg.dist){
    cS = oArg.dist-cD;
  }
  cD += cS;
  for (var i in oArg.elements){
    var o = oArg.elements[i];
    var currPosition = o.negMove ? o.startPos-cD : o.startPos+cD;
    if (o.style == 'clip'){
      if (o.clipType == 'vertFromCenter'){
        var d = 'rect(' + (o.maxHeight - currPosition) + 'px, ' + o.clipRight + 'px, ' + currPosition + 'px, 0)' ;
        getEl(o.id).style[o.style] = d;
      }
    }
    else {
      getEl(o.id).style[o.style] = currPosition + 'px';
    }
  }
  if (cD < oArg.dist){
    oArg.currDist = cD;
    oArg.currSpeed = cS;
    oArg.peakDist = pD;
    oArg.peakSpeed = pS;
    animTimer[oArg.timerName] = setTimeout(function(){animate(oArg)},25);
    return;
  }
  if (oArg.callBack != ''){
    if (!oArg.obj){
      oArg.obj = 'window';
    }    
    animTimer[oArg.timerName] = setTimeout(oArg.obj + '.' + oArg.callBack,0);
  }  
}


// event on part of element
function eventOnPartOfElement(e,element,to){
  var t;
  if (window.event){
    t = to ? window.event.toElement : window.event.srcElement;
  }
  else if (e){
    t = to ? e.relatedTarget : e.target;
  } 
  else {
    return false;
  }
  if (t == null){
    return false;
  }
  while (t.tagName != 'BODY' && t.tagName != 'HTML'){
    if (t == element){
      return true;
    }
    t = t.parentNode;
  }
  return false;
};


// setInlineStyle 
function setInlineStyle(el,cssText){
  if (!cssText){
    return;
  }
  var elStyle = el.getAttribute('style');
  if (elStyle){
    elStyle.setAttribute('cssText',cssText);
  }
  else {
    el.setAttribute('style',cssText);
  }
};


// setClassName
function addClassName(el,className){
  if (!className){
    return;
  }
  if (el.getAttribute('className') != null){
    el.setAttribute('className',className);
  }
  else {
    el.setAttribute('class',className);
  }
};


// getClassName
function getClassName(el){
  var cN;
  if (el.getAttribute('className') != null){
    cN = el.getAttribute('className');
  }
  else {
    cN = el.getAttribute('class');
  }
  return cN ? cN : '';
};


// get src Element
function getTarget(e,to){
  if (window.event){
    var t = to ? window.event.toElement : window.event.srcElement;
  }
  else if (e){
    var t = to ? e.relatedTarget : e.target;
  }
  if (t == null){
    window.body;
  }  
  return t;
};


// getElementsByCSSSelector
function getElementsByCSSSelector(selector,pN){
  var els = [];
  var iterator = 0;
  var pNs = pN;
  if (!pNs){
    pNs = Array(document);
  }
  var selectorArr = selector.split(' ');
  var cN = false;
  var currSelector = selectorArr[0];
  if (currSelector.indexOf('#') != -1){
    var elFromId  = document.getElementById(currSelector.split('#')[1]);
    if (!elFromId){
      return els;
    }
    els[0] = elFromId;
  }
  else {
    if (currSelector.indexOf('.') != -1){
      var currSelectorArr = currSelector.split('.');
      currSelector = currSelectorArr[0];
      cN = currSelectorArr[1];
    }
    for (var i = 0; i < pNs.length; i++){
      var elsFromTN = pNs[i].getElementsByTagName(currSelector);
      for (var j = 0; j < elsFromTN.length; j++){
        //alert(elsFromTN[j].className);
        /*if (cN && elsFromTN[j].className.indexOf(cN)== -1){
          continue;
        }*/
        var matchedClassNames = true;
        if (cN){
          for (var k = 1; k < currSelectorArr.length; k++){
            var elCN = elsFromTN[j].className;
            if (elCN.indexOf(currSelectorArr[k])== -1){
              matchedClassNames = false;
              //alert(elCN);
              break;
            }
          }
        }
        if (!matchedClassNames){
          continue;
        }
        els[iterator] = elsFromTN[j];
        iterator++;
      }
    }
    if (iterator == 0){
      return [];
    }        
  }

  if (selectorArr.length == 1){
    return els;
  }
  var s = '';
  var space = '';
  for (var i = 1; i < selectorArr.length; i++){
    s += space + selectorArr[i];
    space = ' ';
  }
  return getElementsByCSSSelector(s,els);
};


// add stylesheet
var styleSheetFromScript = false;
function addStyle(selector,properties){
  if (document.styleSheets) {
    if (!styleSheetFromScript){
      styleSheetFromScript = document.createElement('style');
      styleSheetFromScript.setAttribute('type','text/css');
      document.getElementsByTagName('HEAD')[0].appendChild(styleSheetFromScript);
    }
    var lastSheet = document.styleSheets[document.styleSheets.length - 1];
    if(lastSheet && typeof lastSheet.addRule == 'object'){
      lastSheet.addRule(selector, properties);
    }
    else {
      styleSheetFromScript.appendChild(document.createTextNode(selector + ' { ' + properties + ' }'));
    }
  }
};


//handy trace
function trace(str){
  var el = getEl('trace');
  if (!el){
    return;
  }
  el.value = str;
};

/*************************
flash adapted for this project, see wiki for last version, mdi 1.1
*************************/


// check if the proper version is installed
function hasMinFlashVersion(versionNumber){
  if (browser.winIE){
    try{
      var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + versionNumber);
      return 1;
    }
    catch(e){
      return 0;
    }
  }
  else {
    if(navigator.plugins.length){
      for (var i=0; i < navigator.plugins.length; i++){
        var pluginIdent = navigator.plugins[i].description.split(" ");
        if(pluginIdent[0] == "Shockwave" && pluginIdent[1] == "Flash"){
          var versionArray = pluginIdent[2].split(".");
          return versionArray[0] >= versionNumber;
        }
      }   
    }
  }
  return 0;
};

// Class FlashObject
flashObjects = [];
function FlashObject(oArg){

  this.id = oArg.id;
  this.parentId = oArg.parentId;      
  this.uri = oArg.uri;
  this.width = oArg.width ? 'width:' + oArg.width + 'px;' : '';
  this.height = oArg.height ? 'height:' + oArg.height + 'px;' : '';
  this.hasRequiredVersion = hasMinFlashVersion(oArg.requiredVersion);
  this.className = oArg.className ? oArg.className : '';
  this.params = oArg.params;
  this.noFocus = oArg.noFocus;
	this.inlineStyle = oArg.inlineStyle ? oArg.inlineStyle : '';
  if (this.hasRequiredVersion){
    addStyle('#' + oArg.parentId + ' .alternate-content','display:none !important;');
  }
  
  // create the object
  this.create = function(){
    if ((!this.hasRequiredVersion) || (!getEl(this.parentId))){
      return;
    }
    var obj = document.createElement('object');
    obj.setAttribute('type','application/x-shockwave-flash');
    if (this.id){
      obj.setAttribute('id',this.id);
    }
    obj.setAttribute('data',this.uri);
    obj.setAttribute('src',this.uri);
    setInlineStyle(obj,'display:block;' + this.width + this.height + this.inlineStyle);
    if (this.noFocus){
      obj.setAttribute('tabIndex',-1);
    }
    obj.className = this.className;
    for (var i in this.params){
      var param = document.createElement('param');
      param.setAttribute('name',i);
      param.setAttribute('value',this.params[i]);
      obj.appendChild(param);
      obj.setAttribute(i,this.params[i]);
    };
    var title = document.title;
    getEl(this.parentId).appendChild(obj);
    document.title = title;
    
    try {
      obj.loadMovie(0,this.uri);
    }
    catch (e){
    }
  }
  
};

// make a flash object
function createFlashObject(oArg){
  flashObjects[flashObjects.length] = new FlashObject(oArg);
};

// create all the flash objects (onload)
function createFlashObjects(){
  for (var i in flashObjects){
    flashObjects[i].create();
  }
};


function getScrollingPosition()
{
var position = [0, 0];
if (typeof window.pageYOffset != 'undefined')
{
position = [
window.pageXOffset,
window.pageYOffset
];
}
else if (typeof document.documentElement.scrollTop
!= 'undefined' && document.documentElement.scrollTop > 0)
{
position = [
document.documentElement.scrollLeft,
document.documentElement.scrollTop
];
}
else if (typeof document.body.scrollTop != 'undefined')
{
position = [
document.body.scrollLeft,
document.body.scrollTop
];
}
return position;
}


function setScrollTop(position)
{
if (typeof window.pageYOffset != 'undefined'){
  window.pageYOffset = position;
}
else if (typeof document.documentElement.scrollTop
!= 'undefined' && document.documentElement.scrollTop > 0){
document.documentElement.scrollTop = position;
}
else if (typeof document.body.scrollTop != 'undefined'){
document.body.scrollTop = position;
}
}


CarrouselList = function(oArg){
 
  //variables
  this.buttonNext = null;
  this.buttonPrevious = null;
  this.nodeList = null;
  this.current = 0;
 
  //internal shizzle
  if (!CarrouselList.prototype.instances){
    CarrouselList.prototype.instances = [];
  }
  this.instance = CarrouselList.prototype.instances.length;
  CarrouselList.prototype.instances[this.instance] = this;
  
  //constructor
  this.__construct = function(oArg){
    if (!oArg.rootNode){
      return;
    }
    
    this.nodeList = oArg.rootNode.getElementsByTagName('li');
    
    //setup next
    if (oArg.buttonNext){
      this.buttonNext = oArg.buttonNext;
      this.buttonNext.setAttribute('href','javascript:void(0)');
      this.buttonNext.setAttribute('CarrouselInstance',this.instance);
      addEvent(this.buttonNext,'click',
        function(){
          CarrouselList.prototype.instances[this.getAttribute('CarrouselInstance')].next();
        }
      );
    }
    if (oArg.buttonPrevious){
      this.buttonPrevious = oArg.buttonPrevious;
    }
    
    //setup previous
    if (oArg.buttonPrevious){
      this.buttonPrevious = oArg.buttonPrevious;
      this.buttonPrevious.setAttribute('href','javascript:void(0)');
      this.buttonPrevious.setAttribute('CarrouselInstance',this.instance);
      addEvent(this.buttonPrevious,'click',
        function(){
          CarrouselList.prototype.instances[this.getAttribute('CarrouselInstance')].previous();
        }
      );
    }
  }
  
  //next
  this.next = function(){
    this.nodeList[this.current].className = '';
    this.current++;
    if (this.current == this.nodeList.length){
      this.current = 0;
    }
    this.nodeList[this.current].className = 'active';
  }
  
  //previous
  this.previous = function(){
    this.nodeList[this.current].className = '';
    this.current--;
    if (this.current == -1){
      this.current = this.nodeList.length - 1;
    }
    this.nodeList[this.current].className = 'active';
  },
  
  //set current
  this.setCurrent = function(number){
    if (this.nodeList[this.current]){
      this.nodeList[this.current].className = '';
    }
    this.current = number;
    this.nodeList[this.current].className = 'active';
  }
  
  // construct
  this.__construct(oArg);
    
};


Overlay = {
  
  //Class constants
  ID : 'overlay',
  
  //internal variables
  element : null,
  
  
  //functions
 
  //create overlay
  create : function(){
  
    var elOverlay = document.createElement('div');
    elOverlay.setAttribute('id',Overlay.ID);
    
    var elMask = document.createElement('div');
    elMask.className = 'mask';
    elOverlay.appendChild(elMask);
    
    document.body.appendChild(elOverlay);
    Overlay.element = elOverlay;
    
    return (elOverlay);
  },
  
  //get overlay
  get : function (){
    if (!Overlay.element){
      return Overlay.create();
    }
    return Overlay.element;
  },
  
  //show overlay
  show : function(){
    
    var overlay = Overlay.get();
    
    //HACK
    if (!browser.winMozilla){
      var scrollPos = getScrollingPosition();
      overlay.style.left = scrollPos[0] + 'px';
      overlay.style.top = scrollPos[1] + 'px';
    }
    else {
      //setScrollTop(0);
    }
    
    //HACK 2
    if (browser.winIE6Down){
      setTimeout("getEl('overlay').parentNode.appendChild(getEl('overlay'));",0);
    }
    
    overlay.style.display = 'block';
    document.getElementsByTagName('html')[0].style.overflow = 'hidden';
  },
  
  //hide overlay
  hide : function(){
    var overlay = Overlay.get();
    document.getElementsByTagName('html')[0].style.overflow = '';
    overlay.style.display = 'none';
  }
  
}


ProductCarrousel = {

  //Class constants
  LINKCLASSNAME : 'enlarge-visual',
  IMAGEPATH : 'visuals/products/',
  OVERLAY : Overlay,
  
  //internal variables
  name:0,
  buttonPrevious:null,
  buttonNext:null,
  buttonClose:null,
  buttonBar:null,
  imageContainer:null,
  listRootNode:null,
  nodeList:null,
  carrouselList:null,
  
  //functions
  
  //setup
  setup : function(){
    var list = document.getElementsByTagName('a');
    for (var i = 0; i < list.length; i++){
      if (list[i].className.indexOf(ProductCarrousel.LINKCLASSNAME) == -1){
        continue;
      }
      //alert(list[i].innerHTML);
      list[i].setAttribute('carrouselInfo',list[i].getAttribute('href'));
      list[i].setAttribute('href','javascript:void(0)');
      addEvent(list[i],'click',function(){ProductCarrousel.build(this);});
    }
  },
  
  //build
  build : function(el){
    var carrouselInfo = el.getAttribute('carrouselInfo');
    var rawArray = carrouselInfo.split('?afbeeldingen=');
    if (!rawArray[1]){
      return;
    }
    rawArray = rawArray[1].split('&currentImage=');
    if (!rawArray[1]){
      return;
    }
    var current = rawArray[1];
    var images = rawArray[0].split('+');
    
    if (!ProductCarrousel.imageContainer){
    
      var imageContainer = ProductCarrousel.createImageContainer();
      
      ProductCarrousel.buttonClose.setAttribute('href','javascript:void(0)');
      addEvent(ProductCarrousel.buttonClose,'click',
        function(){
           ProductCarrousel.hide();
        }
      );
      
      ProductCarrousel.carrouselList = new CarrouselList({
        rootNode:ProductCarrousel.listRootNode,
        buttonNext:ProductCarrousel.buttonNext,
        buttonPrevious:ProductCarrousel.buttonPrevious
      });
     
    }
    
    var rootNode = ProductCarrousel.listRootNode;
    
    rootNode.innerHTML = ''; //FIXME: ugly innerHTML
    
    for (var i = 0; i < images.length; i++){
      var elLi = document.createElement('li');
      var elImg = document.createElement('img');
      elImg.setAttribute('src',ProductCarrousel.IMAGEPATH + images[i]);
      elImg.setAttribute('alt','productafbeelding');//FIXME : should be unique for image
      elLi.appendChild(elImg);
      rootNode.appendChild(elLi);
    }
    
    //FIXME: CarrouselList should be responsible
    ProductCarrousel.buttonPrevious.style.display = images.length > 1 ? 'block' : 'none';
    ProductCarrousel.buttonNext.style.display = images.length > 1 ? 'block' : 'none';
    
    ProductCarrousel.carrouselList.setCurrent(current);
    
    ProductCarrousel.show();

  },
  
  //show 
  show : function(){
    ProductCarrousel.OVERLAY.show();
    ProductCarrousel.imageContainer.style.display = 'block';
  },
  
  //hide
  hide : function(){
    ProductCarrousel.OVERLAY.hide();
    ProductCarrousel.imageContainer.style.display = 'none';
  },

  //create image container within an overlay
  createImageContainer : function(){
    var elContainer = document.createElement('div');
    elContainer.className = 'image-container';

    var elUl = document.createElement('ul');
    elContainer.appendChild(elUl);
    ProductCarrousel.listRootNode = elUl;
          
    elContainer.appendChild(ProductCarrousel.getButtonBar());
    ProductCarrousel.OVERLAY.get().appendChild(elContainer);
    ProductCarrousel.imageContainer = elContainer;
    return elContainer;
  },
  
  //create button bar
  createButtonBar : function(){
  
    var elContainer = document.createElement('div');
    elContainer.className = 'button-container';

    var buttonNext = document.createElement('a');
    buttonNext.className = 'button-next';
    buttonNext.appendChild(document.createTextNode('Volgende'));
    elContainer.appendChild(buttonNext);
    ProductCarrousel.buttonNext = buttonNext;
    
    var buttonPrevious = document.createElement('a');
    buttonPrevious.className = 'button-previous';
    buttonPrevious.appendChild(document.createTextNode('Vorige'));
    elContainer.appendChild(buttonPrevious);
    ProductCarrousel.buttonPrevious = buttonPrevious;
    
    var buttonClose = document.createElement('a');
    buttonClose.className = 'button-close';
    buttonClose.appendChild(document.createTextNode('Sluit'));
    elContainer.appendChild(buttonClose);
    ProductCarrousel.buttonClose = buttonClose;
    
    ProductCarrousel.buttonBar = elContainer;
    return elContainer;
  },
  
  //get button bar
  getButtonBar : function (){
    if (!ProductCarrousel.buttonBar){
      return ProductCarrousel.createButtonBar();
    }
    return ProductCarrousel.buttonBar;
  }

};



DialogProductAdded = {

  //Class constants
  ID : 'dialog-product-added',
  LINKORDERPAGE : 'bestelling.php',
  TITLE : 'Product is toegevoegd',
  TEXT : 'Het product is aan de bestellijst toegevoegd. Klik  op ' +
         '‘Uw bestelling’ om uw totale bestelling te bekijken. ' +
         'Of winkel rustig verder...',
  OVERLAY : Overlay,
  
  //internal variables
  element:null,
  buttonBar:null,
  buttonOrder:null,
  buttonContinueShopping:null,
  
  //functions
  
  
  //show 
  show : function(){
    DialogProductAdded.OVERLAY.show();
    DialogProductAdded.get().style.display = 'block';
  },
  
  //hide
  hide : function(){
    DialogProductAdded.OVERLAY.hide();
    DialogProductAdded.get().style.display = 'none';
  },
    
  //get
  get : function(){
    if (!DialogProductAdded.element){
      return DialogProductAdded.create();
    }
    return DialogProductAdded.element;
  },
  
  //create image container within an overlay
  create : function(){
  
    var _this = DialogProductAdded;
    
    var elContainer = document.createElement('div');
    elContainer.className = 'dialog';
    elContainer.setAttribute('id',_this.ID);

    var elH3 = document.createElement('h3');
    elH3.appendChild(document.createTextNode(_this.TITLE));
    elContainer.appendChild(elH3);
        
    var elParagraph = document.createElement('p');
    elParagraph.appendChild(document.createTextNode(_this.TEXT));
    elContainer.appendChild(elParagraph);
    
    elContainer.appendChild(_this.getButtonBar());
    
    _this.OVERLAY.get().appendChild(elContainer);
    
    _this.element = elContainer;
    
    return elContainer;
  },

  //get button bar
  getButtonBar : function (){
    if (!DialogProductAdded.buttonBar){
      return DialogProductAdded.createButtonBar();
    }
    return DialogProductAdded.buttonBar;
  },
  
  //create button bar
  createButtonBar : function(){
  
    var elContainer = document.createElement('div');
    elContainer.className = 'button-container';

    var buttonContinueShopping = document.createElement('a');
    buttonContinueShopping.setAttribute('href','javascript:void(0);');
    addEvent(buttonContinueShopping, 'click',
      function(){
        DialogProductAdded.hide();
      }
    );
    buttonContinueShopping.className = 'button-verder-met-winkelen';
    buttonContinueShopping.appendChild(document.createTextNode('Verder met winkelen'));
    elContainer.appendChild(buttonContinueShopping);
    DialogProductAdded.buttonContinueShopping = buttonContinueShopping;
    
    var buttonOrder = document.createElement('a');
    buttonOrder.setAttribute('href',DialogProductAdded.LINKORDERPAGE);
    buttonOrder.className = 'button-uw-bestelling';
    buttonOrder.appendChild(document.createTextNode('Uw besteling'));
    elContainer.appendChild(buttonOrder);
    DialogProductAdded.buttonOrder = buttonOrder;
  
    DialogProductAdded.buttonBar = elContainer;
    return elContainer;
  }

};

FormOrder = {

  //Class constants
  IDFORM : 'form-order-overview',
  IDTOTALCOSTS : 'all-prices-total',
  IDSUBMITBUTTON : 'button-bestel-nu',
  TRANSPORTCOSTS : 6.75,
  
  //internal variables
  form:null,
  elTotalCosts:null,
  listRows:null,
  
  //functions
  
  //setup 
  setup : function(){
  
    var form = getEl(FormOrder.IDFORM);
    if (!form){
      return;
    }
    FormOrder.form = form;
    
    var elTotalCosts = getEl(FormOrder.IDTOTALCOSTS);
    if (!elTotalCosts){
      return;
    }
    FormOrder.elTotalCosts = elTotalCosts;
    
    var elTBody = form.getElementsByTagName('tbody')[0];
    if (!elTBody){
      return;
    }
    var listRows = elTBody.getElementsByTagName('tr');
    FormOrder.listRows = listRows;
    
    var list = form.getElementsByTagName('input');
    for (var i = 0; i < list.length; i++){
      if (list[i].className != 'number'){
        continue;
      }
      addEvent(list[i], 'change', 
        function(){
          FormOrder.compute(this);
        }
      );
      
      //HACK against submitting on enter (specially Safari and Firefox which uses he nearby delete button)
      addEvent(list[i], 'keydown', 
        function(e){
          var event = e ? e : window.event;
          if (event.keyCode == 13){
            this.blur();
            setTimeout("getEl('" + this.getAttribute('id') + "').focus()",10);
          }
        }
      );
    }
    
    
  },
  
  //compute
  compute : function(el){
    
    var value = parseInt(el.value,10);
    if (isNaN(value)){
      value = 1;
    }
    if (el.value > 10){
      el.blur();
      if (!confirm('Weet u zeker dat u meer dan 10 producten wilt bestellen?')){
        value = 1;
      }
    }
    el.value = value;
    
    var totalCost = 0;
    totalCost += FormOrder.TRANSPORTCOSTS;
    
    var listRows = FormOrder.listRows;
    for (var i = 0; i < listRows.length; i++){
    
      var currentRow = listRows[i];
      var elPrice = currentRow.getElementsByTagName('span')[0];
      var inputPrice = currentRow.getElementsByTagName('input')[0];
      var elRowTotal = currentRow.getElementsByTagName('strong')[1];
      
      var rowTotal = elPrice.innerHTML * inputPrice.value;
      //alert(elPrice.innerHTML + '**' + inputPrice.value + '**' + FormOrder.formatPrice(rowTotal));
      totalCost += rowTotal;
      elRowTotal.innerHTML = '&euro;' + FormOrder.formatPrice(rowTotal);//FIXME: ugly innerHTML
      
    }
    FormOrder.elTotalCosts.innerHTML = '&euro;' + FormOrder.formatPrice(totalCost);//FIXME: ugly innerHTML
    
  },
  
  
  formatPrice : function(number){
    var str = (Math.round(number * 100) / 100).toString();

    var decimal = str.split('.');
    if (!decimal[1]){
      str += '.00';
    }
    else if (decimal[1].length == 1){
      str += '0';
    }
    return str;
  }
  
}

/*
JS Mailer to prevent SPAM
*/
function setContactLinks(prefix,suffix){
  var list = document.getElementsByTagName('a');
  for (var i = 0; i < list.length; i++){
    if (list[i].className.indexOf('contact-link') == -1){
      continue;
    }
    list[i].setAttribute('href','mailto:' + prefix + '@' + suffix);
  }
}



