﻿//L'Oréal
var Loreal = Loreal || {};
$.extend(Loreal, {
    loadState: false,
    Trace: function (message) {
        if (loc.debug) {
            alert(message);
        }
    },
    toInt: function (value) {
        return parseInt(value.replace(" ", ""));
    },
    toPrice: function (price) {
        return parseFloat(price.replace(" ", "").replace(loc.currency, "").replace(",", "."));
    },
    menuOnMouseOver: function () {
        var $li = $(this).parent();
        $li.addClass("navbar_item_on").removeClass("navbar_item_off");
        $li.find("div:last").addClass("header_catalogue_navbar_item_on").removeClass("header_catalogue_navbar_item_off");
        $li.prev().children().css('visibility', 'visible');
        $li.next().children().css('visibility', 'visible');
        $li.find("div:first").show();
    },
    menuOnMouseOut: function () {
        var $li = $(this).parent();
        $li.addClass("navbar_item_off").removeClass("navbar_item_on");
        $li.find("div:last").addClass("header_catalogue_navbar_item_off").removeClass("header_catalogue_navbar_item_on");
        $li.prev().children().css("visibility", "hidden");
        $li.next().children().css("visibility", "hidden");
        $li.find("div:first").hide();
    },
    search: function () {
        var code = encodeURIComponent($("#header_input_search").val().replace(/&/gi, ""));
        var searchpage = $("#launch_search").attr("href");
        var url = $.format(loc.url.search, searchpage, code);
        $(location).attr("href", url); //Redirect to search page
        return false;
    },
    startLoading: function () {
        $(this).dialog('open');
    },
    stopLoading: function () {
        $(this).dialog('close');
    },
    errorRedirect: function () {
        $(location).attr("href", loc.url.error500);
    },
    print: function () {
        $(this).blur();
        window.print();
        return false;
    },
    viewOrderDetails: function () {
        var id = $(this).attr("href").split('#')[1];
        var url = $.format(loc.url.orderdetails, id);
        $("#orderdetails").load(url, Loreal.afterLoadOrderDetails);
        return false;
    },
    firstviewdetails: true,
    afterLoadOrderDetails: function () {
        if (!Loreal.firstviewdetails) {
            $("#orderdetails").scroll();
        }
        Loreal.calculerReduction();
        Loreal.firstviewdetails = false;
    },
    loadQuickShop: function () {
        var $this = $(this).blur();
        var href;
        if ($this.attr("nodeName").toLowerCase() == "a") {
            href = $this.attr("href");
        }
        else {
            href = $this.val();
        }
        var val = href.split("#");
        $.data($("INPUT[id$=save_state]").get(0), "quickshop", href);
        var catcode = val[1];
        var prdcode = val[2];
        var url = $.format(loc.url.quickshop, catcode, prdcode);
        $("#productlayout").hide().load(url, Loreal.openQuickShop);
        return false;
    },
    openQuickShop: function () {
        $("#qtylist option:first,#varlist option:first", this).attr("selected", "selected");
        var $varlist = $("#varlist", this).change(Loreal.selectedList);
        if ($varlist.length) {
            Loreal.selectedList.apply($varlist); //Set the first selected shade
        }
        $(".shade_item", this).click(Loreal.selectedShade);
        $("#addtobag", this).click(Loreal.addToBag);
        $("#addToBasket", this).click(Loreal.addToBagCGF);
        $("#addtofavorite", this).click(Loreal.addToFavorite);
        $("IMG.imgtog", this).ToggleImage();
        $(this).dialog({
            width: 280,
            resizable: false,
            bgiframe: true,
            modal: true,
            //show: "slide",
            hide: "slide",
            dialogClass: "popin_product_layer",
            position: "center"
        });
        $("#productlayout_aligntitle A").blur();
        $(".popin_close_button").click(Loreal.closeQuickShop).blur();
        if (Loreal.loadState) {
            Loreal.loadState = false;
            $("#addtofavorite", this).click();
        }
        return false;
    },
    closeQuickShop: function () {
        $("#productlayout").dialog("close").dialog("destroy");
        return false;
    },
    addToFavorite: function () {
        $(this).blur();
        if (Loreal.Customer.Signed) {
            var $selected = $("#varlist option:selected");
            var sku = $selected.val().split("#")[0];
            var url = $.format(loc.url.favorite, "add", sku);
            $("#favoriteresult").hide().load(url, Loreal.refreshFavorite);
        }
        else {
            var $state = $("INPUT[id$=save_state]");
            if ($state.length) {
                var state = $.data($("INPUT[id$=save_state]").get(0), "quickshop");
                $("INPUT[id$=save_state]").val(state); //Save state
            }
            $("#popin_login").dialog("open");
        }
        return false;
    },

    shippingTable: function () {
        $("#popin_shipping").dialog("open");
        $("#close_popin_shipping").click(function () {
            $("#popin_shipping").dialog("close");
            return false;
        });
        return false;
    },

    refreshFavorite: function () {
        var $favoriteresult = $("#favoriteresult");
        if ($("#favoritesuccess").length) {
            $("#popin").dialog("open");
        }
        else {
            $favoriteresult.show();
        }
    },
    deleteFavorite: function () {
        var $this = $(this).blur();
        var sku = $("INPUT", $this.parent()).val();
        var url = $.format(loc.url.favorite, "delete", sku);
        $("#addtobagresult").hide();
        $("#favoriteresult").hide().load(url, function () {
            var $favoriteresult = $("#favoriteresult");
            if ($("#favoritesuccess").length) {
                $this.parent().parent().remove();
            }
            else {
                $favoriteresult.show();
            }
        });
        return false;
    },
    addToBagFavorite: function () {
        var $this = $(this).blur();
        var varcode = $("INPUT", $this.parent()).val();
        var qty = "1";
        var url = $.format(loc.url.addtobag, varcode, qty);
        $("#favoriteresult").hide();
        $("#addtobagresult").hide().load(url, Loreal.refreshBag);
        return false;
    },
    addToBag: function () {
        $(this).blur();
        var varcode = $("#varlist").val().split('#')[0];
        var qty = $("#qtylist").val();
        var url = $.format(loc.url.addtobag, varcode, qty);
        $("#addtobagresult").hide().load(url, Loreal.refreshBag);
        return false;
    },
    //for christmas gift finder
    addToBagCGF: function () {
        $(this).blur();
        $("#popUp_div").hide();
        $("#overlay").hide();
        $("#addtobagresult").hide().load($("#addURL").val(), Loreal.refreshBagCGF);
        return false;
    },
    refreshBagCGF: function () {
        var $addtobagresult = $("#addtobagresult");
        if ($("#addtobagsuccess").length) {
            $("#header_bag_container").load(loc.url.refreshbag, Loreal.afterRefreshBag);
        }
        else {
            $("#popUp_div").show();
            $("#out_of_stock").show();
            $("#overlay").show();
        }
    },
    refreshBag: function () {
        var $addtobagresult = $("#addtobagresult");
        if ($("#addtobagsuccess").length) {
            $("#header_bag_container").load(loc.url.refreshbag, Loreal.afterRefreshBag);
        }
        else {
            $addtobagresult.show();
        }
    },
    afterRefreshBag: function () {
        $("#header_bag_title").click(Loreal.openBag)
        $("#headerbasket_justadded").click(Loreal.closeBag);
        $("IMG.imgtog", this).ToggleImage();
        Loreal.closeQuickShop();
        $("BODY").scroll(); //Scroll Top
        Loreal.openBag();
    },
    openBag: function () {
        $("#headerbasket:hidden").slideDown();
    },
    closeBag: function () {
        $("#headerbasket").slideUp();
    },
    handleTabSelect: function handleTabSelect(event, tabs) {
        $(this).find(".tab_img_lt_on").addClass("tab_img_lt_off").removeClass("tab_img_lt_on");
        $(this).find(".tab_img_rt_on").addClass("tab_img_rt_off").removeClass("tab_img_rt_on");
        var $li = $(tabs.tab).blur().parent();
        $li.prev().addClass("tab_img_lt_on").removeClass("tab_img_lt_off");
        $li.next().addClass("tab_img_rt_on").removeClass("tab_img_rt_off");
    },
    sortByPriceAsc: function () {
        Loreal.sortPaging(this, Loreal.sortPriceAsc);
        return false;
    },
    sortByPriceDesc: function () {
        Loreal.sortPaging(this, Loreal.sortPriceDesc);
        return false;
    },
    sortByNameAsc: function () {
        Loreal.sortPaging(this, Loreal.sortNameAsc);
        return false;
    },
    sortByNameDesc: function () {
        Loreal.sortPaging(this, Loreal.sortNameDesc);
        return false;
    },
    sortPaging: function (element, sortfunc) {
        var $pageselect = $("a[id^='pagingpage'].selected_sort_page_link");
        $("#body_sort_paging a").removeClass("selected_sort_page_link");
        $(element).blur().addClass("selected_sort_page_link");
        var mylist = $("#body_content_item_container");
        var listitems = mylist.find(".body_content_item").removeClass(loc.paging.spacerclass);
        listitems.sort(sortfunc); //Sort table
        $.each(listitems, function (index, item) { mylist.append(item); }); //Append new sort
        listitems.filter(":nth-child(" + loc.paging.spacernth + ")").addClass(loc.paging.spacerclass);
        if ($("#pagingseeall:visible").length) {
            $pageselect.click();
        }
    },
    sortPriceAsc: function (a, b) {
        var compA = Loreal.getPrice(a);
        var compB = Loreal.getPrice(b);
        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
    },
    sortPriceDesc: function (a, b) {
        var compA = Loreal.getPrice(a);
        var compB = Loreal.getPrice(b);
        return (compA < compB) ? 1 : (compA > compB) ? -1 : 0;
    },
    sortNameAsc: function (a, b) {
        var compA = Loreal.getName(a);
        var compB = Loreal.getName(b);
        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
    },
    sortNameDesc: function (a, b) {
        var compA = Loreal.getName(a);
        var compB = Loreal.getName(b);
        return (compA < compB) ? 1 : (compA > compB) ? -1 : 0;
    },
    getPrice: function (element) {
        var $element = $(element);
        var $price = $element.find(".product_amount_new");
        if ($price.length == 0) {
            $price = $element.find(".product_amount");
        }
        return parseFloat($price.text().replace(loc.currency, "").replace(" ", "").replace(",", "."));
    },
    getName: function (element) {
        return $(element).find("H2.product_name").text().toLowerCase().replace('"', "");
    },
    selectedShade: function () {
        var sku = this.id.split("_")[1];
        var $selected = $("#varlist option[value^=" + sku + "]").attr("selected", "selected");
        Loreal.setProductData($selected);
        $(this).blur();
        return false;
    },
    selectedList: function () {
        $(this).blur();
        var $selected = $("#varlist option:selected");
        Loreal.setProductData($selected);
    },
    setProductData: function ($selected) {
        var shade = $selected.text();
        var values = $selected.val().split("#");
        var sku = values[0];
        var price = values[1];
        var stock = parseInt(values[2]);
        var newprice = values[3];
        var reference_unit = values[4];
        var reference_quantity = values[5];
        var quantity = values[6];

        var parsedPrice = newprice.substring(2).replace(",", ".");
        var reference_price = parseFloat(parseFloat(parsedPrice) / parseFloat(quantity) * parseFloat(reference_quantity));

        if (reference_price.toString() != 'NaN') {
            $("#product_reference_price").text(round(reference_price, 2));
        }

        if (reference_quantity != '') {
            //alert('reference_unit='+reference_unit);
            $("#product_reference_quantity_and_unit").text(reference_quantity + " " + reference_unit);
        }
        var $shades = $(".shade_item");
        if ($shades.length > 0) {
            $shades.removeClass("selected_shade_item");
            $("#shade_" + sku).addClass("selected_shade_item").blur();
            $("#product_shade_preview_text").text(shade);
            //$("#img_product_shade").attr("alt", shade).attr("title", shade).attr("src", $.format(loc.packshot.variants, sku));
            $("#img_preview_shade").attr("alt", shade).attr("title", shade).attr("src", $.format(loc.packshot.shades, sku));
            $("#img_title_shade").attr("alt", shade).attr("title", shade).attr("src", $.format(loc.packshot.shadestitle, sku));
        }
        if (stock <= 0) {
            $("#addtobag").hide();
            $("#out_of_stock").show();
        }
        else {
            $("#addtobag").show();
            $("#out_of_stock").hide();
        }
        if (newprice == price) {
            $("#prd_price").removeClass("price_old").addClass("price").text(price).show();
            $("#prd_newprice").text("").show();
        }
        else {
            $("#prd_price").removeClass("price").addClass("price_old").text(price).show();
            $("#prd_newprice").text(newprice).show();
        }
    },
    setLogin: function () {
        $("INPUT[id$=hidden_login]").val($(this).val());
    },
    InitUserToExtractExtendedProperty: function () {
        $("#editprofil input[id$=ep1itUserToExtract]")[0].value = 1;
    },
    calculerReduction: function () {
        $("span[id$=_myspace_discount_value]").each(function () {
            var prdCode = this.id.substring(0, 6);
            var unitPrice = $("span[id=" + prdCode + "_unitprice]")[0].innerHTML;
            var appliedPrice = $("input[id=" + prdCode + "_appliedprice]")[0].value;
            var prdQuantity = $("div[id=" + prdCode + "_quantity]")[0].innerHTML;

            unitPrice = unitPrice.replace(',', '.').replace(' €', '');
            appliedPrice = appliedPrice.replace(',', '.').replace(' €', '');

            var discountvalue = (parseFloat(unitPrice) - parseFloat(appliedPrice)) * (parseFloat(prdQuantity));
            discountvalue = (round(discountvalue, 2)) + ' €';


            $("span[id=" + prdCode + "_myspace_discount_value]")[0].innerHTML = discountvalue;
        });
    },

    // Méthode d'entrée permettant la vérification du numéro de carte LYB.
    CheckLybCardNumber: function () {
        var checkLYBNumber = null
        if (Loreal.Page.Name == "edit-profile") {
            checkLYBNumber = loc.url.checkLYBNumberFromEditProfilPage;
        }
        else {
            checkLYBNumber = loc.url.checkLYBNumberFromRegisterPage; /* Fonctionne aussi pour la page login-register */
        }

        Loreal.CheckLybCardNumberValidity($("#register input[id$=ep0itMemberCardNumber]"), checkLYBNumber);
    },
    // Vérifie la validité du numéro de carte LYB.
    CheckLybCardNumberValidity: function (myLyb, mypath) {
        var lyb = $("input[name$='ep0itMemberCardNumber']")
        var ep0cbLYBMember = $("input[name$='ep0cbLYBMember']")

        ep0cbLYBMember[0].checked = false;

        if (lyb != null) {

            if (Loreal.ValidateLybField(
            //lyb, loc.messages.IncorrectFormatLybNumber, "^10[0-9]{9}")) {
                lyb, loc.messages.IncorrectFormatLybNumber, "^500[0-9]{6}", "^10500[0-9]{6}")) {

                var lybvalue = lyb.val();

                if (lybvalue.length > 0) {
                    //                    if ((lybvalue.length != 11) || ((lybvalue.substring(0, 2) != "10") &&
                    //                    (lybvalue.substring(0, 1) != "7") && (lybvalue.substring(0, 1) != "8") &&
                    //                    (lybvalue.substring(0, 1) != "9"))) {
                    //                        lyb[0].value = '';
                    //                        alert(loc.messages.RulesFormatLybNumber); return false;
                    //                    }
                    //                    else 
                    //                    {
                    var ok = false;

                    $.ajax(
                        {
                            url: mypath + lybvalue,
                            success: function (evt, request, settings) {
                                if (evt != null && evt.indexOf("true") != -1) {
                                    ok = true;
                                    ep0cbLYBMember[0].checked = true;
                                }
                                else {
                                    lyb[0].value = '';
                                    //alert(loc.messages.LybNumberAlreadyExists);
                                }
                            },
                            error: function (e, xhr, settings, exception) {
                                if (e.status == "404") {
                                    lyb[0].value = '';
                                    alert(loc.messages.Error404);
                                }
                                else {
                                    lyb[0].value = '';
                                    alert(loc.messages.ErrorDuringTheQuery);
                                }
                            }
                        });
                    return ok;
                    //}
                }
                else
                { return true; }
            }
            else
            { return false; }
        }
    },
    // Valide le champ passé en paramètre de la fonction.
    ValidateField: function (field, errorMsg, regExpr, mandatory, fieldname) {
        if ((field != null) && ((field.val() == null) || (field.val() == ''))) {
            if (mandatory == 'true') {

                alert("The " + fieldname + " field is mandatory");

                return false;
            }
            else
            { return true; }
        }

        return false;
    },
    // Vérifie la validité du champ LYB par rapport à un format précis passé en paramètre de la fonction.
    ValidateLybField: function (field, errorMsg, regExpr, regExpr11) {
        if (field != null && field.val() != null && field.valueOf() != '') {

            var fieldVal = "";

            var regExp = new RegExp(regExpr, "gi");
            var regExp11 = new RegExp(regExpr11, "gi");

            fieldVal = field.val();
            if (fieldVal.length <= 0 || (fieldVal.match(regExp) != fieldVal && fieldVal.match(regExp11) != fieldVal)) {

                field[0].value = '';
                alert(errorMsg);
                return false;
            } else
                if (fieldVal.length <= 0 || (fieldVal.match(regExp) != fieldVal && fieldVal.match(regExp11) != fieldVal)) {
                    field[0].value = '';
                    alert(errorMsg);
                    return false;
                }

            return true;
        }
        return false;
    },
    toggleLoginLayer: function () {
        $(this).blur();
        $("#login_layer").toggle();
    },
    oneZoom: function () {
        Loreal.startLoading.apply($("#popin_loading"));
        var prdcode = $(this).attr("href").split("#")[1];
        var src = $.format(loc.packshot.zoom, prdcode);
        $(Loreal.zoomImg).attr("src", src);
        return false;
    },
    loadZoom: function () {
        $(this).hide();
        $("#productlayout_content").append(this);
        $(this).css("width", "500px").fadeIn();
        $("#productZoom").dialog({
            width: 523,
            bgiframe: true,
            modal: true,
            draggable: false,
            resizable: false,
            position: "center",
            autoOpen: true,
            dialogClass: "popin_zoom",
            hide: "slide",
            show: "slide"
        }).find(".popin_close_button").click(Loreal.closeZoom).blur();
        $("#zoom").click(Loreal.openZoom);
        Loreal.stopLoading.apply($("#popin_loading"));
    },
    openZoom: function () {
        $("#productZoom").dialog("open");
        return false;
    },
    closeZoom: function () {
        $("#productZoom").dialog("close");
        return false;
    },
    errorZoom: function () {
        Loreal.stopLoading.apply($("#popin_loading"));
        $("#zoom").click(Loreal.alertZoom);
        Loreal.alertZoom();
        return false;
    },
    alertZoom: function () {
        alert(loc.zoom.error);
        return false;
    },
    storeLocator: function () {
        var address = $("#loc-address").val();
        var city = $("#loc-city").val();
        var postcode = $("#loc-postcode").val();
        var country = $("#loc-country option:selected").val();
        address = encodeURIComponent($.format(loc.storelocator.addressformat, address, city, postcode, country));
        var url = $.format(loc.url.storelocator, address);
        $(location).attr("href", url);
        return false;
    },
    createGiftWrapping: function () {
        var $gift = $("#giftwrappinglayout");
        $gift.dialog({
            width: 280,
            resizable: false,
            bgiframe: true,
            modal: true,
            autoOpen: false,
            position: "center",
            dialogClass: 'popin_product_layer'
        }).find(".popin_close_button").click(Loreal.closeGiftWrapping).blur();
        $("#addgiftwrapping").click(Loreal.addGiftWrapping);
        $("#removegiftwrapping").click(Loreal.removeGiftWrapping);
        $("#giftwrapmessage").keyup(Loreal.maxLength);
        Loreal.maxLength.apply($("#giftwrapmessage"));
    },
    maxLength: function () {
        var $this = $(this);
        var max = loc.giftwrapping.maxlength;
        var originalVal = $this.val();
        var val = originalVal.replace(/\^+/g, ""); //Remove ' ^ ' character.
        if (val.length > max) {
            val = val.substr(0, max);
        }
        if (originalVal != val) {
            var scrollTop = $this.attr("scrollTop"); //Save scroll bar position
            var selectionStart = $this.attr("selectionStart"); //Save selection start
            var selectionEnd = $this.attr("selectionEnd"); //Save selection end
            $this.val(val);
            $this.attr("scrollTop", scrollTop);  //Set old scroll bar position
            $this.attr("selectionStart", selectionStart);  //Set old selection start
            $this.attr("selectionEnd", selectionEnd);  //Set old selection end
        }
        var text = $.format(loc.giftwrapping.remaining, max - $this.val().length);
        $("#length_left").html(text);
    },
    addGiftWrapping: function () {
        $("#giftwrappingerror").hide();
        $("#giftwrappingload").hide();
        var $giftwrap = $("INPUT[type=radio][name=giftwrap]:checked");
        var from = encodeURIComponent($("#giftwrapfrom").val());
        var to = encodeURIComponent($("#giftwrapto").val());
        var message = encodeURIComponent($("#giftwrapmessage").val());
        if ($giftwrap.length && from != "" && to != "" && message != "") {
            var code = encodeURIComponent($giftwrap.val());
            var url = $.format(loc.url.addgiftwrapping, code, from, to, message);
            $("#giftwrappingload").load(url, Loreal.addGiftWrappingOK);
        }
        else {
            $("#giftwrappingerror").show();
        }
        return false;
    },
    removeGiftWrapping: function () {
        $.get(loc.url.removegiftwrapping, Loreal.removeGiftWrappingOK);
        return false;
    },
    addGiftWrappingOK: function () {
        if ($("#addgiftwrapsuccess").length) {
            $(location).attr("href", $(location).attr("href"));
        }
        else {
            $("#giftwrappingload").show();
        }
    },
    removeGiftWrappingOK: function () {
        $(location).attr("href", $(location).attr("href"));
    },
    openGiftWrapping: function () {
        $("#giftwrappinglayout").dialog("open");
        $("#mycarousel_gift").show().jcarousel();
        return false;
    },
    closeGiftWrapping: function () {
        $("#mycarousel_gift").hide();
        $("#giftwrappinglayout").dialog("close");
        return false;
    },
    labelLink: function () {
        //Prevent checkbox check when clicking on link inside label
        $("A.labellink").click(function () {
            window.open($(this).attr("href"), "_blank");
            return false;
        });
    },
    onReady: function () {
        if (Loreal.Page == null)
            return;
        Loreal.Page.Name = Loreal.Page.Name.toLowerCase().replace(".aspx", "");
        var IsPage = function (pages) {
            var pageName = Loreal.Page.Name;
            // Nom de la page
            //alert (pageName);
            var list = pages.split(",");
            var isPage = false;
            $.each(list, function () {
                if (this == pageName) {
                    isPage = true;
                }
                return !isPage;
            });
            return isPage;
        }

        var login = false;
        var url = window.location.href;
        url = url.split('?');
        if (url[1]) {
            // On récupère tous les paramètres de l'URL
            url = url[1].split('&');
            $(url).each(function () {
                if (this == 'login=true') {
                    login = true;
                }
            });
        }

        if (login) {
            $('#login_layer').show();
        }

        //Fix Url rewriting
        $("form").attr("action", Loreal.Page.Url);
        //All : Set image toggle
        $("IMG.imgtog").ToggleImage();

        //Error Message Reset
        //$("#popin_login .messagekoerror").innerHTML ="";
        //All : Reset login field
        //$(".input_container input[id$=login]").val("");

        //All : Reset password field
        $(".input_container input[id$=password]").val("");
        //Header : Set Menu
        $("#header_catalogue_navbar").find(".navbar_item_off div").mouseover(Loreal.menuOnMouseOver).mouseout(Loreal.menuOnMouseOut); //Init Main Menu
        //Header : Set search text and keypress
        $("#header_input_search").DefaultValue(loc.search.value).keyPressEnter("#launch_search");
        //Footer : Set mailing text and keypress
        $("#footer_input_search INPUT").DefaultValue(loc.newsletter.email).keyPressEnter("A[id$=submitNL]");
        //Popin : Set mailing text and keypress
        $("#popin_input_search INPUT").DefaultValue(loc.newsletter.email).keyPressEnter("A[id$=submitNL_popin]");
        //Header : Set search feature
        $("#launch_search").click(Loreal.search);
        //Header : Set Basket action
        $("#header_bag_title").click(Loreal.openBag)
        $("#headerbasket_justadded").click(Loreal.closeBag);
        //All : Set Ajax Loading
        $("#popin_loading").ajaxStart(Loreal.startLoading).ajaxStop(Loreal.stopLoading).dialog({
            width: 201,
            bgiframe: true,
            modal: true,
            draggable: false,
            resizable: false,
            position: "center",
            autoOpen: false,
            dialogClass: "popin_loading"
        });
        $("#popin_shipping").dialog({
            width: 593,
            bgiframe: true,
            modal: true,
            draggable: false,
            resizable: false,
            position: "center",
            autoOpen: false,
            dialogClass: "popin_shipping"
        });
        $("#popin_login").dialog({
            width: 320,
            bgiframe: true,
            modal: true,
            draggable: true,
            resizable: false,
            position: "center",
            //show: 'slide',
            //hide: 'slide',
            autoOpen: false,
            dialogClass: "popin_login"
        }).find("#close_popin_login").click(function () {
            $("#popin_login_messagekoerror").hide();
            $("#popin_login").dialog("close");
            return false;
        }).blur();
        $("A[id$=submitpopinlogin]").click(function () {
            //Need to be in form
            $("/html/body/form[0]").append($("#popin_login").parent());
        });
        $("#popin").dialog({
            width: 320,
            bgiframe: true,
            modal: true,
            draggable: true,
            resizable: false,
            position: "center",
            //show: 'slide',
            //hide: 'slide',
            autoOpen: false,
            dialogClass: "popin_favorite"
        }).find(".close_popin_favorite").click(function () {
            if ($("#successpopinlogin").length) {
                $(location).attr("href", $(location).attr("href"));
            }
            else {
                $("#popin").dialog("close");
            }
            return false;
        }).blur();
        //All : Set Ajax Error
        $(location).ajaxError(Loreal.errorRedirect);
        //Header : Set login menu
        $("#header_login_button_sign_in, #quit_sign_in").click(Loreal.toggleLoginLayer);
        //Headet : Set keypress, login and password text
        $("#login_layer INPUT[id$=login]").DefaultValue(loc.login.email).keyPressEnter("A[id$=submitheaderlogin]");
        $("#login_layer INPUT[id$=password]").DefaultValue(loc.login.password).keyPressEnter("A[id$=submitheaderlogin]");
        if ($("#login_layer .messagekoerror").length || $(location).attr("href").indexOf("ReturnUrl=") > 0) {
            $("#login_layer").toggle();
        }

        //Some pages : Set Carousel if exist
        if ($.fn.jcarousel) {
            $("#mycarousel").show().jcarousel();
            if ($.browser.safari) {
                $(".jcarousel-prev, .jcarousel-next").css("top", "117px");
            }
        }

        //Product : Set Tab if exist
        if (IsPage("product")) {
            var $li = $("#tabs").tabs({ select: Loreal.handleTabSelect }).show().find("li a:first").parent();
            $li.prev().addClass("tab_img_lt_on").removeClass("tab_img_lt_off");
            $li.next().addClass("tab_img_rt_on").removeClass("tab_img_rt_off");

            Loreal.zoomImg = new Image();
            $(Loreal.zoomImg).load(Loreal.loadZoom).error(Loreal.errorZoom);
            $("#zoom").one("click", Loreal.oneZoom);
        }

        //Product & Product Layout
        if (IsPage("subcategory,search,product,content,staticpage")) {
            //Set addToBag action
            $("#addtobag").click(Loreal.addToBag);
            //Set addToFavorite action
            $("#addtofavorite").click(Loreal.addToFavorite);
            //Set product select
            $("#qtylist option:first,#varlist option:first").attr("selected", "selected");
            var $varlist = $("#varlist").change(Loreal.selectedList);
            if ($varlist.length) {
                Loreal.selectedList.apply($varlist); //Set the first selected shade
            }
            $(".shade_item").click(Loreal.selectedShade);
        }
        if (IsPage("gift_finder")) {
            //Set addToBag action
            $("#addToBasket").click(Loreal.addToBagCGF);

        }
        //Sub category & Search
        if (IsPage("subcategory,search")) {
            var $quickpage = $(".body_content_item");
            //Set Quick Paginate
            $quickpage.quickpaginate({ pager: $("#body_paging"), perpage: loc.paging.perpage, seealltext: loc.paging.seeall, countertext: loc.paging.counter, spacernth: loc.paging.spacernth, spacerclass: loc.paging.spacerclass });
            $quickpage.quickpaginate({ pager: $("#body_paging2"), perpage: loc.paging.perpage, seealltext: loc.paging.seeall, countertext: loc.paging.counter, spacernth: loc.paging.spacernth, spacerclass: loc.paging.spacerclass });
            if ($quickpage.length == 1) {
                $("#body_sort_paging").hide();
            }
            else {
                //Set name sorting
                $("#paging_name_desc").click(Loreal.sortByNameDesc);
                $("#paging_name_asc").click(Loreal.sortByNameAsc);
                //Set price sorting
                $("#paging_price_desc").click(Loreal.sortByPriceDesc);
                $("#paging_price_asc").click(Loreal.sortByPriceAsc);
            }
        }

        //Sub category, Search, content & staticpage
        if (IsPage("subcategory,search,content,staticpage")) {
            //Set QuickShop
            $("a[id^=quickshop]").click(Loreal.loadQuickShop);
        }

        //ajout dapery Vergleichspreis
        if (IsPage("subcategory,basket,search,one-page-checkout")) {
            $("*[class=product_reference_price_container]").each(function () {

                var price = $("input[id=price_" + this.id + "]")[0].value;
                var reference_quantity = $("input[id=reference_quantity_" + this.id + "]")[0].value;
                var quantity = $("input[id=quantity_" + this.id + "]")[0].value;


                price = price.substring(2).replace(",", "."); ;
                var reference_price = parseFloat(parseFloat(price) / parseFloat(quantity) * parseFloat(reference_quantity));
                if (reference_price.toString() != 'NaN') {
                    $("#product_reference_price_" + this.id).text(round(reference_price, 2));
                }
            });
        }
        //ajout dapery quantity 0
        if (IsPage("basket")) {
            $("[id$=itemquantity]").prepend('<option value="0">0</option>');
            $("[id$=itemquantity]").change(function () {
                if (this.value == 0) {
                    __doPostBack($(this).parent().parent().find('[id$=deletebutton]')[0].id.replace(/_/g, '$'), '');
                }
            });
        }
        if (IsPage("subcategory,search")) {
            $("*[class=product_reference_price_container]").each(function () {

                var stock = $("#stock_" + this.id).val();

                if (stock <= 0) {
                    $("#quickshop_" + this.id).hide();
                    $("#out_of_stock_" + this.id).show();
                }
                else {
                    $("#quickshop_" + this.id).show();
                    $("#out_of_stock_" + this.id).hide();
                }
            });
        }

        //ajout dapery homepage
        if (IsPage("index")) {
            if ($("div#homepage_bottomcol div.image")) {
                $($("div#homepage_bottomcol div.image")[$("div#homepage_bottomcol div.image").length - 1]).addClass('image_end');
                $($("div#homepage_bottomcol div.image")[$("div#homepage_bottomcol div.image").length - 1]).removeClass('image');
            }
        }

        //Open QuickShop if login error
        if ($("#popin_login .messagekoerror").length) {
            var $state = $("INPUT[id$=save_state]");
            if ($state.length) {
                Loreal.loadState = true;
                Loreal.loadQuickShop.apply($state.get(0));
            }
            else {
                $("#addtofavorite").click();
            }
        }

        //Open QuickShop if login success
        if ($("#successpopinlogin").length) {
            Loreal.Customer.Signed = true;
            var $state = $("INPUT[id$=save_state]");
            if ($state.length) {
                Loreal.loadState = true;
                Loreal.loadQuickShop.apply($state.get(0));
            }
            else {
                $("#addtofavorite").click();
            }
        }

        //Favorites
        if (IsPage("favorites")) {
            //Set "delete" and "add to bag"
            $("A[id$=deletefavorite]").click(Loreal.deleteFavorite);
            $("A[id$=addtobagfavorite]").click(Loreal.addToBagFavorite);
        }

        //Product & Receipt : Set print
        $("#print").click(Loreal.print);

        //Login&Register checkout
        if (IsPage("login-register")) {
            //Set Key Press Enter on inputs
            $("#checkout_register INPUT").keyPressEnter("A[id$=submitcheckoutregister]");
            $("#checkout_login INPUT").keyPressEnter("A[id$=submitcheckoutlogin]");
            //Set hidden login
            $("#checkout_register INPUT[id$=email]").blur(Loreal.setLogin);
            // LYB
            $("input[id$=ep0itMemberCardNumber]").blur(Loreal.CheckLybCardNumber);
        }

        //Register
        if (IsPage("register")) {
            //Set Key Press Enter on inputs
            $("#register INPUT").keyPressEnter("A[id$=submitregister]");
            $("#othersubmitregister").click(function () { $("A[id$=submitregister]").clickServer(); return false; });
            //Set hidden login
            $("#register INPUT[id$=email]").blur(Loreal.setLogin);

            // Set OnBlur event on othersubmitregister HtmlImage.
            $("#register input[id$=ep0itMemberCardNumber]").blur(Loreal.CheckLybCardNumber);
            if (!Loreal.Page.IsPostBack) {
                $("INPUT[id$=ep0cbPrimaryDeliveryAddress]").attr("checked", "checked");
            }

            //Lyb Init			
            //$("input[name$='ep0itMemberCardNumber']")[0].value=loc.messages.LybPrefix;

        }

        //Edit profil
        if (IsPage("edit-profile")) {
            //Set Key Press Enter on inputs
            $("#editprofil INPUT").keyPressEnter("A[id$=submitedit]");
            $("#othersubmitedit").click(function () { $("A[id$=submitedit]").clickServer(); return false; });
            //Set hidden login
            $("#editprofil INPUT[id$=email]").blur(Loreal.setLogin);
            Loreal.InitUserToExtractExtendedProperty();
            // Set OnBlur event on LYB card number represents by a HtmlInput control.
            $("#editprofil input[id$=ep0itMemberCardNumber]").blur(Loreal.CheckLybCardNumber);
        }

        //Register, edit-profil
        if (IsPage("register,edit-profile")) {
            Loreal.labelLink();
        }

        //Forgot Password
        if (IsPage("forgot-password")) {
            //Set password key press
            $("#forgotpassword INPUT").keyPressEnter("A[id$=submitforgotpassword]");
        }

        //Basket
        if (IsPage("basket")) {
            //Remove
            $("A[id$=updatebutton]").each(function () {
                var $select = $(this).parent().parent().find("SELECT");
                if ($select.length == 0) {
                    $(this).remove();
                }
            });
            //Update buttons
            $("A[id$=updatebutton]").click(function () { $("A[id$=refreshbutton]").clickServer(); return false; });
            //Keycode
            $("INPUT[id$=keycode]").keyPressEnter("A[id$=submitkc]");
            Loreal.createGiftWrapping();
            $("#load_gift_popin,#updategiftwrap").click(Loreal.openGiftWrapping);
        }

        //Order History
        if (IsPage("order-history")) {
            //Set view order details
            $(".vieworderdetails").click(Loreal.viewOrderDetails);
            $(".vieworderdetails").eq(0).click();
        }


        // Myspace / Order History
        if (IsPage("myspace,order-history")) {
            Loreal.calculerReduction();
        }


        //Order History
        if (IsPage("storelocator-search")) {
            $("#loc-search").click(Loreal.storeLocator);
            $("DIV.margin_bloc INPUT").keyPressEnter("#loc-search");
        }

        //One Page Checkout
        if (IsPage("one-page-checkout")) {
            //Set Shipping Table action
            $("#shippingtable").click(Loreal.shippingTable);
        }

        //All page focus
        $(".setfocus").find("INPUT,SELECT").eq(0).focus();

    }
});

//On DOM Ready Let's Go
$(Loreal.onReady);
function round(valeur, nb_chiffre) {
	var retour = Math.round(valeur * Math.pow(10, nb_chiffre)) / Math.pow(10, nb_chiffre);
	var tab = retour.toString().split(".");
	if (nb_chiffre > 0) {
		var ecart = nb_chiffre;
		if (tab[1]) {
			ecart -= tab[1].length
		} else {
			retour += ".";
		}
		
		for (i = ecart ; i > 0 ; i--) {
			retour += "0";

		}
	}
	return retour.toString().replace(".", ",");
}

function strrev(str) {
  return str.split("").reverse().join("");
}
