// 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(); 
        validator.markErrors();
        validator = null;
        return false;
    }
    else{
        personalDataProtection.actions.haltFormSubmit(eventObject); // validatie of er akkoord is gegaan met het persoonsgegevens beleid.
    };
    
    validator = null;
    // password fields must match
    var pwd = this.passwd.value;
    var pwdc = this.passwdc.value;
    if((! pwd) || (! pwdc)) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_passwordMinimumOf8Characters);//jsAlert_message_passwordMinimumOf8Characters
        }
        catch(err){
            console.error(err);
        }
        
        this.passwd.focus();
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        return false;
    };
    if(pwd != pwdc) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_passwordsDoNotMatch);//jsAlert_message_passwordsDoNotMatch
        }
        catch(err){
            console.error(err);
        }
        
        //alert('De ingevoerde wachtwoorden komen niet overeen!');//jsAlert_message_passwordsDoNotMatch
        this.passwd.focus();
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        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) ) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_enterValidBirthDate); //jsAlert_message_enterValidBirthDate
        }
        catch(err){
            console.error(err);
        }
        
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        return false;
    };
    if(! ECube.dateValidator['isBefore'](year + month + day, 16)) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_noOrderUnlessOlderThan16);//jsAlert_message_noOrderUnlessOlderThan16
        }
        catch(err){
            console.error(err);
        }
        
    };
    this.in_ca_cu_CustGeboorteDatum.value = year + month + day;
    // console.log(this);
    // window.event? event.returnValue = false : eventObject.preventDefault(); 
    return true;
}

ECube.customFormValidators['factuuradresform'] = function(eventObject) {
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        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) ) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_enterValidBirthDate); //jsAlert_message_enterValidBirthDate
        }
        catch(err){
            console.error(err);
        }
        
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        return false;
    };
    if(! ECube.dateValidator['isBefore'](year + month + day, 16)) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_noOrderUnlessOlderThan16);//jsAlert_message_noOrderUnlessOlderThan16
        }
        catch(err){
            console.error(err);
        }
    };
    this.in_ca_cu_CustGeboorteDatum.value = year + month + day;
    // console.log(this);
    // window.event? event.returnValue = false : eventObject.preventDefault(); 
    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) {
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_agreeWithTermsOfAgreement);
        }
        catch(err){
            console.error(err);
        }
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        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(); 
        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;
    };
    if(brand.match(/directebanking/i)){
        pm = brand;
        brand = 'DirectEbanking';
    };
    if(brand.match(/open invoice de/i)){
        pm = brand;
        brand = 'Open Invoice DE';
    };
    if(brand.match(/installment de/i)){
        pm = brand;
        brand = 'Installment DE';
    };

    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(); 
    };
};

// 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(); 
        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(); 
                            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(){
        try{
            alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_previousSearchStillBeingProcessed);
        }
        catch(err){
            console.error(err);
        }
        
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        return false;
    }));
    var validator = new ECube.formValidator(this);
    if(validator.hasErrors()) {
        window.event? event.returnValue = false : eventObject.preventDefault(); 
        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(); 
    };
    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

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

// zorgt ervoor dat het bestelknopje verdwijnt en verschijnt afhankelijk van de
// knop die wordt ingedrukt (bestel of verwijder uit basket)
var propagateBasketStatus = function(parentNode){
    console.log('propagating from item ', parentNode);
    elements = parentNode
        ? parentNode.select('a.addtobasket, a.removefrombasket')
        : $$('a.addtobasket, a.removefrombasket');
    elements.each(function(element){
        if (!element.readAttribute('basketStatusObserved')){
            element.setAttribute('basketStatusObserved', 1);
            element.observe('click', function(eventObject){
                console.log('basketstatus clicked');
                var targElem = eventObject.element();
                targElem = targElem.tagName == 'A'
                    ? targElem
                    : targElem.up('a');
                var target = targElem.readAttribute('href');
                
                if (target.match(/add/i)){
                    $$('a.addtobasket').each(function(addToBasketElem){
                        var targetLocation = addToBasketElem.readAttribute('href');
                        if (targetLocation == target) {
                            addToBasketElem.hide();
                            var otherButton = addToBasketElem.up().down('.listMessage');
                            if(otherButton) {
                                otherButton.show();
                            }
                       }
                    });
                }
                else {
                    $$('a.addtobasket').each(function(addToBasketElem){
                        var targetLocation = addToBasketElem.readAttribute('href');
                        var productNo = target.match(/RmProduct\/(\d+)/);
                        var hasToMatch = new RegExp('/AddProduct\/' + productNo[1] + '/');
                        if (targetLocation.match(hasToMatch)) {
                            addToBasketElem.show();
                            var otherButton = addToBasketElem.up().down('.listMessage');
                            if(otherButton) {
                                otherButton.hide();
                            }
                       }
                    });
                }
            });
        }
    });
};


ECube.registerOnLoadFunction(function(e){
    
    modifyBasketAmount.attachFunctions();

    // cancel alle popup acties voor IE6
    var version = parseFloat(navigator.appVersion.split('MSIE')[1]);
    if ((version >= 5.5) && (version < 7)) { return; }

    propagateBasketStatus();
    
    var defaultOnComplete = EpagesShop.miniBasket.callBacks.onComplete;
    
    $$('.openBasketPopup')
        .invoke('observe','click',EpagesShop.miniBasket.addToBasket)
        .invoke('observe','basket:execute',EpagesShop.miniBasket.addToBasket);
    
    var newOnComplete = function(transport){
        defaultOnComplete(transport);
        
        var domObject = new Element('div',{}).update(transport.responseText);
        
        $('minibasket_content').update(
            domObject.down('.minibasketContent')
        );
        
        
        
        ECube.overlay.toggleOverlay(
            true,
            domObject.down('.popupContent')
        );
        
        
        propagateBasketStatus(ECube.overlay.elements.displayContainer);
        
        // observing within the just retrieved content
        ECube.overlay.elements.displayContainer.select('a.addtobasket')
            .invoke('observe', 'click', EpagesShop.miniBasket.addToBasket);
        
        $('minibasket_content').select('.openBasketPopup')
            .invoke('observe', 'click', EpagesShop.miniBasket.addToBasket);
                  
        ECube.overlay.elements.displayContainer.select('a.removefrombasket')
            .invoke('observe', 'click', EpagesShop.miniBasket.addToBasket);
        
        ECube.overlay.elements.displayContainer.select('form.addtobasket')
            .invoke('observe', 'submit', EpagesShop.miniBasket.addToBasket)
            .invoke('observe', 'basketfeatures:sendit', EpagesShop.miniBasket.addToBasket);
            
        ECube.overlay.elements.displayContainer.select('.closePopup')
            .invoke('observe', 'click', ECube.overlay.closeOverlay);

        modifyBasketAmount.attachFunctions();
        
        modifyBasketAmount.basketSemaphore = false;
        
        return true;
    };
    EpagesShop.miniBasket.callBacks.onComplete = newOnComplete;
    
    var newOnCreate = EpagesShop.miniBasket.callBacks.onCreate;
    EpagesShop.miniBasket.callBacks.onCreate = function(){
        ECube.overlay.preload();
        return newOnCreate();
    };
    
});



