/** * Класс для обработки получения премиум-кода * через установку Амиго браузера * */ var BrinPopupM = jQuery.Class.create({ init: function(data) { // не допускаем старт класса с пустыми данными if( typeof(data)=='undefined' || typeof(data.tpl)=='undefined') { alert('error loading BrinPopup'); return; } this.container = '#'+data.tpl; //элемент-контейнер, куда грузится интерфейс this.eVal = data.eVal; //значение eventvalue для ga event this.brinLink = ''; // ссылка на скачивание браузера this.codeId = ''; // ID выданного кода var instance = this; // алиас для обозначения текущего объекта /** * перехват закрытия попапа для уточнения решения пользователя */ $(this.container).on('dialogbeforeclose', function(event) { // для экранов с зелёной кнопкой показываем запрос подтверждения закрытия попапа if( $(instance.container).find(".brin-green-btn").length != 0 && ! $(instance.container).find(".brin-green-btn").hasClass('hidden')) { event.pre ga событие $('.mPopup').addClass('loadingbox'); if ( typeof(instance.brinLink) == 'undefined' || instance.brinLink == 'undefined'){ instance.showError( $('#brin-link-error').html(), false); } else { // отрываем ссылку на скачивание в новом табе openInNewTab(instance.brinLink); instance.showGetTurbo(); } $('.mPopup').removeClass('loadingbox'); }); /** * Обработчик зелёной кнопки "Получить турбо-доступ" * переход к установке браузера и процессу получения кода * */ $(instance.container).find(".brin-green-btn").live('click', function() { instance.showGetCode(); }); /** * обработчик кнопки отмены в диалоге подтверждения закрытия попапа */ $('.mPopup').find(".ask-box .cancel-btn").live('click', function() { $('.mPopup').find('.ask-box').remove(); }); /** * обработчик кнопки OK в диалоге подтверждения закрытия попапа */ $('.mPopup').find(".ask-box .ok-btn").live('click', function() { $(instance.container).dialog('destroy'); }); }, /** * Первый попап со ссылкой на браузер */ showLinkScreen: function() { this.showStep("get-link"); var instance = this; // получаем ссылку на скачиванеи браузера и код $.ajax({ url: '/amigo/getAmigoDwnldLink', type: 'POST', dataType: 'json', 'success': function (res) { if (res.result){ instance.codeId = res.codeId; instance.brinLink = res.link; $('.mPopup').removeClass('loadingbox'); } else { instance.showError(res.error, false); } } }); }, /** * Второй попап с кнопкой получения турбо-доступа */ showGetTurbo: function() { this.showStep("get-turbo"); $(this.container).find('.brin-link').attr('href', this.brinLink); setTimeout(function () { $('.mPopup').removeClass('loadingbox'); }, 200); }, /** * получение турбодоступа */ showGetCode: function() { var instance = this; var url = '/amigo/getBonus/'+instance.codeId; $.ajax({ url: url, type: 'POST', dataType: 'json', 'success': function (res) { if (res.result){ instance.showSuccess(res.code, res.message); } else { instance.showError(res.error, res.haveBtn); } } }); }, /** * показ экрана ошибки * @param msg - текст ошибки * @param haveBtn - ключ, отражающий, нужно ли показывать на экране кнопку */ showError: function(msg,haveBtn){ this.showStep('error'); $(this.container).find('.error-message').html(msg); // если нужно, показываем кнопку if (haveBtn){ $(this.container).find('.brin-green-btn').removeClass('hidden'); } else { $(this.container).find('.brin-green-btn').addClass('hidden'); } $('.mPopup').removeClass('loadingbox'); }, /** * показ последнего экрана с премиум-кодом * @param code * @param time */ showSuccess: function(code,time){ this.showStep('done'); $(this.container).find('.done-code').html("Ваш код: " + code); $(this.container).find('.done-time').html(time); $('.mPopup').removeClass('loadingbox'); }, /** * показ шага попапа * @param stepName - суффикс блока, из которого загружаем содержимое */ showStep: function(stepName) { $('.mPopup').addClass('loadingbox'); $(this.container).find('.brin-text').html(''); // пустой экран if (stepName != 'blank'){ $(this.container).find('.brin-text').html( $('#brin-step-'+stepName).html() ); } }, /** * отображение попапа */ showPopup: function() { this.showLinkScreen(); showPopDialog(this.container,"",700,'mPopup'); $('.ui-widget-overlay').addClass('brinPopup'); $('.ui-dialog.mPopup').addClass('loadingbox'); $('.ui-dialog.mPopup').find('#popupbox').addClass('containerbox'); this.container = this.container+'.containerbox'; } }); /** * Класс для обработки получения премиум-кода * через установку Яндекс браузера * */ var BrinPopupY = jQuery.Class.create({ init: function(data) { // не допускаем старт класса с пустыми данными if( typeof(data)=='undefined' || typeof(data.tpl)=='undefined') { alert('error loading BrinPopup'); return; } this.container = '#'+data.tpl; //элемент-контейнер, куда грузится интерфейс this.eVal = data.eVal; //значение eventvalue для ga event this.brinLink = 'http://download.cdn.yandex.net/downloadable_soft/browser/turbobit-browser/Yandex.exe'; // ссылка на скачивание браузера var instance = this; // алиас для обозначения текущего объекта /** * Обработчик красной кнопки "Установить бесплатно" * переход к установке браузера и процессу получения кода * */ $(instance.container).find(".brin-red-btn").live('click', function() { // отправляем ga событие $('.yPopup').addClass('loadingbox'); instance.showGetTurbo(); // отрываем ссылку на скачивание в новом табе openInNewTab(instance.brinLink); $('.yPopup').removeClass('loadingbox'); }); }, /** * Первый попап со ссылкой на браузер */ showLinkScreen: function() { this.showStep("get-link-y"); var instance = this; setTimeout(function () { $('.yPopup').removeClass('loadingbox'); }, 200); }, /** * Второй попап с кнопкой получения турбо-доступа */ showGetTurbo: function() { this.showStep("get-turbo-y"); $(this.container).find('.brin-link').attr('href', this.brinLink); setTimeout(function () { $('.yPopup').removeClass('loadingbox'); }, 200); }, /** * получение турбодоступа */ showGetCode: function() { var instance = this; var url = '/amigo/getBonus/'+instance.codeId; $.ajax({ url: url, type: 'POST', dataType: 'json', 'success': function (res) { if (res.result){ instance.showSuccess(res.code, res.message); } else { instance.showError(res.error, res.haveBtn); } } }); }, /** * показ экрана ошибки * @param msg - текст ошибки * @param haveBtn - ключ, отражающий, нужно ли показывать на экране кнопку */ showError: function(msg,haveBtn){ this.showStep('error'); $(this.container).find('.error-message').html(msg); // если нужно, показываем кнопку if (haveBtn){ $(this.container).find('.brin-green-btn').removeClass('hidden'); } else { $(this.container).find('.brin-green-btn').addClass('hidden'); } $('.yPopup').removeClass('loadingbox'); }, /** * показ последнего экрана с премиум-кодом * @param code * @param time */ showSuccess: function(code,time){ this.showStep('done'); $(this.container).find('.done-code').html("Ваш код: " + code); $(this.container).find('.done-time').html(time); $('.yPopup').removeClass('loadingbox'); }, /** * показ шага попапа * @param stepName - суффикс блока, из которого загружаем содержимое */ showStep: function(stepName) { $('.yPopup').addClass('loadingbox'); $(this.container).find('.brin-text').html(''); // пустой экран if (stepName != 'blank'){ $(this.container).find('.brin-text').html( $('#brin-step-'+stepName).html() ); } }, /** * отображение попапа */ showPopup: function() { this.showLinkScreen(); showPopDialog(this.container,"",700,'yPopup'); $('.ui-widget-overlay').addClass('brinPopup'); $('.ui-dialog.yPopup').addClass('loadingbox'); $('.ui-dialog.yPopup').find('#popupbox').addClass('containerbox'); this.container = this.container+'.containerbox'; } }); /*********************************************************** * Вспомогательные функции ***********************************************************/ /** * Показывает диалог-бокс с заданными параметрами * @param object elem блок, отображаемый в билоге * @param string title заголовок окна * @param string width ширина окна */ //TODO вынести в общие методы function showPopDialog(elem,title,width,dclass) { if (typeof elem === 'undefined') { return false; } if (typeof title === 'undefined') { title = ""; } if (typeof width === 'undefined') { width = 300; } if (typeof dclass === 'undefined') { dclass = ''; } return window.$(elem).dialog({ title: title, modal: true, resizable: false, draggable: false, height:350, dialogClass: dclass, position: ['center', 50], width: width, close: function(event, ui) { $(this).dialog('destroy'); } }); } /** * проверка валидность введённого email */ function validEmail(email) { var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; return reg.test(email); } /** * показывает див-лоадер */ function showLoader(block){ $('#'+block).addClass('loading'); } /** * прячет див-лоадер */ function hideLoader(block){ $('#'+block).removeClass('loading'); } $(document).ready(function() { // обработчик клика по баннерам $(".brin-button").live("click", function(){ // получаем данные для ga-event var eVal; //eventValue var eLab = '';//eventLabel if ($(this).hasClass('brin-free-captcha')) { eVal = 1; } if ($(this).hasClass('brin-free-download')) { eVal = 2; } if ($(this).hasClass('brin-m')) { //данные для ga-event eLab = 'mlr'; /** * скрипт для инициации установщика AMIGO */ var data = {}; data.tpl = 'popupbox'; data.eVal = eVal; var $bpop = new BrinPopupM(data); $bpop.showPopup(); } if ($(this).hasClass('brin-y')) { //данные для ga-event eLab = 'ynd'; /** * скрипт для инициации установщика YANDEX */ var data = {}; data.tpl = 'popupbox'; data.eVal = eVal; var $bpop = new BrinPopupY(data); $bpop.showPopup(); } // отправляем ga-событие клика по баннеру }); /** * Запускает попап установки АМиго или Яндекс, основываясь на псевдо-баннере */ $(".brin-download-link-b").live("click", function(){ var brinType = ''; // тип баннера var visBanType =''; // тип видимого баннера // получаем тип видимого баннера if ( $('.brin-button').length !== 0 ){ if ($('.brin-button').hasClass('brin-m')) { visBanType = 'brin-m'; } if ($('.brin-button').hasClass('brin-y')) { visBanType = 'brin-m'; } } //TODO стартовать это из самого кода баннера if ( $('.brin-hidden-block').length !== 0 ){ // получаем тип стартуемого баннера brinType = $(".brin-hidden-block").data('id'); if(visBanType != '' && brinType != visBanType){ // если на странице есть видимый баннер, // при клике нужно показать этот же тип попапа brinType = visBanType; } // стартуем попап if (brinType == 'brin-m') { //console.log('GA brin-hidden-block mail'); setTimeout(function () { /** * скрипт для инициации установщика AMIGO */ var data = {}; data.tpl = 'popupbox'; data.eVal = 3; var $bpop = new BrinPopupM(data); $bpop.showPopup(); }, 600); } if (brinType == 'brin-y') { //console.log('GA brin-hidden-block yan'); setTimeout(function () { /** * скрипт для инициации установщика YANDEX */ var data = {}; data.tpl = 'popupbox'; data.eVal = 3; var $bpop = new BrinPopupY(data); $bpop.showPopup(); }, 600); } } }); }); /*** * открывает ссылку в новом табе * @param url */ function openInNewTab(url) { var win = window.open(url, '_blank'); win.focus(); }