(function($) {
	var teaserItems = new Array(), teaserId, teaserBg, curItemNo = -1, outputDiv, outputSide = 'right',cycleIntervall,curInterval;
	var config = {
		itemSelected : 0,
		fadeInSpeed  : 250,
		cycleInterval: 3000,
		useFadeIn : true
	}
	$.extend($.fn, {
		initTeaser: function(){
			// no FadeIn for IE 7.0
			if(jQuery.browser.msie && jQuery.browser.version == '7.0') config.useFadeIn = false;

			teaserId = $(this).attr('id');
			teaserBg = $(this).css('background-image');
			outputDiv = teaserId+'_output';
			this.find('div.fteaser_left').show();
			this.find('div.fteaser_'+outputSide).attr('id', outputDiv);
			this.find('div.fteaser_item')
				.each(function(i, item){
					this.itemno = i;
					$(this).addClass('fteaser_item_normal');
					var htmlContent = $(this).find("div.fteaser_itemcontent").html();
					$(this).find("div.fteaser_itemcontent").html('');

					teaserItems[i] = $(this).html();
					if(htmlContent != null) {
						$(this).html(htmlContent); 
					} else {
						$(this).html($(this).attr("title"));
					}
					if($(this).attr("turl")){
						if($(this).attr("ttarget"))
							$(this).wrap("<a href='"+$(this).attr("turl")+"' target='"+$(this).attr("ttarget")+"'></a>");
						else 
							$(this).wrap("<a href='"+$(this).attr("turl")+"' target='_blank'></a>");
					}

				})
				.bind("mouseover", $(this).itemMouseOver)
				.bind("mouseout", $(this).itemMouseOut)
				.bind("click", $(this).itemClicked)
			cycleInterval = window.setInterval('$(this).nextItem()', config.cycleInterval);
			curInterval = true;
			$(this).showItem(config.itemSelected);
		},
		itemMouseOver: function(){
			curInterval = false;
			if(this.itemno != curItemNo) $(this).showItem(this.itemno, this);
			else{
				$(this).removeClass('fteaser_item_normal');
				$(this).addClass('fteaser_item_mover');
			}
		},
		itemMouseOut: function(){
			//$(this).hideItem(this.itemno);
		},
		itemClicked: function(){
			//$(this).showItem(this.itemno);
		},
		showItem: function(itemno, e){
			if(e == undefined) var e = $.find("div.fteaser_item:eq("+itemno+")");
			$(e).removeClass('fteaser_item_normal');
			$(e).addClass('fteaser_item_mover');
			$(this).hideItem(curItemNo);
			curItemNo = itemno;
			if($(e).attr('bg') != undefined){
				// set background
				$('#'+teaserId).css('background-image', 'url('+$(e).attr('bg')+')');
			} else {
				// std background, as defined in css
				if(teaserBg != undefined) $('#'+teaserId).css('background-image', teaserBg);
				else $('#'+teaserId).css('background-image', '');
			}
			$('#'+outputDiv).hide();
			$('#'+outputDiv).html(teaserItems[itemno]);

			if(config.useFadeIn && config.fadeInSpeed > 0) $('#'+outputDiv).fadeIn(config.fadeInSpeed);
			else $('#'+outputDiv).show();
		},
		hideItem: function(itemno){
			var el = $.find("div.fteaser_item:eq("+itemno+")");
			$(el).removeClass('fteaser_item_mover');
			$(el).addClass('fteaser_item_normal');
		}, 
		nextItem: function(){
			if(curInterval){
				$(this).hideItem(curItemNo);
				if(curItemNo >= teaserItems.length-1) $(this).showItem(0);
				else $(this).showItem(curItemNo+1);
			}
		},
		fteaser: function(myConfig){
			config.itemSelected = myConfig.itemSelected ? myConfig.itemSelected : config.itemSelected;
			config.fadeInSpeed = myConfig.fadeInSpeed ? myConfig.fadeInSpeed : config.fadeInSpeed;
			config.cycleInterval = myConfig.cycleInterval ? myConfig.cycleInterval : config.cycleInterval;
			this.initTeaser();
		}
	});
})(jQuery);
