var _configs = { images_path: 'themes/regular/images/' } //new mthod for password $.validator.addMethod("alphaNum", function (value, element) { return this.optional(element) || /^[a-z0-9\-]+$/i.test(value); }, "Password must contain only letters, numbers, or dashes."); var client = { login_form: $('#client_login'), invites_form: $('#form_invite_friends'), register_form: $('#client_register'), activation_mail_el: $('#new_activation_mail'), navigation: $('#client_cycle'), active_menu: $('.client_nav ul li.activeSlide'), update_info_form: $('#update_client_info'), edit_address_form: $('#_client_address'), ajax_output_el: $('.ajax_output_msg'), active_page: null, info: null, error_msgs: { pt: { //forms name: 'Não introduziu o seu nome.', name_length: 'Nome tem de ter pelos menos 3 caracteres.', email_empty: 'Não introduziu o seu email.', email: 'Email inválido.', password: 'Não introduziu a sua password.', password_length: 'Password tem de ter entre 6 a 10 caracteres.', password_confirm: 'Não introduziu a confirmação da sua password.', password_equal: 'Passwords não são iguais.', address_1: 'Deve inserir o seu endereço.', postal_code: 'Não inseriu o seu código postal.', city: 'Não inseriu a cidade.', country: 'Deve escolher o seu país.', nif: 'Deve inserir o nif', terms_conditions: 'Deve aceitar os Termos e Condições', phone: 'Deve introduzir um número telefone válido', name_spaced: '     Não introduziu o seu nome', name_length_spaced: '     Nome inválido', email_empty_spaced: '     E-mail inválido', email_spaced: '     Email inválido', //misc ajax_error: 'Não possivel enviar-lhe o mail, por favor tente mais tarde.' }, en: { //forms name: 'Name is empty.', name_length: 'Name must have at least 3 characters.', email_empty: 'Email is empty.', email: 'Invalid email address.', password: 'Password is empty.', password_length: 'Password must have between 6 and 10 characters.', password_confirm: 'Password confirmation is empty.', password_equal: 'Passwords are different.', address_1: 'You must enter your address.', postal_code: 'Zip code is empty.', city: 'No city inserted.', country: 'Please choose your country.', nif: 'Please enter your VAT ID.', terms_conditions: 'You must accept Terms and Conditions', phone: 'You must enter valid phone number', //misc ajax_error: 'Not able to send you the email, please try again later.' }, es: { //forms name: 'El nombre está vacío.', name_length: 'El nombre debe tener al menos 3 caracteres.', email_empty: 'El correo electrónico está vacío.', email: 'El correo electrónico no es válido.', password: 'Contraseña está vacía.', password_length: 'La contraseña debe tener entre 6 y 10 caracteres.', password_confirm: 'Confirmación de la contraseña está vacía.', password_equal: 'Las contraseñas son diferentes.', address_1: 'Debe completar su dirección.', postal_code: 'El código postal está vacía.', city: 'No ha introducido ciudad.', country: 'Por favor, elija su país.', nif: 'Por favor, introduzca su DNI/CIF.', terms_conditions: 'Debe aceptar los Términos y Condiciones', phone: 'Debe ingresar el número de teléfono válido', //misc ajax_error: 'No es capaz de enviarle el correo, inténtalo más tarde.' }, }, //validate login inputs login_validate: function () { //define error lang var error_obg = client.error_msgs.pt if (_lang == 'en') error_obg = client.error_msgs.en if (_lang == 'es') error_obg = client.error_msgs.es //validate client.login_form.validate({ rules: { email: { required: true, email: true }, password: { required: true } }, messages: { email: { required: error_obg.email_empty, email: error_obg.email }, password: { required: error_obg.password } }, success: function (label) { $('#Email').closest('.form-group').find('.ok').remove(); $('#Password').closest('.form-group').find('.ok').remove(); label.html('OK').removeClass('error').addClass('ok'); label.css({'padding': '14px 0px 14px 10px', 'margin-bottom': '0px'}); setTimeout(function () { label.fadeOut(500); }, 2000) }, errorClass: "errorLable" }); }, //validate invites inputs invites_validate: function () { //define error lang var error_obg = client.error_msgs.pt if (_lang == 'en') error_obg = client.error_msgs.en //validate client.invites_form.validate({ rules: { nome_1: { minlength: 3 }, email_1: { email: true }, nome_2: { minlength: 3 }, email_2: { email: true }, nome_3: { minlength: 3 }, email_3: { email: true }, nome_4: { minlength: 3 }, email_4: { email: true }, nome_5: { minlength: 3 }, email_5: { email: true }, nome_6: { minlength: 3 }, email_6: { email: true }, nome_7: { minlength: 3 }, email_7: { email: true }, nome_8: { minlength: 3 }, email_8: { email: true }, nome_9: { minlength: 3 }, email_9: { email: true }, nome_10: { minlength: 3 }, email_10: { email: true } }, messages: { nome_1: { minlength: error_obg.name_length_spaced }, email_1: { email: error_obg.email_spaced }, nome_2: { minlength: error_obg.name_length_spaced }, email_2: { email: error_obg.email_spaced }, nome_3: { minlength: error_obg.name_length_spaced }, email_3: { email: error_obg.email_spaced }, nome_4: { minlength: error_obg.name_length_spaced }, email_4: { email: error_obg.email_spaced }, nome_5: { minlength: error_obg.name_length_spaced }, email_5: { email: error_obg.email_spaced }, nome_6: { minlength: error_obg.name_length_spaced }, email_6: { email: error_obg.email_spaced }, nome_7: { minlength: error_obg.name_length_spaced }, email_7: { email: error_obg.email_spaced }, nome_8: { minlength: error_obg.name_length_spaced }, email_8: { email: error_obg.email_spaced }, nome_9: { minlength: error_obg.name_length_spaced }, email_9: { email: error_obg.email_spaced }, nome_10: { minlength: error_obg.name_length_spaced }, email_10: { email: error_obg.email_spaced } }, success: function (label) { $('#Email').closest('.form-group').find('.ok').remove(); label.html('OK').removeClass('error').addClass('ok'); console.log("1"); setTimeout(function () { label.fadeOut(500); }, 2000) } }); }, //validate register inputs register_validate: function () { //define error lang var error_obg = client.error_msgs.pt if (_lang == 'en') error_obg = client.error_msgs.en if (_lang == 'es') error_obg = client.error_msgs.es //validate client.register_form.validate({ rules: { name: { required: true, minlength: 3 }, email: { required: true, email: true }, password: { required: true, minlength: 6 },/* password_confirm: { required: true, equalTo: "#register_password" }, address_1: { required: true }, postal_code: { required: true }, city: { required: true }, country: { required: true }, nif: { required: true },*/ terms_conditions: { required: true } }, messages: { name: { required: error_obg.name, minlength: error_obg.name_length }, email: { required: error_obg.email_empty, email: error_obg.email }, password: { required: error_obg.password, minlength: error_obg.password_length }, password_confirm: { required: error_obg.password_confirm, equalTo: error_obg.password_equal }, address_1: { required: error_obg.address_1 }, postal_code: { required: error_obg.postal_code }, city: { required: error_obg.city }, country: { required: error_obg.country }, nif: { required: error_obg.nif }, terms_conditions: { required: error_obg.terms_conditions } }, errorPlacement: function (error, element) { if (element.attr("type") == "checkbox") { error.insertAfter($(element).parents('div').find('span')); }else{ error.insertAfter(element); } }, success: function (label) { if(label.attr('for') !== 'terms_conditions'){ $('#examploNome').closest('.form-group').find('.ok').remove(); $('#examploEmail').closest('.form-group').find('.ok').remove(); $('#register_password').closest('.form-group').find('.ok').remove(); label.html('OK').removeClass('error').addClass('ok'); label.css({'padding': '14px 0px 14px 10px', 'margin-bottom': '0px'}); setTimeout(function () { label.fadeOut(500); }, 2000) } }, errorClass: "errorLable" }); }, //resend activation mail activation_mail: function () { client.activation_mail_el.click(function (e) { e.preventDefault(); //loading if (client.login_form.length > 0) $('').insertBefore(client.login_form) //for password recover page without login form else if ($('.pass_recover').length > 0) $('').appendTo('.pass_recover') //for account activation page without login form else if ($('.login').length > 0) $('').appendTo('.login') $.get("includes/adds.ajax.php?action=new_mail_validation", function (response) { try { response = jQuery.parseJSON(response) $('p.mail_sent').remove() $('p.mail_not_sent').remove() $('p.user_output_txt').remove() //error or sucess msg if (response.status == 'ok') { $('section.login').find('p').hide() if (client.login_form.length > 0) $('

