// AVOID CONFLICTS WITH ADDITIONAL FRAMEWORKS
$.noConflict();


var VIERUNDZWANZIG = (function(module, $, window, document, undefined){

/*
 * DEFINITION OF RELEVANT VALUES & SELECTORS
----------------------------------------------------------------------- */

	var CSS_CLASSES	= {
			INITIALIZED	: "initialized",
			SELECTED	: "selected",
			OFFSITE		: "offsite",
			CURRENT		: "current"
		},


		SELECTORS	= {

			BTNS		: {

				BTN_CTRL_CAPTION	: ".ctrl-caption"
			},

			WRAPPERS	: {
				
				HEADER_SLIDESHOW	: "#sliderHead",
				WRAP_SLIDESHOW		: ".wrap-slideshows",
				SLIDESHOW			: ".slideshow",
				SLIDE				: ".slide",
				CAPTION				: ".caption"
			}
		},


		RELINKED_BTNS		= {
			
		},


		$ROOT		= $(document);



/*
 * HELPER FUNCTIONS:
----------------------------------------------------------------------- */

	function prevent_LinkBubbles(btn_selector) {

		$ROOT.delegate(btn_selector, 'click', function(e){

			e.preventDefault();
		});
	}



/*
 * INIT / FAILSAVE HELPER FUNCTIONS:
----------------------------------------------------------------------- */



/*
 * CUSTOM / EVENT-RELATED FUNCTIONS:
----------------------------------------------------------------------- */








/*
 * BUTTON-RELATED FUNCTIONS:
----------------------------------------------------------------------- */

	function btn_Event_Logic_HoverCaption($btn, sel_caption) {

		$btn.find("img")
				.stop()
					.animate({ opacity: 1 }, 300);

		$btn.find(sel_caption)
				.stop()
				.animate({ bottom: 0 }, 300);
	}


	function btn_Event_Logic_LeaveCaption($btn, sel_caption) {

		$btn.find("img")
				.stop()
					.animate({ opacity: 0.6 }, 300);

		$btn.find(sel_caption)
				.stop()
				.animate({ bottom: -100 }, 300);
	}



/*
 * CONTROL ASSIGNMENT OF BUTTON-EVENT-RELATED FUNCTIONS:
----------------------------------------------------------------------- */

	// REMOVE LINK DEFAULT BEHAVIOURS
	function immediate_PreventLinkBubbles() {

		var all_btns		= RELINKED_BTNS,
			btn				= "",
			btn_selector	= "";

		for (btn in all_btns) {

			btn_selector	= all_btns[btn];

			prevent_LinkBubbles(btn_selector);
		}
	}


	// IF XYZ IS AVAILABLE ADD RELATED LOGIC
	function add_BtnLogic_SlideHovers() {

		var wrappers			= SELECTORS.WRAPPERS,
			header_slideshow	= wrappers.HEADER_SLIDESHOW,
			caption				= wrappers.CAPTION,
			btn_caption			= SELECTORS.BTNS.BTN_CTRL_CAPTION,

			$header_slideshow	= $(header_slideshow),
			$btn_caption		= $header_slideshow.find(btn_caption);


		if ($btn_caption.length) {

			// ON HOVER
			$ROOT.delegate(btn_caption, 'mouseenter', function(){

				btn_Event_Logic_HoverCaption($(this), caption);
			});

			// ON OUT
			$ROOT.delegate(btn_caption, 'mouseleave', function(){

				btn_Event_Logic_LeaveCaption($(this), caption);
			});
		}
	}


/*
 * SUB INIT-FUNCTIONS & PAGE START-APPEARANCE:
----------------------------------------------------------------------- */

	function init_StartAppearance_SlideHovers($head_slideshow) {

		var css_initialized	= CSS_CLASSES.INITIALIZED,
			wrappers		= SELECTORS.WRAPPERS,
			slideshow		= wrappers.SLIDESHOW,
			slide			= wrappers.SLIDE;

		// INIT
		$head_slideshow
			.find(slide)
				.find("img")
					.animate({ opacity: 0.6 }, 0)
				.end()
			.end()
			.find(slideshow).addClass(css_initialized);
	}


	function init_HeaderSlideshows() {

		var	wrappers		= SELECTORS.WRAPPERS,
			head_slideshow	= wrappers.HEADER_SLIDESHOW,
			slideshow		= wrappers.SLIDESHOW,

			$head_slideshow	= $(head_slideshow);

		if ($head_slideshow.length) {

			$head_slideshow.find(slideshow).cycle({
				fx			: 'fade',
				speed		: 2000,
				timeout		: 6500,
				pause		: 1	/* pause on hover */
			});
		}

	}



/*
 * MAIN INIT-FUNCTION & PAGE START-APPEARANCE:
----------------------------------------------------------------------- */

	function init_SlideHovers() {

		var head_slideshow	= SELECTORS.WRAPPERS.HEADER_SLIDESHOW,
			$head_slideshow	= $(head_slideshow);

		// IF TOGGLELISTS EXIST
		if ($head_slideshow.length) {

			init_StartAppearance_SlideHovers($head_slideshow);
			
			add_BtnLogic_SlideHovers();
		}
	}


	// INIT & ADD ALL PAGE FEATURES:
	function init_Page() {

		// immediate_PreventLinkBubbles();

		init_SlideHovers();

		init_HeaderSlideshows();
		
		if ($("#dvd-form").length > 0) {
		
			$("body").delegate("h1#lieferadresse","click",function(){
				
				$("#new_adress").toggle();
				
			});
			
			
			$.tools.validator.localize("de", {
				':email'  		: '<div><em/></div>Bitte geben Sie eine gültige Email-Adresse ein',
				':number' 		: '<div><em/></div>Bitte geben Sie eine Zahl ein',
				'[max]'	 		: '<div><em/></div>Bitte geben Sie eine kleinere Zahl als $1 ein',
				'[min]'	 		: '<div><em/></div>Mindestens $1 erforderlich',
				'[required]' 	: '<div><em/></div>Feld ist erforderlich'
			});	
			
			$("#dvd-form").validator({messageClass: 'cof-error', lang: 'de'});
			
			//alert("form");
		
		}
	}




/*
 * MAKE VARIABLES/FUNCTIONS PUBLIC & ACCESSIBLE FROM THE OUTSIDE
----------------------------------------------------------------------- */

	// PUBLIC FUNCTIONS
	module.init_Page	= init_Page;


	return module;


}(VIERUNDZWANZIG || {}, jQuery, window, document));





/* --------------------------------------------------------------------
	INITIALIZE ALL JAVASCRIPT
-------------------------------------------------------------------- */

jQuery(document).ready(function($) {

	VIERUNDZWANZIG.init_Page();

    /*
    $('.slideshow').cycle({
	
		fx: 'fade',
		speed: 4500
		
	});
	*/
	
	
	//$("#sliderHomeTooltip img[title]").tooltip();
	//$("#sliderHomeTooltip .sliderHeadItem img").tooltip();
	
	/*
	$("#sliderHomeTooltip .sliderHeadItem img").tooltip({
		 
		position: "bottom left",
	
		offset: [-20, -315],
	
		effect: "toggle"	
		
	});
	*/
	
	$("#SliderContainerNew").scrollable({circular: false}).navigator();
	
});
