var Lalema = {}; Lalema.Tools = { run_all_basic_tools: function() { this.Ascenceurs.init(); this.Bool_Togglers.init(); this.Closeables.init(); this.Collapsables.init(); this.Collapsables_Groups.init(); this.Dawsy.init(); this.Fancyboxes.init(); this.Faux_Radios_Buttons.init(); this.Flash_Messages.init(); this.Google_Analytics_Events.init(); this.HTML_Tables_Sorter.init(); this.Placeholder_For_Textboxes.init(); this.Show_More_Less.init(); this.Slideables.init(); this.Smooth_Scrolling_To_Elements.init(); this.Tabs_Containers.init(); this.Tooltips.init(); }, get_invisible_width : function($jquery_object) { var $clone = $jquery_object.clone(); $clone.css({ "min-width" : "", "width" : "auto", "display" : "block", "visibility" : "hidden", "float" : "left", "background-color" : "white", "clear" : "both", "font-size" : $jquery_object.css("font-size"), "font-family" : $jquery_object.css("font-family") }); $('body').append($clone); var width = $clone.outerWidth(); $clone.remove(); return width; } }; Lalema.Tools.Ascenceurs = { init: function() { var self = this; if ($(".cage_ascenceur").length == 0) { return 0; } $(".ascenceur").each(function() { self.ajuster_ascenceur($(this)); }); $(window).scroll(function() { $(".ascenceur").each(function() { self.ajuster_ascenceur($(this)); }); }); }, ajuster_ascenceur: function($ascenceur) { var MARGIN_BETWEEN_PENTHOUSE = 10; var $penthouse = $($ascenceur.data("ascenceur-penthouse")); var $cage = $ascenceur.closest(".cage_ascenceur"); var $rez_de_chaussee = $($ascenceur.data("ascenceur-rez-de-chaussee")); var delta_penthouse_rdc = $rez_de_chaussee.offset().top - ($penthouse.offset().top + $penthouse.outerHeight(true)); window.setTimeout(function() { if (delta_penthouse_rdc <= $ascenceur.outerHeight(true)) { $ascenceur.css({ "position" : "absolute", "bottom" : "0", "top" : "" }); } else { $ascenceur.css({ "position" : "fixed", "top" : Math.max($penthouse.outerHeight() + MARGIN_BETWEEN_PENTHOUSE, $cage.offset().top - $(window).scrollTop()), "bottom" : "" }); } }, 1); } }; Lalema.Tools.Bool_Togglers = { init: function() { var self = this; $(".lm_bool_toggler").each(function() { self.repaint($(this)); $(this).click(function() { self.toggle_value($(this)); self.repaint($(this)); }); }); }, get_value: function($bool_toggler) { var $input = $bool_toggler.find("input"); return $input.val(); }, repaint: function($bool_toggler) { if (this.get_value($bool_toggler) == 1) { $bool_toggler.addClass("on"); } else { $bool_toggler.removeClass("on"); } }, set_value: function($bool_toggler, value) { var $input = $bool_toggler.find("input"); $input.val(value); $bool_toggler.trigger("change"); }, toggle_value: function($bool_toggler) { if (this.get_value($bool_toggler) == 1) { this.set_value($bool_toggler, 0); } else { this.set_value($bool_toggler, 1); } } }; /* Ajoute un bouton a un container qui ferme le container lorsque le bouton est clique. */ Lalema.Tools.Closeables = { init: function() { $(".lm-closeable").each(function() { var $that = $(this); $bouton_fermer = $(""); $bouton_fermer.click(function(e) { e.preventDefault(); $that.hide(); }); $that.append($bouton_fermer); }); } };/* Permet de créer des sections collapsable avec un header cliquable qui ouvre la sous-section. Le header doit avoir - la classe: "lm-collapsable" - une cible a ouvrir/fermer avec un "data-lm-collapsable_target_selector" [exemple]

On peut juste voir ce message si on clique sur le H3

[scenario] L'utilisateur clique sur le "h3": - Le

perd la classe "closed" et gagne la classe "opened" - La cible du

#message_secret (la valeur de son attribut data-lm-collapsable_target_selector): - Gagne la classe "opened_target" - S'anime avec jquery (slideDown) */ Lalema.Tools.Collapsables = { init: function() { var self = this; $(".lm-collapsable").css("cursor", "pointer"); $(".lm-collapsable.opened").each(function() { self._open_collapsable($(this), false); }); $(".lm-collapsable.closed").each(function() { self._close_collapsable($(this), false); }); $(".lm-collapsable").click(function(e) { if (!$(this).hasClass("skip_prevent_default")) { e.preventDefault(); } $(this).hasClass("opened") ? self._close_collapsable($(this), true) : self._open_collapsable($(this), true); }); $(".afficher_tous_les_resultats").click(function(e) { e.stopPropagation(); }); }, _open_collapsable: function($collapsable, animate_transition_with_jquery) { var $target = $($collapsable.data("lm-collapsable_target_selector")); $target.stop(); var animation = animate_transition_with_jquery ? $target.slideDown().promise() : $target.show().promise(); $target.removeClass("closed_target").addClass("opened_target"); $collapsable.removeClass("closed").addClass("opened"); animation.done(function() { }); }, _close_collapsable: function($collapsable, animate_transition_with_jquery) { var $target = $($collapsable.data("lm-collapsable_target_selector")); $target.stop(); var animation = animate_transition_with_jquery ? $target.slideUp().promise() : $target.hide().promise(); $collapsable.removeClass("opened").addClass("closed"); $target.removeClass("opened_target").addClass("closed_target"); animation.done(function() { }); } }; Lalema.Tools.Collapsables_Groups = { init: function() { var self = this; $(".lm-collapsable-group.lm-collapsable-group-opened[data-lm-collapsable-group-leader=1]").each(function() { self._open_collapsable_group($(this).data("lm-collapsable-group-name"), false); }); $(".lm-collapsable-group[data-lm-collapsable-group-leader=1]").each(function() { self._close_collapsable_group($(this).data("lm-collapsable-group-name"), false); }); $(".lm-collapsable-group[data-lm-collapsable-group-clickable=1]").click(function() { var group = $(this).data("lm-collapsable-group-name"); if ($(this).hasClass("lm-collapsable-group-opened")) { self._close_collapsable_group(group, true); } else { self._open_collapsable_group(group, true); } }); }, _get_elements_in_group: function(group_name) { return $(".lm-collapsable-group[data-lm-collapsable-group-name='" + group_name + "']"); }, _close_collapsable_group: function(group_name, animate_with_jquery) { var self = this; $group = self._get_elements_in_group(group_name); var operation = animate_with_jquery ? $group.filter("[data-lm-collapsable-group-animation='1']").slideUp().promise() : $.noop(); $.when(operation).done(function() { $group.removeClass("lm-collapsable-group-opened"); }); }, _open_collapsable_group: function(group_name, animate_with_jquery) { var self = this; $group = self._get_elements_in_group(group_name); var operation = animate_with_jquery ? $group.filter("[data-lm-collapsable-group-animation='1']").slideDown().promise() : $.noop(); $.when(operation).done(function() { $group.addClass("lm-collapsable-group-opened"); }); } }; /* [D]ynamic [A]nchors [W]hen [S]crolling [Y] Permet de detecter parmis tous les elements qui possedent la classe "lm-dawsy" lequel est le plus proche du top de la fenetre du browser. L'element gagne ensuite la class "lm-dawsy_active" et peut changer la classe d'autres elements avec son data-attribute "lm-dawsy_other_active_element_selector". [exemple]
Section 1
Du texte quelconque pour expliquer la section 1
Section 2
Du texte quelconque pour expliquer la section 2 Encore plus de texte dans la section 2 Une vraiment grosse section la #2 Ouais elle est vraiment interminable cette section! <------------[LIGNE DE DEMARCATION #42 (top du browser)]
Section 3
Du texte quelconque pour expliquer la section 3
Section 4
Du texte quelconque pour expliquer la section 4 [1] [2] [3] [4] [scenario] L'usager scroll son browser a la ligne de demarcation #42 de l'exemple plus haut: - Tous les elements de la page perdent la class "lm-dawsy_active" - Le
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", ""); } } };