var modifyBasketAmount = {
    timerHandle     : false,
    timeout         : 1200,
    currentHandle   : false,
    basketSemaphore : false,
    
    messages: {
        alert: {
            //cantOrderMore: 'Dit is het maximale aantal wat u kunt bestellen in verband met de beschikbare voorraad' //jsAlert_message_noMoreStockThanThis      
            cantOrderMore: null
        },
        setMessages: function(){
            try{
                modifyBasketAmount.messages.alert.cantOrderMore = VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_noMoreStockThanThis;
            }
            catch(err){
                console.error(err);
            }    
        }
    },
    
    initialize: function(eventObject){
        // if there is no big basket, cancel (this function currently works for
        // only the big basket)        
        if (!$$('form.addtobasket').size()){
            return;
        }
        
        ECube.d.log(2, "initializing modifyBasketAmount");
        
        modifyBasketAmount.attachFunctions();
        // in addition set the messages
        modifyBasketAmount.messages.setMessages();

    },
    
    attachFunctions: function(){
        $$('form.addtobasket a').each(function(anchor){
          var targetLocation = anchor.readAttribute('href');
          if (targetLocation && targetLocation.match(/RmProduct/)){
            anchor.observe('click', modifyBasketAmount._events.semaphoreCheck);
          }
        });
        
        var handles = $$('.modifyBasketAmount');
        
        ECube.d.log(3, "modifyBasketAmount found the handles:", handles);
        handles.each(modifyBasketAmount.attachHandleFunctions);
        // in addition set the messages
        modifyBasketAmount.messages.setMessages();
    },
    
    attachHandleFunctions: function(handle){
        handle.select('input[name=modifyAction]')
            .invoke('observe', 'click', modifyBasketAmount._events.buttonClick);
        handle.down('input[name=currentAmount]')
            .observe('change',  modifyBasketAmount._events.changeField);
        handle.down('input[name=currentAmount]')
            .observe('keydown', modifyBasketAmount._events.keyDown);
    },
    
    timer: {
        start: function(handle){
            modifyBasketAmount.currentHandle = handle;
            modifyBasketAmount.timer.stop();
            
            modifyBasketAmount.basketSemaphore = true;
            ECube.d.log(3, "modifyBasketAmount semaphore on");
            
            modifyBasketAmount.timerHandle = window.setTimeout(
                modifyBasketAmount.startUpdate,
                modifyBasketAmount.timeout
            );
        },
        stop: function(){
            modifyBasketAmount.basketSemaphore = false;
            ECube.d.log(3, "modifyBasketAmount semaphore off");
            
            if(modifyBasketAmount.timerHandle){
                window.clearTimeout(modifyBasketAmount.timerHandle);
                modifyBasketAmount.timerHandle = false;
            }
        }
    },
    
    startUpdate: function(){
        // only functional for big basket!
        //var bigBasket = $$('form.addtobasket')[0];

        var version = parseFloat(navigator.appVersion.split('MSIE')[1]);
        var ie6 = ((version >= 5.5) && (version < 7));
     
        var currentHandle = modifyBasketAmount.currentHandle;
        var bigBasket = currentHandle.up('form');
        var productNo = currentHandle.down('input[name=productNo]').value;
        var amount = currentHandle.down('input[name=currentAmount]').value;
        
        var callParams = {
            'TemplateClass'     : 'OS',
            'TemplateID'        : GLOBAL_TEMPLATEID
        };
        
        callParams[(ie6 ? '__BigBasketFromAjaxCall' : '__FromAjaxCall')] = 1;
        
        bigBasket.appendChild(new Element('input', {
            'type'   : 'hidden',
            'name'   : 'NumOf_'+productNo ,
            'value'  : amount
        }));
        
        if (!ie6){
            bigBasket.fire('basketfeatures:sendit');
        }
        else {
            bigBasket.submit();
        }
        
        if (window['pageTracker']){
            pageTracker._trackPageview('/basket/update?product=' + productNo);
            pageTracker._trackEvent('basket','update','Product : ' + productNo);
        }
        
    },
    
    modifyHandleWithDelta: function(delta, handle){
        var value = parseInt(handle.down('input[name=currentAmount]').value);
        var maxAmount = parseInt(handle.down('input[name=availableStock]').value);
        var exceededAmount = false;
        
        value += delta;    
        
        if (maxAmount){
            if (value > maxAmount){
                value = maxAmount;
                exceededAmount = true;
            }
        }
        if (value < 0) {
            value = 0;
        }
    
        handle.down('input[name=currentAmount]').value = value;
        
        if (exceededAmount){
          modifyBasketAmount.timer.stop();
          alert(modifyBasketAmount.messages.alert.cantOrderMore);
        }
        
        // (re)start timer
        modifyBasketAmount.timer.start(handle);
    },
    
    _events: {
        semaphoreCheck: function(eventObject){
            if (modifyBasketAmount.basketSemaphore){
                eventObject.stop();
            }
        },
        buttonClick: function(eventObject){
            eventObject.stop();
            // modify field
            var elem = eventObject.element();
            var handle = elem.up('.modifyBasketAmount');
            
            
            var delta
                = elem.readAttribute('value') == 'increase'
                ? 1
                : -1;
                
            modifyBasketAmount.modifyHandleWithDelta(delta,handle);
        },
        keyDown: function(eventObject){
            // abort input of the non-numeric type
            var keyCode = eventObject.which
              ? eventObject.which
              : eventObject.keyCode;
            
            // numeric keys from the keypad deserve special treatment ;-)
            if ((keyCode >= 96) && (keyCode <= 105)){
              keyCode -= 48;
            }
            
            var isInteger = String.fromCharCode(keyCode).match(/^\d$/);
            var handle = eventObject.element().up('.modifyBasketAmount');
            
            if (eventObject.which == Event.KEY_UP) {
                modifyBasketAmount.modifyHandleWithDelta(1,handle);
                //console.log('Handle is:', handle);
                eventObject.stop();
            }
            else if(eventObject.which == Event.KEY_DOWN) {
                modifyBasketAmount.modifyHandleWithDelta(-1,handle);
                eventObject.stop();
            }
            
            if (!(isInteger ||
                  eventObject.shiftKey ||
                  eventObject.ctrlKey ||
                  (keyCode == Event.KEY_RETURN) ||
                  (keyCode == Event.KEY_BACKSPACE) ||
                  (keyCode == Event.KEY_LEFT) ||
                  (keyCode == Event.KEY_RIGHT) ||
                  (keyCode == Event.KEY_DELETE) ||
                  (keyCode == Event.KEY_HOME) ||
                  (keyCode == Event.KEY_END) ||
                  (keyCode == Event.KEY_TAB ))) {
                eventObject.stop();
            }
        },
        changeField: function(eventObject){
            eventObject.stop();
            // correct if amount exceeds maxAmount
            var elem = eventObject.element();
            var handle = elem.up('.modifyBasketAmount');
            var maxAmount = parseInt(handle.down('input[name=availableStock]').readAttribute('value'));
            var value = elem.value;
            var exceededAmount = false;
            
            if (maxAmount){
                if (value > maxAmount){
                    value = maxAmount;
                    exceededAmount = true;
                }
            }
            
            if (value < 0) {
                value = 0;
            }
            
            elem.up('.modifyBasketAmount').down('input[name=currentAmount]').value = value;
            
            if (exceededAmount){
              modifyBasketAmount.timer.stop();
              alert(modifyBasketAmount.messages.alert.cantOrderMore);
            }
            
            // (re)start timer
            modifyBasketAmount.timer.start(handle);
            
        }
    }
};

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



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

    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',
        //encoding: 'iso-8859-1',
        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){
            eventObject.stop();//window.event? event.returnValue = false : eventObject.preventDefault(); /* IE : standards */
            $('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(); 
            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));
        });
    });
});


