function setup_alt_images() { var images = $('.sortable.image[alt-image]'); images.each(function(){ var image = $('img', this); $(this).data('image', image.attr('src')); image.mouseover(function(){ var prefix = 'https://www.serticindustrial.com/contenido_web/paginas/'; var src = prefix + $(this).parents('.sortable').eq(0).attr('alt-image'); $(this).attr('src', src); }); if (image.attr('title')) { $(this).on('mouseout', '.overlay', function(e) { $(this).parents('.sortable').find('img').attr('src', $(this).parents('.sortable.image').eq(0).data('image')); }); } else { image.mouseout(function(){ $(this).attr('src', $(this).parents('.sortable.image').eq(0).data('image')); }); } }); } function setup_captcha(element) { $('.customform .captcha').each(function(){ var element = $(this); var code = $('[name=captcha_code]', element); var image = $('img', element); $.ajax({ url: 'https://www.serticindustrial.com/include/captcha/generate.php', data: '', type: 'get', dataType: 'json', success: function(captcha){ code.val(captcha.code); image.attr('src', captcha.image); } }); }); } function form_clone(from, to){ // Do this before clone $('[type=text], textarea').each(function(){ this.defaultValue = this.value; }); $('[type=checkbox], [type=radio]').each(function(){ this.defaultChecked = this.checked; }); $('select option').each(function(){ this.defaultSelected = this.selected; }); // Then clone var html_content = $(from).html(); $(to).html(html_content); } function validateEmail(elementValue){ var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; return emailPattern.test(elementValue); } function validateNumber(elementValue){ var pattern = /^[0-9]+$/; return pattern.test(elementValue); } function validateTelephone(elementValue){ var pattern = /^[0-9\s\(\)\+-]+$/; return pattern.test(elementValue); } function setup_forms() { var is_customization_page = $('body#body-customize').length == 1; $('.customform').each(function(){ var form = $(this); var email = form.attr('data-email'); var bcc = form.attr('data-bcc-email'); var confirmationText = unescape(form.attr('data-confirmationtext')); var subject = unescape(form.attr('data-name')); var error = false; form.removeAttr('data-email'); form.removeAttr('data-bcc-email'); if (is_customization_page) { var htmlForm = $('#product-customization-form'); $('').val(email).prependTo(htmlForm); $('').val(bcc).prependTo(htmlForm); $('#btn-add-to-cart', htmlForm).click(function(e){ var self = $(this); var captcha = $('.captcha', htmlForm); var has_captcha = captcha.length > 0; if (has_captcha) { self.attr('disabled', true); captcha.each(function(){ var code = $('input[name=captcha_code]', this).val(); var catpchaValueField = $('input[name=captcha_value]', this); var value = catpchaValueField.val(); $.ajax({ url: BASE_FULL_URL+'/include/validate_captcha.php', type: 'post', data: { code: code, value: value }, success: function(response) { if (response == '0') { alert('Código de seguridad incorrecto'); catpchaValueField.focus(); } else { $('#btn-submit-form', htmlForm).eq(0).click(); } self.attr('disabled', false); }, error: function() { self.attr('disabled', false); } }); }); } else { $('#btn-submit-form', htmlForm).eq(0).click(); } }); } else { form.find('button[type=submit]').click(function(e){ var submitButton = $(this); submitButton.attr('disabled', 'disabled'); e.preventDefault(); e.stopPropagation(); var cloned = $('
'); form_clone(form, cloned); cloned.find('img').remove(); var formData = new FormData(); $.each(cloned.serializeArray(),function(key,input){ formData.append(input.name, input.value); }); var error = false; if (!error) { $('input[type=checkbox][required]', form).not(':checked').each(function(){ var input = $(this); alert('El campo \'' + input.attr('name') + '\' es obligatorio'); error = true; return false; }); } if (!error) { $('input[type=text][required],input[type=tel][required],input[type=number][required],select[required],input[type=email][required],textarea[required]', form).each(function(){ var input = $(this); var val = $.trim(input.val()); if (val == "") { if (input.attr('name') == 'captcha_value') { alert('El campo \'' + input.parent().find('.label').text() + '\' es obligatorio'); } else { alert('El campo \'' + input.attr('name') + '\' es obligatorio'); } input.focus(); error = true; return false; } }); } if (!error) { $('input[rel=email]', form).each(function(){ var email = $.trim($(this).val()); if (email != '' && !validateEmail(email)) { alert('Dirección de e-mail no v�lida'); $(this).focus(); error = true; return false; } }); } if (!error) { $('input[rel=telephone]', form).each(function(){ var email = $.trim($(this).val()); if (email != '' && !validateTelephone(email)) { alert('Tel�fono no v�lido'); $(this).focus(); error = true; return false; } }); } if (!error) { $('input[type=text].number', form).each(function(){ var email = $.trim($(this).val()); if (email != '' && !validateNumber(email)) { alert('Formato no v�lido (s�lo n�meros)'); $(this).focus(); error = true; return false; } }); } formData.append('_email', email); if (bcc) { formData.append('_bcc', bcc); } formData.append('_okmsg', confirmationText); formData.append('_subject', subject); form.find('input[type=file]').each(function(){ if ($(this).val()) { var file = $(this)[0].files[0]; if (file) { formData.append($(this).attr('name'), file); } } }) if (!error){ $.ajax({ url: 'https://www.serticindustrial.com/include/sendform.php', data: formData, type: 'post', cache: false, dataType: 'json', processData: false, contentType: false, success: function(result) { submitButton.removeAttr('disabled'); if (result && !result.success) { alert(result.message); if (result.field) { $('[name='+result.field+']').select().focus(); } } else if (result && result.success) { var confirmationURL = $.trim(form.attr('data-confirmationurl')); if (confirmationURL != '') { location.href = unescape(confirmationURL); } else { alert(result.message); } } }, error: function() { submitButton.removeAttr('disabled'); } }); } else { submitButton.removeAttr('disabled'); } }); } }); } function rgba2rgb(rgba) { var expr = /rgba\(([0-9]+),([0-9]+),([0-9]+),[^\)]+\)/; return rgba.replace(expr, "rgb($1,$2,$3)"); } function rgba2hex(r, g, b, a) { var value = ''; if (typeof r === 'string') { var array = r.split('('); var valueString = array[1].substr(0, array[1].length - 1); var values = valueString.split(','); r = parseInt(values[0], 10); g = parseInt(values[1], 10); b = parseInt(values[2], 10); a = parseInt((parseFloat(values[3]) * 100 * 255) / 100,10); } return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1) + a.toString(16); } function rgba2TransparencyFilter(rgba) { var hex = rgba2hex(rgba); return "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='"+hex+"', endColorstr='"+hex+"')"; } function isIE() { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false; } function setup_image_captions() { var images = $('.sortable.image img[title]'); images.each(function(){ var image = $(this); var container = $(this).parents('.image'); $(this).mouseover(function(){ if ($('.overlay', container).length == 0) { var backgroundColor = $(container).attr('caption-background') || 'rgb(150,150,150,.5)'; var paddingLeft = parseInt($(container).css('padding-left'), 10) || 0; var paddingRight = parseInt($(container).css('padding-right'), 10) || 0; var paddingTop = parseInt($(container).css('padding-top'), 10) || 0; var paddingBottom = parseInt($(container).css('padding-bottom'), 10) || 0; var ieFilter = rgba2TransparencyFilter(backgroundColor); if (isIE() && isIE() < 9) { backgroundColor = rgba2rgb(backgroundColor); } var overlay = $('
'); overlay.css({ 'background-color': backgroundColor, top: paddingTop+'px', left: image.position().left, }); // galleries if (container.hasClass('gallerycell')) { var wrapper2 = image.parents('.wrapper2').eq(0); overlay.height(wrapper2.height()); overlay.width(wrapper2.width()); overlay.css('top', wrapper2.parent().css('margin-top')); } else { overlay.height(image.height()); overlay.width(image.width()); } if (1||isIE() < 9) { overlay.css({'-ms-filter': ieFilter}); } var text = $('
').html(image.attr('data-title').replace('\\n','
')); overlay.append(text); var link = $('a', container); if (link.length) { $(link).append(overlay); } else { $(container).append(overlay); } } }); }); $(document).on('mouseout', '.sortable.image .overlay', function(e) { $(this).remove(); }); } function setup_galleries() { $('.gallerytable *').css({'height': '', 'width': '', 'margin': '', 'padding': '', 'max-width': ''}); update_galleries(); } function update_gallery_horizontal_image(self, cw) { self.css('width', 'auto'); self.height(cw); var nw = self.width(); var diff = ( nw - cw ) / 2; self.css('margin-left', '-'+diff+'px'); } function update_gallery_vertical_image(self, cw) { var nh = self.height(); var diff = ( nh - cw ) / 2; self.css('margin-top', '-'+diff+'px'); } function update_galleries() { $('.gallerytable').each(function(){ var gallery = $(this); var gap = parseInt(gallery.attr('gap') || 0, 10); var numCols = gallery.attr('numcols'); var galleryItemWidth = gallery.width() / numCols - gap * 2; $('.gallerycell', gallery).each(function(){ var cell = $(this); var img = $('img', cell); cell.find('.wrapper').css({margin: gap+'px'}).find('.wrapper2').css({'width': galleryItemWidth+'px', 'height': galleryItemWidth+'px'}); if (img.hasClass('horizontal')) { update_gallery_horizontal_image(img, galleryItemWidth); (function(cw){ img.load(function(){ update_gallery_horizontal_image($(this), cw); }); })(galleryItemWidth); } else { img.width(galleryItemWidth).height('auto'); update_gallery_vertical_image(img, galleryItemWidth); (function(cw){ img.load(function(){ update_gallery_vertical_image($(this), cw); }); })(galleryItemWidth); } }); }); } function setup_lightbox() { $('div:not(.wrapper2) > a.lightbox').each(function(){ $(this).fancybox(); }); var gallery_idx = 1; $('div.gallerytable').each(function(){ var links = $('a.lightbox', this); links.attr('rel', 'gallery'+gallery_idx); gallery_idx++; links.fancybox(); }); } function setup_buttons() { $('.custombutton > .mceEditor, .formfield.submit > button').mouseover(function(){ var alt_bg = $(this).attr('data-alt-background-color'); var bg = $(this).css('background-color'); if (bg) { $(this).attr('data-background-color', bg); } if (alt_bg) { $(this).css('background-color', alt_bg); } }).mouseout(function(){ var bg = $(this).attr('data-background-color'); if (bg) { $(this).css('background-color', bg); } else { $(this).css('background-color', ''); } }); } function makeNewElementFromElement( tag, elem ) { var newElem = document.createElement(tag), i, prop, attr = elem.attributes, attrLen = attr.length; // Copy children elem = elem.cloneNode(true); while (elem.firstChild) { newElem.appendChild(elem.firstChild); } // Copy DOM properties for (i in elem) { try { prop = elem[i]; if (prop && i !== 'outerHTML' && (typeof prop === 'string' || typeof prop === 'number')) { newElem[i] = elem[i]; } } catch(e) { /* some props throw getter errors */ } } // Copy attributes for (i = 0; i < attrLen; i++) { newElem.setAttribute(attr[i].nodeName, attr[i].nodeValue); } // Copy inline CSS newElem.style.cssText = elem.style.cssText; return newElem; } function setup_code_forms() { $(".page .raw_code div[rel=form]").each(function(){ var form = $(''); $.each(this.attributes, function() { form.attr(this.name, this.value); }); form.removeAttr('rel'); form.append($(this).contents()); $(this).replaceWith(form); }); } $(function(){ setup_alt_images(); setup_image_captions(); setup_lightbox(); setup_galleries(); setup_captcha(); setup_forms(); setup_buttons(); setup_code_forms(); }); $(window).resize(update_galleries);