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')
+'');
} 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');
});