// the FireBug extension for Firefox offers a bonafide JavaScript error console
// to prevent errors in browsers without it, create a dummy console object
// with the required methods
try {
      console.log('Starting ' + window.location);
} catch (err) {
    var console = new Object;
    console.log = function() { return true };
    // console.log = function() {
    //     for(var i = 0, j = arguments.length ; i < j ; i++) {
    //         alert(arguments[i])
    //     }
    // }
};



/********************************************************************************************

 storing affiliate codes and such in cookies if the page is cached
 
********************************************************************************************/
var QueryVarsToSave = $A(['Affiliate', 'ZanoxPID', 'utm_campaign', 'utm_source', 'utm_medium', 'utm_content']);
QueryVarsToSave.each(function(varName){
    if(ECube.queryVars[varName]){
        ECube.cookies.create('sqv_' + varName, ECube.queryVars[varName], 30);
    };
})
/********************************************************************************************

 storing affiliate codes and such in cookies if the page is cached ends
 
********************************************************************************************/



// extension for intertoys: check if a given date is before a given number of years ago
ECube.dateValidator['isBefore'] = function(isodate, numyears) {
    var today = new Date();
    todayDay = today.getDate();
    if(todayDay < 10) {
        todayDay = '0' + todayDay;
    };
    todayMonth = today.getMonth();
    if(todayMonth < 10) {
        todayMonth = '0' + todayMonth;
    };
    var todayYear = today.getFullYear();
    todayYear = todayYear - numyears;
    var todayISO = todayYear + '' + todayMonth + '' + todayDay;
    isodate = isodate * 1;
    if(todayISO < isodate) {
        return false;
    };
    return true;
}

// Ajax loaders
var showAjaxWait = function(container) {
    var html = '<div class="pleasewait"><img src="/isroot/Intertoys/Images/toytoy.gif" /></div>';
    container.innerHTML = html;
};
EpagesShop.ajax.showLoaderIn = function(elementObj){
    elementObj.innerHTML = '<div class="pleasewait"><img src="/isroot/Intertoys/Images/toytoy.gif" /></div>';
};
EpagesShop.ajax.removeLoaderFrom = function(elementObj) {
    return true;
}



/**********************************************************************************
    
    custom validators
    
**********************************************************************************/

ECube.customFormValidators['registernewform'] = function(eventObject) {
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        validator.markErrors();
        validator = null;
        return false;
    };
    validator = null;
    // password fields must match
    var pwd = this.passwd.value;
    var pwdc = this.passwdc.value;
    if((! pwd) || (! pwdc)) {
        alert('Vul een wachtwoord in van tenminste acht tekens!');
        this.passwd.focus();
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        return false;
    };
    if(pwd != pwdc) {
        alert('De ingevoerde wachtwoorden komen niet overeen!');
        this.passwd.focus();
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        return false;
    };
    var day = this.in_ca_cu_CustDOBDay.value;
    var month = this.in_ca_cu_CustDOBMonth.value;
    var year = this.in_ca_cu_CustDOBYear.value;
    if(! ECube.dateValidator['validate'](day, month, year) ) {
        alert('Voer een geldige geboortedatum in!');
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        return false;
    };
    if(! ECube.dateValidator['isBefore'](year + month + day, 16)) {
        alert('Let op: je kunt alleen bestellingen plaatsen als je ouder bent dan zestien jaar!');
    };
    this.in_ca_cu_CustGeboorteDatum.value = year + month + day;
    // console.log(this);
    // window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
    return true;
}

ECube.customFormValidators['factuuradresform'] = function(eventObject) {
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        validator.markErrors();
        validator = null;
        return false;
    };
    validator = null;
    var day = this.in_ca_cu_CustDOBDay.value;
    var month = this.in_ca_cu_CustDOBMonth.value;
    var year = this.in_ca_cu_CustDOBYear.value;
    if(! ECube.dateValidator['validate'](day, month, year) ) {
        alert('Voer een geldige geboortedatum in!');
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        return false;
    };
    if(! ECube.dateValidator['isBefore'](year + month + day, 16)) {
        alert('Let op: je kunt alleen bestellingen plaatsen als je ouder bent dan zestien jaar!');
    };
    this.in_ca_cu_CustGeboorteDatum.value = year + month + day;
    // console.log(this);
    // window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
    return true;
}

ECube.customFormValidators['tancform'] = function(eventObject) {
    var tandc = this.getElements().find(function(elem) {
        if(elem.name == 'in_ca_of_TandCOK') {
            return true;
        };
        return false;
    });
    if(! tandc.checked) {
        alert('U dient akkoord te gaan met de algemene voorwaarden!');
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        return false;
    }
    var fieldsToInclude = new Hash();
    fieldsToInclude.set('cadeaupapierform', $(['in_ca_of_GiftWrap']));
    fieldsToInclude.set('persoonlijkeboodschapform', $(['in_ca_of_PM_Recipient', 'in_ca_of_PM_Message', 'in_ca_of_PM_Sender']));
    
    var mainForm = this;
    fieldsToInclude.keys().each(function(formName) {
        fieldsToInclude.get(formName).each(function(fieldName){
            var fieldValue = document.forms[formName][fieldName].value;
            console.log('assigning field ', fieldName, ' from form ', formName, ' to value ', fieldValue);
            if(mainForm[fieldName]) {
                mainForm[fieldName].value = fieldValue;
            } else {
                var newField = document.createElement('INPUT');
                newField.setAttribute('type', 'hidden');
                newField.setAttribute('name', fieldName);
                newField.setAttribute('value', fieldValue);
                mainForm.appendChild(newField);
            };
        })
    });
    return true;
}

