/**
 * Bootstrap.js - Bootstrap for all Javascript functionality
 * 
 * @author  Webstores <info at webstores dot nl>
 *           Copyright (c) Webstores internet totaalbureau <http://www.webstores.nl/>
 */

var ytfr, interval;

jQuery.noConflict();
jQuery(document).ready(function(){
	if (jQuery("a.colorbox, a[rel='page-gallery']").length) {
		jQuery("a.colorbox, a[rel='page-gallery']").colorbox({
			opacity: 0.8,
			current: 'Afbeelding {current} van {total}',
			previous: 'Vorige',
			next: 'Volgende',
			close: 'Sluiten',
			slideshowStart: 'Diavoorstelling starten',
			slideshowStop: 'Diavoorstelling stoppen'
		});
	}
	
	if(jQuery("a.webcallback").length) {
		jQuery("a.webcallback").colorbox({
			width: 665,
			height: 480,
			opacity: 0.8,
			iframe: true
		});
	}

	if(jQuery("a.terms-required").length) {
		jQuery("a.terms-required").colorbox({
			width: 665,
			height: 640,
			opacity: 0.8,
			iframe: true
		});
	}
	
	var clicked = '';
	
	favorites();

	if(jQuery('#terms-form').length) {
		jQuery('#terms-form').submit(function(e) {
			if(!jQuery('#extra-terms:checked').length) {
				jQuery('#extra-terms-bar').addClass('error');
				return false;
			} else {
				parent.location.href = this.action;
				return true;
			}
		});
		jQuery('#terms-form #button-prev').click(function(e) {
			e.preventDefault();
			parent.jQuery("a.terms-required").colorbox.close();
		});
	}
	
	if(jQuery('#webshop-delivery-address-button')){
		jQuery('#webshop-delivery-address-button').click(function(){
			WS.toggle('delivery-form');
		});
		
		var deliveryVal = new WS.Validation('delivery-form');
		deliveryVal.initialize();
		
		jQuery('#delivery-form button').click(function(e){
			if(deliveryVal.validateForm()){
				var postdata = jQuery('#delivery-form').serialize();
				jQuery.post("/webshop/changedelivery/", postdata, function(data){
					if(data.success){
						var	html  = '<strong>' + data.data.DeliveryName + '</strong><br>';
							html += data.data.DeliveryAddress + '<br>';
							html += data.data.DeliveryZipCode + ' ' + data.data.DeliveryCity + '<br>';
							html += data.data.DeliveryCountry + '<br>';	
						
						WS.toggle('delivery-form');
						jQuery('#webshop-delivery-address').html(html).hide().fadeIn("slow");
					}
				},"json");
				return false;
			}
		});
		
		jQuery('#extra-bonus-form button').click(function(e){
			if(extrabonusVal.validateForm()){
				var postdata = jQuery('#extra-bonus-form').serialize();
				jQuery.post("/bonusshop/shoppingcart/addextra/", postdata, function(data){
					if(data.success){
						var out = '';
						
						out += '<strong>' + data.data.FirstName + ' ' + data.data.LastName + '</strong><br>';
						out += '<br>';
					
						jQuery('#extra-bonus-form').replaceWith(out).hide('slow', function(){});	
					}
				},"json");
				return false;
			}
		});

		var extrabonusVal = new WS.Validation('extra-bonus-form');
		extrabonusVal.initialize();

		if(jQuery('#block-login-form').length) {
			var blockLoginValidation = new WS.Validation('block-login-form');
			blockLoginValidation.initialize();
		}
		
		jQuery('#button-next.checkname').click(function(e){
			if(!extrabonusVal.validateForm()){
				return false;
			}
		});
		
		jQuery('#checkname').click(function(e){
			if(!extrabonusVal.validateForm()){
				return false;
			}
		});
		
		jQuery('#extra-form button').click(function(e){
			var postdata = jQuery('#extra-form').serialize();
			jQuery.post("/webshop/addextra/", postdata, function(data){
				if(data.success){
					var out = '';
					if(typeof(data.cust_ref) != "undefined"){
						out += '<strong>' + ref + '</strong><br>';
						out += data.cust_ref + '<br><br>';
					}
					if(typeof(data.purch_order_form_num) != "undefined"){
						out += '<strong>' + num + '</strong><br>';
						out += data.purch_order_form_num + '<br>';
						out += '<br>';
					}
					
					if(typeof(data.coupon) != "undefined"){
						out += '<strong>' + cou + '</strong><br>';
						out += data.coupon + '<br>';
						out += '<br>';
					}
					
					jQuery('#extra-form').replaceWith(out).hide('slow', function(){});					
				}
			},"json");
			return false;
		});	
	}
	
	if(jQuery('#webshop-delivery-address-button-bonus')){
		jQuery('#webshop-delivery-address-button-bonus').click(function(){
			WS.toggle('delivery-form-bonus');
		});
		
		var bonusVal = new WS.Validation('delivery-form-bonus');
		bonusVal.initialize();
		
		jQuery('#delivery-form-bonus button').click(function(e){
			if(bonusVal.validateForm()){
				var postdata = jQuery('#delivery-form-bonus').serialize();
				jQuery.post("/bonusshop/shoppingcart/changedelivery/", postdata, function(data){
					if(data.success){
						var	html  = '<strong>' + data.data.CompanyName + '</strong><br>';
							html += data.data.FirstName + ' ' + data.data.LastName + '<br>';
							html += data.data.Street + ' ' + data.data.HouseNumber + data.data.HouseNumberAddition + '<br>';
							html += data.data.PostalCode + ' ' + data.data.City + '<br>';
							html += data.data.Country + '<br>';	
						
						WS.toggle('delivery-form-bonus');
						jQuery('#webshop-delivery-address').html(html).hide().fadeIn("slow");
					}
				},"json");
				return false;
			}
		});	
	}
	
	if(jQuery('#favorite-toggle')){
		jQuery('#favorite-toggle').click(function(){
			var clicked = this;
			var classname = clicked.className;
			var check = classname.match(/icon-compare-selected/);
			var id = clicked.href.split('#');			
			if(check){
				jQuery.post('/webshop/removefromfavorites/item-' + id[1] + '/', {}, function(data) {
					clicked.className = 'icon-link icon-compare';
					clicked.title = fav_add_trans;
					jQuery(clicked).html(fav_add_trans);
				}, 'json');	
			}else{
				jQuery.post('/webshop/addtofavorites/item-' + id[1] + '/', {}, function(data) {
					clicked.className = 'icon-link icon-compare-selected';
					clicked.title = fav_remove_trans;
					jQuery(clicked).html(fav_remove_trans);
				}, 'json');	
			}
			return false;
		});
	}
	
	// Shop launch countdown
	if(jQuery('#countdown').length > 0){
		var endDate = new Date(2010, 9, 1, 8, 0, 0);
		var shopTimeTicker = new TimeTicker('countdown', endDate);
		shopTimeTicker.start();
	}
	
	// Winkelwagen cadeau selectie
	if(jQuery('#gift-table').length > 0) {
		jQuery('#gift-table tr').each(function(i, el) {
			jQuery(el).click(function(e) {
				jQuery('#gift-table tr').removeClass('selected');
				jQuery(el).addClass('selected');
				var selected_gift = jQuery(el).find('input.radio')[0];
				selected_gift.checked = true;
				jQuery.post('/webshop/present', {gift: selected_gift.value}, function(data) {
					// do nothing
				}, 'json');
			});
		});
	}
	
	if(typeof jQuery('<input>').attr('placeholder') == 'undefined') {
		jQuery('[placeholder]').focus(function() {
			var el = jQuery(this);
			
			if(el.val() == el.attr('placeholder')) {
				el.val('');
			}
			
			el.removeClass('placeholder');
			el.addClass('focus');
		}).blur(function() {
			var el = jQuery(this);
			
			// The first expression checks for cached form values after soft refresh (e.g. Firefox)
			if(el.val() == el.attr('placeholder') || el.val() == '') {
				el.removeClass('focus');
				el.addClass('placeholder');
				el.val(el.attr('placeholder'));
			}
		}).blur().parents('form').submit(function() {
			jQuery(this).find('[placeholder]').each(function() {
				var el = jQuery(this);
				
				if(el.val() == el.attr('placeholder')) {
					el.val('');
				}
			});
		});
	}
	
	if(jQuery('#more-brand')){
		jQuery('#more-brand').change(function(e) {
			document.location.href = jQuery('#more-brand').val();
		});
	}
	
	if(jQuery('#bonusshop-points')){
		jQuery('#bonusshop-points').change(function(e) {
			document.location.href = jQuery('#bonusshop-points').val();
		});
	}

	// Extra content toggler
	if(jQuery('#content-toggler').length) {
		var $content_toggler = jQuery('#content-toggler');
		var $toggled_content = jQuery('#'+$content_toggler.attr('href').split('#')[1]);
		$toggled_content.hide();
		$content_toggler.click(function(e) {
			e.preventDefault();
			$toggled_content.slideToggle();
			$content_toggler.toggleClass('expanded');
		});
	}
	
		// register-form	
	if($('register-form')) {
		var registerVal = new WS.Validation('register-form');
		registerVal.initialize();
	
		// Aanmeldformulier "andere categorie" toggle	
		if(jQuery('#signup-category').length) {
			jQuery('#signup-other-category').removeClass('wsv-required');
			jQuery('#signup-other-category').hide().attr('disabled', true);
			jQuery('#signup-other-category-li').hide();
			jQuery('#signup-category').change(function() {
				if(jQuery(this).val() == 'other') {
					jQuery('#signup-other-category-li').show();
					jQuery('#signup-other-category').show().attr('disabled', false);
					jQuery('#signup-other-category').addClass('wsv-required');
				} else {
					jQuery('#signup-other-category-li').hide();
					jQuery('#signup-other-category').hide().attr('disabled', true);
					jQuery('#signup-other-category').removeClass('wsv-required');
				}
			});		
		}
	}
});

