function initPopups() { /** * Lovescanner helpers */ window.lsHelper = new function() { var self = this; self.getRandomizedUrl = function(url) { var currentUrl = url.replace(/#.*/, '').replace(/.?rnd\=\d+/g, ''); var separator = currentUrl.match(/\?/) ? '&' : '?'; return currentUrl + separator + 'rnd=' + (Math.random() + '').replace('.', ''); }; self.pageRefresh = function(timeout, url) { var _pageRefresh = function() { document.location.href = self.getRandomizedUrl(url ? url : document.location.href); }; if (timeout) { setTimeout(_pageRefresh, timeout); } else { _pageRefresh(); } }; self.setFormFieldError = function(formFieldElement, isError, message) { try { var elementContainer = formFieldElement.parents('.form-item'); if (!elementContainer || elementContainer.length == 0) { var elementContainer = formFieldElement.parents('.unit'); if (isError) { elementContainer.find('.green_alert').hide(); elementContainer.find('.red_alert').show(); elementContainer.find('input').addClass('field-error'); if (message) { if ($.isArray(message)) { message = message[0]; } elementContainer.find('.alert_text').html(message).show(); } } else { elementContainer.find('.red_alert').hide(); elementContainer.find('.green_alert').show(); elementContainer.find('.alert_text').hide(); elementContainer.find('input.field-error').removeClass('field-error'); } } else { var formMessage = elementContainer.find('.form-message'); var formTooltip = elementContainer.find('.form-tooltip'); if (isError) { formTooltip.hide(); formMessage.removeClass('form-ok').addClass('form-error').show(); if (message) { if ($.isArray(message)) { message = message[0]; } formMessage.html(message); } } else { formTooltip.show(); formMessage.removeClass('form-error').addClass('form-ok').hide(); } } } catch (exc) { _exc(exc); } }; self.setFormError = function(formElement, isError, message) { try { if (isError && message) { formElement.find('.error').html(message); } else { formElement.find('.error').html(' '); } } catch (exc) { _exc(exc); } }; }; /** * Lovescanner popup */ window.lsPopup = new function() { var self = this; self._element = []; self._container = []; self._wrapper = []; self._contentWrapper = []; self._content = []; self._blocker = []; self._hideTimeout = null; //self._iframe = []; self._options = null; var options = { 'lovescanner': { lsPopupWidth: 572, lsPopupChildWidthOffset: 22, theme: 'default', animationTime: 700, closeButtonShown:true }, 'sexscanner': { lsPopupWidth: 500, lsPopupChildWidthOffset: 50, animationTime: 700, closeButtonShown:true }, 'lovebook' : { lsPopupWidth: 530, lsPopupChildWidthOffset: 0, theme: 'default', lsPopupWidthShrinked:340, lsPopupChildWidthOffsetShrinked:0, animationTime: 100, closeButtonShown:true }, 'topdatingsitesuk': { lsPopupWidth: 572, lsPopupChildWidthOffset: 22, theme: 'default', animationTime: 700, closeButtonShown:true }, 'topdatingsitesusa': { lsPopupWidth: 572, lsPopupChildWidthOffset: 22, theme: 'default', animationTime: 700, closeButtonShown:true } }; self._defaultOptions = $.extend({}, options[window.theme.getName()]); self.loadUrl = function(url, callback, options) { self._options = options; if(options && typeof options.closeButtonShown != 'undefined') self._defaultOptions.closeButtonShown = options.closeButtonShown; self.loadStart(); self.show(); if(self._defaultOptions.closeButtonShown) self.showCloseButton(); if (self._isImage(url)) { self._loadImage(url, callback); } else { $.ajax({ url: url, context: this, success: $.isFunction(callback) ? callback : self._processAjaxResponse, error: self.loadFinish }); } }; self.submitForm = function(form, callback) { self.loadStart(); self.show(); $(form).ajaxSubmit({ success: $.isFunction(callback) ? callback : self._processAjaxResponse, error: self.loadFinish }); }; self.show = function(options) { if(options) self._options = options; if (self._hideTimeout !== null) { window.clearTimeout(self._hideTimeout); self._hideTimeout = null; } if (self._element.is(":visible")) { return; } self._element.show(); self._blocker.show(); if ($.browser.msie && parseFloat($.browser.version) < 7) { $('select').css({ visibility: 'hidden' }); } }; self.hide = function(hideTimeout) { if(self._options && self._options.display == 'modal') { return; } if (self._hideTimeout !== null) { window.clearTimeout(self._hideTimeout); self._hideTimeout = null; } if (hideTimeout > 0) { self._hideTimeout = window.setTimeout(self.hide, hideTimeout); return; } if (!self._element.is(":visible")) { return; } if ($.browser.msie && parseFloat($.browser.version) == 8) { self._container.hide(); self._element.hide(); self._blocker.hide(); } else { self._container.fadeOut(400, function () { self._element.hide(); self._blocker.hide(); if ($.browser.msie && parseFloat($.browser.version) < 7) { $('select').css({ visibility: 'visible' }); } }); } self._shrinked = false; }; self.shrink = function(){ if (self._shrinked) return; self._wrapperOrigW = self._wrapper.css('width'); self._elementOrigW = self._element.css('width'); self._contentWrapperOrigW = self._contentWrapper.css('width'); var lsPopupWidthShr = self._defaultOptions.lsPopupWidthShrinked; var theme = self._defaultOptions.theme; if (self._options) { if (self._options.width) { lsPopupWidthShr = self._options.width; } if (self._options.theme) { theme = self._options.theme; } } self.setTheme(theme); var lsPopupMarginLeft = -parseInt(lsPopupWidthShr / 2); self._element.css({ 'width': lsPopupWidthShr + 'px', 'margin-left': lsPopupMarginLeft + 'px' }); self._wrapper.css({ 'width': lsPopupWidthShr - self._defaultOptions.lsPopupChildWidthOffset }); self._contentWrapper.css({ 'width': lsPopupWidthShr - self._defaultOptions.lsPopupChildWidthOffsetShrinked }); self._shrinked = true; }; self.restoreOrigin = function(){ if(!self._shrinked) return; var lsPopupWidth = self._defaultOptions.lsPopupWidth; var theme = self._defaultOptions.theme; if (self._options) { if (self._options.width) { lsPopupWidth = self._options.width; } if (self._options.theme) { theme = self._options.theme; } } self.setTheme(theme); var lsPopupMarginLeft = -parseInt(lsPopupWidth / 2); self._element.css({ 'width': lsPopupWidth + 'px', 'margin-left': lsPopupMarginLeft + 'px' }); self._wrapper.css({ 'width': lsPopupWidth - self._defaultOptions.lsPopupChildWidthOffset }); self._contentWrapper.css({ 'width': lsPopupWidth - self._defaultOptions.lsPopupChildWidthOffsetShrinked }); self._shrinked = false; } self.update = function(text, options) { self.show(options); self._processResponse(text); }; self.loadStart = function () { if (self._element.is(":visible")) { self._wrapper.css({ 'height': self._wrapper.height() }); self._element.addClass('lsPopup-loadingOpened'); } else { self._element.addClass('lsPopup-loading'); } self.hideCloseButton(); }; self.loadFinish = function () { self._wrapper.css({ 'height': 'auto' }); self._element.removeClass('lsPopup-loading lsPopup-loadingOpened'); if (!self._container.is(":visible")) { if ($.browser.msie && parseFloat($.browser.version) == 8) { self._container.show(); } else { self._container.fadeIn(self._defaultOptions.animationTime); } } if(self._defaultOptions.closeButtonShown) self.showCloseButton(); }; //alert($.browser.msie + ' '+ $.browser.version + ' ' + (parseFloat($.browser.version) == 8)); self.hideCloseButton = function() { self._element.find('.lsPopup-close').hide(); }; self.showCloseButton = function() { self._element.find('.lsPopup-close').show(); }; self.setTheme = function(name) { if (self._element.length != 0 && name) { var theme = 'lsPopupTheme-' + name; var elementClass = self._element.attr('class').replace(/lsPopupTheme-(\S+)/, theme); self._element.attr('class', elementClass); } }; self._build = function() { if (self._element.length == 0) { self._element = $('#lsPopup'); if (self._element.length == 0) { var theme = self._defaultOptions.theme ? 'lsPopupTheme-' + self._defaultOptions.theme : ''; var html = ''; html += '
'; $('body').append(html); self._element = $('#lsPopup'); } self._wrapper = self._element.find('.lsPopup-wrapper'); self._contentWrapper = self._element.find('.lsPopup-contentWrapper'); self._content = self._element.find('.lsPopup-content'); self._container = self._element.find('.lsPopup-popupContainer'); //self._iframe = self._element.find('.lsPopup-iframe'); //self._iframe.load(self._processIframeResponse); self._element.delegate('.lsPopup-closeButton', 'click', self.hide); } if (self._blocker.length == 0) { self._blocker = $('#lsPopup-blocker'); if (self._blocker.length == 0) { $('body').append(''); self._blocker = $('#lsPopup-blocker'); self._blocker.click(function() { self.hide(); }); } } }; self._processAjaxResponse = function(responseText, result, ajaxObject) { self._processResponse(responseText); }; self._processIframeResponse = function() { var responseText = ''; try { responseText = self._iframe.get(0).contentWindow.document.body.innerHTML; } catch (exc) { _exc(exc); } self._processResponse(responseText); }; self._processResponse = function(responseText) { self._content.html(responseText); var currentHeight; if (self._container.is(":visible")) { currentHeight = self._element.height(); } else { self._container.show(); currentHeight = self._element.height(); self._container.hide(); } if ($(window).height() >= currentHeight) { self._element.css({ 'top': '50%', 'margin-top': -(currentHeight / 2) }); self._wrapper.css({ 'height': 'auto' }); self._element.removeClass('lsPopup-absolute').addClass('lsPopup-fixed'); } else { self._element.css({ 'top': $(window).scrollTop(), 'margin-top': 0 }); self._wrapper.css({ 'height': 'auto' }); self._element.removeClass('lsPopup-fixed').addClass('lsPopup-absolute'); } var lsPopupWidth = self._defaultOptions.lsPopupWidth; var theme = self._defaultOptions.theme; if (self._options) { if (self._options.width) { lsPopupWidth = self._options.width; } if (self._options.theme) { theme = self._options.theme; } } self.setTheme(theme); var lsPopupMarginLeft = -parseInt(lsPopupWidth / 2); self._element.css({ 'width': lsPopupWidth + 'px', 'margin-left': lsPopupMarginLeft + 'px' }); self._wrapper.css({ 'width': lsPopupWidth - self._defaultOptions.lsPopupChildWidthOffset }); self._contentWrapper.css({ 'width': lsPopupWidth - self._defaultOptions.lsPopupChildWidthOffset }); if(self._options && self._options.display == 'modal'){ self._options = null; self._options = {display: 'modal'}; } else { self._options = null; } self.loadFinish(); }; self._isImage = function(url) { var ret = /\.(gif|jpe?g|png)$/.test(url); return ret; }; self._loadImage = function(url, callback) { var contentHtml = ''; self._wrapper.empty().html(contentHtml); var loadHandler = function(imageElement) { if (!imageElement.complete) { setTimeout(function() { loadHandler(imageElement) }, 200); return; } // proxy image for ie6 var image = new Image(); image.src = imageElement.src; // var dims = { w: image.width, h: image.height }; var limits = { w: 800, h: 600 }; if (dims.w > limits.w || dims.h > limits.h) { new UserpicResizer('img.lsPopup-contentImage', limits.w, limits.h); dims = limits } self._element.css({ position: 'absolute', left: '50%', top: '50%', width: dims.w + 24, marginLeft: -dims.w/2, marginTop: -dims.h/2 + $(window).scrollTop() }); self._wrapper.css({ width: dims.w, height: dims.h }); self.loadFinish(); if ($.isFunction(callback)) { callback(); } }; var $img = self._wrapper.find('img.lsPopup-contentImage'); $img.load(function() { loadHandler($img[0]) }); $img.attr({ src: url }); }; //////////// self._build(); if(self._defaultOptions.closeButtonShown) self.showCloseButton(); $('body').keypress(function(event) { if (event.keyCode == 27) { self.hide(); } }); }; /** * Lovescanner tab widget */ window.lsTabs = new function() { var self = this; self.refresh = function() { $('.lsTabs').each(function(index, item) { var element = $(item); try { var config = $.parseJSON(element.find('.json').first().text()); var tab = $('#' + config.tab + '_tab'); tab.click(); } catch (exc) { _exc(exc); } }); }; $('body').delegate('.lsTabs .lsTabs-tab', 'click', function() { try { var newTab = $(this); var newBlockName = newTab.attr('id').replace('_tab', ''); var newBlock = $('#' + newBlockName + '_block'); var container = $(newTab.parents('.lsTabs')); var oldTab = $(container.find('.lsTabs-tab.active')); var oldBlockName = oldTab.attr('id').replace('_tab', ''); var oldBlock = $('#' + oldBlockName + '_block'); oldTab.removeClass('active'); if (oldBlock) { oldBlock.hide(); } newTab.addClass('active'); if (newBlock) { newBlock.show(); } } catch (exc) { _exc(exc); } }); self.refresh(); }; /** * Lovescanner multicheckbox widget */ window.lsMultiCheckbox = new function() { var self = this; $('body').delegate('.lsMultiCheckbox .lsMultiCheckbox-all:checkbox', 'click', function() { try { var multiCheckboxAll = $(this); var element = multiCheckboxAll.parents('.lsMultiCheckbox'); element.find('.lsMultiCheckbox-item:checkbox').each(function(index, item) { item.checked = (multiCheckboxAll.is(':checked')); }); } catch (exc) { _exc(exc); } }); $('body').delegate('.lsMultiCheckbox .lsMultiCheckbox-item:checkbox', 'click', function() { try { var multiCheckboxItem = $(this); var element = multiCheckboxItem.parents('.lsMultiCheckbox'); var multiCheckboxAll = element.find('.lsMultiCheckbox-all:checkbox'); multiCheckboxAll.get(0).checked = (element.has('.lsMultiCheckbox-item:checkbox:not(:checked)').length == 0); } catch (exc) { _exc(exc); } }); }; /* Fix IE8 bug, form is not submitted by ENTER */ if ($.browser.msie && $.browser.version == 8) { //$('body').delegate('.popupQuickRegistration input, .popupRecommend input, .popupFindFriends input', 'keydown', function(event) { $('body').delegate('.popup input', 'keydown', function(event) { if (event.keyCode == 13) { event.stopPropagation(); event.preventDefault(); var form = $(event.target).parents('form').get(0); if (form && form.onsubmit) { form.onsubmit(); } } }); } $('body').unbind('submitInviterGetEmails'); $('body').bind('submitInviterGetEmails', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { self.formElement.find('.red_alert').hide(); self.formElement.find('.alert_text').hide(); self.formElement.find('.green_alert').show(); self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); var email = self.formElement.find("[name='email']"); var emailValue = email.val(); var pass = self.formElement.find("[name='pass']"); var passValue = pass.val(); var type = self.formElement.find("[name='type']"); var typeValue = type.val(); var isValid = true; if (typeValue == 'email') { if (!emailValue) { lsHelper.setFormFieldError(email, true, __('Please, type your email')); isValid = false; } else if (!/^([a-z0-9][a-z0-9_\-\.\+]*)@([a-z0-9][a-z0-9\.\-]{0,63}\.([a-z]{2,4}))$/i.test(emailValue)) { lsHelper.setFormFieldError(email, true, __('Please, type a valid email')); isValid = false; } else if (!(/@(.+)$/i.exec(emailValue)[1] in siteConfig.get('allowedEmailDomains'))) { lsHelper.setFormFieldError(email, true, __('Unsupported email')); isValid = false; } } else if (!emailValue) { lsHelper.setFormFieldError(email, true, __('Please, type your login / email')); isValid = false; } if (!passValue) { lsHelper.setFormFieldError(pass, true, __('Please, type your password')); isValid = false; } return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } var resultElement = false; if (json) { switch (json.result) { case 'all-invited': resultElement = $('#inviterOk'); break; case false: if (typeof(json.error) == 'object') { var key; for (key in json.error) { lsHelper.setFormFieldError(self.formElement.find("[name='" + key + "']"), true, json.error[key]); } } else { lsHelper.setFormFieldError(self.formElement.find("[name='email']"), true, json.error); } lsPopup.loadFinish(); break; default: try { var config = $.parseJSON(self.formElement.find('.json').first().text()); lsPopup.loadUrl(config.url, function(responseText) { $('#inviter_block').hide(); $('#inviter_contacts_block').html(responseText); $('#inviter_contacts_block').show(); lsPopup.loadFinish(); }); return; } catch (exc) { resultElement = $('#recommendFail'); _exc(exc); } break; } } else { // any undefined problem resultElement = $('#recommendFail'); } if (resultElement) { lsPopup.loadFinish(); $('.popup:visible').hide(); resultElement.show(); } }); }); $('body').unbind('submitInviterPostInvites'); $('body').bind('submitInviterPostInvites', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; if (self.formElement.has('input[name="checkbox"]:checkbox:checked').length > 0) { lsHelper.setFormError(self.formElement, false); } else { lsHelper.setFormError(self.formElement, true, __('Please select at least one recipient!')); isValid = false; } return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } var resultElement = (json && json.result) ? $('#inviterOk') : $('#inviterFail'); lsPopup.loadFinish(); $('.popup:visible').hide(); resultElement.show(); }); }); $('body').unbind('submitRecommend'); $('body').bind('submitRecommend', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; self.formElement.find('.red_alert').hide(); self.formElement.find('.green_alert').show(); self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); self.formElement.find('input.field-error').removeClass('field-error'); var fromEmail = self.formElement.find("[name='data[Recommend][from_email]']"); var fromName = self.formElement.find("[name='data[Recommend][from_name]']"); var toEmail = self.formElement.find("[name='data[Recommend][to_email]']"); if (!fromEmail.val()) { lsHelper.setFormFieldError(fromEmail, true); isValid = false; } if (!fromName.val()) { lsHelper.setFormFieldError(fromName, true); isValid = false; } if (!toEmail.val()) { lsHelper.setFormFieldError(toEmail, true); isValid = false; } return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } var resultElement = false; if (json) { if (json.result) { resultElement = $('#recommendOk'); } else { if (json.error == 'user unsubscribed') { resultElement = $('#recommendFail'); } else { if (typeof(json.error) == 'object') { var key; for (key in json.error) { lsHelper.setFormFieldError(self.formElement.find("[name='data[Recommend][" + key + "]']"), true); } } } } } else { // problem with mail sending (exception or smth like that) resultElement = $('#recommendFail'); } lsPopup.loadFinish(); if (resultElement) { $('.popup:visible').hide(); resultElement.show(); } }); }); $('body').unbind('submitQuickRegistration'); $('body').bind('submitQuickRegistration', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; self.formElement.find('.red_alert').hide(); self.formElement.find('.alert_text').hide(); self.formElement.find('.green_alert').show(); self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); self.formElement.find('input.field-error').removeClass('field-error'); // clear default value from city fields try { var cityPlaceholder = siteConfig.getParam('autocomplete').placeholder, cityField = self.formElement.find('input[name*=city]'); if (cityField.val() == cityPlaceholder) { cityField.val(''); } } catch (exc) { _exc(exc); } return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } var resultElement = false; if (json) { if (json.status == 'error') { if (json.data && typeof(json.data.fields) == 'object') { var key; for (key in json.data.fields) { if(window.theme.getName() == 'lovebook' && key == 'password') { json.data.fields[key] = __('Please enter password'); } lsHelper.setFormFieldError(self.formElement.find("[name='data[User][" + key + "]']"), true, json.data.fields[key]); } } } else if (json.status == 'success') { lsHelper.pageRefresh(300, siteConfig.getParam('baseUrl') + 'users/registered'); return; } } lsPopup.loadFinish(); lsPopup.hideCloseButton(); }); }); $('body').unbind('submitQuickRegisterWithMyspace'); $('body').bind('submitQuickRegisterWithMyspace', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; self.formElement.find('.red_alert').hide(); self.formElement.find('.alert_text').hide(); self.formElement.find('.green_alert').show(); self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } if (json) { if (json.status == 'error') { if (json.errors && typeof(json.errors) == 'object') { var key; for (key in json.errors) { try { lsHelper.setFormFieldError(self.formElement.find("[name='data[User][" + key + "]']"), true, json.errors[key]); } catch (exc) { _exc(exc); } } } } else if (json.status == 'success') { lsHelper.pageRefresh(300); } } lsPopup.loadFinish(); }); }); $('body').unbind('submitResetPassword'); $('body').bind('submitResetPassword', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; self.formElement.find('.red_alert').hide(); self.formElement.find('.alert_text').hide(); self.formElement.find('.green_alert').show(); self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); var email = self.formElement.find("[name='data[User][email]']"); if (siteConfig.getParam('loggedIn')) { lsHelper.setFormFieldError(email, true, __('You are already logged in')); isValid = false; lsHelper.pageRefresh(2000); } else { var emailValue = email.val(); if (!emailValue) { lsHelper.setFormFieldError(email, true, __('Please, type your email')); isValid = false; } else if (!/^([a-z0-9][a-z0-9_\-\.\+]*)@([a-z0-9][a-z0-9\.\-]{0,63}\.([a-z]{2,4}))$/i.test(emailValue)) { lsHelper.setFormFieldError(email, true, __('Please, type a valid email')); isValid = false; } } return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } if (json) { if (json.status == 'error') { if (json.errors && typeof(json.errors) == 'object') { var key; for (key in json.errors) { try { lsHelper.setFormFieldError(self.formElement.find("[name='data[User][" + key + "]']"), true, json.errors[key]); } catch (exc) { _exc(exc); } } } } else if (json.status == 'success') { lsPopup.loadFinish(); $('.popup:visible').hide(); $('#quickResetPasswordOk').show(); } } lsPopup.loadFinish(); }); }); $('body').unbind('submitQuickLogin'); $('body').bind('submitQuickLogin', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; self.formElement.find('.red_alert').hide(); self.formElement.find('.alert_text').hide(); self.formElement.find('.green_alert').show(); self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { var json = false; try { json = $.parseJSON(responseText); } catch (exc) { _exc(exc); } if (json) { if (json.status == 'error') { lsHelper.setFormFieldError(self.formElement.find("[name='data[User][email]']"), true); lsHelper.setFormFieldError(self.formElement.find("[name='data[User][password]']"), true, json.data.message); } else if (json.status == 'success') { lsHelper.pageRefresh(500); return; } } lsPopup.loadFinish(); }); }); $('body').unbind('submitProfileComplain'); $('body').bind('submitProfileComplain', function(event) { var self = this; event.preventDefault(); event.stopPropagation(); self.formElement = $(event.target); self.isValid = function() { var isValid = true; self.formElement.find('.form-message').hide(); self.formElement.find('.form-tooltip').show(); var reasonElement = self.formElement.find("[name='data[Profile][complain]']"); if (reasonElement && reasonElement.val().length < 1) { lsHelper.setFormFieldError(reasonElement, true); isValid = false; } return isValid; }; if (!self.isValid()) { return false; } lsPopup.submitForm(self.formElement, function(responseText) { $('#profileComplain').hide(); $('#profileComplainOk').show(); lsPopup.loadFinish(); }); }); $('body').delegate('.externalCampaign-join', 'click', function(event) { var joinButton = $(this); event.stopPropagation(); var element = joinButton.parents('.externalCampaign'); try { var config = $.parseJSON(element.find('.json').first().text()); } catch (exc) { lsPopup.hide(); _exc(exc); return; } var loader = $(element.find('.externalCampaign-loader')); var content = $(element.find('.externalCampaign-content')); var progressElement = $(loader.find('.count')); var progressCounter = 0; var progressInterval = null; progressElement.html(progressCounter++); var secondsPerStep = 3; var countStep = 0; var loadingStart = function() { loader.show(); content.hide(); progressInterval = setInterval(function() { if (progressCounter <= 99) { progressElement.html(progressCounter++); } // if (progressCounter == 99) { // progressCounter = 70 + Math.round(Math.random() * 20); // } }, countStep / 100 * 1000); }; var loadingFinish = function() { loader.hide(); content.show(); if (progressInterval != null) { clearInterval(progressInterval); } }; if (config.isApi) { countStep += secondsPerStep; //registration process event.preventDefault(); lsPopup.loadUrl(joinButton.attr('href')); } else { countStep += secondsPerStep / 3; //success countStep += secondsPerStep; //tracking in seconds countStep += config.countStep * secondsPerStep; //steps in seconds try { var stepUrl = $.parseJSON(joinButton.parent().find('.json').text()); joinButton.data('stepUrl', stepUrl); } catch (exc) { loadingFinish(); lsPopup.hide(); _exc(exc); return; } var finish = function() { progressCounter = Math.round((countStep - secondsPerStep / 3) / countStep * 100); lsPopup.loadUrl('/externalcampaign/result/' + config.ident + '?popup=1'); }; var registrationIframe = element.find('.externalCampaign-registrationIframe'); var loadNextLink = function() { var stepUrl = joinButton.data('stepUrl'); var currentLink = stepUrl.shift(); if (!!currentLink) { joinButton.data('stepUrl', stepUrl); registrationIframe.attr('src', currentLink); } else { finish(); } }; registrationIframe.unbind('load'); registrationIframe.load(function() { progressCounter = Math.round(secondsPerStep / countStep * 100); registrationIframe.unbind('load'); var currentStep = 1; registrationIframe.load(function(event) { progressCounter = Math.round((secondsPerStep + secondsPerStep * currentStep++) / countStep * 100); // load registration form, step X //console.log('load registration form, step ' + (currentStep++)); //alert('load registration form, step ' + (currentStep++)); try { window.frames[this.name].formSubmit(); } catch (exc) { loadNextLink(); } }); loadNextLink(); }); loadNextLink(); } loadingStart(); }); window.tb_show_old = window.tb_show; window.tb_show = function(caption, url, imageGroup, params, callback) { if (url) { lsPopup.loadUrl(url, function(responseText) { lsPopup.update(responseText); if (callback) { callback(); } }); } else { window.tb_show_old(caption, url, imageGroup, params, callback); } }; };