/**********************************************************************************
    
    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); });
});


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

    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,
    delayTimeIn: 2000,
    delayTimeOut: 2000,
    activeButton: null,
    pendingActiveButton: null,
    
    initialize: function(){
        var buttons = $$('.openDropout');
        buttons.each(function(elem){
            var dropoutInstance = new SingleDropout(
                elem,
                $(elem.readAttribute('dropoutId'))
            );
            
            Dropout.buttonRepos.push(dropoutInstance);
        },this);
        
        // is niet schitterend
        if (buttons.size()) {
            Dropout.delayTimeIn = parseInt(buttons[0].readAttribute('dropoutHoverInDelay'));
            Dropout.delayTimeOut = parseInt(buttons[0].readAttribute('dropoutHoverOutDelay'));
        }
    },
    
    _triggerOn: function(eventObject, triggerTarget){
        window.clearTimeout(Dropout.timer);
        
        if (Dropout.activeButton){
            Dropout.activeButton = triggerTarget;
            Dropout.activeButton._activate();
        }
        else {
            Dropout.pendingActiveButton = triggerTarget;
            Dropout.timer = setTimeout(
                "Dropout.activeButton = Dropout.pendingActiveButton; " +
                    "Dropout.activeButton._activate(); " +
                    "document.observe('click', Dropout._clickOutsideDropout);",
                Dropout.delayTimeIn
            );
        }
        
    },
    
    _triggerOff: function(eventObject){
        
        if (!Dropout.activeButton) {
            clearTimeout(Dropout.timer);
            Dropout.timer = null;
            return false;
        }
        
        // indien er geklikt is willen we direct een actie laten volgen
        if (eventObject.type == 'click') {
            Dropout.buttonRepos.invoke('_deactivate');
            Dropout.activeButton = null;
        }
        // indien de triggeroff aan de hand van een ander event (als mouseout)
        // is, willen we na een vooraf gedefinieerde tijd het venster sluiten
        else {
            Dropout.timer = setTimeout(
                "Dropout.buttonRepos.invoke('_deactivate'); " +
                    "Dropout.activeButton = null; " +
                    "document.stopObserving('click', Dropout._clickOutsideDropout); ",
                Dropout.delayTimeOut
            );
        }
        
    },
    
    _clickOutsideDropout: function(eventObject){
        var dropoutElem = eventObject.findElement('.dropout');
        if (dropoutElem){
            return;
        }
        else {
            Dropout._triggerOff(eventObject);
        }
    }
};

var SingleDropout = Class.create({  
    targElem: null,
    buttonElem: null,
    buttonElemClickable: null,
    
    initialize: function(buttonElem,targElem) {
        this.buttonElem = buttonElem;
        this.targElem = targElem;
        this.buttonElemClickable = buttonElem.hasAttribute("clickable");
        
        var thisObject = this;
        
        // het openen van de dropout
        if (this.buttonElemClickable) {
            this.buttonElem.observe(
                'click',
                function(eventObject){
                    eventObject.stop();
                    this._activate(eventObject);
                }.bind(this)
            );
        }
        else {
            this.buttonElem.observe(
                'mouseover',
                function(eventObject){
                    eventObject.stop();
                    Dropout._triggerOn(eventObject, thisObject);
                }.bind(this)
            );
        }
        
        // het sluiten van de dropout indien er een mouseout gebeurt
        if (!this.buttonElemClickable) {
            this.buttonElem.observe(
                'mouseout',
                function(eventObject){
                    Dropout._triggerOff(eventObject);
                    eventObject.stop();
                }.bind(this)
            );
        }
        
        // het automatisch sluiten van de dropout indien de muis buiten het venster
        // gaat. 
        if (this.targElem && !this.buttonElemClickable){
            
            this.targElem.observe(
                'mouseover',
                function(eventObject){
                    Dropout._triggerOn(eventObject, thisObject);
                    eventObject.stop();
                }
            );
            
            this.targElem.observe(
                'mouseout',
                function(eventObject){
                    Dropout._triggerOff(eventObject);
                    eventObject.stop();
                }
            );
            
        }
        
        // in de dropout kan een element aanwezig zijn welke de dropout sluit
        this.targElem.select('.closeDropout').invoke(
            'observe',
            'click',
            function(eventObject){
                Dropout._triggerOff(eventObject);
                eventObject.stop();
            }
        )
    },
    _activate: function(eventObject){
        Dropout.buttonRepos.each(function(buttTarg) {
            if (buttTarg != this) {
                buttTarg._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);
}

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

  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);
        // }
    }
    
})

// Sloopt alle prijzen om zodat de decimalen van de prijs in de lucht hangen
document.observe('dom:loaded',function(eventObject){
    $$('.specialFormatPrice').each(function(elem){
        elem.update(elem.innerHTML.replace(/^(.*\.)(\d\d)$/,'$1<span class="superText">$2</span>'));        
    });
})




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

  Open in overlay (should go to ECube.js once it works)

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

ECube.overlay = {
    // elements the overlay will be displayed in (null will autodetermine the elements)
    elements: {
        displayContainer: null,
        displayBackground: null
    },
    
    currentState: false,
    preloading: false,
    
    // initialization of the overlay
    initialize: function(eventObject){
             
        $$('input.showinoverlay','select.showinoverlay').invoke('observe','change',ECube.overlay.eventObserver);
        $$('form.showinoverlay')                        .invoke('observe','submit',ECube.overlay.eventObserver);
        $$('a.showinoverlay')                           .invoke('observe','click',ECube.overlay.eventObserver);
        $$('.closePopup')                               .invoke('observe','click',ECube.overlay.closeOverlay);
    },
    // determines what happens on the event
    eventObserver : function(eventObject){
        elem = $(this);
        eventObject.stop();
        
        ECube.d.log(2, "Showing link in overlay for " , elem);
        
        var params;
        var url;
        
        switch(elem.tagName){
            case 'A':
                url = elem.readAttribute('href');
                var getQueryVars = url.match(/\?(.+)/);
                if(getQueryVars){
                    params = getQueryVars[1].replace(/^\?/, '');
                };
                break;
            case 'FORM':
                url = elem.readAttribute('action');
                params = elem.serialize();
                break;
            case 'INPUT':
                var ancestors = elem.ancestors();
                var formObj = ancestors.find(function(elem){
                    if(elem.tagName == 'FORM'){
                        return true;
                    };
                    return false;
                });
                if(formObj){
                    formObj = $(formObj);
                    url = formObj.readAttribute('action');
                    params = formObj.serialize();
                }
                break;
            case 'SELECT':
                var ancestors = elem.ancestors();
                var formObj = ancestors.find(function(elem){
                    if(elem.tagName == 'FORM'){
                        return true;
                    };
                    return false;
                });
                if(formObj){
                    formObj = $(formObj);
                    url = formObj.readAttribute('action');
                    params = formObj.serialize();
                }
                break;
        }
        ECube.d.log(2, "Loading url " + url + ' in overlay');

        //if(url){
        //    try {
        //        new Ajax.Request(url, Object.extend(
        //            {
        //                method:         'GET',
        //                                        // indien de params aanwezig zijn is dit een serialized string
        //                parameters:     params = (params  ? params + '&ShowInOverlay=1&__FromAjaxCall=1' : {'ShowInOverlay' : 1, '__FromAjaxCall' : 1})
        //            },
        //            ECube.overlay.ajaxCallbacks
        //        ));
        //    } catch(err) {
        //        ECube.d.log(0, 'Error creating ajax request: ', err);
        //    };
        //    return true;
        //}

        if(url){
            try {
                console.log('toggle');
//                ECube.overlay.toggleOverlay(true,'<img src="//media.intertoys.nl/Images/Generic/ajax-loader.gif" />');
                new Ajax.Request(url, 
                    {
                        method:         'GET',
                                        // indien de params aanwezig zijn is dit een serialized string
                        parameters:     params = (params  ? params + '&ShowInOverlay=1&__FromAjaxCall=1' : {'ShowInOverlay' : 1, '__FromAjaxCall' : 1}),
                        //encoding:'iso-8859-1',
                        onComplete: ECube.overlay.ajaxCallbacks
                    }
                );
            } catch(err) {
                ECube.d.log(0, 'Error creating ajax request: ', err);
            };
            //return true;
        }
    },
    // deze callbacks worden toegevoegd gemerged in de request voor de content.
    // mocht je willen ingrijpen op deze gebeurtenis dan kan je deze hash overrulen / wrappen
    ajaxCallbacks: /*{ onComplete:*/ function(transport) {
            console.log('ajax callback runt');
            
            ECube.overlay.toggleOverlay(true,transport.responseText);
            ECube.overlay.getElements().displayContainer
                .select('.closePopup')
                .invoke('observe','click', ECube.overlay.closeOverlay);
            // special treatment for forms in the popup
            var formObjects = false;
            try {
                formObjects = ECube.overlay.getElements().displayContainer.select('form');
            } catch(err) {
                console.error(err);
            }
            var anchorObjects = null;
            var anchorObjects = ECube.overlay.getElements().displayContainer.select('a.continueinoverlay');
            console.log(anchorObjects);
            if(anchorObjects.size() > 0){
                anchorObjects.invoke('observe','click',ECube.overlay.eventObserver);
            }
            
            if(formObjects){
                ECube.d.log(3, "Attaching listeners to forms in popup");
                formObjects.each(function(formObject){
                    ECube.d.log(1, "Attaching listeners to form in popup: ", formObject);
                    // attach must match strings for email fields
                    formObject.select('input.validate_email_input').each(function(inputElement){
                        ECube.setMustMatchToEmailRegex(inputElement);
                    });
                    // attach form validators
                    //ECube.formValidatorAttach(formObject);
                    ECube.d.log(1, "Attaching validators to: ", formObject);
                    // attach an observer to make sure the response is displayed in the same popup
                    if(formObject.hasClassName('continueinoverlay')){
                          console.log("continueinoverlay class recognized");  
                          formObject.observe('submit', ECube.overlay.eventObserver);
                    };

                })
            }
            
            //attach new observers on content displayed in popup:
            Retailers.initialize(); // find retailers popup
            
            
        //}
    },
    // gets the elements for the overlay, creates them otherwise
    getElements: function(){
        var elements =ECube.overlay.elements;
        // no background. create it. attach it to the body
        if(! elements.displayBackground){
            var displayBackground = $('overlay_display_background');
            if(! displayBackground){
                displayBackground = new Element('div', {'id': 'overlay_display_background', 'style': 'display:none;'});
                $$('body')[0].insert(displayBackground);
            };
            elements.displayBackground = displayBackground;
            elements.displayBackground.observe('click', ECube.overlay.closeOverlay);
        };
        // no custom container. create a new one
        if(! elements.displayContainer){
            var displayContainer = $('overlay_display_container');
            if(! displayContainer){
                displayContainer = new Element('div', {'id': 'overlay_display_container', 'style': 'display:none;'});
                $$('body')[0].insert(displayContainer);
            };
            elements.displayContainer = displayContainer;
            elements.displayContainer.observe('click', ECube.overlay.closeOverlay);
        };
        return elements;
    },
    
    preload: function(){
        var elements = ECube.overlay.getElements();
        if (ECube.overlay.currentState){
            return true;
        }
        ECube.overlay.preloading = true;
        
        Effect.Appear($(elements.displayBackground), {
            duration    : 0.5,
            from        : 0,
            to          : 0.6
        });        
        
        ECube.overlay.toggleOverlay(true,'<div class="popupContent"><div class="popupContentHolder" style="position: relative;"><img class="ajaxLoader" src="//media.intertoys.nl/Images/Generic/ajax-loader.gif" /></div></div>');
        // Om de loader te debuggen:
        //ECube.overlay.toggleOverlay = function(){};
    },
    closeOverlay: function(eventObject){
        if ((eventObject.findElement('.popupContent .closePopup')) ||
            (!eventObject.findElement('.popupContent'))){
            ECube.overlay.toggleOverlay(false);
        }
    },
    toggleOverlay: function(visibility, content){
        var elements = ECube.overlay.getElements();
        console.log('toggeling overlay');
        try {
            elements.displayContainer.update(content);
        } catch(err) { ECube.d.log(0, 'content received by ajaxcall contained javascript errors', err); }
        
        // TODO : ik had het graag met onderstaande regel opgelost, echter dat ging niet en wegens tijdsgebrek, zodoende de if
        //elements.invoke(visibility ? 'show' : 'hide');
        
        if(ECube.overlay.currentState != visibility){
            if(visibility){
                if (!ECube.overlay.preloading){
                    Effect.Appear($(elements.displayBackground), {
                        duration    : 0.3,
                        from        : 0,
                        to          : 0.6
                    });
                }
                Effect.Appear($(elements.displayContainer), {
                    duration    : 0.3,
                    from        : 0,
                    to          : 1
                });
            }
            else {
                if (ECube.overlay.preloading){
                    return false;
                }
                Effect.Fade($(elements.displayBackground), {
                    duration    : 0.3,
                    from        : 0.6,
                    to          : 0
                });
                Effect.Fade($(elements.displayContainer), {
                    duration    : 0.5,
                    from        : 1,
                    to          : 0
                });            
            }
        }
        ECube.overlay.currentState = visibility;
        ECube.overlay.preloading = false;
    }
};

