/* PlugIn Validierung  START */
(function($) {
	var default_parameters = {
		parameters: $.makeArray(),
		class_on_error: 'val-onerror',
		error_tag: 'li',
		error_class: 'val-has-error',
		submit_error_class: 'val-submit-error',
		class_hint: 'hint',
		validation_url: false,
		keyupTimeout: 500
	};
	$.fn.extend({
		add_validation: function( parameters ) {
			var p = parameters;
			var validators = [];
			if(this.size()>1){
				this.each(function(i,form){
					validators.push($(form).add_validation());
				});
				return validators;
			} else {
				return new $.validator( this, p );
			}
		},
		parameter: function( name, value ){
			if( value != null ){
				this.parameters[ name ] = value;
				return true;
			} else {
				return (this.parameters[name]) ? this.parameters[name] : default_parameters[name];
			}
		}
	});
	$.validator = function( form, parameters ) {
		this.form = $(form);
		this.parameters = (parameters) ? parameters : {};
		this.results = {};
		this.fields = [];
		this.valid = false;
		this.setup( form, parameters );
		this.toString = function(){
			return 'validator';
		};
	};
	$validator_constructor = {
		valid: false,
		results: {},
		fields: [],
		parameter: function ( name, value ){
			if( value != null ){
				this.parameters[ name ] = value;
				return true;
			} else {
				return (this.parameters[name]) ? this.parameters[name] : default_parameters[name];
			}
		},
		validators: {
			choice: function(field){
				return true;
			},
			required: function(field){
				var val = field.is('input:radio,input:checkbox') ? $('*[name="'+field.attr('name')+'"]:checked').val() : field.val();
				return (val);
			},
			num: function(field){
				var val = jQuery.trim(field.val());
				return (val && parseInt(val,10) == val);
			},
			num2: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val, 10)==val && val.length == 2 ) );
			},
			num4: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val,10)==val && val.length <= 4 ) );
			},
			num5: function(field){
				reg = /^[0-9]{5}$/;
				return reg.test(field.val());
			},
			nummax5: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val,10)==val && val.length <= 5 ) );
			},
			num16: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val,10)==val && val.length <= 16 ) );
			},
			string: function(field){
				return (jQuery.trim(field.val()));
			},
			string5: function(field){
				var val = jQuery.trim(field.val());
				return (val && val.length == 5);
			},
			string6: function(field){
				var val = jQuery.trim(field.val());
				return (val && val.length <= 6);
			},
			string40: function(field){
				var val = jQuery.trim(field.val());
				return (val && val.length <= 40);
			},
			string50: function(field){
				var val = jQuery.trim(field.val());
				return (val && val.length <= 50);
			},
			numeq16: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val,10)==val && val.length == 16 ) );
			},
			numeq5: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val,10)==val && val.length == 5 ) );
			},
			numeq4: function(field){
				var val = jQuery.trim(field.val());
				return ( (val && parseInt(val,10)==val && val.length == 4 ) );
			},
			email: function(field){
				var val = jQuery.trim(field.val());
				var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
				return (reg.test(val));
			},
			password: function(field){
				var val = jQuery.trim(field.val());
				return (val && val.length >= 6 && val.length <= 20);
			},
			password2: function(field){
				var val = jQuery.trim(field.val());
				return (this.password(field) && val == $('.val-password').val() );
			},
			scompany: function(field){
				return !($('#f-shipping-gender-company').attr('checked'));
			},
			accscompany: function(field){
				return !($(field).parents('ul').eq(0).find('.f-company').attr('checked'));
			},
			bcompany: function(field){
				return !($('#f-bill-gender-company').attr('checked'));
			},
			ccompany: function(field){
				return !($('#f-contact-gender-company').attr('checked'));
			},
			bill: function(field){
				return ($('#f-co-bill-opener').attr('checked'));
			},
			nobill: function(field){
				return !($('#f-co-bill-opener').attr('checked'));
			},
			account: function(field){
				return ($('#f-co-account-opener').attr('checked'));
			},
			paybank: function(field){
				return !($('#f-payment-type-bank').attr('checked'));
			},
			paycredit: function(field){
				return !($('#f-payment-type-credit').attr('checked'));
			},
			noshipping: function(field){
				return !($('#f-acc-shipping-opener').attr('checked'));
			},
			newsletter: function(field){
				return !($('#f-news-frequency').attr('checked'));
			},
			card: function(field){
				return ( $.trim(field.val()).length <= 480 && field.val().split(/\n/g).length <= 11 );
			}
		},
		setup: function( form, parameters ){
			this.hide_errors();
			this.hide_hints();
			this.add_events();
			var v = this;
			this.form.submit(function(){return v.submit_form();});
		},
		add_events: function(){
			var validator = this;
			var validate = function( f ){
				var field = (f.size) ? $(f) : $(this);
				field.attr('val-used',1);
				validator.validate_fields();
			};
			var hint = function(){ $(this).parents(validator.parameter('error_tag')).find('.'+validator.parameter('class_hint')).show(); };
			var hint_off = function(){ $(this).parents(validator.parameter('error_tag')).find('.'+validator.parameter('class_hint')).hide(); };
			
			// Validation Events
			this.form.find(':text,:password,textarea').blur(validate);
			
			var keyupTimeout;
			this.form.find(':text,:password,textarea').keyup(function(){
				var field = $(this);
				if(keyupTimeout){
					window.clearTimeout(keyupTimeout);
				}
				keyupTimeout = window.setTimeout(function(){
					validate(field);
				},validator.parameter('keyupTimeout'));
			});
			
			this.form.find('select').change(validate);
			this.form.find(':radio,:checkbox').click(validate);
			
			// Other Events
			this.form.find(':input').focus(hint);
			this.form.find(':input').blur(hint_off);
			$(document.body).click(function(){ validator.form.find('.'+validator.parameter('submit_error_class')).hide();});
			this.form.find(':input').each(function(){
				var f = $(this);
				if( f.attr('class') !== undefined && f.attr('class').indexOf('val-') !== -1 ){
					f.attr('val-used',0);
					validator.fields.push(f);
				}
			});
		},
		hide_errors: function(){
			this.form.find('.'+this.parameter('submit_error_class')).hide();
		},
		hide_hints: function(){
			this.form.find('.'+this.parameter('class_hint')).hide();
		},
		validate_form: function( show_errors ){
			var validator = this;
			this.valid = this.validate_fields( null, show_errors );
			this.toggle_submit();
			return this.valid;
		},
		validate_fields: function( skip, show_errors ){
			var valid = true;
			var validator = this;
			var l = this.fields.length;
			for( var i = 0; i < l; i++ ){
				var field = this.fields[i];
				if( !field.is(skip) ){
					if( !validator.validate_field( field, show_errors ) ){
						valid = false;
					}
				}
			}
			if(valid){this.toggle_submit();}
			return valid;
		},
		toggle_submit: function(){
			var valid = true;
			for( p in this.results ){
				var result = this.results[p];
				if(!result){
					valid = false;
					break;
				}
			}
			this.form.toggleClass(this.parameter('error_class'),!valid);
		},
		validate_field: function( field, show_errors ){
			if( field.attr('class').search(/(^| )val-/g) == -1 ){
				return true;
			}
			var css_classes = field.attr('class').split(' ');
			var ccl = css_classes.length;
			var results = [];
			for( var i = 0; i < ccl; i++ ){
				var css_class = css_classes[i];
				if(css_class.indexOf('val-')==0){
					var rules = css_class.substr(4).split('-or-');
					var rl = rules.length;
					if( rl==1 && this.validators[ rules[0] ] ){
						results.push(Boolean(this.validators[ rules[0] ](field)));
					} else if( rl > 1 ) {
						var sub_results = [];
						for( var k = 0; k < rl; k++ ){
							var rule = rules[k];
							if(this.validators[rule]){
								sub_results.push(Boolean(this.validators[rule](field)));
							}
						}
						if(sub_results.length > 0 ){
							results.push( '( ' + sub_results.join(' || ') + ' )' );
						}
					}
				}
			}
			var valid = (results.length > 0) ? Boolean(eval(results.join(' && '))) : true;
			if(!valid){this.valid = false;}
			this.error( valid , field, show_errors );
			this.results[field.attr('name')] = valid;
			return valid;
		},
		error: function( valid, field, show_errors ){
			var validator = this;
			var error_element = $(field).parents(this.parameter('error_tag')).find('.'+this.parameter('class_on_error'));
			var line_parent = $(field).parents(this.parameter('error_tag')).eq(0);
			var other_valid = true;
			line_parent.find(':input').not(field).each(function(){
				if(validator.results[this.name] === false){
					other_valid = false;
				}
			});
			if(valid){
				field.removeClass(this.parameter('error_class'));
			}
			if( valid && other_valid ){
				line_parent.removeClass(this.parameter('error_class'));
			} else if( !valid && ( field.attr('val-used')==1 || show_errors ) ){
				field.addClass(this.parameter('error_class'));
				line_parent.addClass(this.parameter('error_class'));
			}
		},
		submit_form: function(){
			var l = this.fields.length;
			var valid = this.validate_form(true);
			this.form.find('.'+this.parameter('submit_error_class')).toggle(!valid);
			return valid;
		},
		alert_errors: function(){
			var str = "Fehler:\n";
			for( p in this.results ){
				var error = this.results[p];
				str += p + ':' + error + "\n";
			}
			alert(str);
		},
		toString: function(){
			return 'plugin';
		}
	};
	$.validator.prototype = $validator_constructor;
})($);
/* Validation Plugin END */