ECube.customFormValidators['paymentform'] = function(eventObject) {
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        validator.markErrors();
        validator = null;
        return false;
    };
    validator = null;
    // use the old fashioned method to find out which payment method we've selected
    var pm = 'CreditCard';
    var brand = '';
    var formObject = $(this);
    var getBrandFromElement = function(elementObject){
        var returnValue = '';
        if(elementObject.id) {
            if(! elementObject.id.match(/^payment/)) {
                returnValue = elementObject.id;
            };
        };
        return returnValue;
    };
    for(var i = 0, len = formObject.elements.length ; i < len ; ++i) {
        var inputElement = formObject.elements[i];
        if(inputElement.name == 'Payment') {
            var inputType = inputElement.type;
            if(inputType == 'radio') {
                if(inputElement.checked) {
                    brand = getBrandFromElement(inputElement);
                };
            };
            if(inputType == 'checkbox') {
                if(inputElement.checked) {
                    brand = getBrandFromElement(inputElement);
                };
            };
            if(inputType == 'select-multiple') {
                brand = getBrandFromElement(inputElement);
            };

        };
    };
    if(brand.match(/ideal/i)){
        pm = brand;
    };
    console.log('brand: ', brand, ' id: ', pm);
    formObject.elements['Brand'].value = brand;
    formObject.elements['PM'].value = pm;
}

// at least one product must be selected
ECube.customFormValidators['wishlistproducts'] = function(eventObject) {
    var result = $(this).getElements().find(function(elemObj){
        if(elemObj.checked) {
            return true;
        };
        return false;
    });
    if(! result) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
    };
};

// the contact form. transfer recipient address, require an orderno
ECube.customFormValidators['contactform'] = function(eventObject) {
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        validator.markErrors();
        validator = null;
        return false;
    };
    validator = null;
    for(var i = this.length - 1; i >= 0 ; i--){
        var elem = this.elements[i];
        if(elem.name == 'subject'){
            for(var j = elem.options.length - 1 ; j >= 0 ; j--){
                if(elem.options[j].value == elem.value){
                    var option = $(elem.options[j]);
                    var mailrecipient = option.readAttribute('mailrecipient');
                    var requiresorderno = option.readAttribute('requiresorderno');
                    console.log(option, mailrecipient, requiresorderno);
                    this['recipient'].value = mailrecipient;
                    if(requiresorderno){
                        if(! this['ordernummer'].value){
                            this['ordernummer'].focus();
                            window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
                            return false;
                        }
                    }
                };
            }

        };
    };
    return true;
};
// don't allow the search form to be submitted if the default text is submitted!
// also, don't allow it to be submitted again if it's already submitted within 10 seconds
// after the last time
ECube.customFormValidators['zoekform'] = function(eventObject) {
    if(! ECube.canSubmitIfNotSubmittedInLast(this, 10, null, function(){
        alert('Een ogenblik geduld ... uw vorige zoekopdracht wordt nog verwerkt');
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        return false;
    }));
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        validator.markErrors();
        validator = null;
        return false;
    };
    validator = null;
    var canSubmit = true;
    for(var i = 0, j = this.elements.length ; i < j ; i++) {
        var elem = this.elements[i];
        if(elem.getAttribute('valuedefault')) {
            var val = elem.value;
            if(val == elem.getAttribute('valuedefault')) {
                canSubmit = false;
            }
        }
    }
    if(! canSubmit) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
    };
    return true;
}



/**********************************************************************************
    
    toggle factuuradres == verzendadres
    
**********************************************************************************/

var ToggleAddress = new Object();
ToggleAddress.submit = function() {
    console.log('submitting shipping address form');
    var validator = new ECube.formValidator(ToggleAddress['formObj']);
    if(validator.hasErrors()) {
        console.log('shipping address form has errors!');
        validator.markErrors();
        validator = null;
        return false;
    };
    validator = null;
    console.log('shipping address form is ok. submitting');
    ToggleAddress['formObj'].submit();
}

ToggleAddress.reset = function() {
    console.log('resetting shipping form with billing data');
    ToggleAddress['extraSubmitButton'].show();
    ToggleAddress['formWrapper'].hide();
    $(ToggleAddress['formObj'].getElements()).each(function(elem) {
        var defaultValue = elem.readAttribute('resetvalue');
        if(defaultValue) {
            elem.value = defaultValue;
        } else {
            elem.value = '';
        };
    });
}

ToggleAddress.setDifferentAfleveradres = function(eventObject) {
    console.log('displaying shipping form');
    ToggleAddress['extraSubmitButton'].hide();
    ToggleAddress['formWrapper'].show();
}