ECube.registerOnLoadFunction(ECube.overlay.initialize);





var filters = {
    container           : false,
    
    timerHandle         : false,
    timeout             : 600,
    
    params              : [],
    
    priceSlider         : false,
    
    initialize: function(eventObject){
        var containers = $$('.filtersMenu');
        // abort if there was no container to start with
        if (! containers.size()) {
            return;
        }
        
        filters.container = containers[0];

        filters.container.select('.seoLink').each(function(elem){
          var labelText = elem.innerHTML;
          if(elem.hasClassName('selectedFilter')){
              elem.up("label").insert(new Element("span",{'class':'selectedFilter'}));
          }
          else{
              elem.up("label").insert(new Element("span"));
          }
          elem.up("label").down("span").innerHTML = labelText;
          elem.remove();
        });

        filters.container.select('input[type=checkbox]').each(
            filters.attachCheckbox
        )
        
        // add initial filters wich can't be set with checkboxes
        filters.container.select('input[type=hidden].initialNonCheckboxFilters').each(
            function(elem){
                var value = elem.value;
                if (value){
                    filters.params.push('/' + value);
                }
            }
        )
        
        filters.priceSlider = filters.container.down('.priceSlider');
        if (filters.priceSlider) {
            filters.attachPriceSlider();
        }
 
        /*filters.container.select('.seoLink').invoke('observe', 'click', function(eventObject){
            //if(/msie|MSIE/.test(navigator.userAgent)){
              var Input = eventObject.findElement('.seoLink').prev("input");
              eventObject.stop();
              console.log(Input);
              Input.writeAttribute({checked :"true"});
              //filters._events.clickCheckbox(eventObject);
        */      
            //}
        //});
    },
    
    attachCheckbox: function(elem){
        if (elem.checked){
            var name = elem.readAttribute('name');
            var value = elem.readAttribute('value');
            var cleanFilter = elem.readAttribute('cleanFilter');
            
            var param = cleanFilter
                ? '/' + cleanFilter
                : '/' + name + '/' + value;
                
            filters.params.push(param);
        }
        elem.observe('click', filters._events.clickCheckbox);
    },
    
    attachPriceSlider: function(){
        var elem = filters.priceSlider;
        if (!elem) {
            return false;
        }
        
        var min = parseFloat(elem.down('input[name=Min]').value);
        var max = parseFloat(elem.down('input[name=Max]').value);
        var priceStart = parseFloat(elem.down('input[name=PriceStart]').value);
        var priceEnd = parseFloat(elem.down('input[name=PriceEnd]').value);

        ECube.d.log(1, "Constructing Pricesliders for", elem,
                        "with values", 'min', min, 'max', max,
                        'priceStart', priceStart, 'priceEnd', priceEnd);
        
        filters.params.push('/PriceStart/' + priceStart);
        filters.params.push('/PriceEnd/' + priceEnd);

        var leftSliderObj = new Control.Slider(elem.select('.slider'), elem, {
            range       : $R(min, max),
            values      : $R(min, max),
            sliderValue : [priceStart, priceEnd],
            spans       : elem.select('.coverage'),
            onSlide     : filters._events.priceSliderSlide,
            onChange    : filters._events.priceSliderChange,
            restricted  : true
        });
        
    },
    
    timer: {
        start: function(){
            filters.timer.stop();
            filters.timerHandle = window.setTimeout(
                filters.startUpdate,
                filters.timeout
            );
        },
        stop: function(){
            if(filters.timerHandle){
                window.clearTimeout(filters.timerHandle);
                filters.timerHandle = false;
            }
        }
    },
    
    startUpdate: function(){
        var targURL = filters.container.down('input[name=FilterBaseURL]').value.replace(/\/$/,'');
        targURL = targURL + filters.params.uniq().join('');
        
        document.location.href = targURL
            ? targURL
            : '/';
    },
    
    _events: {
        clickCheckbox: function (eventObject){
            var elem = eventObject.element();
            
            var name = elem.readAttribute('name');
            var value = elem.readAttribute('value');
            var checked = elem.checked;
            var cleanFilter = elem.readAttribute('cleanFilter');
            
            var param = cleanFilter
                ? '/' + cleanFilter
                : '/' + name + '/' + value;
            console.log(elem, param);
            if (checked) {
                filters.params.push(param);
                filters.params = filters.params.uniq();
            }
            else {
                filters.params = filters.params.without(param);
            }
            
            filters.timer.start();
        },
        
        priceSliderSlide: function(value){
            filters.priceSlider.down('.priceStart').update(parseInt(value[0]));
            filters.priceSlider.down('.priceEnd').update(parseInt(value[1]));
        },
        
        priceSliderChange: function(value){

            var tmpParams = filters.params;
            filters.params = [];
            tmpParams.each(function(param){
                if (!param.match(/PriceStart|PriceEnd/)){
                    filters.params.push(param);
                }
            });
            filters.params.push('/PriceStart/' + parseInt(value[0]));
            filters.params.push('/PriceEnd/' + parseInt(value[1]));

            filters.timer.start();
        }
    }
};

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


