var BF = new Class({

  initialize : function()
  {
    $$('.no_js').dispose();

		this.add_form_element_classes();
    this.add_pseudo_classes();
    this.css_colorize_tables();
		this.css_fix_auto_clear();

		/* fix stupid css bug on background for ie 6 */
		if ( Browser.Engine.trident4 && $defined($('wrapper') ) )
			$('wrapper').setStyle('background-image', "url(http://kunden.dcsmedia.de/bakery_v2/bf-content/themes/default/images/content_background_" + $('wrapper').getProperty('class').replace(/ |-/g, '_') + ".jpg)");

		this.init_overlay_label();

		window.addEvent('unload', function(){ BF = {}; });
	},

	init_overlay_label : function( class_name )
	{
		/* Overlaying label-elements*/

		$$('label.overlay-label').each( function( el_label )
		{
			var el_input = $(el_label.getProperty("for"));

			if ( $defined( el_input ) ) {
				if ( "" === el_input.value ) el_label.addClass( "apply" );
				el_label.el_input = el_input;
				el_input.el_label = el_label;

				el_label.addEvents({
					'mouseenter': function(event) { this.el_input.addClass("hover"); },
					'mouseleave': function(event) { this.el_input.removeClass("hover"); }
				}); //addEvents

				el_input.addEvents({
					'focus': function(event) { this.el_label.addClass("hidden"); },
					'keydown': function(event) { this.el_label.addClass("hidden"); },
					'blur': function(event) { if ( "" === this.value ) this.el_label.removeClass("hidden"); }
				}); //addEvents

			}; //endif
		}); //each
	},

	css_fix_auto_clear : function( class_name )
	{
		/* JS-basiertes Clearing für floating divs */

		if ( true === Browser.Engine.trident ) {
			$$('div.auto_clear').each( function( el_floating )
			{
				new Element('div', {'class': "zero"}).inject(el_floating, 'bottom');
				new Element('div', {'class': "clear"}).inject(el_floating, 'bottom');
				// el_floating.removeClass("auto_clear");
			}); //each
		}; //endif
	},

	css_colorize_tables : function( class_name )
	{
		/* CSS-Klassen für "gerade" Reihen hinzufügen */

		if ( false === $defined(class_name) ) class_name = "js_color";

		$$('table.' + class_name).each( function(table)
		{
			var tbody = table.getChildren('tbody')[0];
			if ( false === $defined(tbody) ) tbody = table;

			tbody.getElements('tr').removeClass('equal');
			tbody.getElements('tr:nth-child(2n+1)').addClass('equal');
		});
	},

	add_pseudo_classes : function()
	{
		/* Pseudo Attribute-Selector für inkompatible Browser */

		$$('div').each( function(el_div)
		{
			var el_childs = el_div.getChildren("h2");
			if ( el_childs.length > 0 ) el_childs[0].addClass("first-child");
		}); //each
	},

	add_form_element_classes : function()
	{
		/* Pseudo Attribute-Selector für inkompatible Browser */

		$$('input').each( function(el_input)
		{
			switch ( el_input.getAttribute("type") ) {
				case "submit" :
					el_input.addClass("submit");
					break;
				case "button":
					el_input.addClass("button");
					break;
				case "checkbox" :
					el_input.addClass("checkbox");
					break;
				case "radio" :
					el_input.addClass("radio");
					break;
				case "file" :
					el_input.addClass("file");
					break;
				case "password" :
					el_input.addClass("password");
					break;
				case "text" :
				default :
					el_input.addClass("text");
					break;
			}; //switch
		}); //each
	}

});

window.addEvent('domready', function() { BF = new BF() } );