ToggleAddress.initialize = function() {
    var formObj = document.forms['bezorgadresform'];
    if(! formObj) {
        return true;
    };
    ToggleAddress['formObj'] = $(formObj);
    ToggleAddress['formWrapper'] = $('op_formdiv_bezorgadres');
    ToggleAddress['toggleFactuuradres'] = $('toggleFactuuradres');
    ToggleAddress['toggleAfleveradres'] = $('toggleAfleveradres');
    ToggleAddress['extraSubmitButton'] = $('extraSubmitButton');
    
    ToggleAddress['extraSubmitButton'].observe('click', function(eventObject) {
        window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
        ToggleAddress.submit();
    });
    ToggleAddress['toggleAfleveradres'].observe('click', ToggleAddress.setDifferentAfleveradres);
    ToggleAddress['toggleFactuuradres'].observe('click', ToggleAddress.reset);
}

document.observe('dom:loaded', ToggleAddress.initialize);

/**********************************************************************************

 Minibasket

**********************************************************************************/


// some intertoys specific extras
EpagesShop.miniBasket.Intertoys = new Object();
EpagesShop.miniBasket.Intertoys.open = function(withEffect) {
    var but_open    = $('minibasket_button_open');
    var but_close   = $('minibasket_button_close');
    if(but_close){
        but_close.show();
    };
    if(but_open){
        but_open.hide();
    };
    var basketContent = EpagesShop.miniBasket.basketElement;
    if(basketContent){
        if(withEffect) {
            new Effect.Appear(basketContent);
        } else {
            basketContent.show();
        }
    };
};
EpagesShop.miniBasket.Intertoys.close = function(withEffect) {
    var but_open    = $('minibasket_button_open');
    var but_close   = $('minibasket_button_close');
    if(but_open){
        but_open.show();
    };
    if(but_close){
        but_close.hide();
    };
    var basketContent = EpagesShop.miniBasket.basketElement;
    if(basketContent){
        if(withEffect) {
            new Effect.SlideUp(basketContent);
        } else {
            basketContent.hide();
        }
    }
};
ECube.registerOnLoadFunction(function(e){
    var defaultBasketElement = $('minibasket_content');
    if(defaultBasketElement){
        EpagesShop.miniBasket.basketElement = defaultBasketElement;
    };
    // wijs listeners toe aan de open of sluitknoppen
    var but_open    = $('minibasket_button_open');
    if(but_open){
        but_open.observe('click', function(eventObject){
            window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
            EpagesShop.miniBasket.Intertoys.open(true)
        });
    };
    var but_close   = $('minibasket_button_close');
    if(but_close){
        but_close.observe('click', function(eventObject){
            window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
            EpagesShop.miniBasket.Intertoys.close(true)
        });
    };
    // zet het mandje open of dicht tijdens de onload
    var mustOpen = false
    try {
        mustOpen = MiniBasketMustOpen;
    } catch(err){
        mustOpen = false;
    };
    if(mustOpen) {
        EpagesShop.miniBasket.Intertoys.open();
    } else {
        EpagesShop.miniBasket.Intertoys.close();
    };
    // doe wat extra's nadat we het mandje hebbe opgehaald
    var defaultOnComplete = EpagesShop.miniBasket.callBacks.onComplete;
    if(defaultOnComplete){
        var newOnComplete = function(transport){
            defaultOnComplete(transport);
            if(but_open){
                but_open.observe('click', function(eventObject){
                    window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
                    EpagesShop.miniBasket.Intertoys.open(true)
                });
            };
            if(but_close){
                but_close.observe('click', function(eventObject){
                    window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
                    EpagesShop.miniBasket.Intertoys.close(true)
                });
            };
            EpagesShop.miniBasket.Intertoys.open(true);
            // cause all basket submits to scroll to the top of the page
            scroll(0,0);
            return true;
        };
        EpagesShop.miniBasket.callBacks.onComplete = newOnComplete;
    };

});




/**********************************************************************************

    Basket quantity fields autosubmit: alert if too much

**********************************************************************************/
ECube.registerOnLoadFunction(function(e){
    var formObj = $(document.forms['basketform']);
    if(formObj){
        formObj.getElements().each(function(elem){
            if(elem.name){
                if(elem.name.match(/^NumOf_/)){
                    elem['alertOnTooMuch'] = true;
                };
            }
        })
    };
});