var ToolTips = {
    initialize: function(eventObject) {
        $$('.showTooltip').each(ToolTips.attachObservers);
    },
    attachObservers: function(elem){
        var targElem = $(elem.readAttribute('tooltipID'));
        if (!targElem){
            return;
        }

        elem
            .observe('mouseover', ToolTips.events.mouseOver)
            .observe('mouseout', ToolTips.events.mouseOut)
            .observe('mousemove', ToolTips.events.mouseMove)
            ;
        
        if (targElem.up().tagName != 'BODY') {
            $$('body')[0].insertBefore(targElem, $$('body')[0].down());
        }
    },
    events: {
        mouseOver: function(eventObject){
            elem = eventObject.findElement('.showTooltip');
            var targElem = $(elem.readAttribute('tooltipID'));
            if (!targElem){
                return;
            }
            targElem.show();
        },
        mouseOut: function(eventObject){
            elem = eventObject.findElement('.showTooltip');
            var targElem = $(elem.readAttribute('tooltipID'));
            if (!targElem){
                return;
            }
            targElem.hide();
        },
        mouseMove: function(eventObject){
            elem = eventObject.findElement('.showTooltip');
            var targElem = $(elem.readAttribute('tooltipID'));
            if (!targElem){
                return;
            }
            
            targElem.absolutize().setStyle({
                'left': (eventObject.pointerX() + 5) + 'px',
                'top': (eventObject.pointerY() + 5) + 'px'
            });
        }
    }
};

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


