/* jSlide pludin for jQuery * created by EMVI Develop * http://www.emvi.de/develop.html */ (function(jQuery){jQuery.fn.jSlide=function(settings){settings=jQuery.extend({time:7,play:false,loop:false,control:'auto',controlButton:'clearL,stop,clearM,prev,playbreak,next,clearM,loop,clearR',caption:false,count:false,thumbs:false,style:{},data:false},settings);settings.style=jQuery.extend({'jGUI':false,'image-width':600,'image-height':400,'thumb-width':180,'thumb-scroll':15,'control-width':36,'control-height':50,'control-align':'center','control-bottom':30,'info-height':30},settings.style);if(settings.style['jGUI']&&!jQuery.isObject(settings.style['jGUI'])&&jQuery.jGUI){settings.style=jQuery.extend(settings.style,jQuery.jGUI('jSlide',settings.style['jGUI']));}else{settings.style['jGUI']={};};return this.each(function(){if(!jQuery(this).is('.jSlideContainer')&&settings.data.length){settings.controlButton=settings.controlButton.split(',');if(settings.time<2)settings.time=2;if(settings.time>60)settings.time=60;settings.time*=1000;var v={s:settings,cS:settings.style,'buttons':new Array(),'slide':{imgPos:-1,imgTimer:0,ctrlFade:false,ctrlDisabled:false,ctrlTimer:2500}};var $this=$(this);var $container=jQuery('<div></div>').addClass('jSlideContainer').css(jQuery.isObject(v.cS['jGUI']['this'])?v.cS['jGUI']['this']:{}).css({'position':'relative','width':(v.cS['image-width']+v.cS['thumb-width'])+'px','height':(v.cS['image-height']+v.cS['info-height'])+'px'});$this.html($container);var $thumbs=jQuery('<div></div>').attr({'class':'jSlideThumbs'}).css(jQuery.isObject(v.cS['jGUI']['thumbs'])?v.cS['jGUI']['thumbs']:{}).css({'position':'absolute','top':'0px','right':'0px','width':v.cS['thumb-width']+'px','height':(v.cS['image-height']+v.cS['info-height'])+'px','overflow':'auto'}).appendTo($container);var $info=jQuery('<div></div>').attr({'class':'jSlideInfo'}).css(jQuery.isObject(v.cS['jGUI']['info'])?v.cS['jGUI']['info']:{}).css({'position':'absolute','bottom':'0px','left':'0px','width':v.cS['image-width']+'px','height':v.cS['info-height']+'px'}).appendTo($container);var $caption=jQuery('<span></span>').attr({'class':'jSlideCaption'}).css(jQuery.isObject(v.cS['jGUI']['caption'])?v.cS['jGUI']['caption']:{}).appendTo($info);var $count=jQuery('<span></span>').attr({'class':'jSlideCount'}).css(jQuery.isObject(v.cS['jGUI']['count'])?v.cS['jGUI']['count']:{}).appendTo($info);var $box=jQuery('<div></div>').attr({'class':'jSlideBox'}).css(jQuery.isObject(v.cS['jGUI']['box'])?v.cS['jGUI']['box']:{}).css({'position':'absolute','top':'0px','left':'0px','width':v.cS['image-width']+'px','height':v.cS['image-height']+'px'}).bind('click',function(){v['slide'].ctrlTimer=2500}).bind('mousemove',function(){v['slide'].ctrlTimer=2500}).bind('mouseout',function(){v['slide'].ctrlTimer=0}).appendTo($container);var $imgPrev=jQuery('<div></div>').css({'position':'absolute','top':'0px','left':'0px','width':v.cS['image-width']+'px','height':v.cS['image-height']+'px','overflow':'hidden'}).appendTo($box);var $imgCurrent=jQuery('<div></div>').css({'position':'absolute','top':'0px','left':'0px','width':v.cS['image-width']+'px','height':v.cS['image-height']+'px','overflow':'hidden'}).appendTo($box);var $control=jQuery('<div></div>').attr({'class':'jSlideControl'}).css(jQuery.isObject(v.cS['jGUI']['control'])?v.cS['jGUI']['control']:{}).css({'position':'absolute','left':'0px','bottom':v.cS['control-bottom'],'width':v.cS['image-width']+'px','height':v.cS['control-height']+'px','text-align':v.cS['control-align']}).appendTo($box);if(settings.thumbs){for(i in settings.data){jQuery('<img>').attr({'class':'jSlideThumb','src':settings.data[i]['thumb'],'title':(settings.data[i]['title']||''),'alt':(settings.data[i]['title']||'')}).css(jQuery.isObject(v.cS['jGUI']['thumb'])?v.cS['jGUI']['thumb']:{}).css({'position':'relative','display':'block','cursor':'pointer','width':(v.cS['thumb-width'])+'px','height':'auto'}).bind('click',{i:i},function(event){if(!v['slide'].ctrlDisabled){v['slide'].imgPos=event.data.i-1;v['slide'].imgTimer=0;}}).appendTo($thumbs);}};for(i in settings.controlButton){switch(jQuery.trim(settings.controlButton[i])){case'clearL':jQuery('<span></span>').attr({'class':'jSlideControl jSlideControlClearL'}).css(jQuery.isObject(v.cS['jGUI']['clearL'])?v.cS['jGUI']['clearL']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).appendTo($control);break;case'clearM':jQuery('<span></span>').attr({'class':'jSlideControl jSlideControlClearM'}).css(jQuery.isObject(v.cS['jGUI']['clearM'])?v.cS['jGUI']['clearM']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).appendTo($control);break;case'clearR':jQuery('<span></span>').attr({'class':'jSlideControl jSlideControlClearR'}).css(jQuery.isObject(v.cS['jGUI']['clearR'])?v.cS['jGUI']['clearR']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).appendTo($control);break;case'stop':if(jQuery.inArray('stop',v['buttons'])==-1){var $controlStop=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlStop','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['stop'])?v.cS['jGUI']['stop']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onStop(event)}).appendTo($control);v['buttons'].push('stop');}break;case'prev':if(jQuery.inArray('prev',v['buttons'])==-1){var $controlPrev=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlPrev','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['prev'])?v.cS['jGUI']['prev']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onPrev(event)}).appendTo($control);v['buttons'].push('prev');}break;case'next':if(jQuery.inArray('next',v['buttons'])==-1){var $controlNext=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlNext','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['next'])?v.cS['jGUI']['next']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onNext(event)}).appendTo($control);v['buttons'].push('next');}break;case'play':if(jQuery.inArray('play',v['buttons'])==-1&&jQuery.inArray('playbreak',v['buttons'])==-1){var $controlPlay=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlPlay','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['play'])?v.cS['jGUI']['play']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onPlay(event)}).appendTo($control);v['buttons'].push('play');}break;case'break':if(jQuery.inArray('break',v['buttons'])==-1&&jQuery.inArray('playbreak',v['buttons'])==-1){var $controlPbreak=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlBreak','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['break'])?v.cS['jGUI']['break']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onPlay(event)}).appendTo($control);v['buttons'].push('break');}break;case'playbreak':if(jQuery.inArray('playbreak',v['buttons'])==-1&&jQuery.inArray('play',v['buttons'])==-1&&jQuery.inArray('break',v['buttons'])==-1){var $controlPlaybreak=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlPlay','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['play'])?v.cS['jGUI']['play']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onPlay(event)}).appendTo($control);v['buttons'].push('playbreak');}break;case'loop':if(jQuery.inArray('loop',v['buttons'])==-1){var $controlLoop=jQuery('<a></a>').attr({'class':'jSlideControl jSlideControlLoop','href':'javascript:;'}).css(jQuery.isObject(v.cS['jGUI']['loop'])?v.cS['jGUI']['loop']:{}).css({'position':'relative','display':'inline-block','width':v.cS['control-width']+'px','height':v.cS['control-height']+'px'}).bind('click',function(event){onLoop(event)}).appendTo($control);v['buttons'].push('loop');}break;}};var controlFadeIn=function(){v['slide'].ctrlFade='in';$control.stop().fadeTo(500,1,function(){v['slide'].ctrlFade=false});};var controlFadeOut=function(){v['slide'].ctrlFade='out';$control.stop().fadeOut(500,function(){v['slide'].ctrlFade=false});};var slide=function(){if(!v['slide'].ctrlDisabled){v['slide'].ctrlDisabled=true;v['slide'].imgPos++;if(v['slide'].imgPos>(settings.data.length-1)&&settings.loop){v['slide'].imgPos=0;}else if(v['slide'].imgPos>(settings.data.length-1)){v['slide'].ctrlDisabled=false;onStop();return;}else if(v['slide'].imgPos<0){v['slide'].imgPos=settings.data.length-1;}var lade=new Image();lade.onerror=function(){v['slide'].ctrlDisabled=false;slide();};lade.onload=function(){var W=lade.width;var H=lade.height;var deltaW=v.cS['image-width']-W;var deltaH=v.cS['image-height']-H;if(deltaW<0||deltaH<0){if(deltaW<deltaH){var z=v.cS['image-width']/lade.width;W=v.cS['image-width'];H=lade.height*z;}else{var z=v.cS['image-height']/lade.height;W=lade.width*z;H=v.cS['image-height'];}};var X=(v.cS['image-width']-W)/2;var Y=(v.cS['image-height']-H)/2;var caption=settings.data[v['slide'].imgPos][settings.caption]||(settings.data[v['slide'].imgPos]['title']||'');var count=(v['slide'].imgPos+1)+' / '+settings.data.length;var tmp=jQuery('<img>').attr({'src':lade.src,'alt':caption}).css({'position':'relative','width':W+'px','heigth':H+'px','margin':Y+'px '+X+'px'});$imgPrev.html($imgCurrent.html()).css({'display':'block'}).fadeOut(1300);$imgCurrent.html(tmp).css({'display':'none'}).fadeIn(1300);$caption.text('');$count.text('');window.setTimeout(function(){$this.css({});$caption.text((caption||''));$count.text((count||''));v['slide'].ctrlDisabled=false;if(settings.play){v['slide'].imgTimer=settings.time;};},1300);};lade.src=settings.data[v['slide'].imgPos]['src'];}};var auto=function(){if(v['slide'].ctrlTimer==0&&settings.control=='auto'){controlFadeOut()}else if(v['slide'].ctrlTimer>0&&!v['slide'].ctrlFade){controlFadeIn()}if(v['slide'].imgTimer==0){slide();};v['slide'].imgTimer-=100;v['slide'].ctrlTimer-=100;window.setTimeout(function(){auto()},100);};var onControl=function(){};var onPlay=function(event){if(!v['slide'].ctrlDisabled){if(settings.play){settings.play=false;v['slide'].imgTimer=-100;if(jQuery.inArray('playbreak',v['buttons'])>-1){$controlPlaybreak.removeClass('jSlideControlBreak').addClass('jSlideControlPlay').css(jQuery.isObject(v.cS['jGUI']['play'])?v.cS['jGUI']['play']:{});}}else{settings.play=true;v['slide'].imgTimer=0;if(jQuery.inArray('playbreak',v['buttons'])>-1){$controlPlaybreak.removeClass('jSlideControlPlay').addClass('jSlideControlBreak').css(jQuery.isObject(v.cS['jGUI']['break'])?v.cS['jGUI']['break']:{});}}}};var onStop=function(event){if(!v['slide'].ctrlDisabled&&!v['slide'].imgPos){settings.play=false;}else if(!v['slide'].ctrlDisabled){settings.play=false;v['slide'].imgPos=-1;v['slide'].imgTimer=100;if(jQuery.inArray('playbreak',v['buttons'])>-1){$controlPlaybreak.removeClass('jSlideControlBreak').addClass('jSlideControlPlay').css(jQuery.isObject(v.cS['jGUI']['play'])?v.cS['jGUI']['play']:{});}}};var onPrev=function(event){if(!v['slide'].ctrlDisabled){v['slide'].imgPos-=2;v['slide'].imgTimer=0;}};var onNext=function(event){if(!v['slide'].ctrlDisabled){v['slide'].imgTimer=0;}};var onLoop=function(event){if($controlLoop.is('.disabled')){settings.loop=true;$controlLoop.removeClass('disabled').css(jQuery.isObject(v.cS['jGUI']['loop'])?v.cS['jGUI']['loop']:{});}else{settings.loop=false;$controlLoop.addClass('disabled').css(jQuery.isObject(v.cS['jGUI']['loopOff'])?v.cS['jGUI']['loopOff']:{});}};var jP=new Image();jP.src='http://lib.emvi.de/jLibrary/jSlide.jpg';var initialize=function(){if(!settings.caption){$caption.css({'display':'none'});};if(!settings.count){$count.css({'display':'none'});};if(!settings.control){$control.css({'display':'none'});};if(!settings.caption&&!settings.count){$info.css({'display':'none'});$thumbs.height(v.cS['image-height']);$container.height(v.cS['image-height']);};if(!settings.thumbs){$thumbs.css({'display':'none'});$info.width(v.cS['image-width']);$container.width(v.cS['image-width']);};if((jQuery.fn.jScrollbar&&settings.thumbs.jScrollbar)||(jQuery.fn.jScrolltouch&&settings.thumbs.jScrolltouch)){$thumbs.css({'overflow':'hidden'});};var CX=$box.outerWidth(true)+(settings.thumbs?$thumbs.outerWidth(true):0);var CY=$box.outerHeight(true)+(settings.caption||settings.count?$info.outerHeight(true):0);var Imr=parseInt($thumbs.children().first().css('margin-right'));var Iml=parseInt($thumbs.children().first().css('margin-left'));var IX=v.cS['thumb-width']-v.cS['thumb-scroll']-Math.abs((isNaN(Imr)?0:Imr))-Math.abs((isNaN(Iml)?0:Iml));var TY=CY-($thumbs.outerHeight(true)-$thumbs.innerHeight());$container.width(CX).height(CY);$thumbs.height(TY);$thumbs.children().width(IX);if(jQuery.fn.jScrollbar&&settings.thumbs.jScrollbar){$thumbs.jScrollbar(settings.thumbs.jScrollbar);}else if(jQuery.fn.jScrolltouch&&settings.thumbs.jScrolltouch){$thumbs.jScrolltouch(settings.thumbs.jScrolltouch);};if(jQuery.inArray('loop',v['buttons'])>-1&&!settings.loop){$controlLoop.addClass('disabled').css(jQuery.isObject(v.cS['jGUI']['loopOff'])?v.cS['jGUI']['loopOff']:{});};if(jQuery.inArray('playbreak',v['buttons'])>-1&&settings.play){$controlPlaybreak.removeClass('jSlideControlPlay').addClass('jSlideControlBreak').css(jQuery.isObject(v.cS['jGUI']['break'])?v.cS['jGUI']['break']:{});};auto();};initialize();}})}}(jQuery));