WS.Event.addEvent(window, 'load', function() {	
	
	// External links
	var a = document.getElementsByTagName('a');
	for(var i = 0; i < a.length; i++) {
		if(/external/.test(a[i].rel)) {
			a[i].target = '_blank';
		}
	}
	
	if($('contacts')) {
		if($$('.contacts-item').length > 1) {
			var contactsCarousel = new Carousel($('contacts-viewport'), $$('.contacts-item'), $$('a.contacts-control'), {
				controlClassName: 'contacts-control'
			});
			contactsCarousel.start();
		}
		else {
			$$('.contacts-control').each(function(el) {
				el.addClassName('hidden');
			});
		}
	}
	
	if($('faq-accordion')) {
		var faqAccordion = new accordion('faq-accordion', {
			classNames: {
				toggle: 'accordion-toggle',
				toggleActive: 'accordion-toggle-active',
				content: 'accordion-content'
			}
		});
		faqAccordion.activate($$('#faq-accordion .accordion-toggle')[0]);
	}
	
	if($('jobs-accordion')) {
		var jobsAccordion = new accordion('jobs-accordion', {
			classNames: {
				toggle: 'accordion-toggle',
				toggleActive: 'accordion-toggle-active',
				content: 'accordion-content'
			}
		});
		//jobsAccordion.activate($$('#jobs-accordion .accordion-toggle')[0]);
	}
	
	// Tell-a-friend button/form
	if($('tellafriend-form')) {
		var tellafriendVal = new WS.Validation('tellafriend-form');
		tellafriendVal.initialize();
		
		WS.hide('tellafriend-form');
		WS.Event.addEvent('tellafriend-toggle', 'click', function() { WS.toggle('tellafriend-form'); });
	}
	
	// offerte-form
	if($('offerte-form')) {
		var offerteVal = new WS.Validation('offerte-form');
		offerteVal.initialize();
		
		WS.hide('offerte-form');
		if($('order-button')) {
			WS.Event.addEvent('order-button', 'click', function() { WS.toggle('order-form'); });
		}
		
	}
	
	if($('order-form')) {
		var orderVal = new WS.Validation('order-form');
		orderVal.initialize();
		
		WS.hide('order-form');
		if($('quote-button')) {
			WS.Event.addEvent('quote-button', 'click', function() { WS.toggle('offerte-form'); });
		}
		
	}
	
	if($('noresults-form')) {
		var noresultsVal = new WS.Validation('noresults-form');
		noresultsVal.initialize();
	}
	
	// login-form	
	if($('login-form')) {
		var loginVal = new WS.Validation('login-form');
		loginVal.initialize();
	}
	
	// forgotpassword-form	
	if($('forgotpassword-form')) {
		var forgotpasswordVal = new WS.Validation('forgotpassword-form');
		forgotpasswordVal.initialize();
	}
	
	// editprofile-form	
	if($('editprofile-form')) {
		var editprofileVal = new WS.Validation('editprofile-form');
		editprofileVal.initialize();
	}
	
	// vacancy-form
	if($('vacancy-form')) {
		var vacancyVal = new WS.Validation('vacancy-form');
		vacancyVal.initialize();
	}
	
	// Brands ticker
	if($('brand-ticker')){
		var brandTicker = new Ticker('brand-ticker');
		setTimeout(function() { brandTicker.initialize(); }, 3000);
		
		var btItems = $('brand-ticker').getElementsByTagName('a');
		for(var i = 0; i < btItems.length; i++) {
			WS.Event.addEvent(btItems[i], 'mouseover', function() {
				WS.DOM.getChild(this, 1).src = WS.DOM.getChild(this, 1).src.replace(/\/blackandwhite\//, '/homepage/');
			});
			WS.Event.addEvent(btItems[i], 'mouseout', function() {
				WS.DOM.getChild(this, 1).src = WS.DOM.getChild(this, 1).src.replace(/\/homepage\//, '/blackandwhite/');
			});
		}
	}
	
	// Product tabs
	/*if($('product-tabs')) {
		var productTabs = new Tabs('product-tabs');
		productTabs.initialize();
	}*/
	
	// Contacts carousel
	if($('carousel-block')) {
		if($$('#carousel-block img').length > 1) {
			var contactsCarousel = new Carousel($('block-viewport'), $$('#block-viewport img'), $$('#carousel-block a.icon'), {
				controlClassName: 'icon'
			});
		}
		else {
			$$('#carousel-block .block-foot')[0].hide();
		}
	}
	
	//Footer service navigation
	var serviceNav = new Toggler();
	serviceNav.initialize();
	
	//Search toggle
	if($('search')) {
		WS.Util.toggleValue('search', 'focus');
	}
	
	if($('search-sitemap')) {
		WS.Util.toggleValue('search-sitemap', 'focus');
	}
	
	// Winkelmandje aantallen
	jQuery('.quantity-controls .quantity-increase').click(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget.hash);
		var hiddenstaffel = jQuery(input).prev();
		if(hiddenstaffel && hiddenstaffel.val() > 0){
			staffel = parseInt(hiddenstaffel.val());
		}else{
			staffel = 1;
		}
		jQuery(e.currentTarget.hash).val(parseInt(jQuery(e.currentTarget.hash).val()) + staffel);
		setQuantityTimeout(input);
	});
	
	jQuery('.quantity-controls .quantity-decrease').click(function(e) {
		e.preventDefault();
		if(parseInt(jQuery(e.currentTarget.hash).val()) > 1) {
			var input = jQuery(e.currentTarget.hash);
			var hiddenstaffel = jQuery(input).prev();
			if(hiddenstaffel && hiddenstaffel.val() > 0){
				staffel = parseInt(hiddenstaffel.val());
			}else{
				staffel = 1;
			}	
			jQuery(e.currentTarget.hash).val(parseInt(jQuery(e.currentTarget.hash).val()) - staffel);
			setQuantityTimeout(input);
		}
	});
	
	jQuery('.quantity').keyup(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget);
		if(parseInt(jQuery(input).val()) < 1) {
			jQuery(input).val(1);
		}
		setQuantityTimeout(input);
	});

	jQuery('.quantity').blur(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget);
		var hiddenstaffel = jQuery(input).prev();
		var value = parseInt(jQuery(input).val());
		if(value < 0) {
			jQuery(input).val(0);
		}else if(hiddenstaffel && hiddenstaffel.val() > 0){
			var staffel = parseInt(hiddenstaffel.val());
			var result = parseInt((Math.round(value / staffel) * staffel));
			jQuery(input).val(result);
		}
		return false;
	});
	
	
	// Bonusshop quantity field
	jQuery('.quantity-controls .quantity-increase-bonus').click(function(e) {
		e.preventDefault();
		jQuery(e.currentTarget.hash).val(parseInt(jQuery(e.currentTarget.hash).val()) + 1);
		var input = jQuery(e.currentTarget.hash);
		setBonusQuantityTimeout(input);
	});
	
	jQuery('.quantity-controls .quantity-decrease-bonus').click(function(e) {
		e.preventDefault();
		if(parseInt(jQuery(e.currentTarget.hash).val()) > 1) {			
			jQuery(e.currentTarget.hash).val(parseInt(jQuery(e.currentTarget.hash).val()) - 1);
			var input = jQuery(e.currentTarget.hash);
			setBonusQuantityTimeout(input);
		}
	});
	
	jQuery('.quantity-bonus').keyup(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget);
		if(parseInt(jQuery(input).val()) < 1) {
			jQuery(input).val(1);
		}
		setBonusQuantityTimeout(input);
	});
	
	order();
	
	if(jQuery('#customer-overview').length > 0){
		jQuery('#customer-overview').tabs();
	}
	
	if(jQuery('#input').length > 0){
		jQuery('#input').autocomplete({
			source: '/nl/webshop/ajaxsearch/',
			select: function(event, ui) {
				jQuery('#input').val(ui.item.label);
				jQuery('#search-block-home').submit();
			}
		});
	}
	
	if(jQuery('#big-input').length > 0){
		
		WS.Util.toggleValue('big-input', 'focus');
		add = false;
		jQuery('#big-input').autocomplete({
			source: '/'+lan+'/webshop/ajaxsearch/',
			select: function(event, ui) {
				jQuery('#big-input').val(ui.item.label);
				jQuery('#big-search').submit();
			},
			open : function(event, ui){
				var ul = jQuery('.ui-autocomplete');
				var input = jQuery('#big-input').val();
				var link = jQuery('#big-search').attr('action');
				if(ul.children().length == 10){
					var html = '<li class="ui-menu-more-results">';
					html 	+=		'<a href="' + link + '?search=' + input + '">' + moreresults + '</a>';
					html	+= '</li>';
					jQuery('.ui-autocomplete').append(html);
				}
			}
		});
		
		jQuery("a#info").colorbox({
			width: 665,
			height: 350,
			opacity: 0.8,
			iframe: true
		});
		
		jQuery('#big-search #info').tooltip({
		    delay: 0, 
		    showURL: false,
		    fade: 250,
		    bodyHandler: function() { 
				return question + '.';
		    } 
		});
	}
	
	if(jQuery('#bonusshop-search-input').length > 0){
		WS.Util.toggleValue('bonusshop-search-input', 'focus');
		
		jQuery('#bonusshop-search').submit(function(){
			var input = jQuery('#bonusshop-search-input').val();
			if(input.length > 0){
				document.location = jQuery('#bonusshop-search')[0].action + 'search:' + input;
			}else{
				return false;
			}
			return false;
		});
	}
	
	if(jQuery('#ordernr').length > 0){
		if(jQuery('.datepicker').length > 0){
			jQuery('.datepicker').datepicker({
				'dateFormat'		: 	'dd-mm-yy',
				'changeMonth'		: 	true,
				'changeYear'		: 	true,
				'yearRange'			:	'1900:2020',
				'dayNames'			: 	['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'],
				'dayNamesMin'		:	['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'],
				'dayNamesShort'		:	['Zon', 'Maa', 'Din', 'Woe', 'Don', 'Vri', 'Zat'],
				'monthNames'		:	['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'],
				'monthNamesShort' 	:	['Jan', 'Feb', 'Maa', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']
			});
		}
		
		jQuery('#filters').submit(function(){
			var input = jQuery('#ordernr').val();
			var begin = jQuery('#begin-date').val();
			var end   = jQuery('#end-date').val();
			
			var location = jQuery('#filters')[0].action;
			
			if(input.length > 0){
				 location += 'search:' + input + '/';
			}
			
			if(begin.length > 0 && end.length > 0){
				location += 'begin:' + begin + '/';
				location += 'end:' + end + '/';
			}
			
			document.location = location;
			
			return false;
		});
	}
	
	if(jQuery('#order-detail-button').length > 0){
		jQuery('#order-detail-button').click(function(){
			var div = jQuery('#order-detail-button').parent().parent();
			var controls = div.find('.quantity-general-controls');
							
			var input = div.find('.quantity-general');
			var result = div.find('#result-div');
			var id = input.attr('id');
			var quantity = input.val();
			if(quantity > 0){
				result.html('<img class="no-border" src="/img/spinner-big.gif">');
				jQuery.post('/webshop/addtocartajax/', {id:id,amount:quantity}, function(data) {
					if(data.success){
						result.html('<div class="added">' + data.added +  '</div><img class="no-border" src="/img/shopping-cart-okay.png">');
						jQuery('#header-numberofitems').html(data.numberofitems);
						jQuery('#header-totalprice').html(WS.Util.number_format(data.totalprice, 2, ',', '.'));
						switch(data.error){
							case 'max':
								div.parent().find('#threshold').fadeIn('slow');
								break;
							case 'threshold':
								div.parent().find('#threshold').fadeIn('slow');
								break;
						}
					}else{
						td.html(button);
						registerclick(button);
					}
				}, 'json');
			}else{
				input.addClass('error');
				controls.addClass('error');
			}
			
			return false;
		});
	}
	
	if(jQuery('#input').length > 0 || jQuery('#big-input').length > 0){
	
		jQuery.ui.autocomplete.prototype._renderItem = function( ul, item){
			var term = this.term.split(' ').join('|');
			var re = new RegExp("(" + term + ")", "gi") ;
			var t = item.label.replace(re,"<b>$1</b>");
			var img = '';
			if(item['status'] != null){
				if(item['status'] == 'Available'){
					img = '<img title="' + (available != null ? available : item['status']) + '" class="live-image" src="/img/stock.png">';
				}else{
					img = '<img title="' + (notavailable != null ? notavailable : item['status']) + '" class="live-image" src="/img/nostock.png">';
				}
			}
			return jQuery( "<li></li>" ).data( "item.autocomplete", item ).append( "<a>" + t + img + "</a>").appendTo( ul );
		};
	}
	
	if(jQuery('#login-form').length > 0) {		
		jQuery('#login-form').submit(function(e) {
			if(jQuery('#login-form .wsv-error').length == 0) {		
				jQuery('#login-form button[type=submit]').hide();
				jQuery('#login-overlay').show();
				jQuery('#login-loader').show();
			}
		});
	}
	
	if(jQuery('.get-stock-price').length > 0) {
		getStockPrice.initialize('.get-stock-price');
	}
	
	/*if(jQuery('#header-cart').length > 0) {
		jQuery('#header-cart .arrow').eq(0).click(function(e) {
			e.preventDefault();
			jQuery(this).toggleClass('button-tab-active');
			
			if(jQuery('#header-cart .cart-items').css('display') == 'none') {
				jQuery('#header-cart .cart-items').show();				
				jQuery.ajax({
					type: 'POST',
					url: '/webshop/ajaxshoppingcart',
					dataType: 'html',
					data: 'action=shoppingcart',
					success: function(data) {
						jQuery('#header-cart .loader').hide();
						jQuery('#header-cart .cart-items').append(data);						
					}
				});
			} else {
				jQuery('#header-cart .cart-items').hide();
				jQuery('#header-cart .loader').show();
				jQuery('#header-cart table').remove();
				jQuery('#header-cart .toolbar').remove();
			}
		});
	}*/
	
	if(jQuery('#header-cart').length > 0) {
		var itemTimeout;
		var cartSet = false;
		jQuery('#header-cart .cart-items').hide();
		jQuery('#header-cart .button').eq(0).click(function(e) {
			e.preventDefault();
		});
		jQuery('#header-cart .button').eq(0).mouseenter(function() {			
			//jQuery('#header-cart .button').eq(0).addClass('button-tab-active');			
			jQuery('#header-cart .cart-items').show();
			if(!cartSet) {
				jQuery.ajax({
					type: 'POST',
					url: '/webshop/ajaxshoppingcart',
					dataType: 'html',
					data: 'action=shoppingcart',
					success: function(data) {
						jQuery('#header-cart .loader').hide();
						jQuery('#header-cart .cart-items').append(data);
						cartSet = true;
					}
				});
			}
		});
		jQuery('#header-cart .button').eq(0).mouseleave(function() {
			itemTimeout = setTimeout(function() {
				//jQuery('#header-cart .button').eq(0).removeClass('button-tab-active')
				jQuery('#header-cart .cart-items').hide();
				jQuery('#header-cart .loader').show();
				jQuery('#header-cart table').remove();
				jQuery('#header-cart .toolbar').remove();
				cartSet = false;
			}, 500);
		});
		jQuery('#header-cart .cart-items').mouseenter(function() {			
			clearTimeout(itemTimeout);
		});
		jQuery('#header-cart .cart-items').mouseleave(function() {
			//jQuery('#header-cart .button').eq(0).removeClass('button-tab-active');
			jQuery('#header-cart .cart-items').hide();
			jQuery('#header-cart .loader').show();
			jQuery('#header-cart table').remove();
			jQuery('#header-cart .toolbar').remove();
			cartSet = false;
		});
	}


	
});