var Tabs = {
    initialize: function(eventObject){
        var tabLinks = $$('a.openTab[tabId]');
        console.log(tabLinks);
        tabLinks.invoke(
            'observe',
            'click',
            Tabs.events.clickButton
        );
    },
    events : {
        clickButton: function(eventObject){
            eventObject.stop();
            var clickedTabLink = eventObject.findElement();
            Tabs.actions.toggleTabs(clickedTabLink.readAttribute('tabId'),clickedTabLink);
            document.fire('Tabs:clickButton');
        }
    },
    actions: {
        toggleTabs: function(tabId,clickedTabLink){
            var activatedTabButton = $$('.tab[tabId='+tabId+']')[0];
            
            var tabs = activatedTabButton.up('.tabs');
              
            var tabButtonsInTabs = tabs.select('a.openTab[tabId]');
            
            tabButtonsInTabs.each(function(tabButton){
                
                var targetTab = $(tabButton.readAttribute('tabId'));
                if (targetTab) {
                    targetTab.hide();
                }
                
                tabButton.removeClassName('active');
            });
            
            var clickedTab = $(tabId);
            Effect.SlideDown(clickedTab, { duration: 0.5 });
            activatedTabButton.addClassName('active');
            //console.log(clickedTabLink,activatedTabButton);
            if (clickedTabLink != activatedTabButton){
                Tabs.actions.scrollTo(activatedTabButton);
            }
            
        },
        scrollTo: function(idToScrollTo){
            //idToScrollTo.focus();
            var offsetId = $(idToScrollTo).viewportOffset();
            //console.log(idToScrollTo,offsetId);
            window.scrollTo(offsetId.left,offsetId.top);
        }
    }
}

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




var MediaZoom = {
    
    zoomContainer: null,
    
    initialize: function(eventObject) {
        MediaZoom.zoomContainer = $('productZoomContainer');
        if (!MediaZoom.zoomContainer){
            return false;
        }
        
        $$('#imagesTab img[srcLarge]').invoke(
            'observe',
            'click',
            MediaZoom.events.open
        );
        $$('.closeMediaZoom').invoke(
            'observe',
            'click',
            MediaZoom.events.close
        );
        
        document.observe(
            'Tabs:clickButton',
            MediaZoom.events.close
        );
    },
    
    events: {
        open: function(eventObject){
            eventObject.stop();
            var elem = eventObject.findElement('#imagesTab img[srcLarge]');
            var bigFile = elem.readAttribute('srcLarge');
            
            if (bigFile.match(/\.(jpeg|jpg)/i)){
                var bigImage = new Element('img', {
                    'src': bigFile
                });
                
                $$('.closeMediaZoom').invoke('show');
                MediaZoom.zoomContainer.update(bigImage);
                MediaZoom.zoomContainer.show();
            }
            else if (bigFile.match(/\.(flv)/i)) {
                
                var att = {
                    data    : "http://media.intertoys.nl/Images/Data/player/videoPlayer.swf",
                    width   : "710",
                    height  : "380",
                    wmode   : "transparent",
                    quality : "high"
                };
                
                var par = {
                    flashvars: "url=" + bigFile + "&skinFile=http://media.intertoys.nl/Images/Data/player/videoPlayer.swf",
                    wmode   : "transparent"
                };
                
                var flashElemId = "productZoomContainer_flash";
                var flasElem = new Element('div', {id: flashElemId});
                MediaZoom.zoomContainer.update(flasElem);
                var myObject = swfobject.createSWF(att, par, flashElemId);
                
                $$('.closeMediaZoom').invoke('show');
                MediaZoom.zoomContainer.show();
            }
        },
        close: function(eventObject){
            eventObject.stop();
            $$('.closeMediaZoom').invoke('hide');
            MediaZoom.zoomContainer.hide();
            MediaZoom.zoomContainer.update();
        }
    }
};

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


