﻿//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();
  },
  menuOnMouseOverPromo: function () {
    var $li = $(this).parent();
    $li.addClass("navbar_item_promo_on").removeClass("navbar_item_promo_off");
    $li.find("div:last").addClass("header_promo_navbar_item_on").removeClass("header_promo_navbar_item_off");
    $li.prev().children().css('visibility', 'visible');
    $li.next().children().css('visibility', 'visible');
    $li.find("div:first").show();
  },
  menuOnMouseOutPromo: function () {

    var $li = $(this).parent();
    $li.addClass("navbar_item_promo_off").removeClass("navbar_item_promo_on");
    $li.find("div:last").addClass("header_promo_navbar_item_off").removeClass("header_promo_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());
    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];
    $(".recent_order_cell").removeClass("selected_order");
    var $td = $(this).parent().parent();
    $td.addClass("selected_order");

    var url = $.format(loc.url.orderdetails, id);
    $("#orderdetails").load(url, Loreal.afterLoadOrderDetails);
    return false;
  },
  firstviewdetails: true,
  afterLoadOrderDetails: function () {
    if (!Loreal.firstviewdetails) {
      $("#orderdetails").scroll();
    }
    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);
    $("#addtofavorite", this).click(Loreal.addToFavorite);
    Loreal.clickOosNotificationLink();

    $("IMG.imgtog", this).ToggleImage();
    $(this).dialog({
      width: 662,
      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;
  },
  clickOosNotificationLink: function () {
    $('#oos_notificationlink').click(function () {
      var $selected = $("#varlist option:selected");
      var values = $selected.val().split("#");
      var sku = values[0];
      var url = $.format(loc.url.productnotification, sku);
      $.ajax({
        type: "GET",
        url: url + "?varcode=" + sku,
        success: function (data) {
          $("#popin_oosnotification").append($(data).filter("FORM").children());
          Loreal.openProductStockNotification();
        },
        error: function (jqXHR, textStatus, errorThrown) {
          alert(jqXHR + " - " + textStatus + " - " + errorThrown);
        }
      });
      return false;
    });
  },
  loadProductStockNotification: function () {
    $("#popin_oosnotification").dialog({
      width: 480,
      resizable: false,
      bgiframe: true,
      modal: true,
      dialogClass: "popin_oos",
      position: "center",
      autoOpen: false
    });
  },
  openProductStockNotification: function () {
    Loreal.startLoading.apply($("#popin_oosnotification"));
    Loreal.initProductStockNotificationClick();
  },
  initProductStockNotificationClick: function () {
    $("#fakesubmitprdstocknotification").click(function () {
      var $selected = $("#varlist option:selected");
      var values = $selected.val().split("#");
      var sku = values[0];
      var url = loc.url.productnotification;
      var dataForm = $("#popin_oosnotification").serializeElement();
      $.ajax({
        type: "POST",
        url: url + "?varcode=" + sku,
        data: dataForm,
        format: "html",
        success: function (data) {
          if (data.match('class="messagekoerror"') != null) {
            $("#popin_oosnotification").empty().append($(data).filter("FORM").children());
            Loreal.initProductStockNotificationClick();
          }
          else if (data.match('id="successprdstocknotification"') != null) {
            $("#popin_oosnotification").empty().hide().append($(data).filter("FORM").children());
            $("#popin_oosnotification").find("div.content").remove();
            $("#popin_oosnotification").show();
            Loreal.initProductStockNotificationClick();
          }
          else {
            alert("error");
          }
        },
        error: function (jqXHR, textStatus, errorThrown) {
          alert(jqXHR + " - " + textStatus + " - " + errorThrown);
        }
      });
      return false;
    });
    $(".popin_close_button").click(function (data) {
      $("#popin_oosnotification").empty();
      Loreal.stopLoading.apply($("#popin_oosnotification"));
      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;
  },
  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;
  },
  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)
    $("#header_bag_open_basket_layer").click(Loreal.openBag)
    $("#headerbasket_justadded").click(Loreal.closeBag);
    $("#layerbasket_close").click(Loreal.closeBag);
    $("IMG.imgtog", this).ToggleImage();
    Loreal.closeQuickShop();
    $("BODY").scroll(); //Scroll Top
    Loreal.openBag();
    window.setTimeout('Loreal.closeBag()', 5000);
  },
  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 OnlyInStore = values[7];
    var Product_OnlyInStore = values[8];
    var pricewithoutcurrency = values[9];

    //var parsedPrice = strrev(strrev(newprice).substring(2)).replace(",", ".");

    //var splitparsedPrice1 = price.split("€");
    //var parsedPrice1 = splitparsedPrice1[1];
    //alert("parsedPrice1 : " + parsedPrice1);

    var splitparsedPrice = newprice.split("£");
    var parsedPrice = splitparsedPrice[1];
    var reference_price = parseFloat(parseFloat(parsedPrice) / parseFloat(quantity) * parseFloat(reference_quantity));

    if (reference_price.toString() != 'NaN') {
      $("#product_reference_price").text("£" + round(reference_price, 2).replace(",", "."));
    }

    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, loc.packshot.size.plarge));
      $("#img_preview_shade").attr("alt", shade).attr("title", shade).attr("src", $.format(loc.packshot.shades, sku, loc.packshot.size.vlarge));
      $("#img_title_shade").attr("alt", shade).attr("title", shade).attr("src", $.format(loc.packshot.shadestitle, sku, loc.packshot.size.vtitle));
    }

    if (OnlyInStore == "1" || Product_OnlyInStore == "1") {
      $("#price_column").hide();
      $("#addtobag").hide();
      $("#out_of_stock").hide();
      $("#only_in_store").show();
      //$("#qtylist").html("<option>1</option>");
      $("#divqtylist").hide();
    }
    else {
      if (stock <= loc.stock.qtymini) {
        $("#price_column").hide();
        $("#addtobag").hide();
        $("#out_of_stock").show();
        $("#only_in_store").hide();
        //$("#qtylist").html("<option>1</option>");
        $("#divqtylist").hide();
      }
      else {
        if (pricewithoutcurrency == "0") {
          $("#price_column").hide();
          $("#addtobag").hide();
          $("#out_of_stock").hide();
          $("#only_in_store").hide();
          //$("#qtylist").html("<option>1</option>");
          $("#divqtylist").hide();
          //$("#oos_notificationlink").show();
        }
        else {
          $("#price_column").show();
          $("#addtobag").show();
          $("#out_of_stock").hide();
          $("#only_in_store").hide();
          //$("#qtylist").html("<option>1</option><option>2</option><option>3</option><option>4</option><option>5</option>");
          $("#divqtylist").show();

        }
      }
    }

    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());
  },
  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, loc.packshot.size.pxlarge);
    $(Loreal.zoomImg).attr("src", src);
    return false;
  },
  loadZoom: function () {
    $(this).hide();
    $("#productlayout_content").append(this);
    $(this).css("width", "500px").fadeIn();
    $("#productZoom").dialog({
      width: 662,
      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: 662,
      resizable: false,
      bgiframe: true,
      modal: true,
      autoOpen: false,
      position: "center",
      dialogClass: 'popin_product_layer'
    }).find(".popin_close_button").click(Loreal.closeGiftWrapping).blur();
    if ($("#js-gitItemList").find("li").length = 1) {
      $("#js-gitItemList").find("input").attr("checked", "checked");
    }
    $("#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");
    if (loc.giftwrapping.issap = 1) {
      var msg1 = encodeURIComponent($("#giftwrapmessage1").val());
      var msg2 = encodeURIComponent($("#giftwrapmessage2").val());
      var msg3 = encodeURIComponent($("#giftwrapmessage3").val());
      var msg4 = encodeURIComponent($("#giftwrapmessage4").val());
      if ($giftwrap.length && (msg1 != "" || msg2 != "" || msg3 != "" || msg4 != "")) {
        var code = encodeURIComponent($giftwrap.val());
        var url = $.format(loc.url.addgiftwrappingsap, code, msg1, msg2, msg3, msg4);
        $("#giftwrappingload").load(url, Loreal.addGiftWrappingOK);
      }
      else {
        $("#giftwrappingerror").show();
      }
    }
    else {
      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;
      var list = pages.split(",");
      var isPage = false;
      $.each(list, function () {
        if (this == pageName) {
          isPage = true;
        }
        return !isPage;
      });
      return isPage;
    }
    //Fix Url rewriting
    $("form").attr("action", Loreal.Page.Url);
    //All : Set image toggle
    $("IMG.imgtog").ToggleImage();
    //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 Promo : Set Menu
    $("#header_promo_navbar").find(".navbar_item_promo_off div").mouseover(Loreal.menuOnMouseOverPromo).mouseout(Loreal.menuOnMouseOutPromo); //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]");
    //Header : Set search feature
    $("#launch_search").click(Loreal.search);
    //Header : Set Basket action
    $("#header_bag_title").click(Loreal.openBag)
    $("#header_bag_open_basket_layer").click(Loreal.openBag);
    $("#headerbasket_justadded").click(Loreal.closeBag);
    $("#layerbasket_close").click(Loreal.closeBag);
    //All : Set Ajax Loading
    $("#popin_loading").ajaxStart(Loreal.startLoading).ajaxStop(Loreal.stopLoading).dialog({
      width: 315,
      bgiframe: true,
      modal: true,
      draggable: false,
      resizable: false,
      position: "center",
      autoOpen: false,
      dialogClass: "popin_loading"
    });
    $("#popin_login").dialog({
      width: 453,
      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").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: 453,
      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();
    Loreal.loadProductStockNotification();
    //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").addClass("safari_chrome");
      }
    }
    //All page focus
    $(".setfocus").find("INPUT,SELECT").eq(0).focus();

    // Homepage (bottomcol picture)
    var images = $('#homepage_bottomcol .image');
    if (images.length > 0) {
      var tampon_top = 0;
      var nb_images = 0;

      while (images[nb_images]) {
        if (tampon_top != images[nb_images].offsetTop) {
          $(images[nb_images]).addClass('first_image');
          tampon_top = images[nb_images].offsetTop;
        }
        nb_images++;
      }
    }

    //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();
      }
    }

    //Product & Receipt : Set print
    $("#print").click(Loreal.print);


    //PRODUCT.HTML
    if (IsPage("product")) {
      //Set Tab if exist
      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);

      //Used for stock notification functionnality
      Loreal.clickOosNotificationLink();
    }

    //SUBCATEGORY.HTML, SEARCH.HTML, PRODUCTHTML, CONTENT.HTML, STATICPAGE.HTML
    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);
    }

    //SUBCATEGORY.HTML, SEARCH.HTML
    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 });
      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);
      }
    }

    //SUBCATEGORY.HTML, SEARCH.HTML, CONTENT.HTML, STATICPAGE.HTML, PUSHPAGE.HTML
    if (IsPage("subcategory,search,content,staticpage,pushpage")) {
      //Set QuickShop
      $("a[id^=quickshop]").click(Loreal.loadQuickShop);
    }

    //SUBCATEGORY.HTML, BASKET.HTML, SEARCH.HTML,  ONE-PAGE-CHECKOUT.HTML
    if (IsPage("subcategory,basket,search,one-page-checkout")) {
      $("*[class=product_reference_price_container]").each(function () {

        var reference_quantity = $("input[id=reference_quantity_" + this.id + "]")[0].value;
        var quantity = $("input[id=quantity_" + this.id + "]")[0].value;
        var price = $("input[id=price_" + this.id + "]")[0].value;
        var splitprice = price.split("£");
        var price = splitprice[1];

        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).replace(",", "."));
        }
      });
    }

    //REGISTER.HTML
    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);
      if (!Loreal.Page.IsPostBack) {
        $("INPUT[id$=ep0cbPrimaryDeliveryAddress]").attr("checked", "checked");
      }
    }

    //EDIT-PROFILE.HTML
    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);
    }

    //REGISTER.HTML, EDIT-PROFILE.HTML
    if (IsPage("register,edit-profile")) {
      Loreal.labelLink();
    }

    //FORGOT-PASSWORD.HTML
    if (IsPage("forgot-password")) {
      //Set password key press
      $("#forgotpassword INPUT").keyPressEnter("A[id$=submitforgotpassword]");
    }

    //ORDER-HISTORY.HTML
    if (IsPage("order-history")) {
      //Set view order details
      $(".vieworderdetails").click(Loreal.viewOrderDetails);
      $(".vieworderdetails").eq(0).click();
    }

    //FAVORITES.HTML
    if (IsPage("favorites")) {
      //Set "delete" and "add to bag"
      $("A[id$=deletefavorite]").click(Loreal.deleteFavorite);
      $("A[id$=addtobagfavorite]").click(Loreal.addToBagFavorite);
    }


    //STORELOCATOR-SEARCH.HTML
    if (IsPage("storelocator-search")) {
      $("#loc-search").click(Loreal.storeLocator);
      $("DIV.margin_bloc INPUT").keyPressEnter("#loc-search");
    }

    //CONTACTUS.HTML
    if (IsPage("contactus")) {
      var mySubject = $("#mainSubject option:selected").val();
      if (mySubject == 'Order') {
        $(".subjectbrand_container").hide();
        $("#productInfos input").val("");
        $("#productInfos").hide();
        $(".subjectorder_container").show();
        $(".orderNumber_container input").val("");
        $(".orderNumber_container").show();
      } else if (mySubject == 'Brand') {
        $(".subjectorder_container input").val("");
        $(".subjectorder_container").hide();
        $(".orderNumber_container input").val("0000");
        $(".orderNumber_container").hide();
        $(".subjectbrand_container").show();
        $("#productInfos").show();
      }

      $("#mainSubject").change(function () {
        mySubject = $(this).val();
        if (mySubject == 'Order') {
          $(".subjectbrand_container").hide();
          $("#productInfos").hide();
          $(".subjectorder_container").show();
          $(".orderNumber_container input").val("");
          $(".orderNumber_container").show();
        } else if (mySubject == 'Brand') {
          $(".subjectorder_container").hide();
          $(".orderNumber_container").hide();
          $(".orderNumber_container input").val("0000");
          $(".subjectbrand_container").show();
          $("#productInfos").show();
        }
        $('input[name$=mail_to]').val("");
        $('input[name$=mail_subject_code]').val("");
        $('input[name$=mail_subject]').val("");
        $('input[name$=mail_subsubject]').val("");
        $(".subjectorder_container select, .subjectbrand_container select").val("");
      });

      $("#subSubjectOrder, #subSubjectBrand").change(function () {
        var $this = $(this);
        var getContactCode = $this.find('option:selected').attr("value").split('#')[0];
        var getSubject = $this.find('option:selected').attr("value").split('#')[1];
        var getSubjectCode = $this.find('option:selected').attr("value").split('#')[2];
        var getContactMail = $this.find('option:selected').attr("value").split('#')[3];
        var getSubSubject = $this.find('option:selected').attr("value").split('#')[4];
        var getSubSubjectCode = $this.find('option:selected').attr("value").split('#')[5];
        $('input[name$=mail_to]').val(getContactMail);
        $('input[name$=mail_subject]').val(getSubject);
        $('input[name$=mail_subject_code]').val(getSubjectCode);
        $('input[name$=mail_subsubject]').val(getSubSubject);
        $('input[name$=mail_subsubject_code]').val(getSubSubjectCode);
      });
    }

    //BASKET.HTML (checkout)
    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);

      //Sample
      if (parseInt($("#subtotalPrice").val()) >= parseInt(loc.basket.conf.samplebasketamount)) {
        $("#jssampletxt").text(loc.basket.sampleavailable);
        $(".container_sample :checkbox").click(function (e) {
          if ($(".container_sample input:checked").length > 2) {
            e.preventDefault();
            $("#sample_error").show();
          }
        });
      }
      else {
        $("#jssampletxt").text(loc.basket.sampleunavailable);
        $(".container_sample :checkbox").hide();
        if ($(".container_sample input:checked").length > 0) {
          $(".container_sample input:checked").each(function () {
            $(this).removeAttr("checked");
          });
        }
      }
    }

    //LOGIN-REGISTER.HTML (checkout)
    if (IsPage("login-register,login-register-opc")) {
      //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);
    }

    // BILLING.HTML (checkout)
    if (IsPage("billing")) {
      //$('#shipToSameAddress input[name$=address_ext3]').val(0);
      $("#shipToSameAddress #sameAddress").click(function () {
        if ($(this).is(':checked')) {
          $('#shipToSameAddress input[name$=address_ext3]').val(1);
        } else {
          $('#shipToSameAddress input[name$=address_ext3]').val(0);
        }
      });
    }

    // SHIPPING.HTML (checkout)
    if (IsPage("shipping")) {

      jQuery.fn.CopyValueTo = function (selector) {
        var $to = $(selector);
        return this.find("INPUT,SELECT").each(function () {
          var $this = $(this);
          var val = $this.val();
          var names = $this.attr("name")/*.split("$")*/;
          //var name = names[names.length - 1];
          $to.find("INPUT,SELECT").filter("[name$=" + names + "]").val(val);
        });
      };

      if ($('#billingAddress input[name$=address_ext3]').val() == 1) {
        $("#billingAddress").CopyValueTo("#shippingAddress");
        var getTitle = $("#billingAddress input[name$=title_list]").val();
        $("#shippingAddress select[name$=title_list_choice]").val(getTitle);
        $("#addressChoice .sameAsBilling").attr("checked", "checked");
      } else {
        $("#addressChoice .newAddress").attr("checked", "checked");
      }

      $("#addressChoice .newAddress").click(function () {
        $("#shippingAddress input[type=text]").val("");
        $("#shippingAddress select[name$=title_list_choice]").val("Ms");
        $('#billingAddress input[name$=address_ext3]').val(0);
        $("#addressChoice .sameAsBilling").removeAttr("checked");
      });

      //get and set value is shipping address same as billing onclick

      $("#addressChoice .sameAsBilling").click(function () {
        //alert("set values");
        $("#billingAddress").CopyValueTo("#shippingAddress");
        var getTitle = $("#billingAddress input[name$=title_list]").val();
        $("#shippingAddress select[name$=title_list_choice]").val(getTitle);
        $('#billingAddress input[name$=address_ext3]').val(1);
      });
    }

    // CHECK-PAYMENT.HTML (checkout)
    if (IsPage("check-payment")) {
      $("#body #printSubmit").click(function () {
        window.open(loc.url.paymentprint, "new_window", 'width=' + loc.popinsize.paymentprint.w + ',height=' + loc.popinsize.paymentprint.h + ',resizable=0,toolbar=0,scrollbars=0,status=0,menubar=0');
        return false;
      });
    }

    // INDEX.HTML
    if (IsPage("index")) {
      // Manage carousel homepage
      Showcase = function () {
        var cc = this,
				showcase = jQuery('.showcase'),
				showcaseNavItem = showcase.find('.showcaseNav li'),
				showcaseItem = showcase.find('> div li'),
				currentItemHash,
				timer;
        /**
        * Inits showcase
        * @method
        */
        cc.init = function () {
          // enables default state
          showcaseItem.closest('div').addClass('jsed');
          showcaseNavItem.filter(':first').addClass('active');
          showcaseItem.filter(':first').addClass('active');
          if (showcaseNavItem.length > 1) {
            cc.change();
            cc.timer();
            cc.stopTimer();
          }
        }; //init
        /**
        * Binds changing item mechanics
        * @method
        */
        cc.change = function () {
          showcaseNavItem.find('a').click(function (evt) {
            evt.preventDefault();
            evt.stopPropagation();
            currentItemHash = jQuery(this.hash);
            // toggling nav item active state
            jQuery(this).parent().addClass('active')
										 .siblings().removeClass('active');
            currentItemHash.show();
            showcaseItem.filter('.active').fadeOut(function () {
              jQuery(this).removeClass('active');
              currentItemHash.addClass('active')
            });
            jQuery(this).blur();
          });
        }; //change
        /**
        * Timer
        * @method
        */
        cc.timer = function () {
          timer = window.setInterval(function () {
            var currentItem = showcaseNavItem.filter('.active');
            if (currentItem.next().length) {
              currentItem.next().find('a').trigger('click');
            } else {
              currentItem.siblings().filter(':first').find('a').trigger('click');
            }
          }, 3400);
        }; //timer
        cc.stopTimer = function () {
          jQuery('.showcaseNav li, .showcase .jsed li').bind('mouseenter mouseleave', function (evt) {
            switch (evt.type) {
              case 'mouseenter':
                window.clearInterval(timer);
                break;
              case 'mouseleave':
                cc.timer();
                break;
            }
          });
        }; //stopTimer
      };

      // home showcase
      if (jQuery('.showcase').length) {
        var showcase = new Showcase().init();
        i = 0;
        $(".showcaseNav li").each(function () {
          $(".showcaseNav li a").eq(i).html(i + 1);
          i++;
        });
        $(".showcaseNav").show();
      }
    } //Showcase

    /* COOKIES */

    var Cookies = {
      init: function () {
        var allCookies = document.cookie.split('; ');
        for (var i = 0; i < allCookies.length; i++) {
          var cookiePair = allCookies[i].split('=');
          this[cookiePair[0]] = cookiePair[1];
        }
      },
      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=/";
        this[name] = value;
      }
    };
    Cookies.init();

    var cookiesArray = document.cookie.split('; ');
    var cookiesArrayLen = document.cookie.split(';').length;
    //console.log("liste cookies : " + cookiesArray);
    //console.log("nb cookies : " + cookiesArrayLen);

    for (var i = 0; i < cookiesArrayLen; i++) {
      //console.log("parse array cookie");
      //console.log(cookiesArray[i]);
      var x = Cookies['onetime'];
      if (x) {
        //console.log('Cookie onetime \nthat you set on a previous visit, is still active.\nIts value is ' + x);
        return false;
      } else {
        window.setTimeout(function () {
          $('.header_promo_navbar_menu').show();
        }, 3000)
        window.setTimeout(function () {
          $('.header_promo_navbar_menu').hide();
        }, 8000)
        Cookies.create('onetime', 'done');
        //console.log("cookie created");
        return false;
      }

    }

    /*if (document.cookie = 'onetime') {
    console.log("cookie already exists, already came");
    } else {
    window.setTimeout(function(){
    $('.header_promo_navbar_menu').show();
    },3000)
    window.setTimeout(function(){
    $('.header_promo_navbar_menu').hide();
    },5000)
    Cookies.create('onetime','true',7);
    alert('Cookie created');
    function readIt(name) {
    alert('The value of the cookie is ' + Cookies[name]);
    }
    console.log(document.cookie);
		
    }*/
    /********************************/

  }
});




//On DOM Ready Let's Go
$(Loreal.onReady);


//JavaScript Function
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("");
}