var getStockPrice = {
	initialize: function(selector, options) {
		//options.increment = options.increment ? options.increment : 5;
		//this.options = options;		
		this.items = jQuery(selector).toArray();
		this.max = this.items.length;
		
		this.doRequest(0);
	},
	doRequest: function(index) {
		if(index < this.max) {
			var self = this;			
			var star = jQuery(self.items[index]).find('.star').attr('id').split('-');
			var id = star[1];
			jQuery.ajax({
				type: 'POST',
				url: '/webshop/getstockprice',
				data: 'id='+id,
				dataType: 'json',
				success: function(data) {						
					jQuery(self.items[index]).children('.price').text(data.price);
					jQuery(self.items[index]).children('.stock').text(data.stock);
					
					self.doRequest(index + 1);
				}
			});
		}
	}	
}

var setQuantityTimeout = function(input) {
	var self = this;
	self.input = input;
	clearTimeout(self.quantityTimeout);
	self.quantityTimeout = setTimeout(function() {
		if(jQuery(self.input).val() == '') {
			jQuery(self.input).val(1);
		}
		quantityChange(parseInt(jQuery(self.input).attr('id').replace('quantity-', '')), parseInt(jQuery(self.input).val()));
	}, 1250);
}

var quantityChange = function(id, quantity) {
	jQuery('#quantity-threshold-'+id).hide();
	jQuery('#quantity-max-'+id).hide();
	jQuery.post('/webshop/quantitychange', {id:id,quantity:quantity}, function(data) {
		switch(data.error){
			case 'threshold':
				jQuery('#quantity-threshold-'+id).fadeIn('slow');
				break;
			case 'max':
				jQuery('#quantity-max-'+id).fadeIn('slow');
				break;
		}
		jQuery('#total-'+id).html(data.product_total);
		jQuery('#total').html(data.total);
		jQuery('#quantity-'+id).val(data.quantity);

		// Check required extra terms
		if(jQuery('#button-next.check-terms').length) {
			if(data.total > 5000) {
				jQuery('#button-next.check-terms').addClass('terms-required');
			} else {
				jQuery('#button-next.check-terms').removeClass('terms-required');
			}
		}
	}, 'json');
}

