
function JulesSlider() {
	this.menu_items = new Array();
	this.slides = new Array();
	this.thumbMenu_effect = null;
	this.slide_effect = null;
	this.currentPosition = 0;
	this.thumbBorder = null;
	
	this.autoNext_forward = 1;
	this.autoNext_interval = null;

	this.init = function() {
		// set click-events
		items = $('thumb_menu_items').getElementsByTagName('a');
		for(x=0; x < items.length; x++) {
			this.menu_items.push(items[x]);
			items[x].jules_slider = this;
			items[x].item_no = x;
			items[x].onclick = function() { this.jules_slider.setPosition(this.item_no); };
		}
		
		// get slides
		slider_items_divs = $('slider_items').getElementsByTagName('div');
		for(x=0, slide_no=0; x < slider_items_divs.length; x++) {
			if (slider_items_divs[x].className == 'item') {
				slider_items_divs[x].id = 'slider_item_'+slide_no;
				this.slides.push(slider_items_divs[x]);
				
				slide_no++;
			}
		}

		// create border
		this.thumbBorder = document.createElement('img');
		this.thumbBorder.id = 'thumb_border';
		this.thumbBorder.src = 'images/slider2/bg_thumb_shadow2.png';
//		this.thumbBorder.style.marginTop = '-5px';
//		this.thumbBorder.style.marginLeft = '-4px';
		this.thumbBorder.style.position = 'absolute';

		var anchors = $('slider_thumbcontainer').getElementsByTagName('a');
		for(x=0; x < anchors.length; x++) {
			if (anchors[x].className == 'menu_prev') {
				anchors[x].jules_slider = this;
				anchors[x].onclick = function() { this.jules_slider.showPrev(); }
			}
			if (anchors[x].className == 'menu_next') {
				anchors[x].jules_slider = this;
				anchors[x].onclick = function() { this.jules_slider.showNext(); }
			}
		}
		
		this.startAutonext();
		
		this.setPosition(0, 1);
	}

	this.showNext = function(autoNext) { this.setPosition(this.currentPosition+1, autoNext); }
	this.showPrev = function(autoNext) { this.setPosition(this.currentPosition-1, autoNext); }
	
	this.startAutonext = function() {
		if (this.autoNext_interval != null)
			this.autoNext_interval.stop();
		
		var scope = this;
		
		this.autoNext_interval = setInterval(function() { scope.moveAutonext(); }, 5000);
	}
	this.stopAutonext = function() {
		if (this.autoNext_interval != null)
			clearInterval(this.autoNext_interval);
		
		this.autoNext_interval = null;
	}
	
	this.moveAutonext = function() {
		if (this.currentPosition == 0)
			this.autoNext_forward = 1;
		
		if (this.autoNext_forward && this.currentPosition+1 == this.menu_items.length)
			this.autoNext_forward = 0;
		
		if (this.autoNext_forward)
			this.showNext(1);
		else
			this.showPrev(1);
	}

	this.setPosition = function(no, autoNext) {
		if (!autoNext)
			this.stopAutonext();
		
		if (no <= 0) no = 0;
		if (no >= this.menu_items.length) no = this.menu_items.length-1;

		// set border
		if (this.thumbBorder.parentNode)
			this.thumbBorder.parentNode.removeChild(this.thumbBorder);
		this.menu_items[no].insertBefore(this.thumbBorder, this.menu_items[no].childNodes[0]);
		
		
		if (no == this.currentPosition)
			return;

		previousPosition = this.currentPosition;
		this.currentPosition = no;
		
		// set thumbnail menu
		if (this.thumbMenu_effect != null)
			this.thumbMenu_effect.cancel();

		height = 55;
		if (no == 0)
			pos = 0;
		else if (no == this.menu_items.length-1)
			pos = (this.menu_items.length-3) * -height;
		else
			pos = (no-1) * -height;
		
		this.thumbMenu_effect = new Effect.Morph('thumb_menu_items', {
			style: 'top: ' + pos + 'px'
			, duration: 0.8
		});


		// set slider position
		items = $('slider_items').getElementsByTagName('div');

		if (this.slide_effect != null)
			this.slide_effect.cancel();
		
		
		Effect.Fade($(this.slides[previousPosition].id), {duration: 0.8, from: 1, to: 0 });
		Effect.Fade($(this.slides[this.currentPosition].id), {duration: 0.8, from: 0, to: 1 });
		
		this.slides[previousPosition].style.display = 'block';
		this.slides[previousPosition].style.zIndex = 2;
		this.slides[this.currentPosition].style.display = 'block';
		this.slides[this.currentPosition].style.zIndex = 1;
		

//		slide_pos = 0;
//		slide_counter = 0;
//		for(x=0; x < items.length; x++) {
//			if (items[x].className != 'item')
//				continue;
//			
//			if (slide_counter >= no)
//				break;
//			
//			slide_pos -= items[x].clientHeight;
//			slide_counter++;
//		}
//		
//		this.slide_effect = new Effect.Morph('slider_items', {
//			style: 'top: ' + slide_pos + 'px'
//			, duration: 0.8
//		});
	}

	this.init();
}