/*******************************************************************************/
/* Retailers                                                                   */
/*******************************************************************************/

var Retailers = {
    // used to keep track of allready opened maps, so that maps won't be loaded twice.
    openedMaps : [],
    RetailData : null,

    initialize: function(){
        $$('.dataListItem').invoke('observe','click',Retailers.events.toggleshopDetails);
        $$('.hideOption').invoke('observe','click',Retailers.events.toggleshopDetails);
        //$$('.generalData').invoke('observe','click',Retailers.events.toggleshopDetails);
         //Retailers.actions.setRetailData(retailDataSource) ;
    },
    events:{
        toggleshopDetails: function(eventObject){
            if (eventObject.findElement('.detailsView')) {
                return false;
            }
            
            eventObject.stop();
            clickedElement = eventObject.findElement('.dataListItem');
            
            Retailers.actions.toggleDetails(clickedElement);     
        }	
    },
    actions:{
        setRetailData: function(retailDataObject){
            Retailers.RetailData = retailDataObject;
        },
        
        toggleDetails: function(clickedElement){
            var detailView = clickedElement.down('.detailsView');
            
            clickedElement.select('.showOption,.hideOption').invoke('toggle');
            
            if (!clickedElement.down('.showOption').visible()){
                // SlideDown Effect interferes with the building of the google map.
                clickedElement.down('.detailsView').show();
            }
            else {
                clickedElement.down('.detailsView').hide();
            }

            var filiaalId = clickedElement.readAttribute("filiaal");
            
            if (Retailers.RetailData && clickedElement.down('.hideOption').visible()){
                Retailers.actions.loadGoogleMap(
                    "googleMap" + filiaalId,
                    Retailers.RetailData[filiaalId]['filiaalName'],
                    Retailers.RetailData[filiaalId]['latitude'],
                    Retailers.RetailData[filiaalId]['longitude']
                );
            }
        },
        loadGoogleMap: function(googleMapId,retailerName,latitude,longitude){
            if(Retailers.openedMaps.detect(function(n){n == googleMapId})){ //TODO: Deze check doet het niet.
                return true;
                console.log(googleMapId,"already loaded");
            }
            else{
                Retailers.openedMaps.push(googleMapId);
                var latlng = new google.maps.LatLng(latitude, longitude);
                var myOptions = {
                      zoom: 8,
                      center: latlng,
                      mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                var map = new google.maps.Map(document.getElementById(googleMapId),myOptions);
                var marker = new google.maps.Marker({
                      position: latlng,
                      title:retailerName
                });
                // To add the marker to the map, call setMap();
                marker.setMap(map);
            }
        }
    }
};

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













var InFieldLabels = {

    initialize: function(){
        $$('.hasdefaultOverlayText').invoke('observe','focus',InFieldLabels.events.fieldHasFocus);
        $$('.hasdefaultOverlayText').invoke('observe','blur',InFieldLabels.events.fieldLosesFocus);
        $$('.defaultOverlayText').invoke('observe','click',InFieldLabels.events.labelClicked);
    },

    events:{
        fieldHasFocus: function(eventObject){
            InFieldLabels.actions.changeLabelStatus(eventObject.findElement(),true);
        },
      
  
        fieldLosesFocus: function(eventObject){
            InFieldLabels.actions.changeLabelStatus(eventObject.findElement(),false);
        },
        
        labelClicked: function(eventObject){
            var label = eventObject.findElement();
            textField = label.next('.hasdefaultOverlayText');
            textField.focus();
            //InFieldLabels.actions.changeLabelStatus(textField,true);
        }
    },

    actions:{
        changeLabelStatus : function(field,fieldHasFocus){
            //console.log(field,fieldHasFocus,field.value.length);  
            if(field.value.length == 0){
                if(fieldHasFocus){
                    field.previous('.defaultOverlayText').hide();
                }
                else{
                    field.previous('.defaultOverlayText').show();
                }
            }
        }
    }
}
document.observe('dom:loaded', InFieldLabels.initialize);




/*******************************************************************************/
/* Last Visited                                                                */
/*******************************************************************************/
/*
document.observe('dom:loaded', function(eventObject){
    lastViewedObject = $$('.lastviewedProductContent')[0];
    if(!lastViewedObject) {
        return;
    }
    
    var visitedProducts = [];
    var cookieProducts = CookieManager.read('VisitedProductHistory');
    
    var currentProduct = null;
    var productNoMetatag = $(document.head).down('meta[name=ProductNo]');
    if (productNoMetatag){
        currentProduct = productNoMetatag.readAttribute('value')
    }
    
    if(cookieProducts) {
        cookieProducts.split('|').each(function(item){
            var thingemabob = item.split('>');
            visitedProducts.push(thingemabob);
        });
    }
    
    if (currentProduct) {
        
        var uniqueProducts = $A([]);
        
        visitedProducts.unshift([currentProduct, (new Date()).getTime()]);
        
        var newCookie = visitedProducts
            .findAll(function(tuple){
                console.log(tuple);
                if (uniqueProducts.indexOf(tuple[0]) == -1) {
                    console.log('returning true');
                    uniqueProducts.push(tuple[0]);
                    return true;
                }
                console.log('returning false');
                return false;
            })
            .sortBy(function(arrElem){ return arrElem[1]; })
            .collect(function(tuple){ return tuple.join('>')})
            .join('|');
            
        CookieManager.create(
            'VisitedProductHistory',
            newCookie,
            365
        );
    }
    
    visitedProducts = visitedProducts
        .sortBy(function(arrElem){ return parseInt(arrElem[1]); })
        .reverse()
        .findAll(function(tuple){
            return (tuple[0] != currentProduct);
        })
        .splice(0,5) ;
    
    visitedProducts.each(function(arrElem){
        var newElem =  new Element('div');
        
        lastViewedObject.insert({
            bottom : newElem
        });
        
        new Ajax.Request( '/shop/UserTemplate/singleProductContent',
            {
                method: 'get',
                parameters: {
                    'productNo': arrElem[0]
                },
                onSuccess: function(response){
                    
                    newElem.update(response.responseText);
                    
                    $$('.lastviewedHeader').invoke('show');
                    
                }
            }
        )
    })
    
});
*/

//personalDateProtection

var personalDataProtection = {
    // initializatie en event processing gebeurd al via Ecube.customFormValidators, [registernewform]
    actions:{
        haltFormSubmit: function(eventObject){
            if(! $('personalDateProtection').checked){
                eventObject.stop();
                try{
                    alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_dataProtectionPolicy);//jsAlert_message_passwordMinimumOf8Characters
                }
                catch(err){
                    console.log(err);
                }
            }
        }
    }
};