/**********************************************************************************

    Indexes

**********************************************************************************/
var Indexes = new Object();
Indexes.indexes = new Hash();
// these functions only set the image inside the tab active. they do nothing
// for showing / loading an index
Indexes.setTabActive = function(tab) {
    tab.childElements().each(function(child){
        if(child.tagName == 'IMG') {
            var src = child.readAttribute('src');
            // this clumsiness helps avoid adding _active twice
            src = src.replace(/_active.gif$/, '.gif');
            src = src.replace(/.gif$/, '_active.gif');
            child.writeAttribute('src', src);
        }
    });
};
Indexes.setTabInactive = function(tab) {
    tab.childElements().each(function(child){
        if(child.tagName == 'IMG') {
            var src = child.readAttribute('src');
            // this clumsiness helps avoid adding _active twice
            src = src.replace(/_active.gif$/, '.gif');
            child.writeAttribute('src', src);
        }
    });
};
Indexes.activateTabForActiveIndex = function(){
    Indexes.tabs.each(function(tab){
        var associatedIndex = tab.id.replace(/^openindex_/, '');
        // this shouldn't be a problem, but if the template is only slightly borked, it will be
        if(Indexes.activeIndex) {
            if(Indexes.activeIndex.id == associatedIndex) {
                Indexes.setTabActive(tab);
            } else {
                Indexes.setTabInactive(tab);
            };
        } else {
            Indexes.setTabInactive(tab);
        };
        
    })
};
Indexes.loadHTML = function(transport) {
    console.log('turning html into indexes');
    var text = transport.responseText;
    Indexes.container.innerHTML = text;
    Indexes.indexes = new Hash();
    Indexes.container.childElements().each(function(elem) {
        var indexID = elem.id;
        elem.hide();
        Indexes.indexes.set(indexID, elem);
    });
    Indexes.showAfterLoad();
}
Indexes.loadAllIndexes = function() {
    var url = GLOBAL_URL_STORE + '/UserTemplate/inc_FooterIndex';
    new Ajax.Request(url, {
        parameters: {'fetchAllIndexes' : '1'},
        method: 'post',
        onCreate: function() {
            showAjaxWait($('indexes'));
        },
        onComplete: Indexes.loadHTML
    })
}
Indexes.showIndex = function(eventObject) {
    window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
    var indexToShow = this.id.replace(/^openindex_/, '');
    console.log('requesting index ', indexToShow);
    Indexes.indexes.values().each(function(index) {
        index.hide();
    });
    if(Indexes.indexes.get(indexToShow)) {
        Indexes.indexes.get(indexToShow).show();
        Indexes.activeIndex = Indexes.indexes.get(indexToShow);
    } else {
        console.log('requested index doesnt exist yet. fetching all indexes');
        Indexes.showAfterLoad = function() {
            console.log('showing indexes after load');
            console.log('index to show is ', indexToShow);
            console.log('its ', Indexes.indexes.get(indexToShow));
            Indexes.indexes.get(indexToShow).show();
            Indexes.activeIndex = Indexes.indexes.get(indexToShow);
        };
        Indexes.loadAllIndexes();
    };
    Indexes.tabs.each(function(tab) {
        var associatedIndex = tab.id.replace(/^openindex_/, '');
        if(associatedIndex == indexToShow) {
            Indexes.setTabActive(tab);
        } else {
            Indexes.setTabInactive(tab);
        };
    })
    
    
    
};

Indexes.initialize = function(e) {
    var container = $('indexes');
    if(! container) {
        return true;
    };
    Indexes.container = container;
    container.childElements().each(function(index){
        Indexes.indexes.set(index.id, index);
    });
    Indexes.indexes.values().each(function(index) {
        if(index.readAttribute('isActiveIndex')) {
            Indexes.activeIndex = index;
        };
    });
    var tabs = $$('a.openindex');
    tabs.each(function(tab){
        tab.observe("click", Indexes.showIndex);
        tab.observe("mouseover", function(e) {
            Indexes.tabs.each(function(t){
                Indexes.setTabInactive(t);
            })
            Indexes.setTabActive(this);
        });
        tab.observe("mouseout", function(e) {
            Indexes.activateTabForActiveIndex();
        });
        
    });
    Indexes.tabs = tabs;

}
// a wonderful piece of art, that was unfortunately no longer desired
// document.observe("dom:loaded", Indexes.initialize);


/**********************************************************************************

    Toggle display of the wishlist form

**********************************************************************************/
document.observe("dom:loaded", function(e){
    var buttonObj = $('showmailwishlistform');
    if(buttonObj) {
        buttonObj.observe('click', function(eventObject){
            window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
            $(document.forms['mailwishlistform']).show();
            return false;
        })
    }
})


/**********************************************************************************
    
    News items
    
**********************************************************************************/
document.observe("dom:loaded", function(e){
    $$('a.news_displayitem').each(function(newsItemLink){
        newsItemLink.observe('click', function(eventObject){
            window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
            var newsItemID = this.id.replace(/^newsitem_display_/, 'newsitem_newstext_');
            var parentID = this.id.replace(/^newsitem_display_(.*)\[\d+\]/, 'newsitems_for_$1');
            var newsItem = $(newsItemID);
            var titleLinkObject = this;
            $(parentID).childElements().each(function(liObj){
                $(liObj).childElements().each(function(childObj){
                    if(childObj.tagName == 'P') {
                        if(childObj != newsItem) {
                            Effect.BlindUp(childObj);
                        };
                    };
                    if(childObj.tagName == 'H5') {
                        var linkObj = $(childObj).childElements()[0]
                        if(linkObj == titleLinkObject) {
                            linkObj.removeClassName('newsitem_inactive');
                            linkObj.addClassName('newsitem_active');
                        } else {
                            linkObj.removeClassName('newsitem_active');
                            linkObj.addClassName('newsitem_inactive');
                        };
                    };
                })
            });
            Effect.BlindDown($(newsItemID));
        });
    });
});