var setBonusQuantityTimeout = function(input) {
	var self = this;
	self.input = input;
	clearTimeout(self.quantityTimeout);
	self.quantityTimeout = setTimeout(function() {
		if(jQuery(self.input).val() == '') {
			jQuery(self.input).val(1);
		}
		bonusQuantityChange(parseInt(jQuery(self.input).attr('id').replace('quantity-', '')), parseInt(jQuery(self.input).val()));
	}, 1250);
}

var bonusQuantityChange = function(id, quantity) {
	jQuery('#bonusshop-points-'+id).hide();
	jQuery.post('/bonusshop/shoppingcart/quantitychange', {id:id,quantity:quantity}, function(data) {
		switch(data.error){
			case 'points':
				jQuery('#bonusshop-points-'+id).fadeIn('slow');
				break;
		}
		jQuery('#total-'+id).html(data.points);
		jQuery('#total').html(data.total);
		jQuery('#balance').html(data.balance);
		jQuery('#old-balance').html(data.old_balance);
		jQuery('#quantity-'+id).val(data.quantity);
	}, 'json');
}

var favorites = function(){
	if(jQuery("a.star").length){
		jQuery("a.star").each(function(i) {			
			jQuery(this).click(function(){
				clicked = this;
				var classname = this.className;
				this.className = 'star loading';
				
				var check = classname.match(/active/);
				if(check){
					jQuery.post('/webshop/removefromfavorites/' + this.id + '/', {}, function(data) {
						clicked.className = 'star';
					}, 'json');
				}else{
					jQuery.post('/webshop/addtofavorites/' + this.id + '/', {}, function(data) {
						clicked.className = 'star active';
					}, 'json');	
				}	
				return false;
			});
		});
	}
}