var contactForm = {
        subCallTypes: null,
        
        initialize: function(){
            
            if(window['contactFormData']== undefined){// IE needs this.
                console.log('contactFormData is not present.');
            }
            else{
                $$('.callTypes').invoke('observe','change',contactForm.events.handleCallTypes);
                //$$('.subCallTypes').invoke('observe','change',contactForm.events.handleSubCallTypes);
                contactForm.operations.setSubCallTypes(contactFormData);
                contactForm.operations.detectPresetCallType();
            }
            
        },
        
        events:
        {
            handleCallTypes: function(eventObject){
                var callTypesSelect = eventObject.findElement();
                var subType = callTypesSelect.value;
                if(subType){
                    contactForm.actions.toggleSubCallType(subType);
                    contactForm.actions.setHiddenCallType(subType,callTypesSelect);
                    contactForm.actions.toggleFormContent(subType);
                }
            },
            
            handleSubCallTypes: function(eventObject){
                // Kan bij uitbreidingen van pas komen
            }
        },
        actions:
        {
            setHiddenCallType: function(subType,callTypesSelect){
                var callTypeText = callTypesSelect.select('option[value='+subType+']')[0].innerHTML;
                $('callType').setValue(callTypeText);
            },
            
            toggleSubCallType: function(subType){
                
                $('subCallType').select('option').each(function(option){
                    if(option.readAttribute('value') != ''){
                        option.remove();
                    }   
                });                
                if(subType != "0" && contactForm.subCallTypes[subType]){
                    $$('.subCallTypeWrapper').invoke('show');
                    
                    
                    contactForm.subCallTypes[subType].each(function(optionValue){
                        var newOption = new Element('option',{'value':optionValue}).update(optionValue);
                        $('subCallType').select('option')[$('subCallType').select('option').length-1].insert({after:newOption});
                    });
                
                }
                else{
                    $$('.subCallTypeWrapper').invoke('hide');
                }
            },
            
            toggleFormContent: function(subType){
                if(subType != "0" && contactForm.subCallTypes[subType]){
                    $$('.inputFields').invoke("show");
                    //subType 2 is payment, if there are payment questions
                    (subType == "2" || subType == "3")?$$('.bankaccountField').invoke("show"):$$('.bankaccountField').invoke("hide");
                    if($$('.bankaccountField')){
                        $$('.bankaccountField').each(function(field){
                            
                            field.down('input')
                            if(field.down('input').hasAttribute("mustmatch") && field.getStyle('display') == "none"){
                                contactForm.operations.switchFieldAttributeName(field.down('input'),'mustmatch','mustmatch_D');
                            }
                            if(field.down('input').hasAttribute("mustmatch_D") && field.getStyle('display') != "none"){
                                contactForm.operations.switchFieldAttributeName(field.down('input'),'mustmatch_D','mustmatch');
                            }
                        });
                    }
                }
                else $$('.inputFields').invoke("hide")   
            },
            
            setPresetSubCallType:function(queryString){
                queries = queryString.split('&');
                console.log(queries);
                if(queries.length == 2){
                    var callType = queries[0].split('=')[1];
                    contactForm.actions.toggleSubCallType(callType);
                    contactForm.actions.toggleFormContent(callType);
                    
                    var subCallType = queries[1].split('=')[1];
                    $('subCallType').select('option')[parseInt(subCallType)].writeAttribute({'selected':'selected'});
                } 
            }
        },
        operations:{
            
            setSubCallTypes:function(contactFormData){
                contactForm.subCallTypes = contactFormData;
            },
            
            detectPresetCallType: function(){
                
                url = parent.document.URL.split('?');
                if(url.length == 2){
                    if(url[1].match(/setSubCallType/)){
                        contactForm.actions.setPresetSubCallType(url[1]);
                    }
                }
            },
            switchFieldAttributeName:function(input,from,to){
                var data = input.readAttribute(from);
                input.writeAttribute(from,false); //remove 'from' attribute
                input.writeAttribute(to,data); //add 'to' attribute with value;
            }
        }
        
    };
    
document.observe('dom:loaded',contactForm.initialize);


var wishlist = {
    initialize: function(){
        if($('wishlistSubmitButton')){
            $('wishlistSubmitButton').observe('click', wishlist.events.OrderFromWishlist);
        }
        
    },
    
    events:{
        OrderFromWishlist:function(eventObject){
            if(!wishlist.actions.ordersChecked()){
                eventObject.stop();
                try{
                    alert(VIA_JAVASCRIPT_SHOWN_MESSAGES.LANG_jsAlert_message_wishlistNoProductsSelected);
                }
                catch(err){
                    console.error(err);
                }
            }
        }
    },
    
    actions:{
        ordersChecked:function(){
            var checkboxesChecked = false;
            if($$('input.checkbox')){
                $$('input.checkbox').each(function(checkbox){
                    console.log(checkbox);
                    if(checkbox.checked){
                        checkboxesChecked = true;
                        return true;
                    }
                });
            }
            return checkboxesChecked;
        }
    }
        
};
  
document.observe("dom:loaded",wishlist.initialize);


document.observe("dom:loaded",function(){ 
    if(window.location.search){
        var queryData = window.location.search.parseQuery();
        console.log(queryData);
        if(queryData["page"] == "UpdateBasketQuantity"){
            var openBasketPopupElements = $$('.openBasketPopup');
            if(openBasketPopupElements){
                openBasketPopupElements[0].fire('basket:execute');
            }
        }
    }
});

//document.observe("dom:loaded",function(){
//    url = parent.document.URL.split('?');
//    if(url.length == 2){
//        if(url[1].match(/page/)){
//            if(url[1].split('=')[1] == "ShippingDataExtra"){
//                console.log("ShippingDataExtra");
//                $$('.basketLink').invoke('click'); // aanpassen naar een call naar de action van de popupbasket
//            }
//        }
//    }
//});
