/**
  * Define the History Channel EPG
 **/
HC.carousel = {
	
	/**
	 * Private Constants
	 */
	
	sliderHandleWidth		: 75,
	sliderOffset			: 0,
	
	currentSliderValue		: 0,
	currentCount			: 0,
	
	init : function(items, subitems, count){
		
		this.currentCount = count;

		$("div.scrollable").scrollable({
				clickable: false,
				keyboard: false,
				size: this.currentCount
		});
		
		/* 
		    retrieve scrollable's programming interface (API) by selecting  
		    the scrollable element and calling scrollable without arguments  
		*/ 
		HC.carousel.api = $("div.scrollable").scrollable();
		
		var $items = $('.'+items+' > .'+subitems);
		if($items.length > count){
			HC.carousel.size = $items.length;
			stepValue = Math.round($items.length / this.currentCount);
			
			//$('.ui-slider-handle').css('width',HC.carousel.sliderHandleWidth+'px');
			HC.carousel.sliderOffset = HC.carousel.sliderHandleWidth;

			$("#slider").slider({
				animate: 		true,
				value:0,
				min: 0,
				max: (HC.carousel.size - this.currentCount),
				step: 1,
				handle: 		".ui-slider-handle",
				stop: 			HC.carousel.updateSlider
			});

			HC.carousel.slider = $("#slider").slider();

			// bind event clicks for slider and navigation
			HC.carousel.bindEventHandlers();
		} else {
			$('#carouselControls').hide();
		}

	},
	
	bindEventHandlers: function(){
		
		$("a.prev").bind("click", function(e){ HC.carousel.moveSlider('prev');return false; });
		$("a.next").bind("click", function(e){ HC.carousel.moveSlider('next');return false; });
		
		// bind left,right,up and down keypresses
		$(window).keydown(function (e) {
			
			if ((e.keyCode == 38 || e.keyCode == 39)) {
				HC.carousel.moveSlider('next');
				return false;
			}	
			
			if ((e.keyCode == 37 || e.keyCode == 40)) {
				HC.carousel.moveSlider('prev');
				return false;
			}

		});
		
	},
		
	moveSlider: function(v){
		if(v == 'prev'){
			if(HC.carousel.currentSliderValue > 0){
				HC.carousel.currentSliderValue--;
				HC.carousel.setSliderValue(HC.carousel.currentSliderValue);
				$("#slider").slider( 'value' , (HC.carousel.currentSliderValue) );
				HC.carousel.api.seekTo(HC.carousel.currentSliderValue);
			}
		}
		if(v == 'next'){
			if(HC.carousel.currentSliderValue < (HC.carousel.size - HC.carousel.currentCount)){
				HC.carousel.currentSliderValue++;
				HC.carousel.setSliderValue(HC.carousel.currentSliderValue);
				$("#slider").slider( 'value' , (HC.carousel.currentSliderValue) );
				HC.carousel.api.seekTo(HC.carousel.currentSliderValue);
			}
		}
	},
	
	getSliderValue: function(){
		//getter
		var value = $('#slider').slider('option', 'value');
		return value;	
	},
	
	setSliderValue: function(v){
		//setter
		$('#slider').slider('option', 'value', v);
		HC.carousel.currentSliderValue = v;
	},

	updateSlider: function(e, ui)
	{
		HC.carousel.api.seekTo((ui.value));
		HC.carousel.currentSliderValue = (ui.value);
	}
};
