var $j = jQuery.noConflict();

function HZSlider(){
	
	var self = this;
	var slider, container, items, thumbs, left, right, activeItemId, autoModeInterval, textTimeout;
	var animationLength = 400;
	var autoModeLength = 6000;
	var textOpenLength = 4000;
	var thumbWidth = 58;
	var count = 1;
	var buttonClear = true;
	
	this.initialize = function(){
		
		// Find elements and items to work with
		slider = $j("#hz_slider");
		container = $j("#hz_slider_container");
		items = $j("#hz_slider_container .hz_slider_item");
		
		left = {};
		left.direction = 1;
		left.button = $j("#hz_slider_left");
		left.active = left.button.attr("src");
		left.inactive = "/img/hz_slide_pfeil_links_dis.gif";
		
		right = {};
		right.direction = -1;
		right.button = $j("#hz_slider_right");
		right.active = right.button.attr("src");
		right.inactive = "/img/hz_slide_pfeil_rechts_dis.gif"
				
		thumbs = {};
		thumbs.inner = $j("#hz_slider_scroller_innen");
		thumbs.widthInside = 0;
		thumbs.outer = $j("#hz_slider_scroller_aussen");
		thumbs.widthOutside = thumbs.outer.width();
		thumbs.childs = $j("#hz_slider_scroller_innen .hz_slider_thumb");
			
		// init thumb actions
		thumbs.childs.each( function(){
			
			thumbs.widthInside += $j(this).outerWidth();
			thumbs.inner.css( {width: thumbs.widthInside });
									
			$j(this).bind( 'click', function(){
				self.displayItem( $j(this).attr('id'), true );
				self.disableAutoMode();
				self.execWEMF();
			})
		});	
		
		// preload from alt to src attribute, 1 sec after Dom is loaded
		setTimeout( function(){
			items.each( function(){
				var path = "#" + $j(this).attr("id") + " .hz_slider_bild img"
				var it = $j( path );
				if( it.attr("src") == "" ){
					it.attr("src", it.attr("alt"));
				}
			});
		}, 1000 );
		
		self.enableLeftButton( false );
		self.enableRightButton( true );
		if( thumbs.childs.length > 0 ){
			self.displayItem( $j(thumbs.childs[0]).attr("id"), false );
			self.enableAutoMode();
		}
		else{	
			self.displayItem( "hz_001_t", false );
		}
	}
	
	this.enableLeftButton = function( e ){
		if( e ){
			left.button.bind( "click", function(){
				self.moveSlider( left.direction )
				self.disableAutoMode();
			 }).css("cursor", "pointer");
			if( left.button.attr("src") != left.active ){
				left.button.attr( "src", left.active );
			}
		}
		else{
			left.button.bind( "click", function(){} ).css("cursor", "default");
			if( left.button.attr("src") != left.inactive ){
				left.button.attr( "src", left.inactive )
			}
		}
	}
	
	this.enableRightButton = function( e ){
		if( e ){
			right.button.bind( "click", function(){
				self.moveSlider( right.direction );
				self.disableAutoMode();
			 }).css("cursor", "pointer");
			if( right.button.attr("src") != right.active ){
				right.button.attr( "src", right.active )
			}
		}
		else{
			right.button.bind( "click", function(){} ).css("cursor", "default");
			if( right.button.attr("src") != right.inactive ){
				right.button.attr( "src", right.inactive )
			}
		}
	}
	
	this.displayItem = function( id, animate ){
		
		$j("#"+activeItemId+"_t").removeClass("hz_slider_thumb_aktiv");
		$j("#"+id).addClass("hz_slider_thumb_aktiv");
		
		id = id.slice(0,-2);
		count++;
		buttonClear = true;
		
		var item = $j("#"+id);
		var startProps = { width: "0px"};
		var endProps = {width:"100%"};
		
		var text = $j("#"+id+" .hz_slider_text");
		var textStartProps = {left:"372px"};
		var textEndProps = {left:"191px"};
		
		var closeText = function(){
			text.animate(textStartProps, animationLength );
		}
		
		var openText = function( byUser ){
			clearTimeout( textTimeout );
			text.animate(textEndProps, animationLength );
			if( !byUser )
				textTimeout = setTimeout( closeText, textOpenLength );
		}
		
		if( !item  || id == activeItemId ) return;
		
		// set image if not added
		var path = "#" + $j(item).attr("id") + " .hz_slider_bild img"
		var it = $j( path );
		if( it.attr("src") == "" ) it.attr("src", it.attr("alt"));
				
		item.css("display", "block");
		activeItemId = id;
		text.css(textStartProps);
		animate ? item.css(startProps).animate(endProps, animationLength, null, function(){	item.prev().hide()} ) : item.css(endProps);
		container.append( item );
		
		item.bind( "mouseenter", function(){
			openText( true );
			self.disableAutoMode();
		})
		
		item.bind( "mouseleave", function(){
			closeText();
		})
		
		text.bind( "click", function(){
			window.location.href = $j("#"+id+" .hz_slider_bild a").attr('href');
		})
				
		openText();
	}
	
	this.moveSlider = function( direction ){
		
		if( !buttonClear ) return;
		buttonClear = false;
		
		var x = thumbs.inner.position().left;
		var rest = thumbs.widthInside - thumbs.widthOutside;
		var move = rest > thumbWidth ? thumbWidth : rest;

		var p = {
			left: x + ( move * direction )
		};
		
		if(  direction == 1 && x < 0 ) {
			thumbs.inner.animate( p, animationLength )//, null, self.clearButton );	
		}
		else if( direction == -1 && x + thumbs.widthInside > thumbs.widthOutside + 10 ) {
			thumbs.inner.animate( p, animationLength )//, null, self.clearButton  );
		}
		else{
			//self.clearButton();
		}
		
		setTimeout( self.clearButton, 450 );
		self.enableRightButton( !(p.left + thumbs.widthInside -10  < thumbs.widthOutside) )

		if( p.left == 0 ) self.enableLeftButton( false );
		else if( p.left > 0 ) self.enableLeftButton( false );
		else self.enableLeftButton( true );		
	}
	
	this.enableAutoMode = function(){
		autoModeInterval = setInterval( function(){
			
			var nextThumb = $j("#"+activeItemId + "_t").next()

			if( !nextThumb.length){
				nextThumb = $j(thumbs.childs[0]);
				count = 1;
				thumbs.inner.animate( {left: "0px"});
				self.enableLeftButton( false );
				self.enableRightButton( true );
			}
				
			if( count > 6 )
				self.moveSlider(-1);
						
			self.displayItem( nextThumb.attr("id"), true );
			
		}, autoModeLength )
	}
	
	this.disableAutoMode = function(){
		if( autoModeInterval )
			clearInterval( autoModeInterval )
	}
	
	this.clearButton = function(){
		buttonClear = true;
	}
	
	this.execWEMF = function(){
		var WEMF="http://handelsz.wemfbox.ch/cgi-bin/ivw/CP";
		var img = new Image();
		var src = WEMF+"?r="+escape(document.referrer)+"&d="+(Math.random()*100000);
		img.src = src;
	}
}