var order = function(){
	jQuery('.quantity-general-controls .quantity-increase').click(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget.hash);
		var hiddenstaffel = jQuery(input).prev();
		var staffel = 1;
		var value = hiddenstaffel.val();
		if(value && value > 0){
			staffel = parseInt(value);
		}
		jQuery(e.currentTarget.hash).val(parseInt(jQuery(e.currentTarget.hash).val()) + staffel);
		
		return false;
	});
	
	jQuery('.quantity-general-controls .quantity-decrease').click(function(e) {
		e.preventDefault();
		if(parseInt(jQuery(e.currentTarget.hash).val()) > 0) {
			var input = jQuery(e.currentTarget.hash);
			var hiddenstaffel = jQuery(input).prev();
			var staffel = 1;
			var value = hiddenstaffel.val();
			if(value && value > 0){
				staffel = parseInt(value);
			}
			jQuery(e.currentTarget.hash).val(parseInt(jQuery(e.currentTarget.hash).val()) - staffel);
			
		}
		return false;
	});
	
	jQuery('.quantity-general').keyup(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget);
		var value = parseInt(jQuery(input).val());
		if(value < 0) {
			jQuery(input).val(0);
		}
		return false;
	});
	
	jQuery('.quantity-general').blur(function(e) {
		e.preventDefault();
		var input = jQuery(e.currentTarget);
		var hiddenstaffel = jQuery(input).prev();
		var value = parseInt(jQuery(input).val());
		if(value < 0) {
			jQuery(input).val(0);
		}else if(hiddenstaffel && hiddenstaffel.val() > 0){
			var staffel = parseInt(hiddenstaffel.val());
			var result = parseInt((Math.round(value / staffel) * staffel));
			jQuery(input).val(result);
		}
		return false;
	});
	
	if(jQuery('.icon-shopping-cart').length > 0){
		jQuery('.icon-shopping-cart').each(function(i) {
			registerclick(this);			
		});
	}
	
	function registerclick(button){
		jQuery(button).click(function(){
			var td = jQuery(button).parent();
			var tr = td.parent();
			var ntd = td.prev();
			var input = ntd.find('.quantity-general');
			var controls = ntd.find('.quantity-general-controls');
							
			var id = input.attr('id');
			var quantity = input.val();
			if(quantity > 0){
				td.html('<img class="no-border" src="/img/spinner-big.gif">');
				jQuery.post('/webshop/addtocartajax/', {id:id,amount:quantity}, function(data) {
					if(data.success){
						td.html('<img class="no-border" src="/img/shopping-cart-okay.png">');
						ntd.html(data.added);
						jQuery('#header-numberofitems').html(data.numberofitems);
						jQuery('#header-totalprice').html(WS.Util.number_format(data.totalprice, 2, ',', '.'));
						switch(data.error){
							case 'max':
								td.parent().parent().find('#quantity-max-' + data.id).fadeIn('slow');
								tr.addClass('error-top');
								break;
							case 'threshold':
								td.parent().parent().find('#quantity-threshold-' + data.id).fadeIn('slow');
								tr.addClass('error-top');
								break;
						}
					}else{
						td.html(button);
						registerclick(button);
					}
				}, 'json');
			}else{
				input.addClass('error');
				controls.addClass('error');
			}
			
			return false;
		});
	}
}
