/*
Class: TopProducts [Built on MooTools framework: www.mootools.net]
Author: Martin Jezek 2009
Version: 1.0
*/  
var TopProducts=new Class({Implements:Options,options:{id:"",item_width:0,visible_items:3,transition:"quad:out",duration:"normal",delay:6000,way:"left",prev_id:"",next_id:""},initialize:function(options){this.setOptions(options);this.initProducts();if(this.items_count>this.options.visible_items){if(this.options.way=="left"){this.timer=this.wheeling_left.periodical(this.options.delay,this);}else{this.timer=this.wheeling_right.periodical(this.options.delay,this);}}},now:0,correction:"false",wrapping:"false",delay_protect:"false",initProducts:function(){this.products=$(this.options.id);this.width=this.options.item_width*this.options.visible_items;this.items_count=this.products.getElements(".item").length;this.products.setStyle("width",this.options.item_width*this.items_count);this.items_views_add=this.items_count%this.options.visible_items;this.items_views=(this.items_count-this.items_views_add)/this.options.visible_items;this.tween=new Fx.Tween(this.products,{transition:this.options.transition,property:"left",duration:this.options.duration});var end_elements=new Element("div");for(var x=this.items_count-this.options.visible_items;x<this.items_count;x++){var temp_end=this.products.getElements(".item")[x].clone();temp_end.inject(end_elements,"top");}
var start_elements=new Element("div");for(var y=0;y<this.options.visible_items;y++){var temp_start=this.products.getElements(".item")[y].clone();temp_start.inject(start_elements,"bottom");}
for(z=0;z<this.options.visible_items;z++){end_elements.getElements(".item")[0].inject(this.products,"top");start_elements.getElements(".item")[0].inject(this.products,"bottom");}
this.products.setStyle("left",-this.options.visible_items*this.options.item_width);this.products.setStyle("width",((this.options.visible_items*2)+this.items_count)*this.options.item_width);this.prev=$(this.options.prev_id);this.next=$(this.options.next_id);this.next.addEvent("click",this.prevClick.bindWithEvent(this));this.prev.addEvent("click",this.nextClick.bindWithEvent(this));},wheeling_left:function(){if(this.delay_protect=="false"){if(this.wrapping=="true"){this.wrapping="true";}else if(this.now==this.items_views-1&&this.items_views_add>0){this.correction="true";}else if(this.now<this.items_views-1){this.now++;}else{this.wrapping="true";}
if(this.wrapping=="true"){this.tween.start(this.products.getStyle("left"),(this.width*-this.now)-2*this.width-(this.items_views_add*this.options.item_width));this.delay_protect="true";this.wrapping_left.bind(this).delay(950);this.now=0;this.wrapping="false";}else if(this.correction=="true"){this.tween.start(this.products.getStyle("left"),(this.width*-this.now)-this.width-(this.items_views_add*this.options.item_width));this.wrapping="true";this.correction="false"}else{this.tween.start(this.products.getStyle("left"),(this.width*-this.now)-this.width);}}},wheeling_right:function(){if(this.delay_protect=="false"){if(this.wrapping=="true"){this.wrapping="true";}else if(this.now==0&&this.items_views_add>0){this.correction="true";}else if(this.now>0){this.now--;}else{this.wrapping="true";}
if(this.wrapping=="true"){this.tween.start(this.products.getStyle("left"),0);this.delay_protect="true";this.wrapping_right.bind(this).delay(950);this.now=this.items_views-1;this.wrapping="false";}else if(this.correction=="true"){this.tween.start(this.products.getStyle("left"),0);this.wrapping_right_v2.bind(this).delay(950);this.correction="false"
this.now=this.items_views-1;}else{this.tween.start(this.products.getStyle("left"),(this.width*-this.now)-this.width);}}},wrapping_right:function(){this.products.setStyle("left",-this.items_views*this.width);this.delay_protect="false";},wrapping_right_v2:function(){this.products.setStyle("left",-this.items_views*this.width-this.items_views_add*this.options.item_width);this.delay_protect="false";},wrapping_left:function(){this.products.setStyle("left",-this.options.visible_items*this.options.item_width);this.delay_protect="false";},prevClick:function(){this.stop_wheeling();this.wheeling_left();return false;},nextClick:function(){this.stop_wheeling();this.wheeling_right();return false;},stop_wheeling:function(){this.timer=$clear(this.timer);}});