jQuery.carousello_instance=new Object();(function($){jQuery.fn.carousello=function(options){var globalElement=$(this);function carouselloSettings(options){var self=this;var globalDefaults={"element":$(globalElement),"autoscroll":false,"autoscroll_initialized":false,"autoscroll_timeout":1000,"autoscroll_delay":5000,"scroll_direction":"horisontal","scroll_delay":1000,"scroll_shift":0,"items_shift":1,"items_show":0,"items_count":0,"items_wrapper":$(globalElement).find(".items-wrapper"),"item_current":1,"item_selector":"a","navigation_previous":$(globalElement).find(".carousello_previous"),"navigation_next":$(globalElement).find(".carousello_next"),"window_resize":function(){},"carousello_onscroll":function(){},"carousello_scroll":false};this.variables=$.extend({},globalDefaults,options);this.getAll=function(){return self.variables;};this.get=function(variable_name){return self.variables[variable_name];};this.set=function(variable_name,variable_value){return self.variables[variable_name]=variable_value;};this.intVal=function(v){return parseInt(v,10);};$(window).resize(function(){self.get("window_resize").call(self);});}function carouselloScroll(settings){var carousello=this;jQuery.carousello_instance[$(globalElement).attr("id")]=carousello;if(typeof(settings)=="object"){this.settings=settings;}else{alert("Настройки должны быть экземпляром 'carouselloSettings'");}this.getScrollDirectionAttribute=function(){switch(this.settings.get("scroll_direction")){case"horisontal":return"left";break;case"vertical":return"top";break;}};this.settings.set("carousello_scroll",this);this.settings.set("scroll_direction_attibute",carousello.getScrollDirectionAttribute());this.getWidth=function($el){if(carousello.settings.intVal($el.width())!=0){$width=$el.width();}else{$width=$el.css("width");}return carousello.settings.intVal($width);};this.getHeight=function($el){if(carousello.settings.intVal($el.height())!=0){$height=$el.height();}else{$height=$el.css("height");}return carousello.settings.intVal($height);};this.bind=function(){carousello.settings.get("navigation_previous").live("click",function(){carousello.settings.set("autoscroll",false);carousello.autoscroll_shift=function(){return;};carousello.shift_items(-1);});carousello.settings.get("navigation_next").live("click",function(){carousello.settings.set("autoscroll",false);carousello.autoscroll_shift=function(){return;};carousello.shift_items(1);});if(carousello.settings.get("autoscroll")==true){carousello.autoscroll_start();scroll.shift_items(null);}else{scroll.shift_items(0);}};this.autoscroll_start=function(){if(carousello.settings.get("items_count")>carousello.settings.get("items_show")){carousello.autoscroll_shift();}};this.autoscroll_shift=function(){if(carousello.settings.get("autoscroll")==true){carousello.settings.set("items_current",1);if(carousello.settings.get("autoscroll_initialized")==false){carousello.settings.set("autoscroll_initialized",true);}else{carousello.shift_items(1);}carousello.settings.set("autoscroll_timeout",setTimeout(carousello.autoscroll_shift,carousello.settings.get("autoscroll_delay")));}};this.autoscroll_stop=function(){clearTimeout(carousello.settings.get("autoscroll_timeout"));};this.display_navigation=function(element,displayment){switch(displayment){case"show":element.show();break;case"hide":element.hide();break;}};this.shift_items=function(direction){next_arrow=carousello.settings.get("navigation_next");prev_arrow=carousello.settings.get("navigation_previous");if(direction==null){carousello.display_navigation(prev_arrow,"hide");if(carousello.settings.get("items_count")>carousello.settings.get("items_show")){carousello.display_navigation(next_arrow,"show");}else{carousello.display_navigation(next_arrow,"hide");}}else{if(direction>0){if(carousello.settings.get("item_current")<carousello.settings.get("items_count")-carousello.settings.get("items_show")+1){carousello.settings.set("item_current",carousello.settings.get("item_current")+carousello.settings.get("items_shift"));if(carousello.settings.get("item_current")>carousello.settings.get("items_count")){carousello.settings.set("item_current",carousello.settings.get("items_count"));}}}else{if(direction<0){if(carousello.settings.get("item_current")>1){carousello.settings.set("item_current",carousello.settings.get("item_current")-carousello.settings.get("items_shift"));if(carousello.settings.get("item_current")<1){carousello.settings.set("item_current",1);}}}}if(carousello.settings.get("item_current")==1){carousello.display_navigation(prev_arrow,"hide");if(carousello.settings.get("items_show")<carousello.settings.get("items_count")){carousello.display_navigation(next_arrow,"show");}}else{if(carousello.settings.get("item_current")==carousello.settings.get("items_count")-carousello.settings.get("items_show")+1){carousello.display_navigation(prev_arrow,"show");carousello.display_navigation(next_arrow,"hide");}else{carousello.display_navigation(prev_arrow,"show");carousello.display_navigation(next_arrow,"show");}}if(carousello.getScrollDirectionAttribute()=="left"){carousello.settings.get("items_wrapper").animate({"left":(-1)*(carousello.settings.get("item_current")-1)*carousello.settings.get("scroll_shift")},carousello.settings.get("scroll_delay"),function(){carousello.settings.get("carousello_onscroll").call(carousello.settings);});}else{carousello.settings.get("items_wrapper").animate({"top":(-1)*(carousello.settings.get("item_current")-1)*carousello.settings.get("scroll_shift")},carousello.settings.get("scroll_delay"),function(){carousello.settings.get("carousello_onscroll").call(carousello.settings);});}}};carousello.settings.set("items_count",carousello.settings.get("items_wrapper").find(carousello.settings.get("item_selector")).length);$first_element=carousello.settings.get("items_wrapper").find(carousello.settings.get("item_selector")+":first");if(carousello.settings.get("scroll_shift")==0){if(carousello.getScrollDirectionAttribute()=="left"){carousello.settings.set("scroll_shift",carousello.settings.intVal($first_element.css("padding-left"))+carousello.settings.intVal($first_element.css("padding-right"))+carousello.getWidth($first_element));}else{carousello.settings.set("scroll_shift",carousello.settings.intVal($first_element.css("padding-top"))+carousello.settings.intVal($first_element.css("padding-bottom"))+carousello.getHeight($first_element));}}if(carousello.settings.get("items_show")==0){if(carousello.getScrollDirectionAttribute()=="left"){carousello.settings.set("items_show",Math.round(carousello.getWidth(carousello.settings.get("items_wrapper").parent())/carousello.settings.get("scroll_shift")));}else{carousello.settings.set("items_show",Math.round(carousello.getHeight(carousello.settings.get("items_wrapper").parent())/carousello.settings.get("scroll_shift")));}}}var settings=new carouselloSettings(options);var scroll=new carouselloScroll(settings);scroll.shift_items(null);scroll.bind();};})(jQuery);