/**********************************************************************************

    Guided Search

**********************************************************************************/
var GuidedSearchItems = {};
document.observe("dom:loaded", function(e){
    var zoekform = $(document.forms['zoekform']);
    $$('form.header_search').each(function(zoekform) {
        zoekform.observe('submit', function(eventObject) {
            if(this.hasClassName('submitted')){
              alert('Een ogenblik geduld ... uw vorige zoekopdracht wordt nog verwerkt');
              eventObject.stop();
            } else {
              var searchField = this.SearchProductName;
              if(! searchField) {
                  for(var i = this.elements.length - 1 ; i >= 0; i--){
                      if(this.elements[i].name){
                          if(this.elements[i].name == '1060'){
                              searchField = this.elements[i];
                          };
                      };
                  };
                  
              };
              if(! searchField) {
                  searchField = this.SearchQuery;
              };
              if(! searchField) {
                  var searchFieldArr = this.select('[name=Zoeken]');
                  if (searchFieldArr.length){
                        searchField = searchFieldArr[0];
                  }
              };
              var searchTerm = searchField.value.toLowerCase().replace(/[^a-z0-9]/g, '');
  						if(GuidedSearchItems[searchTerm]) {
                  window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
                  location.href = GuidedSearchItems[searchTerm] + (GuidedSearchItems[searchTerm].match(/\?/g) ? '&' : '?') + 'source=guidedSearch';
              };
              this.addClassName('submitted');
            }
        })
    })

})

/**********************************************************************************
    
    auto submit the ogone form (if it exists)
    
**********************************************************************************/

document.observe("dom:loaded", function(e){
    if(document.forms['gotoogoneform']) {
        document.forms['gotoogoneform'].submit();
    };
})

/**********************************************************************************
    
    auto submit the gotopayment form (if it exists)
    
**********************************************************************************/
document.observe("dom:loaded", function(e){
    if(document.forms['gotopaymentform']) {
        document.forms['gotopaymentform'].submit();
    };
})

/**********************************************************************************

    Multiple-content-banners

**********************************************************************************/

function MCBInstance(targetMCBElem){
  this.a = new Hash();
  this.a.set('interval',false);
  var dateObject = new Date();
  if(!targetMCBElem.id){ targetMCBElem.id = dateObject.getTime()+"_MCEUnique";} 
  this.a.set('currentObject',targetMCBElem.id);
  this.initialize();
}

MCBInstance.prototype.initialize = function(){
  var bannerItems = $$("#" + this.a.get('currentObject') + " li a");
  this.setMultiBannerContent(bannerItems[0]);
  bannerItems.each(function(elem){
    var currentMCBInstance = this; // trick to bybass scope issues with internetexplorer
    elem.observe("mouseover",function(evt){
      currentMCBInstance.setMultiBannerContent(evt.target);
    });
  },this);
  
  var currentMCBInstance = this; // trick to bybass scope issues with internetexplorer
  $(this.a.get('currentObject')).observe("mouseout",function(evt){
    currentMCBInstance.a.set('interval',setInterval(function(){currentMCBInstance.showNextItem();},5000));
  });
  $(this.a.get('currentObject')).observe("mouseover",function(evt){
    clearTimeout(currentMCBInstance.a.get('interval')); currentMCBInstance.a.set('interval',false);
  });
  
  this.a.set('interval',setInterval(function(){currentMCBInstance.showNextItem();},5000));
}

MCBInstance.prototype.showNextItem = function(){
  var bannerItems = $$("#" + this.a.get('currentObject') + " li a");
  bannerItems.each(function(elem,index){
    if(elem.hasClassName('active')){
      this.setMultiBannerContent(bannerItems[index+1]||bannerItems[0]);
      throw $break;
    }
  },this);
}

MCBInstance.prototype.setMultiBannerContent = function(elem){
  $$("#" + this.a.get('currentObject') + " li a").each(function(elemInactive){
    if(elemInactive.hasClassName('active')) {
      elemInactive.toggleClassName('active');
    }
  });
  elem.toggleClassName('active');
  var imgObject = $(elem.readAttribute('imgid'));
  if(! imgObject) {
      imgObject = $('multicontentbanner_image');
  };
  if( imgObject) {
      var linkObject = imgObject.parentNode; 
      if(linkObject.tagName != 'A') {
          linkObject = null;
      };
      imgObject.src = elem.readAttribute('imgsrc');
      if(elem.getAttribute('linkname')) {
          imgObject.writeAttribute('alt', elem.readAttribute('linkname'));
      };
      if(linkObject) {
          linkObject.href = (elem.getAttribute('linkhref') ? elem.getAttribute('linkhref') : elem.getAttribute('href'));
          linkObject.target = (elem.getAttribute('target') ? elem.getAttribute('target') : '_self');
          // linkObject.innerHTML = elem.getAttribute('linkName');
      };
  };

  if(elem.getAttribute('textlinkid')) {
      var textLinkObj = $(elem.readAttribute('textlinkid'));
      if(textLinkObj) {
          textLinkObj.href = (elem.getAttribute('linkhref') ? elem.getAttribute('linkhref') : elem.getAttribute('href'));
          textLinkObj.target = (elem.getAttribute('target') ? elem.getAttribute('target') : '_self');
          textLinkObj.innerHTML = elem.getAttribute('linkName');
      }
  }
}

