(function()
{jQuery.fn.Teaser=function(options)
{var teaser=jQuery(this);var elements=jQuery(this).children();var timer=null;var overview=null;var settings=jQuery.extend({'current':0,'last':null,'overview':null,'title':null,'pause':null,'speed':3000,'stop':false,'mouseOver':true,'timeout':6000,'log':false},options);function init()
{log("Initialize");if(settings.overview!==null)
{overview=jQuery(settings.overview).children();overview.eq(settings.current).addClass('current');overview.hoverIntent({sensitivity:1,interval:50,timeout:300,out:function(){},over:function()
{timer=clearTimeout(timer);settings.current=jQuery(settings.overview+" li").index(this);log("Overview MousOver - Element: "+settings.current);show();}});jQuery(settings.overview).mouseout(function()
{log("Overview MouseOut");timer=clearTimeout(timer);delay();});}
jQuery(elements[settings.current]).fadeIn(settings.speed,function()
{setNext();delay();});}
function log(message)
{if(settings.log==true)
{console.log("Teaser: "+message);}}
function pause()
{log("Pause");settings.stop=true;timer=clearTimeout(timer);}
function resume()
{log("Resume");settings.stop=false;timer=clearTimeout(timer);delay();}
function delay()
{log("Delay");timer=setTimeout(function(){next();},settings.timeout);}
function next()
{log("Next - Current: "+settings.current);if(settings.stop===false)
{show();delay();}}
function setNext()
{settings.last=settings.current;settings.current=(settings.current+1);if(settings.current>=elements.length)
{settings.current=0;}}
function show()
{log("Show");if(settings.overview!==null)
{overview.eq(settings.last).removeClass('current');overview.eq(settings.current).addClass('current');}
jQuery(elements[settings.last]).stop(false,true).fadeOut(settings.speed);jQuery(elements[settings.current]).stop(false,true).fadeIn(settings.speed);setNext();}
setTimeout(function(){init();},100);return teaser.each(function()
{if(settings.mouseOver===true)
{jQuery(this).mouseover(function()
{log("MouseOver");pause();});jQuery(this).mouseout(function()
{log("MouseOut");resume();});}});}})(jQuery);
