var TipsFixed = new Class({ Extends: Tips, fireForParent: function(event, element){ if(element && typeof element.getParent() == 'function') { parentNode = element.getParent(); if (parentNode == document.body) return; if (parentNode.retrieve('tip:enter')) parentNode.fireEvent('mouseenter', event); else this.fireForParent(parentNode, event); } else return; } }); /* LOGIN BAR */ var login_bar_switch = function(e) { e.stop(); var initial_height = 3; var open_height = 140; var link = $('login_bar_switch'); var inner_login_bar = $('inner_login_bar'); var height = inner_login_bar.getStyle('height'); if(height == open_height +'px'){ var slide_to = initial_height; link.set('html', 'Login'); } else { var slide_to = open_height; link.set('html', 'Sluiten'); } inner_login_bar.set('tween', {duration: 500}); inner_login_bar.tween('height', slide_to); } /* COUNTRY SELECTOR */ var country_selector = { initialize: function(cart_empty, error_str) { if($('country_selector')) { $('country_selector').getElements('a[href]').each(function(elm) { elm.addEvent('click', function(e) { if(!cart_empty) { if(!confirm(error_str)) e.stop() } }); }); } } } /* HEADER ROTATOR */ var header_rotator = { images: [], previous: 0, current: 0, next: 1, container: 'b', initialize: function() { if($('header_images')) { this.images = $('header_images').getElements('.header_img'); if(this.images.length > 1) this.load_next(); } }, load_next: function() { this.previous = this.current; this.current = ((this.images.length - 1) == this.current ? 0 : this.current + 1); (this.fade.bind(this)).delay(10000); }, fade: function() { this.images.each(function(img) { if(img != this.images[this.previous] && img != this.images[this.current]) { img.setStyles({'z-index': 996, 'opacity': 1}); } }.bind(this)); this.images[this.previous].setStyles({'z-index': 998}).tween('opacity', [1, 0]); this.images[this.current].setStyles({'z-index': 997, 'opacity': 1}); this.load_next(); } } var other_shops_rotator = { images: [], headers: [], previous: 0, current: 0, next: 1, container: 'b', initialize: function() { this.images = $('other_shops_rotator').getElements('img'); this.headers = $('other_shops_headers').getElements('img'); if(this.images.length > 1) this.load_next(); }, load_next: function() { this.previous = this.current; this.current = ((this.images.length - 1) == this.current ? 0 : this.current + 1); (this.fade.bind(this)).delay(5000); }, fade: function() { this.images.each(function(img) { if(img != this.images[this.previous] && img != this.images[this.current]) img.setStyles({'z-index': 996, 'opacity': 1}); }.bind(this)); this.headers.each(function(img) { if(img != this.headers[this.previous] && img != this.headers[this.current]) img.setStyles({'z-index': 996, 'opacity': 1}); }.bind(this)); this.images[this.previous].setStyles({'z-index': 998}).tween('opacity', [1, 0]); this.headers[this.previous].setStyles({'z-index': 998}).tween('opacity', [1, 0]); this.images[this.current].setStyles({'z-index': 997}); this.headers[this.current].setStyles({'z-index': 997}); this.load_next(); } } /* C2A BUTTONS */ var set_c2a_buttons = function() { $$('.ajax_fallback_submit_button').setStyle('display', 'none'); $$('.form_submit_link').setStyle('display', 'inline-block'); $$('.c2a').setStyle('display', 'inline-block'); do_cufon_button(); $$('.form_submit_link').each(function(link) { if(!link.hasClass('detail_submit')) { link.addEvent('click', function(e) { e.stop(); var button = link; var value = button.get('rel'); var form = button.getParents('form')[0]; new Element('input', { 'type': 'hidden', 'value': value, 'name': 'form_submit' }).injectTop(form); new Element('input', { 'type': 'hidden', 'value': value, 'name': 'form_submit_ie6' }).injectBottom(form); var validator = new EasyValidator({ failedClass: 'validated_false', passedClass: 'validated_true', showError: function(elm, error) { if(!elm.retrieve('form-error')) { //new Fx.Scroll(window).toElement('content'); var coord = elm.getCoordinates(); var errorEl = new Element('div', { 'class': 'form-error', 'html': '
'+ error +'
' }); errorEl.injectBefore('wrapper').setStyles({ 'top': coord.top - errorEl.getHeight(), 'left': coord.left + (coord.width / 2) - (errorEl.getWidth() / 2) }); elm.store('form-error', errorEl); elm.addEvent('blur', function() { if(this.retrieve('form-error')) { this.retrieve('form-error').hide(); } this.eliminate('form-error'); }); } }, hideError: function(elm, error) { if(elm.retrieve('form-error')) { elm.retrieve('form-error').hide(); } } }); validator.addTest(['zipcode', false, function(elm) { return /^[1-9]{1}[0-9]{3}\s?[A-Za-z]{2}$/.test(elm.get('value')); }]); validator.addTest(['stripped_zipcode', false, function(elm) { return /^[1-9][0-9]{3}$/.test(elm.get('value')); }]); validator.addTest(['btw_number', false, function(elm) { return /^NL[0-9]{9}B[0-9]{2}$/.test(elm.get('value')); }]); validator.addTest(['numeric', 'Alleen getallen toegestaan', function(elm) { return /^([0-9]*)$/.test(elm.get('value')); }]); if(validator.validate(form)) { form.submit(); } }); } //Detail form check else { link.addEvent('click', function(e) { e.stop(); var value = link.get('rel'); var form = link.getParents('form')[0]; new Element('input', { 'type': 'hidden', 'value': value, 'name': 'form_submit' }).injectTop(form); new Element('input', { 'type': 'hidden', 'value': value, 'name': 'form_submit_ie6' }).injectBottom(form); var validator = new EasyValidator({ failedClass: 'validated_false', passedClass: 'validated_true' }); var validated = validator.validate(form); //Check logo or photo if($('product_detail').getElement('input[name=pxl_f_logo_or_photo]') && $('product_detail').getElement('input[name=pxl_f_logo_or_photo]').get('checked')) { if($('logo_or_photo_preview').getChildren().length == 0) { validated = false; alert('Geen logo of foto geüpload.'); } } //Check letter if($('product_detail').getElement('input[name=pxl_f_add_letter]') && $('product_detail').getElement('input[name=pxl_f_add_letter]').get('checked')) { if(!$chk($('product_detail').getElement('input[name=add_letter_file_uploader]').get('value'))) { validated = false; alert('Geen brief geüpload.'); } } //Check card if($('product_detail').getElement('input[name=pxl_f_add_card]') && $('product_detail').getElement('input[name=pxl_f_add_card]').get('checked')) { if(!$chk($('product_detail').getElement('textarea[name=pxl_f_add_card_text]').get('value'))) { validated = false; $('product_detail').getElement('textarea[name=pxl_f_add_card_text]').addClass('validated_false'); } } else if($('product_detail').getElement('input[name=pxl_f_add_card]')) { $('product_detail').getElement('textarea[name=pxl_f_add_card_text]').removeClass('validated_false'); } if(validated) form.submit(); }); } }); } /* TOOL TIPS */ var tooltips = function() { $$('[class*=tooltip]').removeEvents(); var tooltip_black = new TipsFixed($$('.show_tooltip_black'), { className: 'tooltip_black' }); } /* DELIVERY ADDRESSES */ var delivery_addresses = { total_products: 0, total_addresses: 1, error_showed: false, initialize: function() { $('add_delivery_address').addEvent('click', function(e) { e.stop(); delivery_addresses.add(); }); $('remove_delivery_address').addEvent('click', function(e) { e.stop(); delivery_addresses.remove(); }); this.total_addresses = $('delivery_addresses_total').get('value'); if(this.total_addresses == 1) $('remove_delivery_address').hide(); for(var i = 1; i <= this.total_addresses; i++) { this.enquete_name_initialize(i); } }, add: function() { if(this.total_products.toInt() < this.total_addresses.toInt() + 1) { if(!this.error_showed) { alert('U heeft meer bezorgadressen ten opzichte van het aantal bestelde boeketten.'); //this.error_showed = true; return true; } } var form = $('delivery_address_form_1').clone(); this.total_addresses++; form.set('id', 'delivery_address_form_'+ this.total_addresses); form.addClass('top_line'); var i = (this.total_addresses - 1) * 9; form.getElements('input').each(function(input) { input.set('name', input.get('name').replace('_1', '_'+ this.total_addresses)); input.set('tabindex', input.get('tabindex') + i); input.set('value', ''); input.removeClass('validated_true'); input.removeClass('validated_false'); }.bind(this)); form.getElements('.error, img').each(function(error) { error.destroy(); }); form.getElements('.delivery_enquete_1').each(function(input) { input.set('class', input.get('class').replace('_1', '_'+ this.total_addresses)); }.bind(this)); if(form.getElement('input[name=pxl_f_delivery_enquete_'+ this.total_addresses +']')) { form.getElement('input[name=pxl_f_delivery_enquete_'+ this.total_addresses +']').set('checked', false); } form.setStyles({'overflow': 'hidden', 'height': 0}).injectAfter($('delivery_address_form_'+ (this.total_addresses - 1))).tween('height', [0, $('delivery_address_form_1').getStyle('height')]); $('delivery_addresses_total').set('value', this.total_addresses); $('remove_delivery_address').show(); for(var i = 1; i <= this.total_addresses; i++) { this.enquete_name_initialize(i); } }, remove: function() { $('delivery_address_form_'+ this.total_addresses).destroy(); this.total_addresses--; if(this.total_addresses == 1) $('remove_delivery_address').hide(); $('delivery_addresses_total').set('value', this.total_addresses); }, enquete_name_initialize: function(level) { $$('input[name=pxl_f_delivery_name_'+ level +']').removeEvents('keyup').addEvent('keyup', function() { var val = $$('input[name=pxl_f_delivery_name_'+ level +']').get('value'); $$('.delivery_enquete_'+ level).set('html', val != '' ? val : '...'); }.bind(this)).fireEvent('keyup'); $$('input[name=pxl_f_delivery_enquete_'+ level +']').removeEvents('click').addEvent('click', function() { if(this.get('checked')) $$('input[name=pxl_f_delivery_email_'+ delivery_addresses.total_addresses +']').addClass('v:not-empty').addClass('v:email'); else $$('input[name=pxl_f_delivery_email_'+ delivery_addresses.total_addresses +']').removeClass('v:not-empty').removeClass('v:email').removeClass('validated_false'); }).fireEvent('click'); } } /* MISC */ var profile_logo_delete = function(id) { var request = new Request({ method: 'post', url: 'profile/delete_logo/'+ id, onComplete: function(response) { $('logo'+ id).destroy(); } }).send(); } /* DOMREADY */ window.addEvent('domready', function() { set_c2a_buttons(); tooltips(); if($chk($('warning_bar'))) { (function() { $('warning_bar').fade() }).delay(3000); } if($('other_shops_rotator')) { other_shops_rotator.initialize(); } if($chk($('about'))) { new SlideShow($('about_image_slideshow'), { duration: 6000, slides: '.image' }); } if($chk($('login_bar_switch'))){ $('login_bar_switch').addEvent('click', function(e) { login_bar_switch(e); }); $('login_bar').getElement('.login_tab').addEvent('click', function(e) { login_bar_switch(e); }); } $$('.popup').addEvent('click',function(e){ e.stop(); window.open (this.href+"?popup","popup","menubar=1,resizable=0,width=600,height=700,scrollbars=1"); }); // FORMS ACTIONS // $$('.only_numeric').addEvent('keypress',function(e){ var key = e.key; if(key!=0&&key!=1&&key!=2&&key!=3&&key!=4&&key!=5&&key!=6&&key!=7&&key!=8&&key!=9&&key!='backspace'&&key!='delete'&&key!='left'&&key!='right'&&key!='tab'){ return false; } }); $$('.dependant_show_hide_select').each(function(element) { var show_hide = element.getNext(); var value = element.get('value'); var dependant_show_hide = function(value_arg) { if(value_arg!='no'){ value_arg = 'yes'; } if(value_arg=='yes')show_hide.setStyle('display','inline-block'); if(value_arg=='no'){ show_hide.hide(); if(element.get('name').contains('pxl_f_supplier_can_deliver_pie')){ element.getParent().getNext().getNext().hide(); } } } dependant_show_hide(value); element.addEvent('change',function(element){ var value = this.get('value'); dependant_show_hide(value); }); }); if($chk($('agreement_required'))){ $('agreement_required').addEvent('click',function(e){ if($('licence_agreement_checker').get('checked')==false){ e.stop(); alert('U dient akkoord te gaan met onze voorwaarden'); } }); } // END FORM ACTIONS // $$('.help_info').each(function(elm){ elm.addEvents({ 'mouseover': function(){ info = elm.getChildren('.info'); info.setStyle('display', 'block'); }, 'mouseout' : function(){ info = elm.getChildren('.info'); info.setStyle('display', 'none'); } }); }); if($('logo_keuze')){ $('logo_keuze').addEvent('change', function(e){ if($('logo_keuze').get('value') == 'Ja'){ $('show_logo').setStyle('display', 'inline'); }else{ $('show_logo').setStyle('display', 'none'); } }); } $$('.remove_parend').each(function(elm){ elm.addEvent('click', function(e) { elm.getParent('tr').dispose(); }); }); if($chk($('faq'))){ $$('.questions').hide(); $$('.faq_status_icon').setStyle('display','block'); $$('.question_header').addEvent('click',function(e) { questions = this.getParents('.category').getFirst('.questions'); status_icon = this.getFirst('.faq_status_icon'); questions.toggle(); if(questions.getStyle('display') == 'block') status_icon.set('src','img/faq_down.gif'); else status_icon.set('src','img/faq_up.gif'); }); } if($chk($('contact'))){ map = new Gmap({ canvas: 'map_canvas', errors: 'errors' }); var directions_is_clicked = false; map.setpoint('Amstel 326, 1017AR Amsterdam'); map.setcenter('Amstel 326, 1017AR Amsterdam', 15); $('getdirections').addEvent("click", function() { if(directions_is_clicked==false){ directions_is_clicked = true; map.directions($('from').get('value'), 'Amstel 326, 1017AR Amsterdam', "directions"); } }); } /* PRODUCT DETAIL */ var image_controller = { load: function(src) { $('large_img').getElement('img').set('src', src); } } $$('.product_detail .small_img').each(function(img) { img.getElement('a').addEvent('click', function(e) { e.stop(); image_controller.load(this.get('rel')); }); }); var product_detail = { initialize: function() { $$('tr.total').removeClass('hidden'); //Tabs if($('tab_container')) { $('tab_container').getElements('div').each(function(el) { el.addEvent('click', function() { $$('#tab_contents > div').setStyle('display', 'none'); $$('#tab_container > div').removeClass('selected'); el.addClass('selected'); $(el.get('rel')).setStyle('display', ''); }); }); } //Misc if($('design_logo_or_photo')) $('design_logo_or_photo').removeClass('hidden'); if($('design_logo_or_photo')) $('design_logo_or_photo').getNext().removeClass('hidden'); $$('.product_detail_option').each(function(pdo) { if(!pdo.getPrevious().getElement('input').get('checked')) pdo.addClass('hide'); }); $('product_detail').getElements('input[type=checkbox]').each(function(input) { input.addEvent('click', product_detail.refresh_price); }); $('product_detail').getElements('select').each(function(input) { input.addEvent('change', product_detail.refresh_price); }); $$('.product_detail_checkbox').each(function(chck) { chck.addEvent('click', function() { if(this.get('checked')) this.getParent().getParent().getNext().removeClass('hide'); else this.getParent().getParent().getNext().addClass('hide'); }); }); //Logo upload if($('logo_or_photo_file_uploader')) { new AjaxUpload('logo_or_photo_file_uploader', { action: 'order/upload_logo', name: 'logo', onSubmit: function(file, ext) { if(!(ext && /^(jpg|png|jpeg|gif)$/.test(ext))) { alert('Error: invalid file extension'); return false; } else $('logo_or_photo_file_uploading_icon').show(); }, onComplete: function(file, response) { $('logo_or_photo_file_uploading_icon').hide(); if(response != 'error' && response != 'http://www.boeketwinkel.nl/uploads/logos/error' && file != 'http://www.boeketwinkel.nl/uploads/logos/error') { $('logo_or_photo_preview').set('html', ''); $('logo_or_photo_desc').set('html', ''+ file +''); $$('input[name="pxl_f_logo_or_photo_userfile_name"]').set('value', file); $$('input[name="pxl_f_logo_or_photo_file"]').set('value', response); } else alert('Error while uploading picture'); } }); } //Text characters if($$('input[name=pxl_f_chocolate_text_text]')) { $$('input[name=pxl_f_chocolate_text_text]').addEvent('keyup', function() { $('chocolate_text_characters').set('html', 30 - this.get('value').length); }); } if($('product_detail').getElement('input[name=pxl_f_chocolate_text]')) { $('product_detail').getElement('input[name=pxl_f_chocolate_text]').addEvent('click', function() { if($('product_detail').getElement('input[name=pxl_f_chocolate_text]').get('checked')) $$('input[name=pxl_f_chocolate_text_text]').addClass('v:not-empty'); else $$('input[name=pxl_f_chocolate_text_text]').removeClass('v:not-empty'); }); $('product_detail').getElement('input[name=pxl_f_chocolate_text]').fireEvent('click'); } if($$('textarea[name=pxl_f_add_card_text]')) { $$('textarea[name=pxl_f_add_card_text]').addEvents({ 'keyup': function() { if(this.get('value').length > 160) this.set('value', this.get('value').substring(0, 160)); $('card_text_characters').set('html', 160 - this.get('value').length); }, 'change': function() { this.fireEvent('keyup') } }).fireEvent('keyup'); } }, refresh_price: function() { new Request({ method: 'post', url: 'order/product_detail_priceview', onComplete: function(data) { //console.log(data); data = JSON.decode(data); $('total_price').set('html', data.total); }, evalScripts: true }).post($('product_detail')); } } if($chk($('product_detail'))) product_detail.initialize(); var refresh_additional_price = function() { new Request({ method: 'post', url: 'order/additional_product_detail_priceview', onComplete: function(data) { $('total_price').set('html', data); }, evalScripts: true }).post($('additional_product_detail')); } if($chk($('additional_product_detail'))) { $('additional_product_detail').getElements('select').each(function(input) { input.addEvent('change', refresh_additional_price); }); } /* STEP 3b */ if($chk($('step_3b')) && $chk($('step_3b').getElement('tr.corporate'))) { $('step_3b').getElement('tr.corporate').addClass('hidden'); $('payment_method').addClass('hidden'); $('step_3b').getElements('.customer_type input[type=radio]').each(function(radio) { radio.addEvent('click', function() { switch(radio.get('value')) { case '0': $('step_3b').getElement('tr.corporate').addClass('hidden'); $('step_3b').getElement('tr.cost_centre').addClass('hidden'); $('step_3b').getElement('span.corporate').addClass('hidden'); $('step_3b').getElement('span.private').removeClass('hidden'); $('step_3b').getElement('input.company_name').removeClass('v:not-empty'); $('payment_method').addClass('hidden'); $('invoice_details').hide(); break; case '1': $('step_3b').getElement('tr.corporate').removeClass('hidden'); $('step_3b').getElement('tr.cost_centre').removeClass('hidden'); $('step_3b').getElement('span.corporate').removeClass('hidden'); $('step_3b').getElement('span.private').addClass('hidden'); $('step_3b').getElement('input.company_name').addClass('v:not-empty'); $('payment_method').removeClass('hidden'); //if($('payment_method').getElements('input[type=radio]')[1].get('checked') == true) $('invoice_details').show(); //else $('invoice_details').hide(); break; } }); }); if($('step_3b').getElement('.customer_type input[type=radio]').get('checked') == true) $('step_3b').getElement('.customer_type input[type=radio]').fireEvent('click'); /* INVOICES */ $('different_invoice_address').addEvent('click', function() { if($('different_invoice_address').get('checked')) { $('invoice_details_form').show(); $('invoice_details_form').getElements('input').each(function(input) { if(input.hasClass('e:not-empty')) input.addClass('v:not-empty'); }); } else { $('invoice_details_form').hide(); $('invoice_details_form').getElements('input').each(function(input) { input.removeClass('v:not-empty'); }); } }); $('different_invoice_address').fireEvent('click'); } if($chk($('add_delivery_address'))) delivery_addresses.initialize(); /* PROFILE */ if($chk($('profile_logo_upload'))) { $('profile_logo_upload').addEvent('click', function(e) { e.stop(); }); new AjaxUpload('profile_logo_upload', { action: 'profile/upload_logo/'+ $('logos_container').get('rel'), name: 'logo', onSubmit: function(file , ext){ if(!(ext && /^(jpg|png|jpeg|gif)$/.test(ext))){ // extension is not allowed alert('Error: invalid file extension'); // cancel upload return false; } else $('uploading_logo').show(); }, onComplete: function(file, response) { $('uploading_logo').hide(); if(response != 'error') { if($('logos_container').getElements('div').length == 4) $('profile_logo_upload').hide(); var vars = response.split('/'); $('logos_container').set('html', $('logos_container').get('html') +'
Verwijderen
'); } else alert('Error while uploading picture'); } }); } if($chk($('request_international_order_link'))){ var container = $('request_international_order'); container.hide(); $('request_international_order_link').addEvent('click', function(e){ e.stop(); container.toggle(); }) } if($chk($('profile'))) { $$('.proposal_contact_container').each(function(elm) { container = this; response_container = elm.getElements('.response')[0]; elm.hide(); var form = elm.getElement('form'); form.set('action', form.get('action') + '?ajax'); submit_link = form.getElements('.form_submit_link')[0]; submit_link.removeEvents('click'); submit_link.addEvent('click', function(e) { e.stop(); form.hide(); response_container.set('html', 'Bezig met versturen...'); form.set('send', { onComplete: function(response) { response_container.set('html', response); } }); form.send(); }); }); $$('.show_contact').each(function(elm) { elm.addEvent('click',function(e){ e.stop(); this.getParent().getParent().getElement('.proposal_contact_container').toggle(); }); }); } if($chk($('admin'))){ bs_form = $('bs_form'); bs_form.addEvent('submit', function(e){ e.stop(); $('ajax_callback').set('html', 'Loading'); bs_form.set('send', { onComplete: function(response) { $('ajax_callback').set('html', response); } }); bs_form.send(); }); } }); window.addEvent('domready', function(){ $$('select[name=pxl_f_luxe]').fireEvent('change'); });