document.observe("dom:loaded",function(event){
  $$(".multicontentbanner").each(function(elem){ var MCB = new MCBInstance(elem); });
});



/**********************************************************************************
    
    Analytics metingen
    
**********************************************************************************/

// op verzoek van netsociety verwijderd
//document.observe('dom:loaded', function(eventObject){
//  if(window['pageTracker']){
//    var verification_sameDomain = new RegExp(document.domain);
//    
//    // EXTERNE LINKS EN REFERENTIES NAAR OGONE
//    $$('a').each(function(elem){
//      var url = elem.readAttribute('href');
//      if(url && !url.match(verification_sameDomain) && url.match(/http/i)){
//        if(url.match(/ogone/i)) elem.observe('click',function(eventObject){pageTracker._getLinkerUrl(this.readAttribute('href'));});
//        elem.observe('click',function(eventObject){pageTracker._trackPageview('/external/' + this.readAttribute('href'));});
//      }
//    });
//    
//    //  HANDMATIGE TRACKINGEN
//    $$('a.trackEvent').invoke('observe','click',function(eventObject) {
//      if(this.readAttribute('evt_cat')&&this.readAttribute('evt_action')){
//        pageTracker._trackEvent(
//          this.readAttribute('evt_cat'),
//          this.readAttribute('evt_action'),
//          this.readAttribute('evt_label')/*,
//          this.readAttribute('evt_value')*/); // ivm dat het uitsluitend integers mogen zijn 
//
//        console.log('tracked event: ', 
//          this.readAttribute('evt_cat'),
//          this.readAttribute('evt_action'),
//          this.readAttribute('evt_label')/*,
//          this.readAttribute('evt_value')*/); // ivm dat het uitsluitend integers mogen zijn 
//
//      };
//    });
//
//    //  INDEX
//    $$('#indexes a').invoke('observe','click',function(eventObject){
//      pageTracker._trackEvent('navigatie','index',this.text);
//      console.log('tracked: ', 'navigatie','index',this.text);
//    });
//
//    // REFINEMENT MENU
//    $$('#block_RefineMenu a').invoke('observe','click',function(eventObject){
//      pageTracker._trackEvent('navigatie','refinement',this.text);
//      console.log('tracked: ', 'navigatie','refinement',this.text);
//    });
//
//    // HEADER MENU
//    $$('.header_menu a').invoke('observe','click',function(eventObject){
//      pageTracker._trackEvent('navigatie','topmenu',this.text.replace('<br />',' '));
//      console.log('tracked: ', 'navigatie','topmenu',this.text.replace('<br />',' '));
//    });
// 
//    // BANNERS RECHTS
//    $$('.RightBlockBottom a').invoke('observe','click',function(eventObject){
//      pageTracker._trackEvent('navigatie','banner|rechts',this.ancestors().find(function(pElm){ return pElm.hasClassName('RightBlockBottom')}).readAttribute('id'));
//      console.log('tracked: ', 'navigatie','banner|rechts',this.ancestors().find(function(pElm){ return pElm.hasClassName('RightBlockBottom')}).readAttribute('id'));
//    });
// 
//    // NAVIGATIE TUSSEN HOOFDSECTIES BOVENKANT
//    $$('.content_tabs a').invoke('observe','click',function(eventObject){
//      pageTracker._trackEvent('navigatie','secties|boven',this.descendants().find(function(pElm){ return pElm.tagName === 'IMG'; }).readAttribute('alt'));
//      console.log('tracked: ', 'navigatie','secties|boven',this.descendants().find(function(pElm){ return pElm.tagName === 'IMG'; }).readAttribute('alt'));
//    });
//
//    // NAVIGATIE TUSSEN HOOFDSECTIES ONDERKANT
//    $$('.FooterIndex_tabs a').invoke('observe','click',function(eventObject){
//      pageTracker._trackEvent('navigatie','secties|onder',this.descendants().find(function(pElm){ return pElm.tagName === 'IMG'; }).readAttribute('alt'));
//      console.log('tracked: ', 'navigatie','secties|onder',this.descendants().find(function(pElm){ return pElm.tagName === 'IMG'; }).readAttribute('alt'));
//    });
//  };
//});



/**********************************************************************************

    cached-basket

**********************************************************************************/

var CookieManager = {
  create: function(name,value,days) {
    if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = "; expires="+date.toGMTString();
    } else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
  },
  read: function(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') 
        c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) 
        return c.substring(nameEQ.length,c.length);
    }
    return null;
  },
  remove: function(name) {
    CookieManager.create(name,"",-1);
  }
}

