//

//function Pager( id ){
//	
//	var pagerInstance = this;
//
//	/**
//	 * Datenfelder
//	 **/	
//	this.id							= null;
//	this.container					= null;
//	this.scrollDiv					= null;
//	this.countItems 				= null;
//	this.itemWidth  				= null;
//	this.positionNumberOfActiveItem = null;
//	this.scrollTime 				= null;
//	this.cssClassName_hi			= null;
//	this.cssClassName_lo			= null;
//	
//	this.activeItem					= null;
//	this.firstItemFake				= null;
//	this.lastItemFake				= null;
//	this.leftDots					= null;
//	this.rightDots					= null;
//	this.leftDotsContent			= null;
//	this.rightDotsContent			= null;
//	
//	this.jcarouselId				= null;
//	this.jcarouselInstance			= null;
//	this.tmpItemNrForInitCallback	= null;
//	
//	this.autoInteval				= null;
//	this.autoIntervalCode			= null;
//	this.autoIntervalDelay			= null;
//	this.autoIntervalOverStop		= [];
//	this.autoIntervalOverStopRegistered = [];
//	/**
//	 * Methoden
//	 **/	
//	
//	this.autoStart = function() {
//		if(this.autoInterval) window.clearInterval(this.autoInterval);
//		if(this.autoIntervalCode&&this.autoIntervalDelay)
//			this.autoInterval = window.setInterval(this.autoIntervalCode,this.autoIntervalDelay);
//	}
//	this.autoStop = function(){
//		if(this.autoInterval) window.clearInterval(this.autoInterval);
//	}
//		
//	
//	 
//	this.showLastItemFake			= function( yes ){
//		if(!this.lastItemFake){
//			$('#'+this.id).children('a.pagerLastItemFake').remove();
//			var tmp = $('#'+this.id+' div div').children('a:last').clone()
//							.removeAttr('href')
//							.removeClass(this.cssClassName_hi)
//							.addClass(this.className_lo)
//							.css({'z-index':1,'position':'absolute','left':($(this.container).width()-this.itemWidth)+'px'})
//							.hover(	function(){jQuery(this).removeClass(pagerInstance.cssClassName_lo).addClass(pagerInstance.cssClassName_hi);$(this).css('background-image',$(this).css('background-image').replace(/_lo/,'_hi'));},
//									function(){jQuery(this).removeClass(pagerInstance.cssClassName_hi).addClass(pagerInstance.cssClassName_lo);$(this).css('background-image',$(this).css('background-image').replace(/_hi/,'_lo'));})
//							.click(	function(){jQuery(pagerInstance.scrollDiv).children('a:last').trigger('click');});
//			tmp.css('background-image',tmp.css('background-image').replace(/_hi/,'_lo'));
//			this.lastItemFake = tmp.get(0);			
//			$(this.container).after( tmp );
//		}
//		if(yes)	$(this.lastItemFake).show();		
//		else $(this.lastItemFake).hide();
//	}
//	this.showFirstItemFake			= function( yes ){
//		if(!this.firstItemFake){
//			$('#'+this.id).children('a.pagerFirstItemFake').remove();
//			var tmp = $('#'+this.id+' div div').children('a:first').clone()
//							.removeAttr('href')
//							.removeClass(this.cssClassName_hi)
//							.addClass(this.className_lo)
//							.hover(	function(){jQuery(this).removeClass(pagerInstance.cssClassName_lo).addClass(pagerInstance.cssClassName_hi);$(this).css('background-image',$(this).css('background-image').replace(/_lo/,'_hi'));},
//									function(){jQuery(this).removeClass(pagerInstance.cssClassName_hi).addClass(pagerInstance.cssClassName_lo);$(this).css('background-image',$(this).css('background-image').replace(/_hi/,'_lo'));})
//							.click(	function(){jQuery(pagerInstance.scrollDiv).children('a:first').trigger('click');});
//			tmp.css('background-image',tmp.css('background-image').replace(/_hi/,'_lo'));
//			this.firstItemFake = tmp.get(0);			
//			$(this.container).after( tmp );
//		}
//		if(yes)	$(this.firstItemFake).show();		
//		else $(this.firstItemFake).hide();
//	}
//	this.showLeftDots			= function( yes ){
//		if(!this.leftDots){
//			$('#'+this.id).children('a.pagerLeftDots').remove();
//			var tmp = $('<a></a>').css({'z-index':1,'position':'absolute','left':this.itemWidth}).addClass('pagerLeftDots').text(this.leftDotsContent);
//			this.leftDots = tmp.get(0);			
//			$(this.container).after( tmp );
//		}
//		if(yes)	$(this.leftDots).show();		
//		else $(this.leftDots).hide();
//	}
//	this.showRightDots			= function( yes ){
//		if(!this.rightDots){
//			$('#'+this.id).children('a.pagerRightDots').remove();
//			var tmp = $('<a></a>').css({'z-index':1,'position':'absolute','left':($(this.container).width()-2*this.itemWidth)}).addClass('pagerLeftDots').text(this.rightDotsContent);
//			this.rightDots = tmp.get(0);
//			$(this.container).after( tmp );
//		}
//		if(yes)	$(this.rightDots).show();		
//		else $(this.rightDots).hide();
//	}
//	this.sliceItems					= function( left, right ){
//		if(!left) left = 0; if(!right) right=0;
//		$(this.container).css('clip','rect(0px '+($(this.container).width()-right*this.itemWidth)+'px '+$(this.container).height()+'px '+(left*this.itemWidth)+'px)');
//	}
//	this.activateItem				= function( nr ){
//		if($(this.container).width()<this.countItems*this.itemWidth){
//			var scrollTime = this.scrollTime;
//			if(this.activeItem!=null){
//				jQuery(this.activeItem).removeClass(this.cssClassName_hi).addClass(this.cssClassName_lo);
//				jQuery(this.activeItem).css('background-image',jQuery(this.activeItem).css('background-image').replace(/_hi/,"_lo"));				
//			}
//			this.activeItem = jQuery(this.scrollDiv).children().get(nr-1);
//			jQuery(this.activeItem).addClass(this.cssClassName_hi);
//			jQuery(this.activeItem).css('background-image',jQuery(this.activeItem).css('background-image').replace(/_lo/,"_hi"));
//			var itemWidth = this.itemWidth;
//			var left = -(nr*itemWidth-itemWidth-(this.positionNumberOfActiveItem*itemWidth-itemWidth));
//			var minleft = $(this.container).width()-(this.countItems*itemWidth)
//			var maxleft = 0;
//			if(left>maxleft) left = maxleft;
//			else if(left<minleft) left = minleft;
//			jQuery(this.scrollDiv).stop().animate( { 'left' : left }, scrollTime );
//			if( left==minleft && left==maxleft ){ this.showLeftDots(false); this.showRightDots(false); this.sliceItems(0,0); this.showFirstItemFake(false); this.showLastItemFake(false); }
//			else if( left==minleft ){ this.showLeftDots(true); this.showRightDots(false); this.sliceItems(2,0); this.showFirstItemFake(true); this.showLastItemFake(false); }
//			else if( left==maxleft ){ this.showLeftDots(false); this.showRightDots(true); this.sliceItems(0,2); this.showFirstItemFake(false); this.showLastItemFake(true); }
//			else { this.showLeftDots(true); this.showRightDots(true); this.sliceItems(2,2); this.showFirstItemFake(true); this.showLastItemFake(true); }
//		}else{
//			if(this.activeItem!=null){ 
//				jQuery(this.activeItem).removeClass(this.cssClassName_hi).addClass(this.cssClassName_lo);
//				jQuery(this.activeItem).css('background-image',jQuery(this.activeItem).css('background-image').replace(/_hi/,"_lo"));
//			}
//			this.activeItem = jQuery(this.scrollDiv).children().get(nr-1);
//			jQuery(this.activeItem).addClass(this.cssClassName_hi);			
//			jQuery(this.activeItem).css('background-image',jQuery(this.activeItem).css('background-image').replace(/_lo/,"_hi"));
//		}		
//	}
//	
//	this.createJCarouselInstance = function(){
//		$('#'+this.jcarouselId).jcarousel({scroll: 1, initCallback: this.jcarouselInitCallback});
//	}
//	
//	this.itemClick = function( itemNr ){
//		this.activateItem(itemNr);
//		if(this.jcarouselId != null){
//			if(this.jcarouselInstance==null){
//				//this.tmpItemNrForInitCallback = itemNr;
//				this.createJCarouselInstance();
//			}
//			this.jcarouselInstance.scroll(jQuery.jcarousel.intval(itemNr));
//		}
//	}
//	this.jcarouselInitCallback = function(jcarousel){
//		pagerInstance.jcarouselInstance = jcarousel;
//	}
//	
//	this.getNextActiveItemNr = function(){
//		var nextItem = 1;
//		var activeItemNr = $(this.scrollDiv).children().index(this.activeItem)+1;
//		if(activeItemNr>0 && activeItemNr+1<=this.countItems) nextItem = activeItemNr+1;
//		return nextItem;
//	}
//	
//	this.clickNextItem = function(){
//		this.itemClick( this.getNextActiveItemNr() );
//	}
//	
//	this.autoClickNextItem = function(){
//		if(this.autoIntervalOverStopRegistered.length < this.autoIntervalOverStop.length){
//			var i; var y;
//			for( i in this.autoIntervalOverStop ){
//				var reg = false;
//				for(y in this.autoIntervalOverStopRegistered){
//					if(this.autoIntervalOverStop[i]==this.autoIntervalOverStopRegistered[y])
//						reg = true;
//				}
//				if(!reg)this.autoIntervalOverStopRegistered.push(this.autoIntervalOverStop[i]);
//				var ename = this.autoIntervalOverStop[i];
//				$('#'+ename).mouseover(function(){pagerInstance.autoStop();}).mouseout(function(){pagerInstance.autoStart()});
//			}
//		}
//		this.clickNextItem();
//	}
//		
//	this.addAutoStopOverElement = function( id ){
//		this.autoIntervalOverStop.push(id);
//	}
//	
//	this.event_item_mousein 	= function(){ 
//		//var nr = $(this).parent().children().index(this)+1;
//		//$(this).css('background-image','url(/tpl/wpp09/images/paging_images/paging_'+nr+'_white_hi.gif)');	
//		$(this).css('background-image',$(this).css('background-image').replace(/_lo/,'_hi'));	
//	}
//	this.event_item_mouseout 	= function(){ 
//		var nr = $(this).parent().children().index(this)+1;
//		if( this!=pagerInstance.activeItem ){
//			//$(this).css('background-image','url(/tpl/wpp09/images/paging_images/paging_'+nr+'_white_lo.gif)');
//			$(this).css('background-image',$(this).css('background-image').replace(/_hi/,'_lo'));
//		}
//	} 
//		
//	/**
//	 * Initialisierungen	
//	 **/
//	this.id							= id;
//	this.container					= jQuery('#'+id).children('div.pagerContainer').get(0);
//	this.scrollDiv					= jQuery(this.container).children('div').get(0);
//	this.countItems 				= jQuery(this.scrollDiv).children().size();
//	this.itemWidth  				= jQuery(this.scrollDiv).width()/this.countItems;
//	this.positionNumberOfActiveItem = Math.round( $(this.container).width()/this.itemWidth/2 );
//	this.scrollTime 				= 'fast';
//	this.cssClassName_hi			= 'pi_hi';
//	this.cssClassName_lo			= 'pi_lo';
//	this.leftDotsContent			= '....';
//	this.rightDotsContent			= '....';
//	
//				
//	// Durchlaufe Items	
//	$('#'+this.id+' div.pagerContainer div').children().each(function(index){
//		var item = this;
//		// onclick Event Registrieren
//		$(this)
//			.click( function(){
//				//$(item).blur();
//				pagerInstance.itemClick( $(this).parent().children().index(this)+1 );
//			})
//			.focus ( function(){
//				$(this).blur();
//			});		
//		//$(this).hover( function(){ $(this).addClass(pagerInstance.cssClassName_hi).removeClass(pagerInstance.cssClassName_lo); }, function(){ $(this).addClass(pagerInstance.cssClassName_lo).removeClass(pagerInstance.cssClassName_hi); $(pagerInstance.activeItem).addClass(pagerInstance.cssClassName_hi); } )
//		$(this).hover(pagerInstance.event_item_mousein,pagerInstance.event_item_mouseout);
//		
//		// ggf. activeItem ermitteln
//		if( $(this).hasClass(pagerInstance.cssClassName_hi) ){
//			pagerInstance.activeItem = this;
//		}
//	});
//	$('#'+this.id+' > a[class*=pagerLastItemFake]').each(function(index){
//		$(this).hover	( 	function(){ 
//								$(this).addClass(pagerInstance.cssClassName_hi)
//								       .removeClass(pagerInstance.cssClassName_lo)
//                                       .css('background-image',$(this).css('background-image').replace(/_lo/,'_hi'));
//								 
//							}, 
//							function(){ 
//								$(this).addClass(pagerInstance.cssClassName_lo)
//								       .removeClass(pagerInstance.cssClassName_hi)
//									   .css('background-image',$(this).css('background-image').replace(/_hi/,'_lo')); 
//								$(pagerInstance.activeItem).addClass(pagerInstance.cssClassName_hi); 
//							} 
//		);
//	});
//	$('#'+this.id+' > a[class*=pagerFirstItemFake]').each(function(index){
//		$(this).hover	(	function(){ 
//								$(this).addClass(pagerInstance.cssClassName_hi)
//								       .removeClass(pagerInstance.cssClassName_lo)
//								       .css('background-image',$(this).css('background-image').replace(/_lo/,'_hi'));
//							 }, 
//							 function(){ 
//							 	$(this).addClass(pagerInstance.cssClassName_lo)
//								 	   .removeClass(pagerInstance.cssClassName_hi)
//								 	   .css('background-image',$(this).css('background-image').replace(/_hi/,'_lo'));
//							 	$(pagerInstance.activeItem).addClass(pagerInstance.cssClassName_hi); 
//							 } 
//		);
//	});
//}