$(document).ready(function(){
	$(document.body).addClass('js');
	var b = $(document.body);
	var sb = $('#co-sidebar');

	window.form_validations = $('form.validate').add_validation();

	/* In-Page-Popup */
	$(b).append('<div id="ipp"><div id="ipp-wrap"><a href="?close">schlie&szlig;en</a><iframe src="/ipp/ipp-leer.php" name="ipp" frameborder="0" allowtransparency="true"></iframe><iframe src="/ipp/ipp-leer.php" id="bugframe"></iframe><div id="ipp-bg"></div></div></div>');
	var pop = $('#ipp');
	window.pop = pop;
	pop.display = function(src){
		// attach class to body Tag
		b.addClass('ipp-show');
		if(pop.css('position')=='absolute'){
			var centerPosition = ($(window).height()/2-(502/2))+$(window).scrollTop();
			var centerPositionCheck = centerPosition < 0 ? '0' : centerPosition;
			pop.css('top',centerPositionCheck);

		}
		pop.addClass('show');
		$('iframe',pop).attr('src',src);
	};
	var pop_frame = $('#ipp iframe');
	$('#ipp-wrap').click(function(){ return false; });
	$(pop).click(function(){if(pop){ pop.closeit();}; });
	$('a.ipp').click(function(event){
		pop.display(this.href);
		return false;
	});
	pop.closeit = function(){
		// remove class from body Tag
		b.removeClass('ipp-show');
		pop.removeClass('show');
	};
	$('#ipp a').click(function(event){pop.closeit(); return false;});
	$('#abort-ipp').click(function(event){ top.pop.closeit(); return false;});
	$('#ipp a').css("z-index", "202020");
	/* In-Page-Popup */
	if(b.is('.ipp')){
		/* In-Page-Popup Kontakt */
		var toggle_company = function(field){
			$('.form-list').find('.li-company').toggle(field.is(':checked'));
		};
		$('.form-list .li-gender input').click(function(){ toggle_company($('#f-contact-gender-company , #f-press-gender-company')); });
		toggle_company($('#f-contact-gender-company , #f-press-gender-company'));
	}
	

	/* In-Page-Popup Grusskarten */
	$('.b-card .product-list input').click(function(){
		$(this).parents('li').find('.ipp').click();
	});

	/* Info Layer */
	$('.info-layer').hover(function() {
		$(this).children('div').addClass('show');
	}, function() {
		$(this).children('div').removeClass('show');
	});
	$('.info-layer').hover(function() {
		$(this).parents('li').addClass('show');
		$(this).attr('title' , '');
	}, function() {
		$(this).parents('li').removeClass('show');
	});

	/* Hauptartikel Layer */
	if($('.main-product-layer').size() > 0 ){
		var mpl = ($(window).height()/2-(420/2))+$(window).scrollTop();
		$('.main-product-layer').css('padding-top' , mpl);
		$('.close-layer').click(function () {
			$(this).parents('.main-product-layer').removeClass('show');
			return false;
		});
	};

	/* DETAILSEITE */
	if(b.is('.detail')){
		/* Boxen auf Detailseite auf-/zuklappen */
		$('#detail-right .de-box-head a').click(function () {
			$(this).parents('.de-box').toggleClass('show');
			return false;
		});

		/* Auswahl Stiele */
		if($('#f-select-number, .product-zoom select').size()>0){
			$('#f-select-number option, .product-zoom option').each(function(){
				$(this).html($(this).attr('class') + ' '+$(this).parent().attr('title'));
			});
			$('#f-select-number, .product-zoom select').change(function(){
				var newPrice = $('option:selected',this).attr('title');
				if($(this).parents('.product-zoom').length > 0){
					$(this).parents('li').find('.gift-price em').html(newPrice);
				} else {
					$('.product-price em').html(newPrice);
				}
			});
		};

		/* Detailseite Geschenke-Anlass */
		if($('#f-select-gift').size()>0){
			var select_gift = function(field) {
				var giftbox = ('#' + field.value);
				$(giftbox).addClass('show');
				$(giftbox).siblings('div').removeClass('show');
			};
			$('#f-select-gift').change(function(){select_gift(this);});
			select_gift($('#f-select-gift').get(0));
		}

		/* Detailseite Geschenke ohne Eigenschaften */
		if($('.product-info ul').size()>0 && $('.product-info ul li').size()==0){
			$('.product-info ul').addClass('no-properties');
		}

		/* Detailseite Aufdruck aendern */
		$('.detail #product-gift li input').click(function(){
			if($(this).parent('label').siblings('.product-edit').size()>0){
				$(this).parents('li').toggleClass('edit',this.checked);
			}
		});

		/* Pflegetipps */
		$('#product-care-navi li a').click(function () {
			$(this).parents('li').addClass('active');
			$(this).parents('li').siblings('li').removeClass('active');
			$(this.hash).addClass('show');
			$(this.hash).siblings('li').removeClass('show');
			return false;
		});

		/* Auswahl Groesse */
		var selected_li = $('#product-option input:checked').parents('li');
		var change_size = function(sel_li){
			// Preis aendern
			$('#product-option li').not(sel_li).removeClass('tip');
			$(sel_li).addClass('tip');
			$('.product-info.bottom .old-price').html(sel_li.find('.old-price').html());
			$('.product-info.bottom em').html(sel_li.find('em').html());
			// Bilder aendern
			var radioChecked = $('input', sel_li).val();
			if(radioChecked){
				$('#'+radioChecked).addClass('show').siblings('.radio-wrapper').removeClass('show');
			};
		};
		$('#product-option input').click(function(){
			change_size($(this).parents('li'));
		});
		if( selected_li.size() > 0 ){
			change_size(selected_li);
		};

		/* Detail Zoom */
		var detail_zoom = function (zoom_link) {
			$(zoom_link).parents('li').addClass('detail-zoom');
			if($('#product-gift').find('.detail-zoom').size() > 1) $('#product-gift').find('.detail-zoom').removeClass('detail-zoom');
			var zoom_margin = $(zoom_link).parents('li').position().left;
			$(zoom_link).parents('.detail-zoom').find('.product-zoom').css('margin-left' , (-491)+(zoom_margin * -1));
			var topPosition = ($(zoom_link).parents('li').offset().top)*-1;
			var centerPosition = topPosition+($(window).height()/2-(600/2))+$(window).scrollTop();
			var zoom_margin_top = $(window).scrollTop() < 111 ? topPosition+111 : centerPosition;
			$(zoom_link).parents('.detail-zoom').find('.product-zoom').css('margin-top' , zoom_margin_top);
		};
		$('#product-gift a.zoom').click(function(){
			detail_zoom($(this));
			if( !$(this).parents('li').find('label input').is(':checked') && $(this).parents('li').find('.product-choice').size()>0){
				$(this).parents('li').find('label input').trigger('click',true);
			}
			return false;
		});
		$('.close-zoom , .abort-zoom').click(function () {
			$(this).parents('li').removeClass('detail-zoom');
			return false;
		});
		$('.order-zoom').click(function () {
			$(this).parents('li').removeClass('detail-zoom');
			$(this).parents('.product-zoom').siblings('label').children('input').attr('checked','checked');
			$(this).parents('.product-zoom').siblings('.info-layer').children('.info-layer-wrapper').addClass('show');
			return false;
		});
		$('.product-zoom-wrapper').click(function(){ return false;});
		$('.product-zoom').click(function(){ $(this).parent('li').removeClass('detail-zoom'); });
	};

	/* ATTACHMENT */
	if(b.is('.attach')){
		/* Subnavigation */
		$('#subnavi li a').click(function () {
			$(this).parents('li').addClass('active');
			$(this).parents('li').siblings('li').removeClass('active');
			$(this.hash).addClass('show');
			$(this.hash).siblings('ul').removeClass('show');
			return false;
		});
		if($('#subnavi') && location.hash && $(location.hash) ){
			var li = $('*[href='+location.hash+']');
			li.parents('li').addClass('active');
			li.parents('li').siblings('li').removeClass('active');
			$(location.hash).addClass('show');
			$(location.hash).siblings('ul').removeClass('show');
		}

		/* Attachment Zoom */
		var attachment_zoom = function (zoom_link) {
			$(zoom_link).parents('li').addClass('attach-zoom');
			if($('.product-list').find('.attach-zoom').size() > 1) $('.product-list').find('.attach-zoom').removeClass('attach-zoom');
			var zoom_margin = $(zoom_link).parents('li').position().left;
			$(zoom_link).parents('.attach-zoom').find('.product-zoom').css('margin-left' , zoom_margin * -1);
			var topPosition = ($(zoom_link).parents('li').position().top)*-1;
			var centerPosition = topPosition+($(window).height()/2-(600/2))+$(window).scrollTop();
			var zoom_margin_top = $(window).scrollTop() < 111 ? topPosition+111 : centerPosition;
			$(zoom_link).parents('.attach-zoom').find('.product-zoom').css('margin-top' , zoom_margin_top);
		};
		$('.product-list a.zoom').click(function(){
			attachment_zoom($(this));
			if( !$(this).parents('li').find('label input').is(':checked') && $(this).parents('li').find('.product-choice').size()>0){
				$(this).parents('li').find('label input').trigger('click',true);
			}
			return false;
		});
		$('.close-zoom , .abort-zoom').click(function () {
			$(this).parents('li').removeClass('attach-zoom');
			return false;
		});
		$('.order-zoom').click(function () {
			$(this).parents('li').removeClass('attach-zoom');
			$(this).parents('.product-zoom').siblings('label').children('input').attr('checked','checked');
			$(this).parents('.product-zoom').siblings('.info-layer').children('.info-layer-wrapper').addClass('show');
			return false;
		});
		$('.product-zoom-wrapper').click(function(){ return false;});
		$('.product-zoom').click(function(){ $(this).parent('li').removeClass('attach-zoom'); });

		/* Attachment Lieferhinweis */
		var attachment_hinweis = function(input_field){
			$(input_field).parents('li').find('.info-layer-wrapper').toggleClass('show',input_field.checked);
			if($(input_field).parents('li').find('.product-edit').size()>0){
				$(input_field).parents('li').toggleClass('edit',input_field.checked);
			}
		};
		$('.product-list label input').click(function(event,no_revert){
			attachment_hinweis($(this));
			attachment_price($(this).parents('li').find('.product-zoom select'),no_revert);
			if($(this).is(':checked') && $(this).parents('li').find('.product-choice').size()>0){
				attachment_zoom($(this).parents('li').find('h2 a'));
			}//
		});
		
		/* Attachment Preis ändern im Layer */
		var old_price = false;
		var attachment_price = function(selfield,no_revert){
			var li = $(selfield).parents('.attach-zoom');
			if (li.length > 0) {
				if(!old_price){ old_price = li.find('.price').html().substr(4); }
				var p = $('option:selected',selfield).attr('title');
				if(!li.find('label input').is(':checked') && !no_revert){
					p = old_price;
				}
				li.find('.product-price em').html(p);
				li.find('.price').html('+ € '+p);
			}
		};
		$('.product-zoom select').change(function(event,no_revert){attachment_price(this);});
	}

	/* CHECKOUT und KUNDENKONTO 
	if(b.is('.checkout,.account')){
		// Validierung der Postleitzahl für AT und CH 4 Zahlen für DE 5 Zahlen
		$('#f-bill-land').change( function(){
			var selected = $(this).find('option:selected').text();
			var validator = selected == "Deutschland" ? "val-num5-or-bill" : "val-numeq4-or-bill";
			$('#f-bill-zip').removeClass().addClass(validator).trigger('blur');
		});
	}
	*/

	/* CHECKOUT */
	if(b.is('.checkout')){
		/* Checkout Boxen Opener */
		$('.co-box-opener input').not('#co-box-bill .co-box-opener input').click(function(){
			$(this).parents('.co-box').find('.co-box-body').slideToggle({
				duration: 'slow',
				easing: 'swing'
			}, this.checked );
		});
		$('.co-box-opener input').not('#co-box-bill .co-box-opener input').each(function(){
			$(this).parents('.co-box').find('.co-box-body').toggle( this.checked );
		});
		/* Ausnahme: Checkout Opener fuer Rechnungsanschrift */
		$('#co-box-bill .co-box-opener input').click(function(){
			$(this).parents('.co-box').toggleClass('show',this.checked);
		});
		$('#co-box-bill .co-box-opener input').each(function(){
			$(this).parents('.co-box').toggleClass('show',this.checked);
		});

		/* Liefer- und Rechnungsanschrift identisch: UST-ID ein-/ausblenden */
		var toggle_ust_id = function(field){
			$('#co-box-bill').find('.li-vat2').toggle(field.is(':checked'));
		};

		/* Checkout Info Layer */
		$('.co-info-layer').hover(function() {
			$(this).children('div').addClass('show');
		}, function() {
			$(this).children('div').removeClass('show');
		});
		$('#co-box-anonym label').hover(function() {
			$(this).siblings('div').children('.co-info-layer-wrapper').addClass('show');
		}, function() {
			$(this).siblings('div').children('.co-info-layer-wrapper').removeClass('show');
		});
		$('input[type=text]').focus(function() {
			$(this).siblings('div').children('.co-info-layer-wrapper').addClass('show');
		});
		$('input[type=text]').blur(function() {
			$(this).siblings('div').children('.co-info-layer-wrapper').removeClass('show');
		});

		/* Checkout Lieferdaten */
		var selected = $('#co-box-calendar a.selected');
		var last = ((selected.length != 1)?false:selected);
		var select_date = function(sel, firststart){
			if(last){ last.removeClass('selected'); }
			sel.addClass('selected');
			if( last && sel.is('.sun a') != last.is('.sun a') ){
				$('#co-box-delivery-option input').attr('checked','');
			}

			$('#f-lieferdatum').val(sel.attr('href').substr(1));
			/*if (firststart == false)
				form_validations.validate_form(false); // Achtung! Das geht nur so lange gut, wie das nur ein Formular auf der Seite ist! Habe da noch keine bessere Lösung (mj)*/
			$('#co-box-delivery-option').attr('class', (sel.is('.sun a')) ? 'suns' : 'not-suns' );
			last = sel;
		};
		$('#co-box-calendar a').click(function(){
			select_date($(this), false);
			$('html,body').animate({
				scrollTop: $('#co-box-calendar').offset().top,
				duration: 1000
			});
			return false;
		});

		/* eingetragenes Datum uebernehmen */
		if($('#f-lieferdatum').val()){
			var selected_date = $('#co-box-calendar a[href=#' + $('#f-lieferdatum').val() + ']').eq(0);
			if(selected_date.size()>0){
				select_date(selected_date, true);
			}
		}

		/* Checkout Zahlungsart */
		var select_payment_type = function(id){
			$('#co-box-payment').attr('class',id);
		};
		select_payment_type( $('input.payment-type:checked').attr('id') );
		$('input.payment-type').click(function(){ select_payment_type(this.id); });

		/* Checkout Giftcard eingeloest */
		if($('.info-success.giftcard').size()>0){
			var box_eingeloest = $('#co-sidebar').height()-388;
			if(box_eingeloest>0){
				$('.info-success.giftcard').css('margin-bottom',box_eingeloest);
			};
		};
	}

	/* KUNDENKONTO */
	if(b.is('.account')){
		/* Checkout Boxen Opener */
		$('.acc-box-opener input').click(function(){
			$(this).parents('.acc-box').find('.acc-box-body').slideToggle({
				duration: 'slow',
				easing: 'swing'
			}, this.checked );
		});
		$('.acc-box-opener input').each(function(){
			$(this).parents('.acc-box').find('.acc-box-body').toggle( this.checked );
		});

	/* Kundenkonto Sidebar Passwort vergessen */
	$(".sb-login a").click(function () {
		$(this).parents('.sb-login').removeClass('show') ;
		$(this).parents('#sidebar').find('#sb-password').addClass('show') ;
		return false;
	});
	$("#sb-password a").click(function () {
		$(this).parents('#sidebar').find('.sb-login').addClass('show') ;
		$(this).parents('#sb-password').removeClass('show') ;
		return false;
	});
	}

	/* WARENKORB */
	if( sb.size()>0 ){
		var toggleSidebar = function(){
			if( ( $(window).height() < sb.height()+30 ) ){
				sb.addClass('sb-not-scrolling');
			} else {
				sb.removeClass('sb-not-scrolling');
			}
		};
		toggleSidebar();
		$(window).resize(toggleSidebar);
		$(window).scroll(function(){
			var off = $('#co-foot').offset().top - $(window).scrollTop() - sb.height() - 110;
			sb.css('top', ( off < 0 ) ? off : 0 );
		});
	}
	// Klappen, wenn der Warenkorb zu gross ist.
	if($('#basket')){
		var max_size = 3;
		var too_big = ( $('#basket li').size() > max_size+1 );
		if(too_big) {
			$('#basket ul:last').append('<li class="ba-show-hide"><a href="#" id="ba-show">Warenkorb ausklappen</a><a href="#" id="ba-hide">Warenkorb einklappen</a></li>');
			$('#ba-show').show();
			$('#ba-hide').hide();
			$('#basket li').each(function(index){
				var li = $(this);
				if( index > max_size-1 && !li.is('.ba-show-hide') ){
					li.hide().addClass('hidden');
				}
			});
			$('#ba-show').click(function(){
				$('#basket li.hidden').slideDown(200).removeClass('hidden');
				$('#ba-show').hide();
				$('#ba-hide').show();
			});
			$('#ba-hide').click(function(){
				$('#basket li').each(function(index){
					var li = $(this);
					if( index > max_size-1 && !li.is('.ba-show-hide') ){
						li.slideUp(200).addClass('hidden');
					}
				});
				$('#ba-show').show();
				$('#ba-hide').hide();
			});
		}
	}

	/* Zuletzt angesehene Straeusse */
	$("#last-seen").click(function () {
		$("#basket").toggleClass('show');
		return false;
	});

	/* Kundenkonto Passwort vergessen */
	$("#co-box-account-right a").click(function () {
		$(this).parents('#co-box-account-wrapper').css({'display': 'none'}) ;
		$(this).parents('.co-box-body').find('#co-box-account-password').css({'display': 'block'}) ;
		return false;
	});
	$("#co-box-account-password-left a").click(function () {
		$(this).parents('#co-box-account-password').css({'display': 'none'}) ;
		$(this).parents('.co-box-body').find('#co-box-account-wrapper').css({'display': 'block'}) ;
		return false;
	});

	/* Kundenkonto-Login im Head */
	$('#head-links-acc>a').click(function(e){$('#head-links-acc').toggleClass('show');return false;});
	$('#head-links-acc').click(function(e){e.stopPropagation();});
	$('#acc-close').click(function(e){$('#head-links-acc').removeClass('show'); return false;});
	b.click(function(){$('#head-links-acc').removeClass('show');});

	/* Input-Value ein-/ausblenden */
	$('#service input[type=text] , #f-rating-message').focus( function() {
		if (this.value == this.defaultValue) {
		this.value = '';
		}
	});
	$('#service input[type=text] , #f-rating-message').blur( function() {
		if (this.value == '') {
		this.value = this.defaultValue;
		}
	});

	/* Gutschein-Layer schliessen */
	$('#ba-coupon-layer a').click( function() {
		$(this).parents('#ba-coupon-layer').removeClass('show');
	});

	/* Anlass-Layer */
	$('#reason-cloud a').click(function () {
		$(this.hash).addClass('show');
		$(this.hash).parents('li').siblings('li').children('.reason-layer').removeClass('show');
		return false;
	});
	$('.close-layer').click(function () {
		$(this).parents('.reason-layer').removeClass('show');
		return false;
	});

	/* Grusskarten Texte Popup */
	$('#inspiration-text').click(function(){ window.open(this.href,'cardtext','height=500,width=452,left=200,top=100,location=no,menubar=no,resizable=no,scrollbars=yes,status=no,toolbar=no'); return false; });
	$('.popup-card-text .close').click(function(){ window.close(); return false; });

	$('.beam').click(function(){
		if($(':checked').size()==1){
			opener.$('#f-card-text').val($(':checked').val());
			window.close();
		}
		return false;
	});
	var max_length = 480;
	var gfield = $('#f-card-text');
	if(gfield.size() > 0){
		check_text = function(){
			$('#card-text-character span').html(max_length-gfield.val().length);
		};
		gfield.change(check_text).keypress(check_text).keyup(check_text);
		check_text();
	};

$('textarea[maxlength]').keyup(function(){
	//get the limit from maxlength attribute
	var limit = parseInt($(this).attr('maxlength'));
	//get the current text inside the textarea
	var text = $(this).val();
	//count the number of characters in the text
	var chars = text.length;
	//check if there are more characters then allowed
	if(chars > limit){
		//and if there are use substr to get the text before the limit
		var new_text = text.substr(0, limit);
		//and change the current text with the new text
		$(this).val(new_text);
		$(this).keypress();
	}
});

	/* Newsletter Frequenz */
	$('.newsletter-cancel input').change(function() {
		if ($('#f-news-frequency').attr('checked')) {
			$('.li-frequency input').attr('disabled' , '');
		} else {
			$('.li-frequency input').attr('disabled' , 'disabled').attr('checked' , '');
		}
	});

});
