
if(!DEMOTIVE){var DEMOTIVE={};}
DEMOTIVE.scroller={opts:{speed:300,scrollStyle:'unit',behaviour:'rewind',direction:'horizontal',timer:'false',interval:3000},init:function($els,opts){$els.each(function(i){var $el=jQuery(this);var $itemEls=$el.find('.dem-items');var $unitEls=$itemEls.children();$el.data('units',$unitEls);var propsObj={};propsObj.speed=DEMOTIVE.scroller.opts.speed;propsObj.scrollStyle=DEMOTIVE.scroller.opts.scrollStyle;propsObj.behaviour=DEMOTIVE.scroller.opts.behaviour;propsObj.direction=DEMOTIVE.scroller.opts.direction;propsObj.timer=DEMOTIVE.scroller.opts.timer;propsObj.interval=DEMOTIVE.scroller.opts.interval;if(opts){if(opts.speed){propsObj.speed=opts.speed;}
if(opts.scrollStyle){propsObj.scrollStyle=opts.scrollStyle;}
if(opts.behaviour){propsObj.behaviour=opts.behaviour;}
if(opts.direction){propsObj.direction=opts.direction;}
if(opts.timer){propsObj.timer=opts.timer;}
if(opts.interval){propsObj.interval=opts.interval;}}
$el.data('props',propsObj).addClass('dem-scroller-active');$itemEls.css({'position':'relative','overflow':'hidden'});if(propsObj.direction!='vertical'){$itemEls.css('height',$unitEls.eq(0).outerHeight(true));}
if(propsObj.scrollStyle=='group'){DEMOTIVE.scroller.checkMeasurements($el);var visUnits=$el.data('measurements').viewW/$el.data('measurements').unitW;var remainder=$unitEls.length%visUnits;if(remainder>0){var toCreate=visUnits-remainder;var elType=$unitEls[0].nodeName;var dW=$unitEls.eq(0).width();var dH=$unitEls.eq(0).height();for(var i=0;i<toCreate;i++){var newEl=jQuery('<'+elType+'/>').css({'width':dW,'height':dH}).addClass('dem-unit-dummy');$itemEls.children(':last').after(newEl);}
$unitEls=$itemEls.children();$el.data('units',$unitEls);}}
$unitEls.each(function(j){var cssObj={};cssObj['position']='absolute';if(propsObj.direction=='vertical'){cssObj['top']=jQuery(this).outerHeight(true)*j;cssObj['left']='0';}else{cssObj['top']='0',cssObj['left']=jQuery(this).outerWidth(true)*j;}
jQuery(this).css(cssObj);});DEMOTIVE.scroller.toggleUnitDisplay($el);var $btnEls=$el.find('.dem-prev, .dem-next');$btnEls.each(function(i){if(this.tagName.toUpperCase()!='A'){jQuery(this).wrapInner('<a href="#"></a>');}
jQuery(this).bind('click',function(e){e.preventDefault();}).bind('click.demScroll',function(){DEMOTIVE.scroller.step(jQuery(this));});if(jQuery(this).parents('.dem-scroller').data('props').behaviour=='fixed'){DEMOTIVE.scroller.toggleControls(jQuery(this).parents('.dem-scroller'));}});if(propsObj.timer=='true'){DEMOTIVE.scroller.timerSet($el);}});},step:function($el){var $scrollEl=$el.parents('.dem-scroller');if($scrollEl.data('props').timer=='true'){DEMOTIVE.scroller.timerClear($scrollEl);}
var $els=$scrollEl.find('.dem-prev, .dem-next');$els.unbind('click.demScroll');var dir='pos';if($el.hasClass('dem-prev')){dir='neg';}
if($scrollEl.data('props').behaviour=='loop'){DEMOTIVE.scroller.updateStack($scrollEl,dir);}
DEMOTIVE.scroller.checkMeasurements($scrollEl);var scrollDist=$scrollEl.data('measurements').unitW;var sStyle=$scrollEl.data('props').scrollStyle;if(sStyle=='group'){scrollDist=$scrollEl.data('measurements').viewW;}
if($scrollEl.data('props').behaviour=='rewind'){if(($scrollEl.data('measurements').indexPos==0)&&(dir=='neg')){scrollDist=$scrollEl.data('measurements').overW-$scrollEl.data('measurements').viewW;dir='pos';}
if((Math.round(Math.abs($scrollEl.data('measurements').indexPos)+$scrollEl.data('measurements').viewW)==$scrollEl.data('measurements').overW)&&(dir=='pos')){scrollDist=Math.abs($scrollEl.data('measurements').indexPos);dir='neg';}}
var $units=$scrollEl.data('units');if($scrollEl.data('props').direction=='vertical'){$units.each(function(i){var pos=parseInt(jQuery(this).css('top'));if(dir=='neg'){var unitX=Math.round(pos)+scrollDist;}else{var unitX=Math.round(pos)-scrollDist;}
var mySpeed=$scrollEl.data('props').speed;if(i<($units.length-1)){jQuery(this).stop().animate({'top':unitX},mySpeed);}else{jQuery(this).stop().animate({'top':unitX},mySpeed,function(){$els.bind('click.demScroll',function(){DEMOTIVE.scroller.step(jQuery(this));});DEMOTIVE.scroller.toggleUnitDisplay($scrollEl);if($scrollEl.data('props').behaviour=='fixed'){DEMOTIVE.scroller.toggleControls($scrollEl);}
if($scrollEl.data('props').timer=='true'){DEMOTIVE.scroller.timerSet($scrollEl);}});}});}else{$units.each(function(i){var pos=parseInt(jQuery(this).css('left'));if(dir=='neg'){var unitX=Math.round(pos)+scrollDist;}else{var unitX=Math.round(pos)-scrollDist;}
var mySpeed=$scrollEl.data('props').speed;if(i<($units.length-1)){jQuery(this).stop().animate({'left':unitX},mySpeed);}else{jQuery(this).stop().animate({'left':unitX},mySpeed,function(){$els.bind('click.demScroll',function(){DEMOTIVE.scroller.step(jQuery(this));});DEMOTIVE.scroller.toggleUnitDisplay($scrollEl);if($scrollEl.data('props').behaviour=='fixed'){DEMOTIVE.scroller.toggleControls($scrollEl);}
if($scrollEl.data('props').timer=='true'){DEMOTIVE.scroller.timerSet($scrollEl);}});}});}},checkMeasurements:function($el){var $units=$el.data('units');var dataObj={};if($el.data('props').direction=='vertical'){dataObj.indexPos=parseInt($units.eq(0).css('top'));dataObj.unitW=$units.eq(0).outerHeight(true);dataObj.overW=dataObj.unitW*$units.length;dataObj.viewW=$units.eq(0).parent().height();}else{dataObj.indexPos=parseInt($units.eq(0).css('left'));dataObj.unitW=$units.eq(0).outerWidth(true);dataObj.overW=dataObj.unitW*$units.length;dataObj.viewW=$units.eq(0).parent().width();}
$el.data('measurements',dataObj);},toggleUnitDisplay:function($el){DEMOTIVE.scroller.checkMeasurements($el);$el.data('units').each(function(i){if($el.data('props').direction=='vertical'){var pos=parseInt(jQuery(this).css('top'));}else{var pos=parseInt(jQuery(this).css('left'));}
if((pos<0)||(pos>=$el.data('measurements').viewW)){jQuery(this).find('a').attr('tabindex','-1');}else{jQuery(this).find('a').removeAttr('tabindex');}});},toggleControls:function($el){DEMOTIVE.scroller.checkMeasurements($el);if($el.data('measurements').indexPos==0){$el.find('.dem-prev').unbind('click.demScroll').addClass('dem-disabled');}else if(Math.round(Math.abs($el.data('measurements').indexPos)+$el.data('measurements').viewW)==$el.data('measurements').overW){$el.find('.dem-next').unbind('click.demScroll').addClass('dem-disabled');}else{$el.find('.dem-next, .dem-prev').bind('click.demScroll',function(){DEMOTIVE.scroller.step(jQuery(this));}).removeClass('dem-disabled');}},updateStack:function($el,dir){DEMOTIVE.scroller.checkMeasurements($el);var animDir='left';if($el.data('props').direction=='vertical'){animDir='top';}
if(($el.data('measurements').indexPos==0)&&(dir=='neg')){var $units=$el.data('units');if($el.data('props').scrollStyle!='group'){$units.filter(':last').insertBefore($units.eq(0)).css(animDir,(0-$el.data('measurements').unitW)+'px');}else{var numEls=$el.data('measurements').viewW/$el.data('measurements').unitW;var c=0;for(var i=$units.length;i>=($units.length-numEls);i--){var num=$el.data('measurements').unitW*c;num=String('-'+num+'px');$units.eq(i).insertBefore($el.find('.dem-items').children(':first-child')).css(animDir,num);c++;}}
$el.data('units',$el.find('.dem-items').children());}else if((Math.round(Math.abs($el.data('measurements').indexPos)+$el.data('measurements').viewW)==$el.data('measurements').overW)&&(dir=='pos')){var $units=$el.data('units');if($el.data('props').scrollStyle!='group'){$units.eq(0).insertAfter($units.filter(':last')).css(animDir,$el.data('measurements').viewW+'px');}else{var numEls=$el.data('measurements').viewW/$el.data('measurements').unitW;for(var i=0;i<numEls;i++){var num=$el.data('measurements').viewW+($el.data('measurements').unitW*i);num=String(num+'px');$units.eq(i).insertAfter($el.find('.dem-items').children(':last')).css(animDir,num);}}
$el.data('units',$el.find('.dem-items').children());}},timerSet:function($el){intervalID=window.setTimeout(function(){$el.find('.dem-next').click();},$el.data('props').interval);$el.data('intervalID',intervalID);},timerClear:function($el){clearTimeout($el.data('intervalID'));$el.data('intervalID','');}}
