//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());
		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.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);
		$("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;
	},
	
	/* Tell a friend */
	/*tellAFriend: function() {
var lien = '/ajax/popintellafriend.aspx?prdcode={0}&categorycode={1}';
		var $this = $(this).blur();
		// L'info que l'on cherche (prdcode) est dans un input
		var prdcode = $('#prdcode').eq(0).val();
		var categorycode = $('#catcode').eq(0).val();
		var data = new Array(prdcode, categorycode);
		var url = $.format(lien, data);
		$("#popin_tellafriend").load(url, Loreal.showPopinTellAFriend);
		return false;
	},*/
	showPopinTellAFriend: function () {
		// Chargement des donnees dans la popin
		$('#popin_tellafriend_produit').find('.product_name').html($('#product_info h1').html());
		$('#popin_tellafriend_produit').find('.product_subname').html($('#product_info h2').html());
		$('#popin_tellafriend_produit').find('.product_desc').html($('#product_info ul').html());
		$('#popin_tellafriend_produit').find('.product_image').html('<img src="" alt="" />');
		$('#popin_tellafriend_produit').find('.product_image img').attr('src', $('#img_product_shade').attr('src').replace('_l.', '_m.'));
		
		/*$('#popin_tellafriend').html($('#backup_tellafriend').html());
		$('#backup_tellafriend input, #backup_tellafriend textarea').val('');
		$('#popin_tellafriend input, #popin_tellafriend textarea').val('');
		$('#popin_tellafriend input, #popin_tellafriend textarea').keyup( function () {
			$('#backup_tellafriend #' + $(this).attr('id')).val($(this).val());
		});*/
	
		$("#popin_tellafriend").dialog("open");
		$("#popin_tellafriend #close_popin_tellafriend").click(function() {
			$("#popin_tellafriend").dialog("close");
			return false;
		});
		return false;
	},
	/* */
	
	/* Out of stock */
	prodOutOfStock: function () {
		var $this = $(this).blur();
		// Dans le cas de la page product, l'info que l'on cherche (prdcode) est dans un input
		var prdcode = $('#variantcode').eq(0).val();
		Loreal.outOfStock(prdcode);
		return false;
	},
	subcatOutOfStock: function() {
		var $this = $(this).blur();
		var href;
		// Dans l'autre cas le prdcode se trouve directement dans le lien
		if ($this.attr("nodeName").toLowerCase() == "a") {
			href = $this.attr("href");
		}
		else {
			href = $this.val();
		}
		var val = href.split("#");
		var prdcode = val[2];
		Loreal.outOfStock(prdcode);
		return false;
	},
	outOfStock: function (prdcode) {
		var lien = '/ajax/popinoutofstock.aspx?prdcode={0}'; /* TODO : mettre dans site manager */
		var data = new Array(prdcode);
		var url = $.format(lien, data);
		$("#pop-in_outofstock").load(url, Loreal.showPopinOutOfStock);
		
	},
	showPopinOutOfStock: function () {
		$("#pop-in_outofstock").show();
		/*$("#close_popin_outofstock").click(function() {
			$("#popin_outofstock").dialog("close");
			return false;
		});*/
		
		$("#pop-in_outofstock div[id$=testRenvoi]").click(function() {
			alert('test renvoi');
			var prdCode = $('input[id$=prdcode]').val();
			var mail = $('input[id$=emailInput]').val();
			var url = "/tech/TpProductStockNotification.aspx?prdcode="+prdCode+"&mail="+mail;
			
			document.getElementById("pageAlsy").src=url;
			
			
			//$("#pageAlsy").load(url, function() {alert('renvoi effectué')});
		});	
		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)
		$("#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 = strrev(strrev(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;
    },

    // 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;
        }

        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, "^[0-9]{11}")) {
                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) {
        if (field != null && field.val() != null && field.valueOf() != '') {

            var fieldVal = "";

            var regExp = new RegExp(regExpr, "gi");

            fieldVal = field.val();

            if (fieldVal.length <= 0 || fieldVal.match(regExp) != 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;
			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 : 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("Email-Adresse eingeben").keyPressEnter("A[id$=submitNL]");
		//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_tellafriend").dialog({
			width: 328,
			bgiframe: true,
			modal: true,
			draggable: false,
			resizable: false,
			position: "center",
			autoOpen: false,
			dialogClass: "popin_tellafriend"
		});
		$("#popin_tellafriend A[id$=submit]").click(function() {
			//Need to be in form
			var valeur = $("#popin_tellafriend textarea").val();
			$("/html/body/form[0]").append($($("#popin_tellafriend").parent()));
			$("/html/body/form[0]").find('textarea').eq(0).val(valeur);
			$("#popin_tellafriend textarea").val(valeur);
		});

		$("#popin_outofstock").dialog({
			width: 326,
			bgiframe: true,
			modal: true,
			draggable: false,
			resizable: false,
			position: "center",
			autoOpen: false,
			dialogClass: "popin_outofstock"
		});
		$("#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").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", "121px");
			}
		}

		//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("product")) {
			//Set outOfStock action
			$("#outofstock").click(Loreal.prodOutOfStock);
		}
		if (IsPage("subcategory,search,content,product,staticpage")) {
			//Set addToBag action
			$("#addtobag").click(Loreal.addToBag);
			//Set addToFavorite action
			$("#addtofavorite").click(Loreal.addToFavorite);
			//Set tellAFriend action
			$("#tellafriend").click(Loreal.showPopinTellAFriend);
			//Set outOfStock action
			$("a[id^=outofstock_]").click(Loreal.subcatOutOfStock);
			//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);
		}

		//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 = strrev(strrev(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);
		}

		//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();
		}

		//Order History
		if (IsPage("storelocator-search")) {
			$("#loc-search").click(Loreal.storeLocator);
			$("DIV.margin_bloc INPUT").keyPressEnter("#loc-search");
		}

		//All page focus
		$(".setfocus").find("INPUT,SELECT").eq(0).focus();
		
		//Change for DEECOMSUP-74
		if (IsPage("basket")) {
			$("[id^=prodsku_]").each(function () {
				var linenum = $(this).attr("id").split("_")[1],
					imgsrc = ($('#prodhasshades_' + linenum).val() == "1") 
						? '/img/packshot/shades/' + $('#prodsku_'+linenum).val() + '_m.jpg'
						: '/img/packshot/products/' + $('#prodparentsku_' + linenum).val() + '_s.jpg';
				$("#img_" + linenum).attr("src", imgsrc);
			});
        }
	}
});

//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("");
}
