/**
 * @author Vadim Daleckiy
 * @email vdaleckiy@gmail.com
 */
var Slider=new Class({Implements:[Options,Events],options:{container:null,elements:[],forceCorrectPosition:false,currentWrapperX:0,margins:40,padding:0,k:0.15,delay:30,startPosition:0},initialize:function(a){this.setOptions(a);this.realWrapperX=this.options.startPosition;this.setupDOM();var b=this;this.options.container.addEvent("mousemove",function(c){b.attachMouseMoveEvent(c)});this.move.periodical(this.options.delay,this)},setupDOM:function(){this.options.container.setStyles({position:"relative",overflow:"hidden"});this.wrapper=new Element("div");this.wrapper.inject(this.options.container);this.wrapper.adopt(this.options.elements);this.options.elements.each(function(c,b){c.setStyle("float","left")});var a=0;this.options.elements.each(function(c,b){a+=c.getSize().x+c.getStyle("margin-left").toInt()+c.getStyle("margin-right").toInt()});this.wrapperWidth=a;this.wrapper.setStyles({position:"absolute",width:this.wrapperWidth})},getElementPosition:function(c){var a=c;var d=0;var b=0;while(a){d+=a.offsetLeft;b+=a.offsetTop;a=a.offsetParent}if(navigator.userAgent.indexOf("Mac")!=-1&&typeof document.body.leftMargin!="undefined"){d+=document.body.leftMargin;b+=document.body.topMargin}return{left:d,top:b}},attachMouseMoveEvent:function(c){var e=this.options.container.getSize().x-this.options.container.getStyle("border-left-width").toInt()-this.options.container.getStyle("border-right-width").toInt();var d=e-(2*this.options.margins);var a=c.page.x-this.getElementPosition(this.options.container).left;var b=a-this.options.margins;if(b<0){b=0}if(b>d){b=d}var g=b/d;var f=this.wrapperWidth-e+this.options.padding*2;this.options.currentWrapperX=this.options.padding-Math.round(g*f)},move:function(){var a=Math.round((this.options.currentWrapperX-this.realWrapperX)*this.options.k);if(Math.abs(a)>this.options.k){this.realWrapperX+=a;this.wrapper.style.left=this.realWrapperX+"px"}else{if(this.options.forceCorrectPosition){this.wrapper.style.left=this.options.currentWrapperX+"px"}}}});
