PageSourceSearch

https://indiebook.co.il/Scripts/script.js?v=20251111

js indiebook.co.il collected 2026-10-02 05:22:33 UTC 58,355 bytes, 1,288 lines download raw bytes

1
2
3var hpNewsObj = { ref: null, index: 1, max: 0, interval: null };
4jQuery(document).ready(function () {
5
6    if (isMobile) {
7        jQuery("#hamburger-nav-icon").click(function () { $(this).toggleClass("open"), $("#top-menu-1-mobile").toggleClass("active") });
8    }
9
10    $(".slider").each(function () {
11        var item = this;
12        var items_json = $(item).attr("data-items");
13        if (typeof (items_json) != "undefined" && items_json != "" && typeof ($.fn.ecSlider) != "undefined") {
14            var items = JSON.parse(items_json);
15            $(item).attr("data-items", "");
16            var slider_options = {
17                width: $(item).attr("data-width"),
18                height: $(item).attr("data-height"),
19                items: items,
20                loadBeforeView: true,
21                infinite: true,
22                slidesToShow: 1,
23                slidesToScroll: 1,
24                autoplay: true,
25                fade: false,
26                autoplaySpeed: 4000,
27                cssEase: 'ease',
28                lazyLoad: 'ondemand',
29                dots: false,
30                arrows: true,
31                prevArrow: '<button alt="הקודם" title="הקודם" class="slick-arrow prev-arrow"><svg viewBox="0 0 16000 16000" style="position:absolute;top:0;left:0;width:100%;height:100%;"><polyline class="a" points="4960,1920 11040,8000 4960,14080 "></polyline></svg></button>',
32                nextArrow: '<button alt="הבא" title="הבא" class="slick-arrow next-arrow"><svg viewBox="0 0 16000 16000" style="position:absolute;top:0;left:0;width:100%;height:100%;"><polyline class="a" points="11040,1920 4960,8000 11040,14080 "></polyline></svg></button>',
33                thumbnails: undefined
34            };
35            if ($(item).prop("id") == "product_page_slider" && !isMobile) {
36                slider_options.thumbnails = {
37                    allow: true,
38                    slidesToShow: $(item).attr("data-count") - 0.09,//https://stackoverflow.com/questions/64801247/slick-slider-arrows-hidden-when-total-number-of-slides-and-slides-shown-are-equa
39                    dots: false,
40                    prevArrow: '<button alt="הקודם" title="הקודם" class="slick-arrow prev-arrow"><img src="/images/right-icon.png" alt="הקודם" title="הקודם"></button>',
41                    nextArrow: '<button alt="הבא" title="הבא" class="slick-arrow next-arrow"><img src="/images/left-icon.png" alt="הבא" title="הבא"></button>'
42                };
43                slider_options.arrows = false;
44            }
45            $(item).ecSlider(slider_options);
46        }
47    });
48
49    $("img.img-lazy-load").lazyload({
50        failure_limit: 999
51    });
52
53    $('.products-group-container[data-is-slider="1"]').each(function () {
54        var elem = this;
55        var checkAndStartSlider = function () {
56            if (isCloseToView(elem)) {
57                $(window).off("scroll", checkAndStartSlider);
58                $(elem).find(".books-slider").on('initialized.owl.carousel', function (event) {
59                    $(this).animate({ opacity: 1 });
60                    $(elem).css("min-height", "unset").addClass("loaded");
61                    setTimeout(function () {
62                        var nav = $(elem).find(".owl-nav");
63                        $(nav).find("button").addClass("nav-buttons").insertAfter(nav);
64                        $(nav).remove();
65                    }, 100);
66                }).owlCarousel({
67                    loop: true,
68                    nav: true,
69                    navText: ['<svg alt="הקודם" title="הקודם" viewBox="0 0 16000 16000"><polyline class="a" points="4960,1920 11040,8000 4960,14080 "></polyline></svg>
69', '<svg alt="הבא" title="הבא" viewBox="0 0 16000 16000"><polyline class="a" points="11040,1920 4960,8000 11040,14080 "></polyline></svg>'],
70                    dots: false,
71                    lazyLoad: true,
72                    rtl: true,
73                    items: 2,
74                    slideBy: 2,
75                    margin: 10,
76                    responsive: {
77                        0: {
78                            items: 1.5,
79                            slideBy: 1,
80                            stagePadding: 0
81                        },
82                        300: {
83                            items: 2.5,
84                            slideBy: 2,
85                            stagePadding: 5
86                        },
87                        992: {
88                            items: 5.5,
89                            slideBy: 5,
90                            stagePadding:10
91                        }
92                    }
93                });
94            }
95        }
96        $(window).on("scroll", checkAndStartSlider);
97    });
98
99    $('.products-group-container.readers-recommends-container').each(function () {
100        var elem = this;
101        var checkAndStartSlider = function () {
102            if (isCloseToView(elem)) {
103                $(window).off("scroll", checkAndStartSlider);
104                $(elem).find(".readers-recommends-slider").owlCarousel({
105                    loop: true,
106                    margin: 0,
107                    nav: true,
108                    navText: ["<img src='/images/site/books-slider-right.jpg'  alt='גלילה לימין' title='גלילה לימין'>", "<img src='/images/site/books-slider-left.jpg' alt='גלילה לשמאל' title='גלילה לשמאל'>"],
109                    dots: false,
110                    lazyLoad: true,
111                    rtl: true,
112                    items: 1,
113                    slideBy: 1,
114                    responsive: {
115                        812: {
116                            items: 1,
117                            slideBy: 1
118                        },
119                        992: {
120                            items: 3,
121                            slideBy: 3
122                        }
123                    }
124                });
125            }
126        };
127        $(window).on("scroll", checkAndStartSlider);
128    });
129
130    window.scrollTo(window.scrollX, window.scrollY - 5);
131    window.scrollTo(window.scrollX, window.scrollY + 5);
132
133    $(".search-form").on("submit", function (e) {
134        e.preventDefault();
135        var q = $(this).find("input[name='q']");
136        if ($(q).val().trim() == "") {
137            $(q).focus();
138        }
139        else {
140            $(this).clone().appendTo(document.body).submit();
141        }
142    }).find("input[name='q']").one("input", function () {
143        var elem = this;
144        var searchResult = $(elem).parents(".search-container").find(".search-results");
145        if (!$(elem).hasClass("typewatchloaded")) {
146            $(elem).addClass("typewatchloaded");
147            $.getScript("/lib/jquery-type-watch/jquery.typewatch.js", function () {
148                $(elem).typeWatch({
149                    callback: function (value) {
150                        if (window.lastSearchValue != value) {
151                            window.lastSearchValue = value;
152                            $(searchResult).html("");
153                            $.post("/search/searchSuggestions", {
154                                word: value
155                            }, function (resp) {
156                                resp = JSON.parse(resp);
157                                if (resp.status) {
158                                    var results = JSON.parse(resp.moreData.results);
159                                    if (results.length > 0) {
160                                        $(results).each(function () {
161                                            $(searchResult).append(
162                                                ["<a href='", this.Url , "'>" , this.Title , "</a>"].join("")
163                                            )
164                                        });
165                                    }
166                                }
167                            });
168                        }
169                        else {
170                            //$(topSearchLoader).hide();
171                        }
172                    },
173                    wait: 750,
174                    highlight: true,
175                    allowSubmit: false,
176                    captureLength: 2
177                });
178            });
179        }
180    });
181
182    $(".login-button").click(function () {
183        var container = $("#login-popup-container");
184        var close_button;
185        var cover;
186        if ($(container).length > 0) {
187            $(container).fadeIn();
188            close_button = $(container).find(".close-logo");
189            cover = $(container).children(".cover");
190        }
191        else {
192            var form_func = function (form,url,success_message,callback_success) {
193                $(form).on("submit", function (e) {
194                    e.preventDefault();
195                    var submit_button = $(form).find("input[type='submit']").prop("disabled", "disabled");
196                    var action_status = $(form).find(".action-status").text("");
197                    var loader = $("<div></div>").addClass("loader").insertAfter(submit_button).show();
198                    $.post(url, $(form).serialize(), function (resp) {
199                        $(loader).remove();
200                        var jresp = JSON.parse(resp);
201                        if (jresp.status) {
202                            $(action_status).text(success_message).attr("data-mode", "success");
203                            if (typeof (callback_success) != "undefined") {
204                                callback_success(jresp);
205                            }
206                        }
207                        else {
208                            $(submit_button).prop("disabled", "");
209                            $(action_status).text(jresp.message).attr("data-mode", "error");
210                        }
211                    }).fail(function () {
212                        $(loader).remove();
213                        $(submit_button).prop("disabled", "");
214                        $(action_status).text("שגיאת תקשורת").attr("data-mode", "error");
215                    });
216                });
217            }
218            var container = $("<div></div>").prop("id", "login-popup-container");//<!--http://codepen.io/Anna_Batura/details/QEAqyE/,A PEN BY @@BrawadaCom, http://codepen.io/Anna_Batura/-->
219            var inner = $("<div></div>").prop("id", "login-popup").attr("data-mode","log-in");
220            $(inner).appendTo(container);
221            $("<div></div>").addClass("box").appendTo(inner);
222            $("<img/>").prop("src", "/images/site/white-logo.png").addClass("white-logo").appendTo(inner);
223            close_button = $("<button></button>").addClass("close-logo").prop("alt", "סגור").prop("title", "סגור").appendTo(inner);
224            $("<img/>").prop("src", "/images/site/close-icon.png").prop("alt", "סגור").prop("title", "סגור").appendTo(close_button);
225            var forms_container = $("<div></div>").addClass("container-forms").appendTo(inner);
226            var container_info = $("<div></div>").addClass("container-info").appendTo(forms_container);
227            var dont_have_account_container = $("<div></div>").addClass("info-item").addClass("dont-have-account").appendTo(container_info);
228            $("<img/>").prop("src", "/images/site/login-logo.png").prop("alt", "אינדיבוק").prop("title", "אינדיבוק").appendTo(dont_have_account_container);
229            var dont_have_account_inner = $("<div></div>").addClass("move-state").addClass("register-state").appendTo(dont_have_account_container);
230            var dont_have_account_inner_content = $("<div></div>").html("עדיין לא חברים באינדיבוק?<br/>להצטרפות לקהילת אינדיבוק ");
231            $("<button></button>").click(function (e) {
232                e.preventDefault();
233                $(inner).attr("data-mode", "sign-up");
234            }).prop("alt", "לחצו כאן להצטרפות לקהילת אינדיבוק").prop("title", "לחצו כאן להצטרפות לקהילת אינדיבוק").text("לחצו כאן").appendTo(dont_have_account_inner_content);
235            var have_account_container = $("<div></div>").addClass("info-item").addClass("have-account").appendTo(container_info);
236            $("<img/>").prop("src", "/images/site/login-logo.png").prop("alt", "אינדיבוק").prop("title", "אינדיבוק").appendTo(have_account_container);
237            var have_account_inner = $("<div></div>").addClass("move-state").appendTo(have_account_container);
238            var have_account_inner_content = $("<div></div>").html("כבר יש לכם חשבון?<br/>");
239            $("<button></button>").click(function (e) {
240                e.preventDefault();
241                $(inner).attr("data-mode", "log-in");
242            }).prop("alt", "לחצו כאן כדי להתחבר").prop("title", "לחצו כאן כדי להתחבר").text("לחצו כאן כדי להתחבר").appendTo(have_account_inner_content);
243            var forms_container_inner = $("<div></div>").addClass("container-form").appendTo(forms_container);
244            var login_form_inner = $("<form></form>").addClass("form-item").addClass("log-in").appendTo(forms_container_inner);
245            form_func(login_form_inner, "/customer/login", "ההתחברות הצליחה, מיד תועברו...", function (jresp) {
246                var event = new CustomEvent('login_form_submit_completed', {
247                    detail: {
248                        response: jresp
249                    },
250                    bubbles: true
251                });
252                $(login_form_inner)[0].dispatchEvent(event);
253                //if (document.URL.indexOf(encodeURI("/שחזור-סיסמה/")) > 0)
254                //    window.location = "/פרופיל";
255                //else
256                //    window.location.reload();
257            });
258            $("<div></div>").addClass("sub-title").text("היי, אנחנו חברים?").appendTo(login_form_inner);
259            $("<input/>").prop("type", "mail").prop("required", "required").prop("name","userEmail").prop("placeholder", "כתובת מייל").appendTo(login_form_inner);
260            const passwordContainer = $("<div/>").css("position", "relative").appendTo(login_form_inner);
261            const passwordInputRef = $("<input/>").css("width", "100%").prop("type", "password").prop("required", "required").prop("name", "userPassword").prop("placeholder", "סיסמה").appendTo(passwordContainer);
262            addEyeButton(passwordInputRef);
263            var login_form_buttons_container = $("<div></div>").addClass("btn-container").appendTo(login_form_inner);
264            $("<input />").addClass("btn").val("התחברות").prop("type", "submit").appendTo(login_form_buttons_container);
265            $("<div></div>").addClass("action-status").appendTo(login_form_buttons_container);
266            $("<button></button>").text("שכחת סיסמה?").appendTo(login_form_buttons_container).click(function (e) {
267                e.preventDefault();
268                $(inner).attr("data-mode", "recover-password");;
269            });
270            if (!isMobile) {
271                $(dont_have_account_inner_content).appendTo(dont_have_account_inner);
272            }
273            else {
274                $(dont_have_account_inner_content).addClass("other-options-container").appendTo(login_form_inner);
275            }
276
277            var sign_up_form_inner = $("<form></form>").addClass("form-item").addClass("sign-up").appendTo(forms_container_inner);
278            form_func(sign_up_form_inner, "/customer/register", "הרישום הסתיים בהצלחה, מיד תועברו...", function (jresp) {
279                var event = new CustomEvent('register_form_submit_completed', {
280                    detail: {
281                        response: jresp
282                    },
283                    bubbles: true
284                });
285                $(sign_up_form_inner)[0].dispatchEvent(event);
286                //window.location.reload();
287            });
288            $("<div></div>").addClass("sub-title").text("רישום לאינדיבוק").appendTo(sign_up_form_inner);
289            $("<input/>").prop("type", "mail").prop("required", "required").prop("name","userEmail").prop("placeholder", "כתובת מייל").appendTo(sign_up_form_inner);
290            $("<input/>").prop("type", "text").prop("required", "required").prop("name", "userName").prop("placeholder", "שם פרטי ומשפחה").appendTo(sign_up_form_inner);
291            $("<input/>").prop("type", "tel").prop("required", "").prop("name", "userCellphone").prop("placeholder", "טלפון נייד").appendTo(sign_up_form_inner);
292            $("<label></label>").addClass("mailing-list-label").append(
293                $("<input/>").prop("type", "checkbox").prop("required", "").prop("name", "userMailingListConfirmation").prop("placeholder", "טלפון נייד")
294            ).append(
295                $("<span/>").text("אני מסכים/ה לקבל מידע על מבצעים והנחות בדואר אלקטרוני")
296            ).appendTo(sign_up_form_inner);
297            const passwordContainer2 = $("<div/>").css("position", "relative").appendTo(sign_up_form_inner);
298            const passwordInputRef2 = $("<input/>").css("width","100%").prop("type", "password").prop("required", "required").prop("name", "userPassword").prop("placeholder", "סיסמה").appendTo(passwordContainer2);
299            addEyeButton(passwordInputRef2);
300            var sign_up_form_buttons_container = $("<div></div>").addClass("btn-container").appendTo(sign_up_form_inner);
301            $("<input />").addClass("btn").val("הרשמה").prop("type", "submit").appendTo(sign_up_form_buttons_container);
302            $("<div></div>").addClass("action-status").appendTo(sign_up_form_buttons_container);
303            if (!isMobile) {
304                $(have_account_inner_content).appendTo(have_account_inner);
305            }
306            else {
307                $(have_account_inner_content).addClass("other-options-container").appendTo(sign_up_form_inner);
308            }
309
310            var recover_password_form_inner = $("<form></form>").addClass("form-item").addClass("recover-password").appendTo(forms_container_inner);
311            form_func(recover_password_form_inner,"/customer/RecoverPassword","הודעה עם קישור לשחזור סיסמה נשלחה לכתובת המייל שהזנת. תוקף הקישור: 2 שעות.");
312            $("<div></div>").addClass("sub-title").text("שכחת סיסמה?").appendTo(recover_password_form_inner);
313            $("<div></div>").addClass("instructions").text("הזינו את כתובת המייל שלכם לקבלת מייל לשחזור סיסמה").appendTo(recover_password_form_inner);
314            $("<input/>").prop("type", "mail").prop("required", "required").prop("name","email").prop("placeholder", "כתובת מייל").appendTo(recover_password_form_inner);
315            var recover_password_buttons_container = $("<div></div>").addClass("btn-container").appendTo(recover_password_form_inner);
316            $("<input />").addClass("btn").val("איפוס סיסמה").prop("type", "submit").appendTo(recover_password_buttons_container);
317            $("<button></button>").text("התחברות").appendTo(recover_password_buttons_container).click(function (e) {
318                e.preventDefault();
319                $(inner).attr("data-mode", "log-in");
320            });
321            $("<div></div>").addClass("action-status").appendTo(recover_password_buttons_container);
322            cover = $("<div></div>").addClass("cover").appendTo(container);
323            $(container).appendTo(document.body).fadeIn();
324        }
325        var current_focused_element = document.activeElement;
326        var close_func = function () {
327            $(container).fadeOut();
328            $(current_focused_element).focus();
329        }
330        $(close_button).click(close_func).focus();
331        $(cover).click(close_func);
332    });
333
334    window.original_login_succes_callback = function (e) {
335        console.log("original");
336
337        window.dataLayer.push({
338            'event': 'signin',
339            'flashy': {
340                "email": e.detail.response.moreData.email
341            },
342            'eventCallback': function () {
343                if (document.URL.indexOf(encodeURI("/שחזור-סיסמה/")) > 0)
344                    window.location = "/פרופיל";
345                else
346                    window.location.reload();
347            }
348        });
349    };
350    window.original_register_succes_callback = function (e) {
351        console.log("original");
352
353        const obj = {
354            'event': 'signup',
355            'flashy': {
356                "contact": {
357                    "email": e.detail.response.moreData.email,
358                    "first_name": e.detail.response.moreData.fullName,
359                    //"last_name": "Demo 2",
360                    "phone": e.detail.response.moreData.cellphone,
361                    //"city": "Tel Aviv",
362                    //"address": "Derech Begin 66"
363                }
364            },
365            'eventCallback': function () {
366
367                window.dataLayer.push({
368                    'event': 'signin',
369                    'flashy': {
370                        "email": e.detail.response.moreData.email
371                    },
372                    'eventCallback': function () {
373
374                        window.location.reload();
375                    }
376                });
377
378            }
379        };
380        if (e.detail.response.moreData.allow_marketing==="true") {
381            obj.flashy.allow_marketing = true;
382        }
383        window.dataLayer.push(obj);
384
385        //window.setTimeout(function () {
386        //    window.location.reload();
387        //}, 1000);
388    };
389    $(document.body).on("login_form_submit_completed", "#login-popup-container", window.original_login_succes_callback);
390    $(document.body).on("register_form_submit_completed", "#login-popup-container", window.original_register_succes_callback);
391    if (typeof (window.is_subscriptions_page) != "undefined" && window.is_subscriptions_page == true) {
392        $(document.body).off("login_form_submit_completed", "#login-popup-container", window.original_login_succes_callback);
393        $(document.body).off("register_form_submit_completed", "#login-popup-container", window.original_register_succes_callback);
394        $(document.body).on("login_form_submit_completed", "#login-popup-container", function (e) {
395            if (typeof (window.subscription_selected) != "undefined") {
396                subscribe(window.subscription_selected);
397            }
398        }).on("register_form_submit_completed", "#login-popup-container", function (e) {
399            if (typeof (window.subscription_selected) != "undefined") {
400                subscribe(window.subscription_selected);
401            }
402        });
403    }
404    else if (typeof (window.is_product_page) != "undefined" && window.is_product_page == true) {
405        $(document.body).off("login_form_submit_completed", "#login-popup-container", window.original_login_succes_callback);
406        $(document.body).off("register_form_submit_completed", "#login-popup-container", window.original_register_succes_callback);
407        $(document.body).on("login_form_submit_completed", "#login-popup-container", function (e) {
408            $("#login-popup-container > .cover").click();
409            if (typeof (window.product_selected) != "undefined" && typeof (window.variation_selected) != "undefined") {
410                subscriptionDownload(window.product_selected, window.variation_selected);
411            }
412            else {
413                window.original_login_succes_callback(e);
414            }
415        }).on("register_form_submit_completed", "#login-popup-container", function (e) {
416            $("#login-popup-container > .cover").click();
417            if (typeof (window.product_selected) != "undefined" && typeof (window.variation_selected) != "undefined") {
418                subscriptionDownload(window.product_selected, window.variation_selected);
419            }
420            else {
421                window.original_register_succes_callback(e);
422            }
423        });
424    }
425
426    $("#aboutReadMorebUTTON").click(function () {
427        createModal("", $("#aboutReadMore").html());
428    });
429
430    $(document.body).delegate(".product-add-to-wish-list", "click", function () {
431        var btn = this;
432        var productID = $(btn).attr("data-product-id");
433        var add = !$(btn).hasClass("full");
434        $.post("/pageDisplay/productPlusLike", {
435            productID: productID,
436            add:add
437        }, function (resp) {
438            responseHandle(resp, true, false, false, function (x) {
439                markProductInFavorites(btn, add);
440            });
441        });
442    });
443
444    $(document.body).delegate(".product-add-interested", "click", function () {
445        var btn = this;
446        var productID = $(btn).attr("data-product-id");
447        $.post("/pageDisplay/productAddInterested", {
448            productID: productID
449        }, function (resp) {
450            responseHandle(resp, true, false, true, function (x) {
451                $(btn).attr("data-interested", x.resp.moreData.is_interested).text([x.resp.moreData.interested_count," מתעניינים בספר"].join(""));
452            });
453        });
454    });
455
456    $(".faq-cube").click(function () {
457        if ($(this).hasClass("active")) {
458            $(this).removeClass("active");
459        }
460        else {
461            $(this).addClass("active");
462        }
463    });
464
465    $(".send-comment-button").click(function () {
466        var commentText = $("#comment-text");
467        if ($(commentText).val() == "") {
468            alert("חובה להזין תוכן לתגובה!");
469            $(commentText).focus();
470            return;
471        }
472
473        var productID = $(this).parents(".bcomment").attr("data-prodid");
474        if (productID == "")
475            productID = null;
476
477        var blogID = $(this).parents(".bcomment").attr("data-blogid");
478        if (blogID == "")
479            blogID = null;
480
481        var pageID = null;
482
483        $.post("/pageDisplay/addComment", {
484            productID: productID,
485            blogID: blogID,
486            pageID: pageID,
487            commentText: $(commentText).val(),
488            commentName: $("#comment-name").val(),
489            commentEmail: $("#comment-email").val()
490        }, function (resp) {
491            responseHandle(resp, true, false, true, function (x) {
492                alert("תגובתך נשלחה בהצלחה ותפורסם בכפוף להחלטת מנהל האתר.");
493            });
494        });
495    });
496
497    $(".user-logout").click(function () {
498        $.post("/customer/logout", {}, function (resp) {
499            responseHandle(resp, true, false, true, function (x) {
500                window.location.reload();
501            }); 
502        });
503    });
504
505    shareRef = $(".share");
506    if ($(shareRef).length > 0) {
507        $(shareRef).find(".fa").click(function () {
508            window.open("https://www.facebook.com/sharer.php?t=" + encodeURI(document.title) + "&u=" + encodeURI(document.URL), "", "width=700,height=600");
509            shares("fa");
510        });
511        $(shareRef).find(".tw").click(function () {
512            //window.open("https://twitter.com/intent/tweet?text=" + encodeURI(document.title) + "&url=" + encodeURI(document.URL), "", "width=700,height=600");
513            shares("tw");
514        });
515        $(shareRef).find(".wa").click(function () {
516            shares("wa");
517        });
518        $(shareRef).find(".ma").click(function () {
519            shares("ma");
520        });
521        $(shareRef).find(".blog-fa").click(function () {
522            window.open("https://www.facebook.com/sharer.php?t=" + encodeURI(document.title) + "&u=" + encodeURI(document.URL), "", "width=700,height=600");
523            sharesPost("blog-fa");
524        });
525        $(shareRef).find(".blog-tw").click(function () {
526            window.open("https://twitter.com/intent/tweet?text=" + encodeURI(document.title) + "&url=" + encodeURI(document.URL), "", "width=700,height=600");
527            sharesPost("blog-tw");
528        });
529    }
530
531    var filterByVariation = getQueryString("filterByVariation");
532    if (filterByVariation != undefined) {
533        $("#filterByVariation").val(filterByVariation);
534    }
535
536    $("#filterByCategory").change(function () { 
537        window.location = filterByGetUrl();
538    }); 
539
540    var filterByCategory = getQueryString("filterByCategory");
541    if (filterByCategory != undefined) {
542        $("#filterByCategory").val(filterByCategory);
543    }
544
545    $("#filterByVariation").change(function () {
546        window.location = filterByGetUrl();
547    });
548
549    $("#sale-search-inside-button").click(function () {
550        window.location = filterByGetUrl();
551    });
552
553    $("#sale-search-inside-container").on("submit", function (e) {
554        e.preventDefault();
555        window.location = filterByGetUrl();
556    })
557
558
559    var sortBy = getQueryString("sortBy");
560    if (sortBy != undefined) {
561        $("#sortBy").val(sortBy);
562    }
563    $("#sortBy").change(function () {
564        window.location = filterByGetUrl();
565    });
566
567    var prdslks = getCookie2("prdslks");
568    if (typeof (prdslks) != "undefined" && prdslks != null && prdslks != "") {
569        var buttons = $(".product-add-to-wish-list");
570        $(prdslks.split(',')).each(function () {
571            var id = this;
572            var btn = $(buttons).filter(function () {
573                return $(this).attr("data-product-id") == id
574            });
575            if ($(btn).length > 0) {
576                markProductInFavorites(btn, true);
577            }
578        });
579    }
580
581    $(".cart-open").click(function () {
582        openSideCart(undefined,true);
583    });
584
585    if (!isMobile) {
586        $(".book-cube").hover(function () {
587            productCubeDisplayCartButtons(this);
588        }, function () {
589            productCubeHideCartButtons(this);
590        }).find(".open-product-page").focus(function () {
591            productCubeDisplayCartButtons($(this).parents(".book-cube"));
592        });
593    }
594
595    hpNewsObj.ref = $("#hp-news");
596    if ($(hpNewsObj.ref).length > 0) {
597        hpNewsObj.max = $(hpNewsObj.ref).find(".hpn").length;
598        var move = function (next) {
599            if (next) {
600                hpNewsObj.index++;
601                if (hpNewsObj.index > hpNewsObj.max) {
602                    hpNewsObj.index = 1;
603                }
604            }
605            else {
606                hpNewsObj.index--;
607                if (hpNewsObj.index < 1) {
608                    hpNewsObj.index = hpNewsObj.max;
609                }
610            }
611            $(hpNewsObj.ref).attr("data-active", hpNewsObj.index);
612        };
613        var set_interval = function () {
614            hpNewsObj.interval = setInterval(function () {
615                move(true);
616            }, 4000);
617        }
618        var clear_interval = function () {
619            if (typeof (hpNewsObj.interval) != "undefined" && hpNewsObj.interval != null) {
620                clearInterval(hpNewsObj.interval);
621            }
622        }
623        $(hpNewsObj.ref).find("#hp-new-left-button").click(function () {
624            move(true);
625        });
626        $(hpNewsObj.ref).find("#hp-new-right-button").click(function () {
627            move(false);
628        });
629        $(hpNewsObj.ref).mouseenter(function () {
630            clear_interval();
631        });
632        $(hpNewsObj.ref).mouseleave(function () {
633            set_interval();
634        });
635        set_interval();
636    }
637
638});
639
640function productCubeHideCartButtons(cube) {
641    $(cube).find(".add-to-cart-buttons-container").removeClass("active");
642}
643
644function productCubeDisplayCartButtons(cube) {
645    var buttons = $(cube).find(".add-to-cart-buttons-container");
646    if ($(buttons).length == 0) {
647        buttons = $("<div></div>").addClass("add-to-cart-buttons-container");
648        $(cube).find(".price-container").each(function () {
649            var variation = this;
650            var variationId = $(this).attr("data-vrtn-id");
651            if (typeof(variationId) != "undefined") {//disabled
652                var variationName = $(this).children(".vrtn-ttl").text();
653                var title = $(cube).find(".book-cube-bottom").find(".title").text();
654                var price = $(this).children(".variation-finall-price").text();
655                var alt = ["הוסף לסל את המוצר ", title, " בגרסה ", variationName, " במחיר ", price].join("");
656                var button = $("<button></button>").prop("type", "button").attr("data-vrtn-id", variationId).attr("alt", alt).prop("title", alt);
657                $("<img src='/images/‏‏shopping-bag-white.svg' />").appendTo(button);
658                $(["<span>
658", variationName, "</span>"].join("")).appendTo(button);
659                $(button).click(function () {
660                    addToCart($(cube).attr("data-prodid"), variationId, title,
661                        price.replace(/₪/gi, "").replace(/ /gi, ""), $(cube).attr("data-manufacturer"),
662                        gaeeProductCategoryIdsToNames($(cube).find(".productCategories").val()),
663                        $(cube).find(".book-cube-bottom").find(".authors").text())
664                }).appendTo(buttons);
665            }
666        });
667        $(buttons).appendTo($(cube).find(".book-cube-top"));
668        setTimeout(function () {
669            $(buttons).addClass("active");
670        }, 100);
671    }
672    else {
673        $(buttons).addClass("active");
674    }
675}
676
677function getSubscriptionPopup() {
678    if (getCookie2("sbscrptnppchck") == "") {
679        $.get("/pageDisplay/getSubscriptionPopup", function (resp) {
680            if (resp != "") {
681                var code = $(resp);
682                var id = "sbscrptnpp_" + $(code).attr("data-id");
683                if (getCookie2(id) == "") {
684                    setTimeout(function () {
685                        createModal("", code);
686                        window.popupShowed = true;
687                        setCookie2(id, "1", 5);
688                        setCookie2("sbscrptnppchck", "1", 1);
689                    }, 4000);
690                }
691                else {
692                    setCookie2("sbscrptnppchck", "1", 1);
693                }
694            }
695            else {
696                setCookie2("sbscrptnppchck","1", 1);
697            }
698        });
699    }
700}
701
702
703function getMainPopup() {
704    var code = $("#main-popup-container").children(".popup");
705    if (code.length > 0 && (typeof (window.popupShowed) == "undefined" || window.popupShowed == false)) {
706        var id = "mainpp_" + $(code).attr("data-id");
707        if (getCookie2(id) == "") {
708            setTimeout(function () {
709                createModal("", code);
710                setCookie2(id, "1", 5);
711                setCookie2("mainppchck", "1", 1);
712            }, 7000);
713        }
714    }
715}
716
717
718function markProductInFavorites(elem, addOrRemove) {
719    if (addOrRemove) {
720        $(elem).addClass("full");
721    }
722    else {
723        $(elem).removeClass("full");
724    }
725}
726
727function isCloseToView(elem) {
728    var pageTop = $(window).scrollTop();
729    var pageBottom = pageTop + $(window).height();
730    var elementTop = $(elem).offset().top;
731    return pageBottom >= elementTop;
732}
733
734function successModal(message, close_callback) {
735    createModal("", message, "success-modal", close_callback);
736}
737
738function errorModal(message, close_callback) {
739    createModal("", message, "error-modal", close_callback);
740}
741
742function createModal(title, body, id, close_callback)
743{
744    var container = $("<div></div>").addClass("modal").prop("tabindex", "-1").attr("aria-labeledby", "modal-title").attr("aria-hidden", "true").attr("role", "dialog");
745    if (typeof (id) != "undefined") {
746        $(container).prop("id", id);
747    }
748    if (typeof (title) != "undefined") {
749        var header = $("<div></div>").addClass("header").appendTo(container);
750        $("<div></div>").addClass("title").text(title).appendTo(header);
751    }
752    if (typeof (body) != "undefined") {
753        $("<div></div>").addClass("body").html(body).appendTo(container);
754    }
755    var cover = $(".modal-cover");
756    if ($(cover).length == 0) {
757        var close_func = function (e) {
758            if ($(e.target).parents(".modal").length == 0) {
759                $(cover).fadeOut(function () {
760                    $(cover).remove();
761                    if (typeof (close_callback) != "undefined") {
762                        close_callback();
763                    }
764                });
765            }
766        };
767        cover = $("<div></div>").addClass("modal-cover").click(close_func);
768        $("<button></button>").addClass("close").attr("arial-label", "Close").html("&times;").appendTo(cover).click(close_func);
769    }
770    var new_modal_open_func = function () {
771        $(container).appendTo(cover);
772        $(cover).appendTo(document.body).fadeIn(function () {
773            $(container).addClass("show");
774            $(cover).find(".close").focus();
775        });
776    };
777    var old_modal = $('.modal');
778    if ($(old_modal).length > 0) {
779        $(old_modal).removeClass("show");
780        setTimeout(function () {
781            $(old_modal).remove();
782            new_modal_open_func();
783        }, 200);
784    }
785    else {
786        new_modal_open_func();
787    }
788}
789
790function filterByGetUrl() {
791    var newUrl = document.URL.split("?")[0];
792    var query = "";
793    var filterByCategoryRef = $("#filterByCategory");
794    if ($(filterByCategoryRef).length > 0) {
795        var filterByCategory = $(filterByCategoryRef).val();
796        if (filterByCategory != "") {
797            query += "?filterByCategory=" + filterByCategory;
798        }
799    }
800    var filterByVariationRef = $("#filterByVariation");
801    if ($(filterByVariationRef).length > 0) {
802        var filterByVariation = $(filterByVariationRef).val();
803        if (filterByVariation != "") {
804            query += (query == "" ? "?" : "&") + "filterByVariation=" + filterByVariation;
805        }
806    }
807    var sortByRef = $("#sortBy");
808    if ($(sortByRef).length > 0) {
809        var sortBy = $(sortByRef).val();
810        if (sortBy != "") {
811            query += (query == "" ? "?" : "&") + "sortBy=" + sortBy;
812        }
813    }
814    var filterByQueryRef = $("#sale-search-inside-input");
815    if ($(filterByQueryRef).length > 0) {
816        var filterByQuery = $(filterByQueryRef).val();
817        if (filterByQuery != "") {
818            query += (query == "" ? "?" : "&") + "q=" + filterByQuery;
819        }
820    }
821    return newUrl + query
822}
823
824var shareRef;
825
826function shares(socialId)
827{
828    $.post("/pageDisplay/Shares", {
829        socialId: socialId,
830        productId: $(".book-cube").attr("data-prodid")
831    }, function (resp) {
832
833    });
834}
835
836function sharesPost(socialId) {
837    $.post("/pageDisplay/Shares", {
838        socialId: socialId,
839        blogId: $(".blog-inner").attr("data-blogid")
840    }, function (resp) {
841
842    });
843}
844
845function addToCart(productId,variationId,title,price,manufacturer,categories,authors)
846{
847    console.log(arguments);
848    if (typeof(variationId) == "undefined" || isNaN(variationId)) {
849        errorModal("יש לבחור את פורמט המוצר: דיגיטלי, מודפס או קינדל!");
850        return;
851    }
852
853    $.post("/basket/addToBasket", {
854        productId: productId,
855        variation: variationId
856    }, function (resp) {
857        var jresp = JSON.parse(resp);
858        if (jresp.status)
859        {
860            var callback;
861
862            var klaviyoAddedToCartObject;
863            var mapDistinctWithoutParentsProductCategories;
864            try {
865                var jresp = JSON.parse(resp);
866                klaviyoAddedToCartObject = JSON.parse(jresp.message);
867                if (klaviyoAddedToCartObject.AddedItem_CategoriesIds != "") {
868                    klaviyoAddedToCartObject.AddedItem_Categories = klaviyoGetCategoriesByIds(klaviyoAddedToCartObject.AddedItem_CategoriesIds);
869                }
870                delete klaviyoAddedToCartObject["AddedItem_CategoriesIds"];
871                if (klaviyoAddedToCartObject.Items.length > 0) {
872                    $(klaviyoAddedToCartObject.Items).each(function () {
873                        if (this.ProductCategoriesIds != "") {
874                            this.ProductCategories = klaviyoGetCategoriesByIds(this.ProductCategoriesIds);
875                            mapDistinctWithoutParentsProductCategories = klaviyoGetCategoriesByIdsDistinctWithoutParents(this.ProductCategoriesIds);
876                        }
877                        delete this["ProductCategoriesIds"];
878                    });
879                }
880                console.log(klaviyoAddedToCartObject);
881                _learnq.push(["track", "Added to Cart", klaviyoAddedToCartObject]);
882            }
883            catch (ex) {
884                console.log("klaviyo failed " + ex);
885            }
886
887            if (typeof (klaviyoAddedToCartObject) != "undefined" && typeof (klaviyoAddedToCartObject.Items) != "undefined" && klaviyoAddedToCartObject.Items.length > 0) {
888                callback = function () {
889                    openSideCart(klaviyoAddedToCartObject,false);
890                };
891            }
892
893            try {
894                //new ga
895                const gaeeObject = {
896                    event: "add_to_cart", 
897                    ecommerce: {
898                        currency: "ILS",
899                        value: klaviyoAddedToCartObject.AddedItem_Price,
900                        items: [
901                            {
902                                item_id: klaviyoAddedToCartObject.AddedItem_ProductID.replace(/-/gi, "_"),// productId.toString(),
903                                item_name: title,
904                                item_brand: manufacturer,
905                                item_category: mapDistinctWithoutParentsProductCategories,
906                                price: klaviyoAddedToCartObject.AddedItem_Price,
907                                quantity: klaviyoAddedToCartObject.AddedItem_Quantity
908                            }
909                        ]
910                    }
911                };
912                console.log(gaeeObject);
913                dataLayer.push({ ecommerce: null });  // Clear the previous ecommerce object.
914                dataLayer.push(gaeeObject);
915				
916				callback();
917            }
918            catch (ex) {
919                console.log(ex);
920            } 
921
922            //try {
923            //    gaeeAddToBasket(title, productId, price,
924            //        manufacturer, categories, authors, variationId, function () {
925            //            responseHandle(resp, true, false, true, callback);
926            //        });
927            //}
928            //catch (ex) {
929            //    console.log(ex);
930            //    responseHandle(resp, true, false, true, callback);
931            //}
932
933            //if (typeof(klaviyoAddedToCartObject) != "undefined"){
934            //    var cart_count = 0;
935            //    $(klaviyoAddedToCartObject.Items).each(function () {
936            //        cart_count += this.Quantity;
937            //    });
938            //    $(".cart-open").attr("data-has-count",cart_count>0?"1":"0").find(".count").text(cart_count);
939            //}
940        }
941        else {
942            errorModal(jresp.message);
943        }
944
945    });
946
947}
948
949function sideCartClicked(cart_side) {
950    $(cart_side).addClass("disabled");
951    if (typeof (window.cart_auto_close_time_out) != "undefined") {
952        clearTimeout(window.cart_auto_close_time_out);
953        window.cart_auto_close_time_out = undefined;
954    }
955    $(cart_side).attr("data-close-button", "1");
956}
957
958function fillSideCart(cart_side,cart_obj)
959{
960    var cart_container = $(cart_side).find(".cart");
961    if ($(cart_container).length > 0) {
962        $(cart_container).children().remove();
963    }
964    else {
965        cart_container = $("<div></div>").addClass("cart").appendTo(cart_side);
966    }
967    var cart_count = 0;
968    var cart_header = $("<div></div>").addClass("cart-header").text("סל קניות").appendTo(cart_container);
969    $(cart_obj.Items).each(function () {
970        var row = $("<div></div>").addClass("cart-row").appendTo(cart_container);
971        var col1 = $("<div></div>").addClass("cart-col").appendTo(row);
972        $("<img/>").prop("src", this.ImageURL).prop("alt", this.ProductName).prop("title", this.ProductName).appendTo(col1);
973        var col2 = $("<div></div>").addClass("cart-col").appendTo(row);
974        $("<div></div>").addClass("title").text(this.ProductName).appendTo(col2);
975        var variationId = this.ProductID.substring(this.ProductID.indexOf("-") + 1);
976        var variationName = variationId;
977        var create_quantity_field = false;
978        if (variationName == "32") {
979            variationName = "ספר דיגיטלי";
980        }
981        else if (variationName == "31") {
982            variationName = "ספר מודפס";
983            create_quantity_field = true;
984        }
985        else if (variationName == "33") {
986            variationName = "ספר קינדל";
987        }
988        $("<div></div>").addClass("variation").text(variationName).appendTo(col2);
989        var row2 = $("<div></div>").addClass("row2").appendTo(col2);
990        cart_count += this.Quantity;
991        if (create_quantity_field) {
992            var quantity_container = $("<div></div>").addClass("quantity_container").appendTo(row2);
993            var quantity;
994            var plus_button = $("<button></button>").html("&plus;").click(function () {
995                $(quantity).val($(quantity).val() * 1 + 1).trigger("change");
996            }).appendTo(quantity_container);
997            quantity = $("<input/>").prop("type", "text").val(this.Quantity).attr("data-product-id", this.ProductID).change(function () {
998                sideCartClicked(cart_side);
999                $.post("/basket/updateBasketNew/?operation=updateQuantityByProductIdAndVariation", {
1000                    id: $(this).attr("data-product-id"),
1001                    quantity: $(this).val()
1002                }, function () {
1003                    $.get("/basket/getCartObj", function (resp) {
1004                        fillSideCart(cart_side, JSON.parse(resp));
1005                    });
1006                });
1007            }).appendTo(quantity_container);
1008            $("<button></button>").html("&minus;").click(function () {
1009                $(quantity).val($(quantity).val() * 1 - 1).trigger("change");
1010            }).appendTo(quantity_container);
1011        }
1012        $("<div></div>").text([this.RowTotal, " ₪"].join("")).addClass("price").appendTo(row2);
1013        $("<button></button>").addClass("remove").html("&times;").attr("data-product-id", this.ProductID).click(function () {
1014            sideCartClicked(cart_side);
1015            $.post("/basket/updateBasketNew/?operation=updateQuantityByProductIdAndVariation", {
1016                id: $(this).attr("data-product-id"),
1017                quantity: 0
1018            }, function () {
1019                $.get("/basket/getCartObj", function (resp) {
1020                    fillSideCart(cart_side, JSON.parse(resp));
1021                });
1022            });
1023            //new_ga_remove_from_cart($(this).attr("data-product-id"), this.ProductName, this.Brand, this.ProductCategoriesIds, this.ItemPrice, this.RowTotal, this.Quantity);
1024        }).appendTo(row2);
1025    });
1026    var total_container = $("<div></div>").addClass("total-container").appendTo(cart_container);
1027    $("<span></span>").text("סכום ביניים").appendTo(total_container);
1028    $("<span></span>").text([cart_obj.$value, " ₪"].join("")).appendTo(total_container);
1029    $("<div></div>").text("הזנת קופוני הנחה וחישוב עלות המשלוח יתבצעו בקופה").appendTo(cart_container);
1030    $("<div></div>").append($("<a></a>").text("לקופה").prop("href", "/סל-קניות").addClass("btn-design-1")).appendTo(cart_container);
1031    var close_func = function (e) {
1032        if ($(e.target).hasClass("close") || $(e.target).parents(".cart").length == 0) {
1033            $(cart_side).fadeOut(function () {
1034                $(cart_side).remove();
1035            });
1036        }
1037    }
1038    var close_button = $("<button></button>").addClass("close").prop("arial-label", "Close").html("&times;").appendTo(cart_header).click(close_func);
1039    $(cart_side).click(close_func);
1040    setTimeout(function () {
1041        $(cart_container).addClass("show");
1042    }, 100);
1043    $("<div></div>").addClass("loader-container").append($("<div></div>").addClass("loader")).appendTo(cart_container);
1044    $(cart_side).removeClass("disabled");
1045    $(".cart-open").attr("data-has-count", cart_count > 0 ? "1" : "0").find(".count").text(cart_count);
1046}
1047
1048function openSideCart(cart_obj,close_button)
1049{
1050    var cart_side = $(".cart-modal");
1051    var auto_close_function;
1052    if (!close_button) {
1053        auto_close_function = function () {
1054            window.cart_auto_close_time_out = setTimeout(function () {
1055                $(cart_side).find(".close").click();
1056                window.cart_auto_close_time_out = undefined;
1057            }, 2000);
1058        };
1059    }
1060    if ($(cart_side).length == 0)
1061    {
1062        cart_side = $("<div></div>").addClass("cart-modal").appendTo(document.body).fadeIn(200, auto_close_function);
1063        var callback = function (cart_obj)
1064        {
1065            fillSideCart(cart_side, cart_obj);
1066        };
1067        if (typeof (cart_obj) == "undefined") {
1068            $.get("/basket/getCartObj", function (resp) {
1069                callback(JSON.parse(resp));
1070            });
1071        }
1072        else {
1073            callback(cart_obj);
1074        }
1075    }
1076    else {
1077        $(cart_side).fadeIn(auto_close_function);
1078    }
1079    $(cart_side).attr("data-close-button", close_button?"1":"0")
1080}
1081
1082function responseHandle(resp, isJson, showAlertIfSuccess, showAlertIfFailed, successCallback, failedCallback, successCallbackArguments, failedCallbackArguments)
1083{
1084    if (successCallbackArguments === undefined)
1085        successCallbackArguments = {};
1086    if (failedCallbackArguments === undefined)
1087        failedCallbackArguments = {};
1088
1089    if (isJson)
1090    {
1091        try
1092        {
1093            resp = JSON.parse(resp);
1094        }
1095        catch(ex)
1096        {
1097            if (isTrueOrUndefined(showAlertIfFailed))
1098            {
1099                alert("שגיאה במהלך ביצוע הפעולה. רענן את הדף.");
1100            }
1101        }
1102    }
1103
1104    if (resp.status)
1105    {
1106        if (isTrueOrUndefined(showAlertIfSuccess))
1107        alert("הפעולה בוצעה בהצלחה!");
1108        if (typeof successCallback == 'function') {
1109            successCallbackArguments["resp"] = resp;
1110            successCallback(successCallbackArguments);
1111        }
1112    }
1113    else if (!resp.status)
1114    {
1115        if (isTrueOrUndefined(showAlertIfFailed)) {
1116            if (resp.message != "") {
1117                alert(resp.message);
1118            }
1119            else {
1120                alert("שגיאה בביצוע הפעולה. נסה שנית.");
1121            }
1122        }
1123        if (typeof failedCallback == 'function') {
1124            failedCallbackArguments["resp"] = resp;
1125            failedCallback(failedCallbackArguments);
1126        }
1127    }
1128}
1129
1130function isTrueOrUndefined(b)
1131{
1132    return (b === undefined || b == null || b == true);
1133}
1134
1135function checkInputValidity(inputsArr)
1136{
1137    for (var i = 0; i < inputsArr.length; i++)
1138    {
1139        if (!$(inputsArr[i])[0].checkValidity())
1140        {
1141            var message = "";
1142            if (typeof($(inputsArr[i]).attr("data-fullValidityMessage")) != "undefined")
1143            {
1144                message = $(inputsArr[i]).attr("data-fullValidityMessage");
1145            }
1146            else
1147            {
1148                var validity = $(inputsArr[i])[0].validity;
1149                var message = "ערך לא תקין";
1150                if (validity.customError) error_message = "ערך לא תקין";
1151                else if (validity.patternMismatch) error_message = "הערך לא מתאים";
1152                else if (validity.rangeOverflow) error_message = "ערך מקסימלי: " + $(input).prop("max");
1153                else if (validity.rangeUnderflow) error_message = "ערך מינימלי: " + $(input).prop("min");
1154                else if (validity.stepMismatch) error_message = "ערך צריך להיות בכפולות של " + $(input).prop("step");
1155                else if (validity.tooLong) error_message = "אורך מקסימלי: " + $(input).prop("maxLength") + " תווים.";
1156                else if (validity.typeMismatch) error_message = "הערך אינו מתאים לסוג השדה: " + $(input).prop("type") + " תווים.";
1157                else if (validity.valueMissing) error_message = "חובה להזין ערך";
1158                message += " בשדה " + $(inputsArr[i]).attr("placeholder");
1159                if (typeof ($(inputsArr[i]).attr("data-validityMessage")) != "undefined") {
1160                    message += ". " + $(inputsArr[i]).attr("data-validityMessage");
1161                }
1162            }
1163            $(inputsArr[i]).addClass("vf_error").show().focus();
1164            $(inputsArr[i]).change(function () {
1165                $(this).removeClass("vf_error");
1166            });
1167            errorModal(message, function () {
1168                console.log("ASdf");
1169                $(inputsArr[i]).focus();
1170            });
1171            //$(inputsArr[i]).popover({ animation: true, delay: { show: 500, hide: 500 }, viewport: inputsArr[i], title: "", content: $(inputsArr[i]).attr("data-validityMessage"), placement: !isMobile ? "left" : "down", html:true });
1172            //$(inputsArr[i]).popover('show');
1173            $("html,body").animate({ scrollTop: $(inputsArr[i]).offset().top - 120 });
1174            //$(inputsArr[i]).click(function () {
1175            //    $(this).popover('hide');
1176            //    $(this).popover('hide'); //!!
1177            //});
1178            return false;
1179        }
1180        else
1181        {
1182            $(inputsArr[i]).removeClass("vf_error");
1183        }
1184    }
1185
1186    return true;
1187}
1188
1189function isValidEmail(email) {
1190    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
1191    return re.test(email);
1192}
1193
1194function getCookie2(cname) {
1195    var name = cname + "=";
1196    var decodedCookie = decodeURIComponent(document.cookie);
1197    var ca = decodedCookie.split(';');
1198    for(var i = 0; i <ca.length; i++) {
1199        var c = ca[i];
1200        while (c.charAt(0) == ' ') {
1201            c = c.substring(1);
1202        }
1203        if (c.indexOf(name) == 0) {
1204            return c.substring(name.length, c.length);
1205        }
1206    }
1207    return "";
1208}
1209
1210function setCookie2(cname, cvalue, exdays) {
1211    var d = new Date();
1212    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
1213    var expires = "expires=" + d.toUTCString();
1214    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
1215}
1216
1217function checkProductsOrdered(products)
1218{
1219    var productsOrderedList = getCookie2("productsOrdered2");
1220    $(products).each(function () {
1221        var productID = $(this).attr("data-prodid");
1222        if (productsOrderedList.indexOf(","+productID+",") >= 0)
1223        {
1224            $(this).find(".addtocart").addClass("already-ordered").text("הספר נרכש");
1225        }
1226    });
1227}
1228
1229function getQueryString(key) {
1230    try {
1231        var queryString = (document.URL.split('?'))[1].split('&');
1232
1233        var k;
1234        for (var i = 0; i < queryString.length ; i++) {
1235            k = queryString[i].split('=');
1236            if (k[0] == key)
1237                return k[1];
1238        }
1239        return undefined;
1240    }
1241    catch (ex) {
1242        return undefined;
1243    }
1244}
1245
1246function create_guid() {
1247    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
1248        (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
1249    );
1250}
1251
1252
1253function new_ga_remove_from_cart(productId, productName, brand, categoriesIds, itemPrice, rowTotal, quantity) {
1254    //new ga
1255    var new_ga_object = {
1256        event: "remove_from_cart",
1257        ecommerce: {
1258            currency: "ILS",
1259            value: rowTotal,
1260            items: [
1261                {
1262                    item_id: productId.toString(),
1263                    item_name: productName,
1264                    item_brand: brand,
1265                    item_category: klaviyoGetCategoriesByIdsDistinctWithoutParents(categoriesIds),
1266                    price: itemPrice,
1267                    quantity: quantity
1268                }
1269            ]
1270        }
1271    };
1272    console.log(new_ga_object);
1273    dataLayer.push({ ecommerce: null });  // Clear the previous ecommerce object.
1274    dataLayer.push(new_ga_object);
1275}
1276
1277function addEyeButton(passwordInputRef) {
1278    $("<button/>").prop("type", "button").addClass("password-eye").attr("alt","הצגת/הסרת סיסמה").on("click", function () {
1279        if ($(passwordInputRef).prop("type") === "password") {
1280            $(passwordInputRef).prop("type", "text");
1281            $(this).css("color", "blue");
1282        }
1283        else {
1284            $(passwordInputRef).prop("type", "password");
1285            $(this).css("color", "#000");
1286        }
1287    }).text("👁").css("font-size","20px").css("position","absolute").css("left","0").css("top","0").css("text-decoration","none").insertAfter(passwordInputRef);
1288}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.