' + response.msg + '

').fadeIn('normal').insertBefore(client.login_form) //for password recover page without login form else if ($('.pass_recover').length > 0) $('

' + response.msg + '

').fadeIn('normal').appendTo('.pass_recover') //for account activation page without login form else if ($('.login').length > 0) $('

' + response.msg + '

').fadeIn('normal').appendTo('.login') } else { $('section.login').find('p').hide() if (client.login_form.length > 0) $('

' + response.msg + '

').fadeIn('normal').insertBefore(client.login_form) //for password recover page without login form else if ($('.pass_recover').length > 0) $('

' + response.msg + '

').fadeIn('normal').appendTo('.pass_recover') //for account activation page without login form else if ($('.login').length > 0) $('

' + response.msg + '

').fadeIn('normal').appendTo('.login') } } catch (err) { console.log(err) //internal error if (client.login_form.length > 0) $('

' + error_obg.ajax_error + '

').fadeIn('normal').insertBefore(client.login_form) //for account activation page without login form else if ($('.login').length > 0) $('

' + error_obg.ajax_error + '

').fadeIn('normal').appendTo('.login') //for password recover page without login form else if ($('.pass_recover').length > 0) $('

' + error_obg.ajax_error + '

').fadeIn('normal').appendTo('.pass_recover') } $('img.loading').remove() }); }); }, //controlls client area with cycle plugin menu: function () { client.navigation.cycle({ fx: 'scrollHorz', speed: 500, timeout: 0, allowPagerClickBubble: false, pager: '.client_nav ul', /*startingSlide: 6,*/ fit: 1, pagerAnchorBuilder: function (idx, slide) { if (idx === 6) return '#add_new_address'; // return selector string for existing anchor else return '.client_nav ul li:eq(' + idx + ') a'; }, after: function (currSlideElement, nextSlideElement, options, forwardFlag) { //set current active page and load data if needed client.load_menu() //clean ajax_output_msgs client.ajax_output_el.removeClass('success').removeClass('error').html('') //clean error messages $('label.error').remove() } }); }, //load next slide data load_menu: function () { //get current slide client.active_page = $('.client_nav ul li.activeSlide').attr('data-page'); console.log(client.active_page) //load data if it hasnt been loaded if (!client.active_menu.attr('data-loaded')) { console.log('page to load: ' + client.active_page) //load perosonal info if (client.active_page == 'personal_info') client.load_personal_info() } //logout > remove activeSlide if (client.active_page == 'logout') $('.activeSlide').removeClass('activeSlide'); }, //get client data to start (main info, last orders and deliver/billing address) get_data: function () { $.getJSON('includes/ajax.client.php', {action: 'get_data'}, function (response) { if (response.status == 'ok') client.info = response console.log(client.info) }) }, //load client info load_personal_info: function () { //show loading $('.client_personal_data .client_area_loading').removeClass('hidden') //disable submit client.update_info_form.find('input[type="submit"]').attr('disabled', 'disabled') //check if info alreay loaded if (client.info.name == null || client.info.email == null) { $.getJSON('includes/ajax.client.php', {action: 'client_info'}, function (response) { client.info.name = response.name client.info.email = response.email //update inputs client.update_info_form.find('input[name="name"]').val(client.info.name) client.update_info_form.find('input[name="email"]').val(client.info.email) //hide loading $('.client_personal_data .client_area_loading').addClass('hidden') //enable submit client.update_info_form.find('input[type="submit"]').removeAttr('disabled') }) //load data to inputs } else { //update inputs client.update_info_form.find('input[name="name"]').val(client.info.name) client.update_info_form.find('input[name="email"]').val(client.info.email) //hide loading $('.client_personal_data .client_area_loading').addClass('hidden') //enable submit client.update_info_form.find('input[type="submit"]').removeAttr('disabled') } }, update_info: function () { //show or hide password $('#update_client_info input[name="change_password"]').click(function (e) { //change visibilty state if ($('.change_password').css('visibility') == 'hidden') { $('.change_password').css({'visibility': 'visible'}); } else { $('.change_password').css({'visibility': 'hidden'}); } }); //submit info client.update_info_form.submit(function (e) { e.preventDefault() //remove prev output msgs $(this).find('.ajax_output_msg').removeClass('success').removeClass('error').html('') //show loading $('.client_personal_data .client_area_loading').removeClass('hidden') //disable submit $(this).find('input[type="submit"]').attr('disabled', 'disabled') //get form height to calculate on update errors var form_height = client.update_info_form.height() $.post('includes/ajax.client.php', $(this).serialize(), function (response) { try { response = jQuery.parseJSON(response) console.log(response.status) //error or sucess msg if (response.status == 'ok') { //show sucess msg client.update_info_form.find('.ajax_output_msg').addClass('success').html(response.msg) } else { //show error message client.update_info_form.find('.ajax_output_msg').addClass('error').html(response.msg) //show name error if (response.errors.name) { client.update_info_form.find('.name_error').remove() $('').insertAfter(client.update_info_form.find('input[name="name"]')) } //show email error if (response.errors.email) { client.update_info_form.find('.email_error').remove() $('').insertAfter(client.update_info_form.find('input[name="email"]')) } //show password error if (response.errors.password) { client.update_info_form.find('.password_error').remove() $('').insertAfter(client.update_info_form.find('input[name="password"]')) } //calculate new form height form_height = client.navigation.height() - form_height + client.update_info_form.height() client.navigation.height(form_height) } //hide loading $('.client_personal_data .client_area_loading').addClass('hidden') //enable submit client.update_info_form.find('input[type="submit"]').removeAttr('disabled') } catch (err) { //console.log(err) //internal error /*$('#cf_main_output').html('Internal error. Please try again later.') .removeAttr('class') .addClass('form_error')*/ } }); }); }, edit_address: function () { //update form type - insert $('#add_new_address').click(function (e) { e.preventDefault(); client.edit_address_form.find('input[name="type"]').val('insert') }); //update form type - update $('.edit_this_address').click(function (e) { e.preventDefault(); client.edit_address_form.find('input[name="type"]').val('update') }); //submit address client.edit_address_form.submit(function (e) { e.preventDefault() //remove prev output msgs $(this).find('.ajax_output_msg').removeClass('success').removeClass('error').html('') //show loading $(this).find('.input_loading').removeClass('hidden') //disable submit $(this).find('input[type="submit"]').attr('disabled', 'disabled') //get form height to calculate on update errors var form_height = client.edit_address_form.height() $.post('includes/ajax.client.php', $(this).serialize(), function (response) { try { response = jQuery.parseJSON(response) console.log(response.status) //hide loading client.edit_address_form.find('.input_loading').addClass('hidden') //remove error messages client.edit_address_form.find('label.error').remove() //error or sucess msg if (response.status == 'ok') { //show sucess msg client.edit_address_form.find('.ajax_output_msg').addClass('success').html(response.msg) } else { //show error message client.edit_address_form.find('.ajax_output_msg').addClass('error').html(response.msg) //show name error if (response.errors.name) { $('').insertAfter(client.edit_address_form.find('input[name="name"]')) } //show contact error if (response.errors.contact) { $('').insertAfter(client.edit_address_form.find('input[name="contact"]')) } //show address_1 error if (response.errors.address_1) { $('').insertAfter(client.edit_address_form.find('input[name="address_1"]')) } //show city error if (response.errors.city) { $('').insertAfter(client.edit_address_form.find('input[name="city"]')) } //show postal_code error if (response.errors.postal_code) { $('').insertAfter(client.edit_address_form.find('input[name="postal_code"]')) } //show country error if (response.errors.country) { $('').insertAfter(client.edit_address_form.find('select[name="country"]')) } //calculate new form height form_height = client.navigation.height() - form_height + client.edit_address_form.height() client.navigation.height(form_height) } //enable submit client.edit_address_form.find('input[type="submit"]').removeAttr('disabled') } catch (err) { //console.log(err) //internal error /*$('#cf_main_output').html('Internal error. Please try again later.') .removeAttr('class') .addClass('form_error')*/ } }); }); }, account: function () { //show hide password $('#update_client_info input[name="change_password"]').click(function (e) { if ($(this).is(':checked')) { $('li.change_password').removeClass('hide') } else { $('li.change_password').addClass('hide') } }); }, cli_orders_list: function () { $('.cli_orders_list tr').click(function (e) { var url = $(this).find('a').attr('href') if (url) window.location = url }); }, init: function () { $(document).ready(function () { //if login page/form if (client.login_form.length > 0) { client.login_validate() } //if invites form if (client.invites_form.length > 0) { client.invites_validate() } //if register page if (client.register_form.length > 0) { client.register_validate() } //if register page if (client.activation_mail_el.length > 0) { client.activation_mail() } //show hide password if ($('#update_client_info').length > 0) client.account() if ($('.cli_orders_list').length > 0) client.cli_orders_list() }) } } $(document).ready(function () { client.init() $(".deleteFriendSubmit").click(function () { if (confirm("Are you sure you want to delete?")) return true; else return false; }); if( $(".donothin").length > 0 ){ $(".donothin").click(function(e){ e.preventDefault(); $(this).next().slideToggle(); }) } }) //CODIGOS POSTAIS function validatePostalCode() { //get selected country var selectedCountry = $('.selectingCountry').val(); // Portugal (Continental, Açores ou Madeira) if (selectedCountry == 1 || selectedCountry == 20 || selectedCountry == 21) { jQuery(function ($) { $("#postal_code").mask("9999-999", {placeholder: " "}); }); // NO MASK } else { jQuery(function ($) { $("#postal_code").unmask(); }); } } var personalizados = 0; function adicionaLinhaPersonalizada(hazName,sizes,prodid){ var qty = $("#quantidadeBacana").val(); var filePersonalizacao = $("#fileResult").val(); if(qty > 0/* && filePersonalizacao != '' && filePersonalizacao != undefined*/){ if(personalizados == 0){ var toplineHTML = '
'; toplineHTML += ''; if(hazName == true) toplineHTML += ''; toplineHTML += ''; toplineHTML += '
SizeName
'; $("#productLines").append(toplineHTML); } for(var a = 0; a < qty; a++){ var lineHTML = ''; lineHTML += ''; lineHTML += ''; lineHTML += ''; lineHTML += ''; lineHTML += ''; if(hazName == true) lineHTML += ''; lineHTML += ''; lineHTML += ''; lineHTML += ''; lineHTML += ''; $("#personalizacaoTable").append(lineHTML); personalizados++; } }else{ alert("Must add a file and choose the number of items to add"); } } function deleteThisLine(obj){ $(obj).parent().parent().remove(); personalizados--; if(personalizados == 0) $("#personalizacaoTable").parent().remove(); }