/** * Setting event on some element * @param event string * @param element string|Jquery object * @param callback function */ function setEvent(event, element, callback) { $('body').off(event, element).on(event, element, callback); } /** * Лендинг и все его горячо любимые обработчики всяких разных мастей * @constructor */ var Landing = function ( form_selector, button_selector ) { var landing = this; landing.form_selector = form_selector; landing.thank_you_page = 'http://extra.affdepot.com/thank_you'; landing.default_goal = 'CREATE_ORDER'; landing.hit_id = '441564164'; landing.field_names = { 'old' : { 'name' : 'Request[name]', 'phone' : 'Request[phone]', 'city' : 'Request[city]' }, 'normal' : { 'name' : 'name', 'phone' : 'phone', 'city' : 'city' } }; /** * Запускает увеличение изображений по клику */ this.goFancyBox = function () { if ( typeof $.fancybox != 'function' ) { console.log('Error: $.fancybox is not defined'); } else { $('.landing___zoomable_image').fancybox(); } }; /** * Делает так, чтобы веб-визон не делал повторные заказы */ this.setWebVisorNoClick = function() { $(this.form_selector).addClass("-visor-no-click"); } /** * Возвращает строку с субайди текущего запроса */ this.getSubidsString = function() { return window.location.search.replace("?",""); } /** * Применяет Костыли для верстки */ this.setCrutches = function() { // Центрируем блок "Ваш номер: #" если нет блока с городом if ($("header").is(":has(.header__bl--city)")) { $(".header__bl--id").css("margin-right", "68px"); } else { $(".header__bl--id").css("left", "345px"); $(".header__bl--id").css("position", "absolute"); } } /** * Изменение размера блока отзывов при перелистывании * Это оптимизация на случай очень длинных или очень коротких отзывов */ this.setReviewsHandler = function() { var reviews_count = $('.bx-viewport:last li:not(.bx-clone)').length, current_review = 1; $('.bx-prev').on('click', function() { if ( current_review > 0 ) { current_review--; } else { current_review += reviews_count; } }); $('.bx-next').on('click', function() { if ( current_review == reviews_count ) { current_review = 1; } else { current_review++; } }); $('.bx-controls-direction').on('click', function(){ set_container_height(); }); function set_container_height() { var content_height = $('.bx-viewport:last li:nth('+current_review+')').height(); console.log('current height: '+content_height); $('.bx-viewport:last').animate({'height':content_height}, 400); } // Пересобираем блок с отзывами несколько раз в секунду setInterval(set_container_height(), 300); } /** * Отправляет запрос для сбора статистики * Сохраняет все GET-параметры страницы в качестве subid */ this.hit = function ( ) { var params = { 'document_href' : encodeURIComponent(document.referrer), 'document_address' : encodeURIComponent(document.location.href), 'document_domain' : document.domain, 'site_id' : '38782', 'subids_string' : landing.getSubidsString(), 'screen_width' : $(window).width(), 'screen_height' : $(window).height(), 'screen_avail_width' : window.screen.availWidth, 'screen_avail_height' : window.screen.availHeight, 'hit_id' : this.hit_id }; //console.log("compiled params:"); //console.log(params); $.getJSON("http://extra.affdepot.com/stat.php?callback=?", params, function(data){ if ( data.status == '200' ) { // Если лендинг просматривают не на мобильном устройстве - применяем костыли для верстки if ( data.is_no_mobile ) { landing.setCrutches(); } // Добавляем во все формы скрытое поле со списком субайди if ( data.subids_string ) { $(landing.form_selector).each(function (key, el) { if (!$(el).is(":has([name=subids])")) { $(el).append(''); } }); } // Добавляем во все формы скрытое поле со ид перехода if ( data.hit_id ) { $(landing.form_selector).each(function (key, el) { if (!$(el).is(":has([name=hit_id])")) { $(el).append(''); } }); } } }); } /** * Создает заказ с указанными параметрами */ this.createOrder = function (params, form) { $.getJSON("http://leads.ordertosales.ru/crm/api/createOrder?jsonp=?", params, function (data) { if (data.code == 200) { if (form.data("goal")) { var goal = form.data("goal"); console.log("reachGoal: " + goal); yaCounter44441632.reachGoal(goal); } yaCounter44441632.reachGoal(landing.default_goal); window.top.location.href = landing.thank_you_page+"?order_id="+data.order_id; } else { alert(data.message); } }); }; /** * Запускает обработку событий */ this.setFormHandlers = function (form_selector, button_selector) { $(form_selector).find(button_selector).on("click", function () { var field_names, form = $(this).closest("form"); // Определяем названия полей в форме заказа(сделано для обратной совместимости со старыми лендами) if ( form.is(":has([name='Request[name]'])") && form.is(":has([name='Request[phone]'])") ) { console.log('form type old'); field_names = landing.field_names['old']; } else if ( form.is(":has([name='phone'])") ) { console.log('form type normal'); field_names = landing.field_names['normal']; } else { console.log("Error: тэги в форме заказа имеют неправильный атрибут 'name'\n\n" + "Атрибут 'name' в полях формы должен принимать следующее значение:\n" + "phone - контактный телефон\n" + "city - адрес(опицонально)" + "name - ФИО клиента(опционально)\n" ); alert("Ошибка создания заказа.\nОбратитесь к администратору сайта"); return false; } var params = { fio: form.find('[name="'+field_names['name']+'"]').val(), phone: form.find('[name="'+field_names['phone']+'"]').val(), city: form.find('[name="'+field_names['city']+'"]').val(), site_id: '38782', ref: document.referrer, time_zone_offset: -( new Date() ).getTimezoneOffset() / 60, subids: form.find('[name=subids]').val(), hit_id: form.find('[name=hit_id]').val(), landing_type: form.find('[name=landing_type]').val() }; landing.createOrder(params, form); return false; }); }; $(function () { if(typeof window['RocketProfitFormHandler_activated'] === 'undefined') { landing.setFormHandlers(form_selector, button_selector); } }); }; var landing = new Landing( 'form', '.button, [type=submit]' ); if(typeof window['RocketProfitFormHandler_activated'] === 'undefined') { landing.setWebVisorNoClick(); } landing.hit(); landing.setReviewsHandler(); landing.goFancyBox(); // Rating@Mail.ru counter var _tmr = _tmr || []; _tmr.push({id: "2591103", type: "pageView", start: (new Date()).getTime()}); (function (d, w) { var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js"; var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);}; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window);