Slider = function() {};
	/*
		Set's the active item based on new index. Changes the picture, text, the circle...
	*/

	Slider.setActive = function (index) {
		if ( (index >= 0) && ( index < Slider.size) ) {
			
			//At this part, change the images and indicators
				$('#slider_images .mini_holder:eq('+index+')').css('display','block');	
				$('#slider_images .mini_holder:eq('+index+')').find('.caption_1, .caption_2,.caption_3,.caption_4').each(function(index, el) {

				if (Slider.left) {
					$(this).css('left', 0-$(el).outerWidth(true)+'px');
				} else {
					$(this).css('right', 0-$(el).outerWidth(true)+'px');
				}
				});
				
				$('#slider_images .mini_holder').css('display', 'none');
				var offset_pos = $('#slider_container').position().left;

				$('#slider_images .mini_holder:eq('+index+')').css('display','block');				
				$('#slider_images .mini_holder:eq('+index+')').each(function() {
					offset_pos = ($('#slider_container').parent().outerWidth(true) - $('#slider_container').parent().width() ) / 2;
					/***/
						var i = 0;
					$(this).find('.caption_1, .caption_2,.caption_3,.caption_4').each(function(index, el) {			
						$(this).html( $(this).html().replace(/ /g, '&nbsp;') );
						if(offset_pos = (Slider.left == false) ? 0 : ( $('#slider_container').outerWidth(false) - $(this).outerWidth(true) )) {
						offset_pos = 0;
						//Animate
						$(el).animate(
							{
								left: offset_pos
							}, 
							
							 (Slider.speed + (i*Slider.delay))
						);
						}
						else  {
							offset_pos = 0;
							//Animate
							$(el).animate(
								{
									right: offset_pos
								}, (Slider.speed + (i*Slider.delay))
							);
							
						}						
						i++;
					});
				});

			$('#mini_blocks .mini_block_list').removeClass('mini_block_list_active');
				$('#mini_blocks .mini_block_list:eq('+index+')').addClass('mini_block_list_active');
				Slider.activeIndex = index;
			} else {
				return false;
			}
	}
	  
	/*
		Slider's function to set the next element
	*/
	Slider.next = function() {
		if ( (Slider.activeIndex+1) < Slider.size ) {
			if (Slider.auto) {
				clearInterval(Slider.intervalId);
				if (Slider.intervalId) {
					clearInterval(Slider.intervalId);
				}
				clearInterval(Slider.intervalId);
				Slider.intervalId = setTimeout("Slider.next()", Slider.autoDelay);
			}
			Slider.setActive( (Slider.activeIndex+1));
		} else {
			if (Slider.auto) {
				Slider.activeIndex = 0;
				if (Slider.intervalId) {
					clearInterval(Slider.intervalId);
				}
				Slider.intervalId = setTimeout("Slider.next()", Slider.autoDelay);
				Slider.setActive( (Slider.activeIndex));
			}
			return false;
		}
	}

	/*
		Slider's function to set the previous element
	*/

	Slider.prev = function() {
		if (Slider.intervalId) {
			clearInterval(Slider.intervalId);
		}
		
		if ( (Slider.activeIndex-1) >= 0 ) {
			Slider.setActive( (Slider.activeIndex-1));
		} else {
			Slider.setActive( (Slider.size-1));
		}
		if (Slider.auto) {
			Slider.intervalId = setTimeout("Slider.next()", Slider.autoDelay);
		}
	}

	Slider.init = function(arguments) {

		Slider.activeIndex = arguments.startItem;
		Slider.offsetTop = arguments.offsetTop;		
		Slider.width = $('#slider_container').width();
		Slider.height = $('#slider_container').height();
		Slider.paddingRight = arguments.paddingRight;
		Slider.paddingBottom = arguments.paddingBottom;
		Slider.speed = arguments.speed;
		Slider.delay = arguments.delay;
		Slider.auto = arguments.auto;
		Slider.autoDelay = arguments.autoDelay;
		Slider.left = arguments.left;
		Slider.captionOpacity = arguments.captionOpacity;
		Slider.can = true;
		Slider.intervalID;
		Slider.effect = arguments.effect;
		Slider.size = $('#slider_images .mini_holder').size();
		$('#slider_images .mini_holder').css('display', 'none');
		
		//Now construct mini blocks for showing how much of pictures there are 

		var mini_blocks_html = '';

		for (var i = 0; i < Slider.size; i++) {
			mini_blocks_html += '<a class="mini_block_list" index="'+i+'"></a>';			
		}

		$('#mini_blocks').html(mini_blocks_html);
		$('.mini_block_list').click(function() {
			Slider.setActive( $(this).attr('index') );	
			if (Slider.intervalId) {
			clearInterval(Slider.intervalId);
		}
		if ( (Slider.activeIndex-0) >= 0 ) {
			Slider.setActive( (Slider.activeIndex-0));
		} else {
			Slider.setActive( (Slider.size-0));
		}

		if (Slider.auto) {
			Slider.intervalId = setTimeout("Slider.next()", Slider.autoDelay);
		}
		});

			//Calculate the position of controls. Calculate the container dimensions as well as control box dimensions
			
			var offset_x = $('#slider_container').width();			
			var offset_y = $('#slider_container').height();

			offset_y -= $('#slider_controls').outerHeight(true);
			offset_y -= Slider.paddingBottom;

			offset_x -= (Slider.size * $('.mini_block_list').outerWidth(true) );
			offset_x -= $('#sliderControls_left').outerWidth(true);
			offset_x -= $('#sliderControls_right').outerWidth(true);
			offset_x -= Slider.paddingRight;
			//Apply calculations					
			/*
			$('#slider_controls').css('left', offset_x+'px');
			$('#slider_controls').css('top', (offset_y)+'px');
			*/
			//Hook the click handlers on controls
			$('#sliderControls_left').click( function() {Slider.prev(); });
			$('#sliderControls_right').click( function() {Slider.next(); });			
			/*
				Here adjust the positions of text slides
				When element has display: block, it does not have dimensions, that's why I make them
				invisible and turn display to block. After all, I reset everything
			*/

			$('.mini_holder').css('visibility', 'hidden');
			$('.mini_holder').css('display', 'block');
			$('.mini_holder').each(function(index, element) {
				var last_offset = 0;
				$(this).find('.caption_1, .caption_2,.caption_3,.caption_4').css({ opacity: Slider.captionOpacity }).each(function(index, el) {
					var new_offset = Slider.offsetTop + last_offset ;						
						last_offset += $(el).outerHeight(true);
						$(this).css('top', new_offset+'px');
				});					
			});

			$('.mini_holder').css('visibility', 'visible');
			$('.mini_holder').css('display', 'none');					
			Slider.setActive(Slider.activeIndex);	
			if (Slider.auto) {
				setTimeout("Slider.next()", Slider.autoDelay);
			}
			
			jQuery('#slider_directionNav').hide();
			jQuery('#slide').hover(function(){
				jQuery('#slider_directionNav').show();
			}, function(){
				jQuery('#slider_directionNav').hide();
			});
	}