simplePagerConfig = function(){
	this.mouseOverEvents = [];
	this.mouseOutEvents  = [];
	this.clickEvents	 = [];
	this.classes		 = [];
	this.css			 = {};
	this.attributes		 = {};
}
	
simplePager = function( id ){
	var self  = this;
	
	this.id 		= id;
	this.items 		= [];
	
	this.maxItems 	= 7;
	this.activeItem = 30;
	
	this.itemClass = "pagerItem";
	this.activeItemClass = "activePagerItem";
	this.lastItemClass = "lastPagerItem";
	this.firstItemClass = "firstPagerItem";
	
	this.firstDisplayClass = "firstDisplayPagerItem";
	this.lastDisplayClass  = "lastDisplayPagerItem";
	
	this.jcarouselId				= null;
	this.jcarouselInstance			= null;
	this.tmpItemNrForInitCallback	= null;
	this.createJCarouselInstance = function(){
		$('#'+this.jcarouselId).jcarousel({scroll: 1, initCallback: this.jcarouselInitCallback});
	}
	this.jcarouselInitCallback = function(jcarousel){
		self.jcarouselInstance = jcarousel;
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	this.autonextDelay	  			= false;	// Wartezeit
	this.autonextInterval 			= false;  	// Object
	this.autonextCode				= false;  	// JS-Code der ausgeführt werden soll
	this.autonextOverstopElements	= [];
	this.autonextOverstopElementsBounded = [];
	this.autonextOverstop			= false;	// regler, der dynamisch autonext stoppt
	this.autonextStart = function() {
		if(this.autonextInterval) window.clearInterval(this.autonextInterval);
		if(this.autonextCode && this.autonextDelay)
			this.autonextInterval = window.setInterval(this.autonextCode,this.autonextDelay);
	}
	this.autonextStop = function(){
		if(this.autonextInterval) window.clearInterval(this.autoInterval);
	}
	this.autonextAction = function(){
		if(!self.autonextOverstop){   //self.clickItem( self.getNextItemNr() );
			self.activeItem = self.getNextItemNr();
			self.render();
			if(self.jcarouselId != null){
				self.jcarouselInstance.scroll(jQuery.jcarousel.intval(self.activeItem));
			}
		}
	}
	
	
	this.getNextItemNr = function(){
		var nextItem = this.activeItem+1;
		if( nextItem > this.items.length ) nextItem = 1;
		return nextItem;
	}
	
	this.jcarouselId				= null;
	this.jcarouselInstance			= null;
	this.tmpItemNrForInitCallback	= null;
	
	this.clickNextItem = function(){
		this.clickItem( this.getNextActiveItemNr() );
	}
	
	this.getDisplayInterval = function(){
		if( this.maxItems>=this.items.length ) return { "first":1, "last":this.items.length };
		var activeItemPosition = Math.ceil(this.maxItems/2);
		var first = this.activeItem-activeItemPosition+1;
		var last  = this.activeItem+(this.maxItems-activeItemPosition);
		if( last>this.items.length ){
			first -= last-this.items.length;
			last   = this.items.length;
		}else if( first < 1 ){
			last  += -first+1;
			first  = 1;
		}
		return { "first":first, "last":last };
	}
	
	
	this.addItem = function( simplePagerConfig ){
		simplePagerConfig.nr = this.items.length+1;
		this.items.push( simplePagerConfig );
	}
	
	this.item2dom = function( simplePagerConfig ){
		var item = $('<a>'+simplePagerConfig.nr+'</a>');
		for(var i=0; i<simplePagerConfig.mouseOverEvents.length; i++)
			item.mouseover( simplePagerConfig.mouseOverEvents[i] );
		for(var i=0; i<simplePagerConfig.mouseOutEvents.length; i++)
			item.mouseout( simplePagerConfig.mouseOverEvents[i] );
		for(var i=0; i<simplePagerConfig.clickEvents.length; i++)
			item.click( simplePagerConfig.clickEvents[i] );
		item.attr( simplePagerConfig.attributes );
		item.css( simplePagerConfig.css );
		for(var i=0; i<simplePagerConfig.classes.length; i++)
			item.addClass(simplePagerConfig.classes[i]);
		return item;
	}
	
	this.render = function(){
		var pager = $('#'+self.id).html("");
		var interval = self.getDisplayInterval();
		for(var i=interval.first-1; i<interval.last; i++){
			if( i==interval.first-1 && self.items[i].nr!=1 ){
				var item = self.item2dom( self.items[0] )
				item.removeClass( self.itemClass + " " + self.activeItemClass + " " + self.lastItemClass + " " + self.firstItemClass )
					.addClass( self.firstItemClass )
					.addClass( self.firstDisplayClass )
					.click(function(){ 
						self.activeItem = 1; 
						if(self.jcarouselId != null) self.jcarouselInstance.scroll(jQuery.jcarousel.intval(self.activeItem))
						self.render();
					});
			}else if( i==interval.last-1 && self.items[i].nr!=self.items.length ){
				var item = self.item2dom( self.items[self.items.length-1] );
				item.removeClass( self.itemClass + " " + self.activeItemClass + " " + self.lastItemClass + " " + self.firstItemClass )
					.addClass( self.lastItemClass )
					.addClass( self.lastDisplayClass )
					.click(function(){ 
						self.activeItem = self.items.length; 
						if(self.jcarouselId != null) self.jcarouselInstance.scroll(jQuery.jcarousel.intval(self.activeItem))
						self.render(); 
					});
			}else {
				var item = self.item2dom( self.items[i] );
				item.removeClass( self.itemClass + " " + self.activeItemClass + " " + self.lastItemClass + " " + self.firstItemClass );
				if( self.activeItem==(i+1) ) item.addClass( self.activeItemClass );
				else item.addClass( self.itemClass );
				if( i==interval.first-1 ) item.addClass( self.firstDisplayClass );
				if( i==interval.last-1 ) item.addClass( self.lastDisplayClass );
				item.click(function(){ 
					self.activeItem = parseInt($(this).html()); 
					if(self.jcarouselId != null) self.jcarouselInstance.scroll(jQuery.jcarousel.intval(self.activeItem))
					self.render(); 
				});
			}

			pager.append( item );
		}
	}
	
		
}