de la "section 3" gagne la classe "lm-dawsy_active" (la plus proche de la ligne de demarcation)
- L'element pointe par l'attribut data-lm-dawsy_other_active_element_selector (#point_section_3) du
de la section 3:
- Gagne aussi la classe "lm-dawsy_active"
*/
Lalema.Tools.Dawsy = {
init: function() {
var self = this;
var $anchors = $(".lm-dawsy");
if ($anchors.length <= 0) { return 0; }
var $active_anchor = self.dawsy_find_active_anchor($anchors);
var old_active_id = $active_anchor.attr("id");
self.dawsy_set_new_active_anchor($active_anchor);
$(document).ready(function() {
$(window).scroll(function() {
$active_anchor = self.dawsy_find_active_anchor($anchors);
if ($active_anchor.attr("id") != old_active_id) {
self.dawsy_set_new_active_anchor($active_anchor);
old_active_id = $active_anchor.attr("id");
}
});
});
},
dawsy_find_active_anchor: function($list_of_anchors) {
var y = $(window).scrollTop();
var smallest_delta = 999999;
var $active_anchor = {};
for (var i = 0; i < $list_of_anchors.length; i++) {
var $a = $($list_of_anchors[i]);
var top_of_the_element = $a.offset().top;
var delta_element_scrolltop = Math.abs(top_of_the_element - y);
if (delta_element_scrolltop < smallest_delta) {
smallest_delta = delta_element_scrolltop;
$active_anchor = $a;
}
}
return $active_anchor;
},
dawsy_set_new_active_anchor: function($active_anchor) {
$(".lm-dawsy_active").removeClass("lm-dawsy_active");
$active_anchor.addClass("lm-dawsy_active");
$($active_anchor.data("lm-dawsy_other_active_element_selector")).addClass("lm-dawsy_active");
}
};/*
Permet de setuper automatiquement une "fancybox" (fenetre modale). Il suffit de donner une classe a l'element pour faire
fonctionner la fancybox.
Les types de "fancybox" disponibles sont:
- .fancybox_image : permet d'ouvrir une image
*/
Lalema.Tools.Fancyboxes = {
init: function() {
if (!$.fn.fancybox) { return false; }
var self = this;
self.setup_fancybox_for_images();
self.setup_fancybox_for_iframes();
self.setup_fancybox_for_ajax();
self.setup_fancybox_for_inline_content();
},
setup_fancybox_for_images: function() {
var opened = false;
$(".fancybox_image").fancybox({
"openEffect": "elastic",
"helpers": {
"overlay": {
"locked": false
},
"thumbs": {
width : 90,
height : 90
}
},
"beforeShow" : function() {
if (opened) { return true; }
opened = true;
if ($(this.element).data("fbox-hide-target")) {
$($(this.element).data("fbox-hide-target")).css("visibility", "hidden");
}
},
"afterClose" : function() {
opened = false;
if ($(this.element).data("fbox-hide-target")) {
$($(this.element).data("fbox-hide-target")).css("visibility", "visible");
}
}
});
},
setup_fancybox_for_iframes: function() {
$(".fb_iframe").fancybox({
"openEffect" : "fade",
"closeEffect" : "none",
"type" : "iframe",
"autoSize" : false,
"scrolling" : "no",
"arrows" : false,
"helpers" : {
"overlay": {
"locked": false
}
},
"beforeShow" : function() {
var $body = $('.fancybox-iframe').contents().find("body");
this.width = $body.width() + 1;
this.height = $body.height() + 1;
},
"afterShow" : function() {
$('.fancybox-iframe')[0].contentWindow.$("body").trigger("fboxLoaded");
}
});
},
setup_fancybox_for_ajax: function() {
$(".fb_ajax").fancybox({
"openEffect" : "fade",
"type" : "ajax"
});
},
setup_fancybox_for_inline_content: function() {
$(".fb_inline").fancybox({
"openEffect" : "fade",
"type" : "inline",
"autoSize" : true,
"maxWidth" : "800"
});
}
};Lalema.Tools.Faux_Radios_Buttons = {
init: function() {
var self = this;
$(".faux_radios_group").each(function() {
self.repaint_group($(this));
});
$(".faux_radios_button").click(function() {
self.set_group_value($(this).closest(".faux_radios_group"), $(this).data("faux-radios-value"));
});
},
repaint_group: function($faux_radios_group) {
var self = this;
$input = $faux_radios_group.find("input[type=hidden]");
$faux_radios_group.find(".faux_radios_button").removeClass("selected");
$active_faux_radio_button = $faux_radios_group.find(".faux_radios_button[data-faux-radios-value='" + $input.val() + "']");
$active_faux_radio_button.addClass("selected");
$.extend($faux_radios_group.data(), $active_faux_radio_button.data());
},
set_group_value: function($faux_radios_group, value) {
var self = this;
$input = $faux_radios_group.find("input[type=hidden]");
if ($input.val() == value) {
return false;
}
$input.val(value);
self.repaint_group($faux_radios_group);
$faux_radios_group.trigger("change");
}
};Lalema.Tools.Flash_Messages = {
init: function() {
$(".lm-flash").each(function() {
var $flash = $(this);
$bouton_effacer = $("
");
$bouton_effacer.click(function() {
$flash.fadeOut("fast");
});
$(this).append($bouton_effacer);
$flash.delay(350).slideDown();
});
}
};Lalema.Tools.Google_Analytics_Events = {
init: function() {
if (typeof(ga) !== "function") {
ga = function(ga_command, ga_event, ga_category, ga_action, ga_label, ga_additional_params) {
//console.log("CATEGORY: " + ga_category + " | ACTION: " + ga_action + " | LABEL: " + ga_label );
}
}
$(".ga_track_event").each(function() {
var $self = $(this);
var ga_action = $self.data("ga-trigger");
var google_analytics_event_function = function() {
ga(
"send",
"event",
$self.data("ga-category"),
$self.data("ga-action"),
$self.data("ga-label"),
{
"url" : $self.data("ga-url")
}
);
};
$self.on(ga_action, google_analytics_event_function);
});
}
};Lalema.Tools.Placeholder_For_Textboxes = {
init: function() {
$("input[data-placeholder]").focus(function() {
if ($(this).val() == $(this).data("placeholder")) {
$(this).val("");
}
}).focusout(function() {
if ($(this).val() == "") {
$(this).val($(this).data("placeholder"));
}
});
}
};
Lalema.Tools.Scaffoldings = {
toggle_class_if: function(selector, className, callback ) {
if (callback()) {
$(selector).addClass(className);
}
else {
$(selector).removeClass(className);
}
},
toggler_champs_autres: function(params) {
var self = this;
for (var i = 0; i < params.length; i++) {
(function(p) {
$(p.question).on("change", function() {
self.toggle_class_if(p.autre, p.klass, function() {
var value = $(p.question).data(p.datasource).toLowerCase();
return (value == "autre" || value == "other");
});
});
})(params[i]);
}
}
};
Lalema.Tools.Show_More_Less = {
init: function() {
$(".lm-showmoreless").each(function() {
var $that = $(this);
var $target = $that.find($that.data("lm-showmoreless-selector"));
if ($target.height() >= parseInt($target.css("max-height"))) {
var $div =
$(""
+ "
"
);
$that.append($div);
$div.data("lm-showmoreless-maxheight", $target.css("max-height"));
$div.find(".lm-showmoreless_state_showless").toggle();
$div.click(function() {
if ($(this).data("state") == 0) {
$(this).data("state", 1);
$target.css("max-height", "999px");
}
else {
$(this).data("state", 0);
$target.css("max-height", $(this).data("lm-showmoreless-maxheight"));
}
$(this).find(".lm-showmoreless_state_showmore").toggle();
$(this).find(".lm-showmoreless_state_showless").toggle();
});
}
});
}
};Lalema.Tools.Slideables = {
init: function() {
$(".slides_container").each(function() {
var $slide_container = $(this);
$slide_container.find(".slideable").click(function() {
var $slide = $(this);
$slide_container.animate({
"margin-left": "-100%"
}, 200, function () {
$slide_container.css("margin-left", "0");
window.scrollTo(0, 0);
$slide.closest(".slide").removeClass("active");
$($slide.data("slide-target")).addClass("active");
});
});
});
}
};
Lalema.Tools.Smooth_Scrolling_To_Elements = {
init: function() {
$("a.lm-smooth_scroll").click(function(event) {
event.preventDefault();
var $target = $("#" + $(this).data("smooth_scroll_target"));
if ($target.length == 1) {
var hauteur_barre_catalogue = 90;
$("html, body").animate({
scrollTop: $target.offset().top - hauteur_barre_catalogue
}, 500);
}
});
}
};
Lalema.Tools.HTML_Tables_Sorter = {
init: function() {
if (!$.fn.stupidtable) { return false; }
$(".st-th_sortable").each(function() {
$(this).css("cursor", "pointer");
$(this).append("
");
});
$(".st-sortable")
.stupidtable()
.bind("aftertablesort", function(event, data) {
var th = $(this).find("th");
th.find("span").removeClass().addClass("unsorted_arrow");
var arrow = data.direction === "asc" ? "sorted_arrow_up" : "sorted_arrow_down";
th.eq(data.column).find("span").attr("class", arrow);
});
}
};
Lalema.Tools.Tabs_Containers = {
init: function() {
$(".tabs").tabs();
}
};Lalema.Tools.Tooltips = {
init: function() {
$(".jq_tooltips").tooltip({
show: {
"effect": "none",
"delay": 0
},
hide: {
"effect": "none",
"delay": 0
},
tooltipClass: "custom-tooltip",
position: {
"my": "center top",
"at": "center bottom+10"
}
});
$(".jq_tooltips_east").tooltip({
show: {
"effect": "none",
"delay": 0
},
hide: {
"effect": "none",
"delay": 0
},
tooltipClass: "custom-tooltip",
position: {my: "left center", at: "right center"}
});
}
};Lalema.Mobile = {
Views: {},
init: function() {
this.Skeleton.init();
Lalema.Tools.run_all_basic_tools();
this.load_script_for_controller("catalogue", this.Views.Catalogue_Mobile);
this.load_script_for_controller("catalog", this.Views.Catalogue_Mobile);
this.load_script_for_controller("produit", this.Views.Fiche_Produit_Mobile);
this.load_script_for_controller("product", this.Views.Fiche_Produit_Mobile);
this.load_script_for_controller("chariot", this.Views.Chariot_Mobile);
this.load_script_for_controller("cart", this.Views.Chariot_Mobile);
},
load_script_for_controller: function(controller_name, ui_object) {
routes = window.location.href.split("/");
controller_loaded = routes[3];
if (controller_loaded == controller_name) {
ui_object.init();
}
}
};
Lalema.Mobile.Skeleton = {
init: function() {
var self = this;
self.$menu_top = $("#menu_top");
self.$menu_tabs = $("#menu_tabs");
self.$main_container = $("#main_container");
self.active_tab_selector = "";
self.main_container_Y = 0;
self.setup_top_menu();
self.setup_autocomplete_searchbox();
},
/* PUBLIC */
setup_autocomplete_searchbox: function() {
var self = this;
$("#main_searchbox").autocomplete({
"source": function(request, response) {
var url = $("#frm_recherche").data("autocomplete-source") + "?q=" + encodeURIComponent(request.term);
$.getJSON(url, function(data) {
response(data);
});
},
"select": function(event, ui) {
event.preventDefault();
document.location.href = ui.item.permalink;
}
}).focus(function() {
self.$menu_top.addClass("mode_recherche");
$("#toolbar").hide();
});
$("#bouton_fermer").click(function() {
self.$menu_top.removeClass("mode_recherche");
$("#toolbar").show();
});
$("#bouton_search").click(function() {
if (self.$menu_top.hasClass("mode_recherche")) {
$("#frm_recherche").submit();
} else {
$("#main_searchbox").focus();
}
});
var new_render_function = function(ul, item) {
var $row = $("");
if (item.type == "famille" || item.type == "fournisseur" || item.type == "bundle" || item.type == "certification") {
$row.append(
"
" +
" " + item.prefixe + ": " + item.nom + "
" +
""
);
}
else {
var classe_discontinue = item.discontinue != "" ? "discontinue" : "";
$row.append(
"
" +
" " +
"
" +
"
" + item.nom + (classe_discontinue != "" ? " " + item.discontinue + "" : "") + "
" +
"
" + item.usage + "
" +
"
" +
" " +
""
);
}
$row.appendTo(ul);
return $row;
};
$.each($("#main_searchbox"), function(i, e) {
$(e).data("ui-autocomplete")._renderItem = new_render_function;
});
},
setup_top_menu: function() {
var self = this;
self.$menu_top.find(".tab").click(function(event) {
event.preventDefault();
if ($(this).hasClass("active")) {
$(this).removeClass("active");
self._close_menu();
}
else {
self._switch_tab($(this));
self._open_menu(function() {
});
}
});
self.$menu_top.find(".tab_proxy").click(function(event) {
event.preventDefault();
self._switch_tab($($(this).data("proxy-tab")));
});
},
/* PRIVATE */
_close_menu: function() {
var self = this;
self.$menu_top.removeClass("opened");
$("body").removeClass("menu_opened");
self.$main_container.css("display", "block");
window.setTimeout(function() {
self.$menu_top.animate({
"height": "65px"
}, 350, function() {
self.$menu_top.css("height", "");
});
window.scrollTo(0, self.main_container_Y);
}, 250);
},
_get_viewport_height: function() {
return window.innerHeight ? window.innerHeight : $(window).height();
},
_open_menu: function(callback) {
var self = this;
self.main_container_Y = $(window).scrollTop();
self.$menu_top.animate({
"height": self._get_viewport_height()
}, 350, function() {
self.$menu_top.addClass("opened");
self.$main_container.css("display", "none");
$("body").addClass("menu_opened");
window.scrollTo(0, 0);
callback();
});
},
_switch_tab: function($tab) {
var self = this;
self.$menu_top.find(".cta_toolbar").removeClass("active");
self.$menu_tabs.find(">.active").removeClass("active");
$tab.addClass("active");
var $associated_tab = $($tab.data("associated-tab"));
$associated_tab.addClass("active");
}
};Lalema.Mobile.Skeleton = {
init: function() {
var self = this;
self.$menu_top = $("#menu_top");
self.$menu_tabs = $("#menu_tabs");
self.$main_container = $("#main_container");
self.active_tab_selector = "";
self.main_container_Y = 0;
self.setup_top_menu();
self.setup_autocomplete_searchbox();
},
/* PUBLIC */
setup_autocomplete_searchbox: function() {
var self = this;
$("#main_searchbox").autocomplete({
"source": function(request, response) {
var url = $("#frm_recherche").data("autocomplete-source") + "?q=" + encodeURIComponent(request.term);
$.getJSON(url, function(data) {
response(data);
});
},
"select": function(event, ui) {
event.preventDefault();
document.location.href = ui.item.permalink;
}
}).focus(function() {
self.$menu_top.addClass("mode_recherche");
$("#toolbar").hide();
});
$("#bouton_fermer").click(function() {
self.$menu_top.removeClass("mode_recherche");
$("#toolbar").show();
});
$("#bouton_search").click(function() {
if (self.$menu_top.hasClass("mode_recherche")) {
$("#frm_recherche").submit();
} else {
$("#main_searchbox").focus();
}
});
var new_render_function = function(ul, item) {
var $row = $("");
if (item.type == "famille" || item.type == "fournisseur" || item.type == "bundle" || item.type == "certification") {
$row.append(
"
" +
" " + item.prefixe + ": " + item.nom + "
" +
""
);
}
else {
var classe_discontinue = item.discontinue != "" ? "discontinue" : "";
$row.append(
"
" +
" " +
"
" +
"
" + item.nom + (classe_discontinue != "" ? " " + item.discontinue + "" : "") + "
" +
"
" + item.usage + "
" +
"
" +
" " +
""
);
}
$row.appendTo(ul);
return $row;
};
$.each($("#main_searchbox"), function(i, e) {
$(e).data("ui-autocomplete")._renderItem = new_render_function;
});
},
setup_top_menu: function() {
var self = this;
self.$menu_top.find(".tab").click(function(event) {
event.preventDefault();
if ($(this).hasClass("active")) {
$(this).removeClass("active");
self._close_menu();
}
else {
self._switch_tab($(this));
self._open_menu(function() {
});
}
});
self.$menu_top.find(".tab_proxy").click(function(event) {
event.preventDefault();
self._switch_tab($($(this).data("proxy-tab")));
});
},
/* PRIVATE */
_close_menu: function() {
var self = this;
self.$menu_top.removeClass("opened");
$("body").removeClass("menu_opened");
self.$main_container.css("display", "block");
window.setTimeout(function() {
self.$menu_top.animate({
"height": "65px"
}, 350, function() {
self.$menu_top.css("height", "");
});
window.scrollTo(0, self.main_container_Y);
}, 250);
},
_get_viewport_height: function() {
return window.innerHeight ? window.innerHeight : $(window).height();
},
_open_menu: function(callback) {
var self = this;
self.main_container_Y = $(window).scrollTop();
self.$menu_top.animate({
"height": self._get_viewport_height()
}, 350, function() {
self.$menu_top.addClass("opened");
self.$main_container.css("display", "none");
$("body").addClass("menu_opened");
window.scrollTo(0, 0);
callback();
});
},
_switch_tab: function($tab) {
var self = this;
self.$menu_top.find(".cta_toolbar").removeClass("active");
self.$menu_tabs.find(">.active").removeClass("active");
$tab.addClass("active");
var $associated_tab = $($tab.data("associated-tab"));
$associated_tab.addClass("active");
}
};Lalema.Mobile.Views.Catalogue_Mobile = {
init: function() {
var self = this;
var $form = $("#frmFiltres");
$(".bouton_appliquer").click(function() {
$form.submit();
});
$(".filtre_applique").click(function() {
$("#carac_" + $(this).data("valeur-carac")).attr("checked", false);
$(this).fadeOut("fast");
});
$(".lien_image_viewlet_sku").each(function(e) {
$(this).addClass("slideable");
$(this).data("slide-target", "#slide_grosses_images_viewlets");
}).click(function(e) {
e.preventDefault();
$("#grosse_image_viewlet").attr("src", $(this).find(".image_viewlet_sku").data("grosse-image"));
$("#slide_grosses_images_viewlets .lien_vers_fiche").attr("href", $(this).attr("href"));
});
}
};Lalema.Mobile.Views.Chariot_Mobile = {
init: function() {
this.setup_submit_buttons();
this.setup_delete_quantity_buttons();
},
setup_submit_buttons: function() {
$form = $("#chariot #frm_chariot");
$("#chariot .bouton_ajuster_quantite").click(function() {
$form.submit();
});
$("#chariot .bouton_soumettre_chariot").click(function() {
$form.find("#show_step2").val("1");
$form.submit();
});
},
setup_delete_quantity_buttons: function() {
$(".bouton_effacer_quantite").click(function() {
$(this).parent().find("input[type='number']").val("0");
$("#frm_chariot").submit();
});
}
};
Lalema.Mobile.Views.Fiche_Produit_Mobile = {
init: function() {
var self = this;
self.setup_selection_nouveau_sku();
self.setup_zoom_image();
},
setup_selection_nouveau_sku: function() {
var self = this;
$(".liste_options").change(function() {
var md5 = self._get_md5_concat_des_options_selectionnees();
var sku = DATABASE_SKUS[md5];
self._set_nouveau_sku(sku);
});
},
setup_zoom_image: function() {
$("#section_image_produit").click(function() {
$(this).toggleClass("zoomed");
});
},
_get_md5_concat_des_options_selectionnees: function() {
var concatenation_des_options = "";
$(".liste_options").each(function() {
concatenation_des_options += $(this).val();
});
return concatenation_des_options;
},
_set_nouveau_sku: function(sku) {
/* tester si le sku existe ou pas */
if (sku === undefined) {
$("#fiche_produit_mobile").addClass("sku_existe_pas");
return false;
}
else {
$("#fiche_produit_mobile").removeClass("sku_existe_pas");
}
/* changer l'image principale */
$("#fiche_produit_mobile #section_image_produit .image_principale").attr("src", sku.path_image_trim);
/* changer le sku et son ID dans le form */
$("#id_sku").val(sku.id);
$(".sku").html(sku.sku);
/* changer le format de vente */
var $format_vente = $("#fiche_produit_mobile #format_vente");
$format_vente.html(sku.format_vente);
/* changer le minimum requis à l'achat */
var $qte_minimum_achat = $("#fiche_produit_mobile .qte_minimum_achat");
if (sku.qte_minimum_achat !== "") {
$qte_minimum_achat.addClass("visible");
}
else {
$qte_minimum_achat.removeClass("visible");
}
$qte_minimum_achat.find(".valeur").html(sku.qte_minimum_achat);
/* changer l'etat de la livraison rapide */
if (sku.qte_disponible > 0) {
$("#fiche_produit_mobile .livraison_rapide_tag ").addClass("visible");
}
else {
$("#fiche_produit_mobile .livraison_rapide_tag ").removeClass("visible");
}
/* changer les notes specifiques au sku */
var $notes = $("#fiche_produit_mobile .notes_sku");
$notes.html(sku.notes);
/* changer l'etat du bouton des pieces supplementaires */
if (sku.nb_pieces > 0) {
$(".tag.possede_des_pieces").addClass("visible");
$(".tag.possede_des_pieces a").attr("href", sku.url_pieces);
}
else {
$(".tag.possede_des_pieces").removeClass("visible");
$(".tag.possede_des_pieces a").attr("href", "");
}
}
};