document.observe('dom:loaded',function(eventObject){
  if(!$('cachedPage')) return;
  // console.log(' HTML says: ',$('cachedPage').readAttribute('value'),' COOKIE says: ',CookieManager.read('cachedPage'));
  if(CookieManager.read('cachedPage')==null){
    CookieManager.create('cachedPage',1);
    $('cachedPage').writeAttribute('value',1);
  } else {
    // kennelijk is de pagina gecached
    
    if(!$('cachedPage').readAttribute('value') || (parseInt($('cachedPage').readAttribute('value'),10)<parseInt(CookieManager.read('cachedPage'),10))){
      // we willen de basket opnieuw ophalen
      console.log('detected old basket, refreshing');
      EpagesShop.miniBasket.reload();
    } else CookieManager.create('cachedPage',(parseInt($('cachedPage').readAttribute('value'),10)+1));
  }
});

/*******************************************************************************************

    DROPOUT
    
*******************************************************************************************/

//var Dropout = {
//  buttonRepos: $A(),
//  timer: null,
//  delayTime: 500,
//  initialize: function(){
//    var buttons = $$('.openDropout');
//    buttons.each(function(elem){
//      var dropoutInstance = new SingleDropout(elem,$(elem.readAttribute('dropoutId')))
//      Dropout.buttonRepos.push(dropoutInstance);
//    },this);
//  },
//  _triggerOn: function(eventObject){
//    window.clearTimeout(Dropout.timer);
//  },
//  _triggerOff: function(eventObject){
//    Dropout.timer = setTimeout("Dropout.buttonRepos.invoke('_deactivate');",Dropout.delayTime);
//  }
//};
//
//var SingleDropout = Class.create({  
//  targElem: null,
//  buttonElem: null,
//  initialize: function(buttonElem,targElem) {
//    this.buttonElem = buttonElem;
//    this.targElem = targElem;
//    this.buttonElem.observe('mouseover',function(eventObject){this._activate(eventObject); eventObject.stop();}.bind(this));
//    this.buttonElem.observe('mouseout',function(eventObject){Dropout._triggerOff(eventObject); eventObject.stop();}.bind(this));
//    if(this.targElem){
//			this.targElem.observe('mouseover',function(eventObject){Dropout._triggerOn(eventObject); eventObject.stop();});
//			this.targElem.observe('mouseout',function(eventObject){Dropout._triggerOff(eventObject); eventObject.stop();});
//		}
//	},
//  _activate: function(eventObject){
//    Dropout.buttonRepos.invoke('_deactivate');
//    Dropout._triggerOn();
//    if(this.targElem) this.targElem.show();
//    if(!this.buttonElem.hasClassName('active')) {
//      this.buttonElem.toggleClassName('active');
//    }
//  },
//  _deactivate: function(eventObject){
//    if(this.targElem) this.targElem.hide();
//    if(this.buttonElem.hasClassName('active')) {
//      this.buttonElem.toggleClassName('active');
//    }
//  }
//});
//
//if(!/msie|MSIE 6/.test(navigator.userAgent)){
//  document.observe('dom:loaded',Dropout.initialize);
//}
//




var Dropout = {
  buttonRepos: $A(),
  timer: null,
  delayTime: 500,
  
  initialize: function(){
    var buttons = $$('.openDropout');
    buttons.each(function(elem){
      var dropoutInstance = new SingleDropout(elem,$(elem.readAttribute('dropoutId')))
      Dropout.buttonRepos.push(dropoutInstance);
    },this);
  },
  _triggerOn: function(eventObject){
    window.clearTimeout(Dropout.timer);
  },
  _triggerOff: function(eventObject){
    Dropout.timer = setTimeout("Dropout.buttonRepos.invoke('_deactivate');",Dropout.delayTime);
  }
};

var SingleDropout = Class.create({  
  targElem: null,
  buttonElem: null,
  initialize: function(buttonElem,targElem) {
    this.buttonElem = buttonElem;
    this.targElem = targElem;
    this.buttonElem.observe('mouseover',function(eventObject){this._activate(eventObject); eventObject.stop();}.bind(this));
    this.buttonElem.observe('mouseout',function(eventObject){Dropout._triggerOff(eventObject); eventObject.stop();}.bind(this));
    if(this.targElem){
			this.targElem.observe('mouseover',function(eventObject){Dropout._triggerOn(eventObject); eventObject.stop();});
			this.targElem.observe('mouseout',function(eventObject){Dropout._triggerOff(eventObject); eventObject.stop();});
		}
	},
  _activate: function(eventObject){
    Dropout.buttonRepos.invoke('_deactivate');
    Dropout._triggerOn();
    if(this.targElem) this.targElem.show();
    if(!this.buttonElem.hasClassName('active')) {
      this.buttonElem.toggleClassName('active');
    }
  },
  _deactivate: function(eventObject){
    if(this.targElem) this.targElem.hide();
    if(this.buttonElem.hasClassName('active')) {
      this.buttonElem.toggleClassName('active');
    }
  }
});

if(!/msie|MSIE 6/.test(navigator.userAgent)){
  document.observe('dom:loaded',Dropout.initialize);
}




























