﻿var LOP = {};

(function($) {
    var W = this, D = this.document;
    var jsFolder = '/js/dev/';
    var backURI = '';
    // TODO expand "feature detect" if all is OK for later execution
    if (!D.getElementById || !D.getElementsByTagName || !D.createElement || !D.createTextNode) {
        return;
    }
    $(D.documentElement || 'html').attr('id', 'js');
    
    LOP.scrolls = {};
    
    var popinContainer, closeLinkPopins = '<a href="#" class="close box:id:closePopin" title="' + l10n.generic.close + '"><img alt="" src="/img/common/btn/close.gif" /></a>';
    
    LOP.processHTMLPopins = function(html) {
        if (html.indexOf('popinInner') > -1) {
            return html.replace(/("?popinInner"?[^>]*>)/, '$1' + closeLinkPopins);
        }
        return html;
    };
    
    /*var redirection = function(){
        var UA = navigator.userAgent.toLowerCase();
        if (!((UA.indexOf("iphone")!= -1)||(UA.indexOf("ipod")!= -1))) {
            return;
        }
        else{
            W.location="http://iphone.lorealparis.fr";
        }
    };*/
    
    var thisMovie = function(movieName) {
        if (navigator.appName.indexOf("Microsoft") != -1) {
            if(document.getElementById(movieName)){
                return document.getElementById(movieName);   
            }
            else{
                return window[movieName];
            }
        }
        else {
            return document[movieName];
        }
    }
    
    LOP.stfDatas;
    LOP.stfDatasActions = {
        page: function() {
            return '<ul style="margin:10px 30px; color:#c49f59; list-style:square;"><li>' +
                '<a href="' + location.href + '" target="_blank"><font color="#c49f59" style="color:#c49f59;">' +
                $('h1').text() || l10n.generic.sitename +
                '</font></a>' +
                '</li></ul>';
        },
        newsletter: function() {
            return '<ul style="margin:10px 30px; color:#c49f59; list-style:square;"><li>' +
                '<a href="' + location.protocol + '//' + location.host + l10n.url.homePage + '#popin:newsletter" target="_blank"><font color="#c49f59" style="color:#c49f59;">' +
                l10n.generic.register +
                '</font></a>' +
                '</li></ul>';
        }
    };
    
    var reFieldParentCls = /\b(text|radioGroup|select|checkbox)\b/;
    var getFieldParent = function(field) {
        var t = field.parentNode, target;
        while (t.parentNode) {
            if (reFieldParentCls.test(t.className)) {
                return t;
            }
            t = t.parentNode;
        }
    };
    
    var errorImg = '<img id="%id%" class="error box:id:formError" alt="%msg%" src="/img/common/picto/error.gif" />';
    
    var fieldsTypes = {
        'text': 'single',
        'password': 'single',
        'select-one': 'single',
        'radio': 'group',
        'checkbox': 'single'
    };
    
    var addErrorPicto = {
        single: function(p, img) {
            var t = $('label', p);
            if (t.length == 1) {
                t.prepend(img);
            } else {
                $(p).prepend(img);
            }
        },
        group: function(p, img) {
            var t = $('span.legend', p);
            if (t.length == 1) {
                t.prepend(img);
            } else {
                $(p).prepend(img);
            }
        }
    };
    
    var manageFieldError = function(e, msg) {
        if (e.namespace && e.namespace.length == 2) {
            var type = e.namespace[0], name = e.namespace[1], obj = this[type](name), field;
            if (obj.getElement(0)) {
                if (obj.name.indexOf('birthmonth') > -1 || obj.name.indexOf('birthyear') > -1) {
                    field = this.text('birthday').getElement();
                    name = this.text('birthday').name;
                } else {
                    field = obj.getElement(0);
                }
                if (msg) {
                    addFieldError(field, name, msg);
                } else {
                    removeFieldError(field, name);
                }
            }
            obj = field = null;
        }
    };
    LOP.manageFieldError = manageFieldError;
    
    var addFieldError = function(field, id, msg) {
        var p = getFieldParent(field);
        if (field.name.indexOf('birthmonth') > -1 || field.name.indexOf('birthyear') > -1) {
            p = p.parentNode.getElementsByTagName('label')[0];
        }
        $(p).addClass('error');
        id = id + 'Error';
        var img = $('#' + id);
        if (!img.length) {
            var type = fieldsTypes[field.type];
            if (type) {
                addErrorPicto[type](p, errorImg.replace('%id%', id).replace('%msg%', msg));
            }
        } else {
            img.attr('alt', msg);
        }
    };
    
    var removeFieldError = function(field, id) {
        $('#' + id + 'Error').remove();
        var p = getFieldParent(field);
        $(p).removeClass('error');
    };
    
    var addFormError = function(e, formEvent, msg) {
        $('#' + this.element.id + 'Error').text(msg).css('display', 'block');
    };
    LOP.addFormError = addFormError;
    
    var removeFormError = function(e, formEvent) {
        $('#' + this.element.id + 'Error').css('display', 'none').empty();
    };
    LOP.removeFormError = removeFormError;
    
    BOX.addFormRule('password', /^.{5,}$/);
    
    var managePopins = (function() {
        var popinInnerTop;
        var nodeNames = '/a/abbr/acronym/code/em/img/span/strong/sub/sup/';
        var newsletterField;
        
        var validateEmail = function(field) {
            if (field.isEmpty()) {
                return l10n.errorMsg.required.email;
            } else if (!field.isMatching('email')) {
                return l10n.errorMsg.invalid.email;
            }
        };
        
        var errorEvents = {
            'formError': {
                'fn': addFormError
            },
            'formValid': {
                'fn': removeFormError
            },
            'fieldError': {
                'fn': manageFieldError
            },
            'fieldValid': {
                'fn': manageFieldError
            }
        };
        
        LOP.popinOpeningActions = {
            signIn: function() {
                if ($('#signInFormError').html()) {
                    $('#signInFormError').css('display', 'block');
                }
                BOX.form('signInForm').text('login').setValue();
                BOX.form('signInForm').addValidation(function(form) {
                    form.text('login').mustValidate(validateEmail);
                    
                    form.text('password').mustValidate(function(field) {
                        if (field.isEmpty()) {
                            return l10n.errorMsg.required.pwd;
                        } else if (!field.isMatching('password')) {
                            return l10n.errorMsg.invalid.pwd;
                        }
                    });
                    
                    return l10n.errorMsg.form.plural;
                }, 'p.save').addListeners(errorEvents);
            },
            signOut: function() {
                this.position();
                BOX.form('signOutNewsletterForm').text('propertylogin').setValue();
                BOX.form('signOutNewsletterForm').addValidation(function(form) {
                    form.text('propertylogin').mustValidate(validateEmail);
                    
                    return l10n.errorMsg.form.singular;
                }, 'p.save').addListeners({
                    'formError': {
                        'fn': addFormError
                    },
                    'formValid': {
                        'fn': function(e, formEvent) {
                            formEvent.preventDefault();
                            customerSearch(this, 'propertylogin', 'signOut');
                        }
                    },
                    'fieldError': {
                        'fn': manageFieldError
                    },
                    'fieldValid': {
                        'fn': manageFieldError
                    }
                });
            },
            signOutClubVIP: function() {
                this.position();
            },
            password: function() {
                BOX.form('passwordForm').text('login').setValue();
                BOX.form('passwordForm').addValidation(function(form) {
                    form.text('login').mustValidate(validateEmail);
                    
                    return l10n.errorMsg.form.singular;
                }, 'p.save').addListeners(errorEvents);
            },
            addToBlog: function() {
                $('#pageURL').bind('focus.addToBlog', function() {
                    $(this).select();
                });
            },
            sendToFriend: function() {
                BOX.form('sendToFriendForm').text('fname').setValue();
                BOX.form('sendToFriendForm').text('email').setValue();
                BOX.form('sendToFriendForm').text('stfdatas').setValue(LOP.stfDatas);
                BOX.form('sendToFriendForm').addValidation(function(form) {
                    form.text('fname').mustValidate(function(field) {
                        if (field.isEmpty()) {
                            return l10n.errorMsg.required.lname;
                        }
                    });
                    
                    form.text('email').mustValidate(validateEmail);
                    
                    form.text('FriendLastName').mustValidate(function(field) {
                        if (field.isEmpty()) {
                            return l10n.errorMsg.required.lname;
                        }
                    });
                    
                    form.text('FriendEmail').mustValidate(validateEmail);
                    
                    return l10n.errorMsg.form.plural;
                }, 'p.save').addListeners(errorEvents).addReplacement();
            },
            copyright: function() {
                this.position();
            },
            otherBrands: function() {
                this.position();
            },
            otherBenefits: function() {
                this.position();
            },
            addToBlogStudioSecrets: function() {
                this.position();
                $('#pageCode').bind('focus.addToBlog', function() {
                    $(this).select();
                });
            },
            sendToPhoneStudioSecrets: function() {
                this.position();
                BOX.form('popinSendToPhoneStudioSecrets').addValidation(function(form) {
                    form.text('phoneNumber').mustValidate(function(field) {
                        if (field.isEmpty()) {
                            return l10n.errorMsg.required.look;
                        }
                    });
                    
                    return l10n.errorMsg.form.singular;
                }, 'p.btn').addListeners({
                    'formError': {
                        'fn': addFormError
                    },
                    'formValid': {
                        'fn': function(e, formEvent) {
                            formEvent.preventDefault();
                        }
                    },
                    'fieldError': {
                        'fn': manageFieldError
                    },
                    'fieldValid': {
                        'fn': manageFieldError
                    }
                });
            },
            popinSendToFriendStudioSecrets: function() {
                this.position();
            },
            saveMyLookStudioSecrets: function() {
                this.position();
                BOX.form('popinSaveMyLookStudioSecrets').addValidation(function(form) {
                    form.text('saveMyLook').mustValidate(function(field) {
                        if (field.isEmpty()) {
                            return l10n.errorMsg.required.look;
                        }
                    });
                    
                    return l10n.errorMsg.form.singular;
                }, 'p.btn').addListeners({
                    'formError': {
                        'fn': addFormError
                    },
                    'formValid': {
                        'fn': function(e, formEvent) {
                            formEvent.preventDefault();
                            var callback = $('input[name="callback"]').attr('value');
                            thisMovie('studioSecretsSWF')[callback](BOX.form('popinSaveMyLookStudioSecrets').text('saveMyLook').getValue());
                            LOP.popins.close('saveMyLookStudioSecrets');
                        }
                    },
                    'fieldError': {
                        'fn': manageFieldError
                    },
                    'fieldValid': {
                        'fn': manageFieldError
                    }
                });
            },
            createMyLookStudioSecrets: function() {
                this.position();
                BOX.form('popinSaveMyLookStudioSecrets').addValidation(function(form) {
                    form.text('saveMyLook').mustValidate(function(field) {
                        if (field.isEmpty()) {
                            return l10n.errorMsg.required.look;
                        }
                    });
                    
                    return l10n.errorMsg.form.singular;
                }, 'p.btn').addListeners({
                    'formError': {
                        'fn': addFormError
                    },
                    'formValid': {
                        'fn': function(e, formEvent) {
                            formEvent.preventDefault();
                            var callback = $('input[name="callback"]').attr('value');
                            thisMovie('studioSecretsSWF')[callback](BOX.form('popinSaveMyLookStudioSecrets').text('saveMyLook').getValue());
                            LOP.popins.close('createMyLookStudioSecrets');
                        }
                    },
                    'fieldError': {
                        'fn': manageFieldError
                    },
                    'fieldValid': {
                        'fn': manageFieldError
                    }
                });
            },
            newsletter: function() {
                BOX.form('signNewsletterForm').addValidation(function(form) {
                    form.text('email').mustValidate(validateEmail);
                    
                    form.text('email_conf').mustValidate(function(field) {
                        if (form.text('email').isValid(true)) {
                            var value = form.text('email').getValue();
                            if (!field.isEqualTo(value)) {
                                return l10n.errorMsg.confirm.email;
                            }
                        }
                    });
                    
                    return l10n.errorMsg.form.plural;
                }, 'p.save').addListeners({
                    'formError': {
                        'fn': addFormError
                    },
                    'formValid': {
                        'fn': function(e, formEvent) {
                            formEvent.preventDefault();
                            customerSearch(this, 'email');
                        }
                    },
                    'fieldError': {
                        'fn': manageFieldError
                    },
                    'fieldValid': {
                        'fn': manageFieldError
                    }
                });
            },
			excell10: function() {
					$('#footer').css('display', 'none');
			},
            position: function(id) {
                popinInnerTop = (popinContainer[0].offsetHeight - LOP.popins.currentDOM[0].offsetHeight) / 2;
                LOP.popins.currentDOM.css('top', popinInnerTop + 'px');
            }
        };
        
        LOP.popinClosingActions = {
            signIn: function() {
                LOP.popins.currentDOM.css('top', '-10000px');
                BOX.form('signInForm', true);
            },
            signOut: function() {
                BOX.form('signOutNewsletterForm', true);
            },
            password: function() {
                BOX.form('passwordForm', true);
            },
            addToBlog: function() {
                $('#pageURL').unbind('focus.addToBlog');
            },
            sendToFriend: function() {
                BOX.form('sendToFriendForm', true);
            },
            newsletter: function() {
                BOX.form('signNewsletterForm', true);
            },
            excell10:function() {
                $('#footer').css('display', 'block');
            },
            saveMyLookStudioSecrets: function() {
                BOX.form('popinSaveMyLookStudioSecrets', true);
            },
            createMyLookStudioSecrets: function() {
                BOX.form('popinSaveMyLookStudioSecrets', true);
            }
        };
        
        var open = function(e, id) {
            LOP.coreMask.show('coreMaskPopin', {top: LOP.maskTop + 'px', height: LOP.maskHeight + 'px'});
            popinContainer.css({top: LOP.maskTop + 'px', height: LOP.maskHeight + 'px'});
            if (LOP.popinOpeningActions[id]) {
                LOP.popinOpeningActions[id]();
            }
        };
        
        var close = function(e, id) {
            if (LOP.popinClosingActions[id]) {
                LOP.popinClosingActions[id]();
            }
            LOP.tooltips.close();
            LOP.coreMask.hide();
        };
        
        var openNewsletter = function(url) {
            if (LOP.popins.currentId != 'newsletter') {
                LOP.popins.add({
                    url: url,
                    id: 'newsletter',
                    processHTML: LOP.processHTMLPopins,
                    refresh: true
                });
            }
        };



        var customerSearch = function(form, name, type) {
            type = type || 'signIn';
            if (D.getElementById('mySignedIn')) {
                if (W.__doPostBack && form.submitName) {
                    W.__doPostBack(form.submitName, '');
                }
            } else {
                $.get(l10n.url.customerSearch + '?email=' + form.text(name).getValue(), function(datas) {
                    if (Number(datas)) {
                        LOP.popins.add({
                            url: l10n.url.alreadyMember + '?type=' + type,
                            id: 'alreadyMember',
                            refresh: true,
                            processHTML: LOP.processHTMLPopins
                        });
                    } else if (W.__doPostBack && form.submitName) {
                        W.__doPostBack(form.submitName, '');
                    }
                });
            }
        };
        
        return function(action) {
            LOP.popinContainer = popinContainer = $('#popin');
            LOP.popins = new BOX.Popins({
                insertPoint: popinContainer
            });
            LOP.popins.addListeners({
                'open': {
                    fn: open
                },
                'close': {
                    fn: close
                }
            });
            var openSignIn = (location.href.indexOf('#popin:') == -1 && $('#signInFormError').html()) ? true : false;
            LOP.popins.prepare('#popin', 'div.popinWrapper', l10n.url, LOP.processHTMLPopins);
            if (openSignIn) {
                LOP.popins.add({
                    url: '#popinSignIn',
                    id: 'signIn',
                    refresh: false,
                    processHTML: LOP.processHTMLPopins
                });
                $('#signInFormError').css('display', 'block');
            }
            
            LOP.tooltips.add({
                selector: '#popin:hover',
                ruleNamespace: 'closePopin',
                rule: function(el) {
                    if (el.nodeName.toLowerCase() == 'a') {
                        this.setHTML(el.title).setAttributeCache(el, 'title').setId('toolTipAuto');
                    }
                }
            }, {
                selector: '#popin:hover',
                ruleNamespace: 'formError',
                rule: function(el) {
                    if (el.nodeName.toLowerCase() == 'img') {
                        this.setHTML(el.alt).setAttributeCache(el, 'alt').setId('toolTipError');
                    }
                }
            });
        };
    })();
        
    // display sublevels of the main menu
    var productsMenu = (function() {
        var current;
        
        var closeMenu = function(li, t, keepMask) {
            if (!t) {
                t = $('div.expand', li);
            }
            t.slideUp(100, function() {
                li.removeClass('expanded');
                if (!keepMask) {
                    current = null;
                }
            });
            if (!keepMask) {
                LOP.coreMask.hide();
                if (document.getElementById('homeFlashSWF')) {setTimeout(function() {document.getElementById('homeFlashSWF').playFlash()}, 500);}
            }
            $(D).unbind('keydown.productsMenu').unbind('mousedown.productsMenu');
        };
        
        var openMenu = function(li, t) {
            var homeFlash = document.getElementById('homeFlashSWF');
            if (homeFlash && homeFlash.pauseFlash) {
                homeFlash.pauseFlash();
            }
            if (current && current.length) {
                closeMenu(current, null, true);
            }
            if (LOP.popins) {
                LOP.popins.close();
            }
            current = $(li);
            LOP.coreMask.show('coreMaskMenu', {top: '0', height: LOP.coreHeight + 'px'});
            t.slideDown(300, function() {
                current.addClass('expanded');
                $(D).bind('keydown.productsMenu', function(e) {
                    if (e.which == 27) {
                        closeMenu(li, t);
                    }
                }).bind('mousedown.productsMenu', function(e) {
                    var tg = e.target;
                    while (tg.id != 'productsMenu' && (tg = tg.parentNode));
                    if (!tg || tg.id != 'productsMenu') {
                        closeMenu(li, t);
                    }
                });
            });
        };
        
        var manageMenu = function(e) {
            var t = $('div.expand', this);
            var div = e.target;
            while (div.nodeName.toLowerCase() != 'div' && (div = div.parentNode));
            if (div.id && t.length) {
                var li = $(this);
                if ($(li).hasClass('expanded')) {
                    closeMenu(li, t);
                } else {
                    openMenu(li, t);
                }
                return false;
            }
        };
        
        return function() {
            $('#productsMenu li').click(manageMenu);
        };
    })();
    
    // dropdown languages menu
    var localisationMenu = (function() {
        var closeMenu = function(dd, dl) {
            dl.removeClass('on');
            dd.slideUp(300);
            $(D).unbind('keydown.localisationMenu').unbind('mousedown.localisationMenu');
        };
        
        var openMenu = function(dd, dl) {
            LOP.popins.close();
            dd.slideDown(600, function() {
                dl.addClass('on');
                $(D).bind('keydown.localisationMenu', function(e) {
                    if (e.which == 27) {
                        closeMenu(dd, dl);
                    }
                }).bind('mousedown.localisationMenu', function(e) {
                    var t = e.target;
                    while (t != dl[0] && (t = t.parentNode));
                    if (t != dl[0]) {
                        closeMenu(dd, dl);
                    }
                });
            });
        };
        
        var manageMenu = function(e) {
            var dd = $(this).next();
            var dl = $(this.parentNode);
            if (dl.hasClass('on')) {
                closeMenu(dd, dl);
            } else {
                openMenu(dd, dl);
            }
            return false;
        };
        
        return function() {
            var dt = $('#localisation dt').click(manageMenu);
            if (dt.length) {
                dt[0].innerHTML = '<a href="#">' + dt[0].innerHTML + '</a>';
            }
        };
    })();
    
    // scroll specific execution
    var scrollActions = {
        vertical: function(el, idObj) {
            LOP.scrolls[idObj] = new BOX.SimpleScroll({
                target: el
            });
        },
        horizontal: function(datas) {
            LOP.scrolls[datas.id] = new BOX.SimpleScroll({
                target: datas.node,
                targetScrollBar: datas.scrollTarget,
                from: 'left',
                listeners: {
                    'beforeCompute': {
                        fn: function(e) {
                            var li = $('li', this.sContent);
                            if (datas.visibleOnLine && li.length >= datas.visibleOnLine) {
                                this.sContent.width(Math.ceil(li.length / 2) * datas.itemWidth);
                            } else {
                                this.sContent.width(li.length * datas.itemWidth);
                            }
                            var left = 0;
                            if(datas.scrollOffsetTarget !== null) {
                                left = $(datas.scrollTarget + ' ' + (datas.scrollOffsetTarget || 'h2')).width();
                            }
                            this.sContainer.css({
                                'left': (left + datas.scrollMargin) + 'px',
                                'width': (datas.totalWidth - left - datas.scrollMargin) + 'px'
                            });
                        }
                    }
                }
            });
        },
        filteredProductsList: function(el, id) {
            this.horizontal({
                'node': el,
                'id': id,
                'scrollTarget': '#products',
                'itemWidth': 240,
                'totalWidth': 720,
                'scrollMargin': 10,
                'visibleOnLine': 4
            });
        },
        filteredMediasList: function(el, id) {
            this.horizontal({
                'node': el,
                'id': id,
                'scrollTarget': '#medias',
                'itemWidth': 180,
                'totalWidth': 720,
                'scrollMargin': 10
            });
        },
        diagGroup1List: function(el, id) {
            this.horizontal({
                'node': el,
                'id': id,
                'scrollTarget': '#group1',
                'itemWidth': 240,
                'totalWidth': 720,
                'scrollMargin': 10
            });
        },
        diagGroup2List: function(el, id) {
            this.horizontal({
                'node': el,
                'id': id,
                'scrollTarget': '#group2',
                'itemWidth': 240,
                'totalWidth': 720,
                'scrollMargin': 10
            });
        },
        diagMediasList: function(el, id) {
            this.horizontal({
                'node': el,
                'id': id,
                'scrollTarget': '#medias',
                'itemWidth': 180,
                'totalWidth': 720,
                'scrollMargin': 10
            });
        },
        diagBodyCareProducts: function(el, id) {
            this.horizontal({
                'node': el,
                'id': id,
                'scrollTarget': '#products',
                'scrollOffsetTarget': null,
                'itemWidth': 240,
                'totalWidth': 720,
                'scrollMargin': 0
            });
        }
    };
    LOP.scrollActions = scrollActions;
    
    // prepare and create scroll
    var prepareScroll = function() {
        var id, forceScroll;
        $('body .scroll').each(function() {
            var id = BOX.getStoreId(this);
            var mode = BOX.getStoreId(this, 'mode');
            if (mode != 'delegate') {
                if (scrollActions[id]) {
                    scrollActions[id](this, id);
                } else {
                    scrollActions.vertical(this, id);
                }
            }
        });
    };
    
    var fieldsNames = 'input,textarea,select,span';
    var myItemsNumber;
    
    var getMyItemsNumber = function() {
        return parseInt(myItemsNumber.text().replace(/\D+/, ''), 10);
    };
    
    var setMyItemsNumber = function(value) {
        var nb = getMyItemsNumber() + value;
        if (nb) {
            myItemsNumber.text('(' + nb + ')');
        }
    };
    
    var clickActions = {
        label: function(e, t) {
            if ($(t).attr('for')) {
                return;
            }
            var field = $(t).prev()[0];
            if (!field || fieldsNames.indexOf(field.nodeName.toLowerCase()) == -1) {
                field = $(t).next()[0];
            }
            if (field && field.className == 'AnswerClass') {
                field = $(field).children()[0];
            }
            if (field && field.type) {
                switch (field.type) {
                    case 'text':
                    case 'password':
                    case 'select-one':
                    case 'textarea':
                        field.focus();
                        break;
                    case 'radio':
                    case 'checkbox':
                        field.click();
                        field.focus();
                        break;
                }
            }
            e.preventDefault();
        },
        a: function(e, t) {
            var cm = BOX.getStoreId(t, 'cm');
            if (cm) {
                LOP.execStatCM(cm);
            }
            
            var id = BOX.getStoreId(t);
            if (id == 'closePopin') {
                e.preventDefault();
                LOP.popins.close();
            } else if (t.rel && t.rel.indexOf('popin') > -1) {
                e.preventDefault();
                var action = BOX.getStoreId(t, 'action');
                if (action && LOP.stfDatasActions[action]) {
                    LOP.stfDatas = LOP.stfDatasActions[action]();
                } else {
                    LOP.stfDatas = null;
                }
                LOP.popins.add({
                    url: t.href,
                    id: id,
                    refresh: (BOX.getStoreId(t, 'mode') == 'nocache') ? true : false,
                    processHTML: LOP.processHTMLPopins
                });
            } else if (id == 'addToFavorites') {
                e.preventDefault();
                $.get(t.href, function(datas) {
                    if (datas) {
                        if (datas.indexOf('success') > -1) {
                            setMyItemsNumber(1);
                        }
                        if (datas.indexOf('callToRegister') > -1) {
                            LOP.popins.add({
                                url: l10n.url.callToRegister,
                                id: 'callToRegister',
                                refresh: false,
                                processHTML: LOP.processHTMLPopins
                            });
                        }
                    }
                });
                $(t.parentNode).html(l10n.addToFavorites.done).addClass('actionDone');
            } else if (id == 'addAllToFavorites') {
                e.preventDefault();
                var url = t.href;
                var allProductsHTML = $('#allProductsID').html() || '';
                var allMediasHTML = $('#allMediasID').html() || '';
                url += '?products=' + allProductsHTML.replace(/[\s\t\n]+/g, '').replace(/;$/, '');
                url += '&medias=' + allMediasHTML.replace(/[\s\t\n]+/g, '').replace(/;$/, '');
                $.get(url, function(datas) {
                    if (datas) {
                        if (datas.indexOf('success') > -1) {
                            datas = datas.replace(/[\s\t\n]+/g, '').replace(/;$/, '');
                            setMyItemsNumber(datas.split(';').length);
                        }
                        if (datas.indexOf('callToRegister') > -1) {
                            LOP.popins.add({
                                url: l10n.url.callToRegister,
                                id: 'callToRegister',
                                refresh: false,
                                processHTML: LOP.processHTMLPopins
                            });
                        }
                    }
                });
                $(t.parentNode).html(l10n.addToFavorites.done).addClass('actionDone');
            }
        }
    };
    
    var manageClicks = function() {
        $(D).click(function(e) {
            var t = e.target;
            while (t && t != this) {
                var tagName = t.nodeName.toLowerCase();
                if (clickActions[tagName]) {
                    clickActions[tagName](e, t);
                    break;
                }
                t = t.parentNode;
            }
        });
    };
    
    var removeAddToFavorites = function() {
        $('#alreadyInFavorites').prev().remove();
    };
    
    // configure tools immediatly
    BOX.setConfig('scroll', {
        container: '<div class="scrollContent">%content%</div>',
        simpleBar: '<div class="scrollBar" style="visibility:hidden;"><span class="face"></span></div>',
        fullBar: '<div class="scrollBar" style="visibility:hidden;"><span class="up"></span><span class="face"></span><span class="down"></span></div>'
    }).setConfig('slide', {
        prev: '<a href="#" class="prev">' + l10n.simpleSlide.prev + '</a>',
        next: '<a href="#" class="next">' + l10n.simpleSlide.next + '</a>'
    }).setConfig('toolTip', {
        container: '<div class="toolTip" style="left:-10000px;"><div id="toolTipInner"></div></div>'
    }).setConfig('popin', {}).setConfig('fauxFields', {
        checked: 'checked',
        focus: 'focus',
        checkedFocus: 'checkedFocus',
        selected: 'selected',
        hover: 'hover'
    }).setConfig('fauxSelect', {
        container: '<div id="fauxSelect" style="left:-10000px;"></div>',
        mask: '<div id="fauxSelectMask" style="display:none;"></div>'
    });
    
    var getCoreDimensions = function() {
        LOP.coreHeight = $('#core')[0].offsetHeight;
        LOP.coreOffset = $('#core').offset();
        LOP.coreOffsetMax = {top: LOP.coreOffset.top + LOP.coreHeight, left: LOP.coreOffset.left + 950};
        LOP.maskTop = $('#header')[0].scrollHeight;
        LOP.maskHeight = LOP.coreHeight - LOP.maskTop;
    };
    
    // Manage rollover images
    LOP.mouseOverImg = function() {
        if(LOP.ieOld && this.src.indexOf('.png')) {
            this.runtimeStyle.filter = this.runtimeStyle.filter.replace('off.', 'on.');
        } else {
            this.src = this.src.replace('off.', 'on.');
        }
    };
    LOP.mouseOutImg = function() {
        if(LOP.ieOld && this.src.indexOf('.png')) {
            this.runtimeStyle.filter = this.runtimeStyle.filter.replace('on.', 'off.');
        } else {
            this.src = this.src.replace('on.', 'off.');
        }
    };



    var managePopinsDirectAccess = function(urlId) {
        var hash = location.hash;
        if (hash && hash.indexOf('#'+urlId+':') > -1) {
            id = hash.replace('#'+urlId+':', '');
            if (($.cookie(id)) && ($.cookie(id) == id)) {return;}
            else {
                if (l10n.url[id]) {
                    LOP.popins.add({
                        url: l10n.url[id],
                        id: id,
                        refresh: true,
                        processHTML: LOP.processHTMLPopins
                    });
                }
            }
        }
    };
    
    // DOMReady
    $(D).ready(function() {
        //redirection();
        removeAddToFavorites();
        getCoreDimensions();
        productsMenu();
        localisationMenu();
        if (LOP.ieFirstInListing) {
            LOP.ieFirstInListing('#main');
        }
        prepareScroll();
        myItemsNumber = $('#myItemsNumber');
        manageClicks();
        BOX.clearTextFields('#searchForForm');
        BOX.clearTextFields('#newsletterForm');
        LOP.tooltips = new BOX.ToolTips();
        LOP.tooltips.addListener('beforeOpen', function(e, trigger, triggerOffset, divToolTip, top, left) {
            var width = divToolTip[0].offsetWidth;
            var maxW = left + width;
            var nleft = left;
            if (maxW > LOP.coreOffsetMax.left) {
                nleft = LOP.coreOffsetMax.left - width;
            } else if (nleft < LOP.coreOffset.left) {
                nleft = LOP.coreOffset.left;
            }
            var backgroundPosition = - (1009 / 2 - (width / 2 + left - nleft));
            divToolTip.css('background-position', backgroundPosition + 'px 100%');
            this.setPosition(top, nleft);
        });
        if (D.getElementById('mySignedIn')) {
            LOP.tooltips.add({
                selector: '#mySignedIn:hover',
                rule: function(el) {
                    if (el.nodeName.toLowerCase() == 'a') {
                        this.setHTML(el.title).setAttributeCache(el, 'title').setId('toolTipAuto');
                    }
                }
            });
        }
        // init mask
        LOP.coreMask = new BOX.Mask({
            html: '<div class="mask" style="display:none;"></div>',
            target: '#core'
        });
        managePopins();
        // page specific
        LOP.pageScript = BOX.getStoreId($('div.wrapper')[0], 'js');
        if (LOP.pageScript) {
            // TODO add parameters passing capabilities to lazy loading
            // FIXME beware of jQuery.getScript bypassing the cache
            if (LOP.pageScript.indexOf('/') > -1) {
                $.getScript(LOP.pageScript + '.js');
            }
            else {
                $.getScript(jsFolder + 'pages/' + LOP.pageScript + '.js');
            }
        }
        BOX.form('searchForForm').addValidation(function(form) {
            form.text('keywords').mustValidate(function(field) {
                if (field.isEmpty() || field.getValue() == field.element.defaultValue) {
                    return 'error';
                }
            });
        }, 'input[type=image]').addListener('formValid', function(e, formEvent) {
            formEvent.preventDefault();
            W.location.href = l10n.url.searchPage + '?code=' + W.encodeURI(this.text('keywords').getValue());
        });
        $('#keywords').keydown(function(e) {
            var k = e.which;
            if(k == 13) {
                if(BOX.form('searchForForm').text('keywords').isValid(true)) {
                    e.preventDefault();
                    W.location.href = l10n.url.searchPage + '?code=' + W.encodeURI(this.value);
                }
            }
        });
        managePopinsDirectAccess('teasing');
    });	
    
    // onload corrections (for dimensions)
    $(W).load(function() {
        getCoreDimensions();
    });
    
    LOP.addSWF = function(datas) {
        $(D).ready(function() {
            datas.background = datas.background || '#FFFFFF';
            datas.version = datas.version || '9';
            datas.params = datas.params || {};
            datas.params.wmode = datas.params.wmode || 'opaque';
            datas.params.quality = datas.params.quality || 'best';
            datas.variables = datas.variables || {};
            W[datas.id] = new SWFObject(datas.url, datas.id, datas.width, datas.height, datas.version, datas.background);
            for (var p in datas.params) {
                if (BOX.isOwnProperty(datas.params, p)) {
                    W[datas.id].addParam(p, datas.params[p]);
                }
            }
            for (var v in datas.variables) {
                if (BOX.isOwnProperty(datas.variables, v)) {
                    W[datas.id].addVariable(v, datas.variables[v]);
                }
            }
            W[datas.id].write(datas.target);
            if(!$(datas.target).find('embed, object').length) {
                $(datas.target).find('div.altToSWF').css('visibility', 'visible');
            }
        });
    };
})(jQuery);




var encodedURI;
    function encode(uri){
        encodedURI = encodeURI(uri);
        document.getElementById('brandFlashSWF').recupEncodage(encodedURI);
    }

    function thisMovie(movieName) {
      if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
      }else {
        return document[movieName]
      }
    }

