/*
 * Globales Skript, das auf allen Seiten direkt am Ende des <head>s ausgeführt
 * wird.
 */

jQuery.escape = function(selector) {
	return selector.replace(/([#;&,.+*~':"!^$[\]()=>|/])/g, '\\$1');
};

jQuery.idSelect = function(id) {
	return jQuery('#' + jQuery.escape(id));
};

jQuery(document).ready( function() {
	// Alle vorhandenen Tabboxen initialisieren
	jQuery('.tabbox').tabs();
	jQuery('.tabbox div a[href^=#]')
		.click(function() {
			var href = jQuery(this).attr('href');
			jQuery('.tabbox').tabs('select', href);
		});
	
	// Alle vorhandenen Accordions initialisieren
	jQuery('.accordion .accordion_item_header').append('<a class="accordion_item_toggle" href="#">Mehr Informationen</a>');
	jQuery('.accordion .accordion_item_body').wrap('<div></div>');

	jQuery('.accordion')
		.accordion({
			active: false,
			collapsible: true,
			autoHeight: false,
			header: '.accordion_item_header'
		})
		.bind('accordionchange', function(event, ui) {
			ui.newHeader.find("a.accordion_item_toggle").text("Schließen");
			ui.oldHeader.find("a.accordion_item_toggle").text("Mehr Informationen");
			
			if (ui.newHeader.size() > 0) {
				jQuery('html,body').animate({scrollTop: ui.newHeader.offset().top}, 'slow');
    		
    		jQuery('.colorbox').hide();  // to avoid positioning bug in IE7
		    jQuery('.colorbox').show();
			}

		});

	jQuery('.accordion').accordion('activate', jQuery(location.hash));
	
	// Alle vorhandenen "Lightboxen" initialisieren
	jQuery('.colorbox')
		.append('<span class="usage_indicator">Bitte klicken zum Vergrößern</span>')
		.hover(function() {
			jQuery(this).find('.usage_indicator').fadeTo('fast', 1.0);
			}, function() {
			jQuery(this).find('.usage_indicator').fadeTo('fast', 0.8);
		});
	jQuery('.usage_indicator').fadeTo(0, 0.8);
	
	jQuery('.colorbox')
		.colorbox({
			modalClose: "Schließen &#xd7;"
		});
	
	// Slideshows initialisieren
	jQuery('ul.slideshow')
		.slideshow();
	
	
	// Abwählen einer option bei mulitple-selects durch einfaches Klicken erlauben
	jQuery("select[multiple] option").each(function() {
	    var state = {selected: this.selected};
	    jQuery(this)
	        .bind("mousedown", state, function(e) {
	            e.data.selected = e.target.selected;
	        })
	        .bind("click", state, function(e) {
	            if (e.target.selected && e.data.selected) {
	                e.target.selected = false;
	            }
	            e.data.selected = e.target.selected;
	        });
	    });
	
	// Suchfelder mit Hinweistext versehen
	jQuery("form.search.inline").each(function() {
			var label = jQuery(this).find("label");
			var field = jQuery(this).find("input[type='text']");
			
			label
				.css({
					position: "absolute",
					top: field.position().top + (field.outerHeight() - label.outerHeight()) / 2,
					left: field.position().left + 5,
					zIndex: 50
				})
				.click(function() {
					field.focus();
				});
			
			if (field.val().length == 0) {
				label.show();
			}
			
			field
				.focus(function() {
					label.hide();
				})
				.blur(function() {
					if (field.val().length == 0) {
						label.show();
					}
				});
		});

	// Focus auf 1. Feld in Schnellbestellung (Maske) + umsetzen von Enter->Tab
	jQuery("form.quickorder").each(function() {
  	var fields = jQuery(this).find("input[type='text']");
		fields.get(0).focus();
	});

	jQuery("form.quickorder input[type='text']").live('keypress', function (e) {
			if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
				var fields = jQuery(this).closest('form').find(":input[type='text']");
				currentfield = fields.index(this);
				if (fields.length > currentfield) {
					fields.get(currentfield+1).focus();
				}
				return false;
			}
			return true;
		});

	// Focus auf 1. Feld in Schnellbestellung (Liste)
	jQuery("form.quickorder2").each(function() {
  	var field = jQuery(this).find("textarea").get(0);
		field.focus();
			
	});
	
	// Absenden von Formularen durch Drücken von Enter im letzten Feld (behebt Probleme mit JSF im IE)
	jQuery("form input[type='text'], form input[type='password'], form select").live('keypress', function (e) {
			if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
				var buttons = jQuery(this).closest('form').find(':submit, :button');
				var defaultButton = buttons.filter('.default:first');
				if (defaultButton.length > 0) {
					defaultButton.click();
				} else {
					buttons.filter(':first').click();
				}
				
				return false;
			}
			
			return true;
		});
});