//var Dropout = {
//  buttonRepos: $A(),
//  timers: {
//    mouseOut: null,
//    mouseIn: null
//  },
//  delays: {
//    mouseOut: 500,
//    mouseIn: 1000
//  },
//  
//  initialize: function(){
//    var buttons = $$('.openDropout');
//    // add all possible buttons to a repository within the singleton
//    buttons.each(function(elem){
//      var dropoutInstance = new SingleDropout(elem,$(elem.readAttribute('dropoutId')))
//      Dropout.buttonRepos.push(dropoutInstance);
//    },this);
//  },
//  _triggerOff: function(eventObject){
//    // the user wants the window to close, after the delaytime has passed
//    Dropout.timers.mouseOut = setTimeout("Dropout.buttonRepos.invoke('_deactivate');",Dropout.delays.mouseOut);
//  },
//  _procesActivate: function(button,dropout){
//    console.log('activating');
//    // there was a trigger for the dropout to open, but it is still uncertain if this was caused intentionally or by accident.
//    // if there was no countertrigger within the delays.mouseIn time we assume the user intended to open the dropout.
//    //if(Dropout.timers.mouseOut) {
//    //  Dropout.__activate(button,dropout);
//    //} else {
//      Dropout.timers.mouseIn = setTimeout(
//            Dropout.__activate,
//            Dropout.delays.mouseIn,
//            button,
//            dropout);
//    //}
//  },
//  __activate: function(button,dropout){
//    // no need for the dropout to hide, since we just asked it to open
//    window.clearTimeout(Dropout.timers.mouseOut);
//    Dropout.timers.mouseOut = null;
//    // show the dropout and update the button visuals
//    if(dropout) dropout.show();
//    button.addClassName('active'); 
//  },
//  
//  _procesDeactivate: function(button,dropout){
//    console.log('deactivating');
//    // the user wants the dropout closed, so there is no need for possible earlier events to still continue opening the dropout
//    window.clearTimeout(Dropout.timers.mouseIn);
//    Dropout.timers.mouseIn = null;
//    // we clean up the mouseout timer because there will be nothing to time for left (since the dropout is allready closed)
//    window.clearTimeout(Dropout.timers.mouseOut);
//    Dropout.timers.mouseOut = null;
//    // hide the dropout and update the button visuals
//    if(dropout) dropout.hide();
//    button.removeClassName('active');
//  }
//};
//
//var SingleDropout = Class.create({  
//  targElem: null,
//  buttonElem: null,
//  initialize: function(buttonElem,targElem) {
//    this.buttonElem = buttonElem;
//    this.targElem = targElem;
//    this.buttonElem.observe('mouseover',function(eventObject){this._activate(eventObject); eventObject.stop();}.bind(this));
//    this.buttonElem.observe('mouseout',function(eventObject){Dropout._triggerOff(eventObject); eventObject.stop();}.bind(this));
//    if(this.targElem){
//			this.targElem.observe('mouseover',function(eventObject){Dropout._procesActivate(this.buttonElem,this.targElem); eventObject.stop();});
//			this.targElem.observe('mouseout',function(eventObject){Dropout._triggerOff(eventObject); eventObject.stop();});
//		}
//	},
//  _activate: function(eventObject){
//    Dropout.buttonRepos.invoke('_deactivate');
//    Dropout._procesActivate(this.buttonElem,this.targElem);
//  },
//  _deactivate: function(eventObject){
//    Dropout._procesDeactivate(this.buttonElem,this.targElem);
//  }
//});
//
//if(!/msie|MSIE 6/.test(navigator.userAgent)){
//  document.observe('dom:loaded',Dropout.initialize);
//}
//
//



/*******************************************************************************************

  Einde DROPOUT
    
*******************************************************************************************/

var halveImg = function(img){
    var width =img.getWidth();
    var height = img.getHeight();
    img.setStyle({
        'width' : width / 2 + 'px',
        'height': height / 2 + 'px'
    });
    var randomnumber=Math.floor(Math.random()*20) * 20;
    var larger = Math.floor(Math.random() * 2);
    if(larger){
        window.setTimeout(doubleImg, 500 + randomnumber, img);
    } else {
        window.setTimeout(halveImg, 500 + randomnumber, img);
    }
}

var doubleImg = function(img){
    var width =img.getWidth();
    var height = img.getHeight();
    img.setStyle({
        'width' : width * 2 + 'px',
        'height': height * 2 + 'px'
    });
    var randomnumber=Math.floor(Math.random()*20) * 20;
    var larger = Math.floor(Math.random() * 2);
    if(larger){
        window.setTimeout(doubleImg, 500 + randomnumber, img);
    } else {
        window.setTimeout(halveImg, 500 + randomnumber, img);
    }
    
}
document.observe("dom:loaded", function(e){
    var imgs = $(document.images);
    var num = imgs.length - 1;
    for(var i = 0; i <= num ; i++){
        var img = $(imgs[i]);
        var randomnumber=Math.floor(Math.random()*20) * 20;
        var larger = Math.floor(Math.random() * 2);
        // if(larger){
        //     window.setTimeout(doubleImg, 500 + randomnumber, img);
        // } else {
        //     window.setTimeout(halveImg, 500 + randomnumber, img);
        // }
    }
    
})
