/*!
 * JQuery doc slider - carousel for dynamic height text content
 *
 * Copyright (c) 2010 James Smith
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 */
(function(c){c.fn.docSlider=function(d){var e=c.extend({display_elements:1,scroll_elements:1,prev_button:null,next_button:null,history_support:true,tab_names:null,button_disabled_class:"dis-arrow",position_changed_callback:null,margin:0,auto_height:true,speed:"fast"},d);return this.each(function(){c(this).data("docSlider",new c.DocSlider(this,e))})};function b(g,h,f){var e=0;for(var d=h-1;d<h+f-1;d++){e=c(g[d]).height()>e?c(g[d]).height():e}return e}function a(e,g){var d=-1;if(g){for(var f=0;f<g.length;f++){if(g[f]==e){d=f+1;break}}}else{alert("No tab_names configured in the settings.")}return d}c.DocSlider=function(f,e){var d=this;this.settings=e;this.slider_list=c(f);this.slider_window=c("<div/>");this.slider_elements=this.slider_list.children();this.num_slider_elements=this.slider_elements.size();this.display_elements=Math.min(this.num_slider_elements,this.settings.display_elements);this.slider_list.parent().css({width:this.slider_list.outerWidth()});this.element_width=this.slider_list.outerWidth()/this.display_elements;this.current_position=1;this.slider_window.css({position:"relative"}).appendTo(this.slider_list.parent());this.slider_list.css({width:"100000px",position:"absolute"});this.slider_elements.css({"float":"left",width:this.element_width+"px",overflow:"hidden",marginRight:this.settings.margin+"px"});this.slider_window.css({overflow:"hidden"}).append(this.slider_list);if(this.settings.auto_height){this.slider_window.css({height:b(this.slider_elements,this.current_position,this.settings.display_elements)+"px"})}if(e.next_button){c(e.next_button).click(function(){d.next_slide();return false})}if(e.prev_button){c(e.prev_button).click(function(){d.prev_slide();return false})}if(this.settings.history_support){setInterval(function(){var h=window.location.hash;if(!h||h==d.last_hash){return}d.last_hash=h;var g=h.split("#")[1];if(!isNaN(g)){d.set_slider_position(g)}else{d.set_slider_position_by_name(g)}},400)}this.set_slider_position(1)};c.DocSlider.fn=c.DocSlider.prototype;c.DocSlider.fn.extend=c.extend;c.DocSlider.fn.extend({set_slider_position:function(g){g=parseInt(g,10);if(g>(this.num_slider_elements-this.display_elements+1)){g=this.num_slider_elements-this.display_elements+1}else{if(g<=0){g=1}}if(g==this.current_position){return}var d=0;if(g>this.current_position){d="-="+((g-this.current_position)*(this.element_width+this.settings.margin))}else{if(g<this.current_position){d="+="+((this.current_position-g)*(this.element_width+this.settings.margin))}}this.slider_list.animate({left:d},this.settings.speed);if(this.settings.auto_height){var f=b(this.slider_elements,g,this.display_elements);this.slider_window.animate({height:f},this.settings.speed)}if(this.settings.next_button){if(g==(this.num_slider_elements-this.display_elements+1)){c(this.settings.next_button).addClass(this.settings.button_disabled_class)}else{c(this.settings.next_button).removeClass(this.settings.button_disabled_class)}}if(this.settings.prev_button){if(g==1){c(this.settings.prev_button).addClass(this.settings.button_disabled_class)}else{c(this.settings.prev_button).removeClass(this.settings.button_disabled_class)}}if(this.settings.history_support){if(this.settings.tab_names){window.location.hash=this.settings.tab_names[g-1]}else{window.location.hash=g}}if(this.settings.position_changed_callback){var e=this.settings.tab_names?this.settings.tab_names[g-1]:null;this.settings.position_changed_callback(g,e)}this.current_position=g},set_slider_position_by_name:function(d){var e=a(d,this.settings.tab_names);if(e>0){this.set_slider_position(e)}},next_slide:function(){this.set_slider_position(this.current_position+this.settings.scroll_elements)},prev_slide:function(){this.set_slider_position(this.current_position-this.settings.scroll_elements)},get_current_position:function(){return this.current_position}})})(jQuery);
