///////////////////////////////////////////////////////////////
//////////////////////// SLIDER BY DAI ////////////////////////
////////////////////////// JULY 2011 //////////////////////////
///////////////////////////////////////////////////////////////

// Moving speed. 0 = Fast.
var speed = 420;
// Delay until the next slide appear in seconds. Set to 0 to disable the auto slide. Minimum : 1 second.
var delay_limit = 5;
// Sliding direction. 1 = right  ;  0 = left.
var direction = 1;
// System vars.
var delay = 0;
var count = true;
var focus = 0;
var default_delay_limit = delay_limit;

// Slides styles. Size unit : pixel.
var current_width = 828;
var side_width = 90;
var overside_width = 0;

var span_height = 92;
var current_opacity = 1.0;
var side_opacity = 1;
var overside_opacity = 0;

var current_height = 260;
var side_height = 200;
var overside_height = 100;

var interval = setInterval ('autoSlide ();', 1000);

$ ('.slider').hover (function () { count = false; delay = 0; }, function () { count = true; });

function autoSlide () {
	if (count) {
		delay++;
		if (delay == delay_limit) {
			delay = 0;
			if ($ ('.current').next ().attr ('class') != null && direction) {
				$ ('#next').click ();
			} else {
				if ($ ('.current').prev ().attr ('class') != null) {
					$ ('#prev').click ();
					direction = 0;
				} else {
					$ ('#next').click ();
					direction = 1;
					}
				}
			}
		}
	};

initStyles ();
initBinds ();

$ ('#next').click (function () {
	var over_right_count = $ ('.slider > .over_right').length;
	if (over_right_count == 0)
		addSlides ('after');
	
	if ($ ('.slider > .current').next ().attr ('class') != null && $ ('#next').attr ('class') != 'off') {
		delay = 0;
		$ ('#next').addClass ('off');
		var current = $ ('.slider > .current');
		var current_frame = $ ('.slider > .current > img');
		var next_frame = $ ('.slider > .right > img');
		
		$ (current_frame).animate ({
			'opacity': '-=1'
			}, speed, 'swing', function () { $ (current_frame).css ('opacity', 0); });
		
		$ (next_frame).animate ({
			'opacity': '+=1'
			}, speed, 'swing', function () { $ (current_frame).css ('opacity', 0); });
		
		$ ('.slider > .current > span').animate ({
			'height': '-='+ span_height +'px'
			}, speed / 2, 'swing', function () { $ (this).css ('display', 'none'); });
		$ (current).next ().animate ({
			'left': '-='+ current_width +'px',
			'width': '+='+ (current_width - side_width) +'px',
			'height': '+='+ (current_height - side_height) +'px',
			'margin-top': '-='+ (current_height - side_height) / 2 +'px',
			'opacity': '+='+ (current_opacity - side_opacity)
			}, speed, 'swing');
		$ (current).next ().next ().css ('display', 'block');
		$ (current).next ().next ().animate ({
			'left': '-='+ side_width +'px',
			'width': '+='+ side_width +'px',
			'height': '+='+ (side_height - overside_height) +'px',
			'margin-top': '-='+ (side_height - overside_height) / 2 +'px',
			'opacity': '+='+ (side_opacity - overside_opacity)
			}, speed, 'swing', function () { $ (this).removeClass ('over_right'); });
		$ (current).prev ().animate ({
			'width': '-='+ side_width +'px',
			'height': '-='+ (side_height - overside_height) +'px',
			'margin-top': '+='+ (side_height - overside_height) / 2 +'px',
			'opacity': '-='+ (side_opacity - overside_opacity)
			}, speed, 'swing', function () { $ (this).css ('display', 'none'); });
		$ (current).animate ({
			'left': '-='+ side_width +'px',
			'width': '-='+ (current_width - side_width) +'px',
			'height': '-='+ (current_height - side_height) +'px',
			'margin-top': '+='+ (current_height - side_height) / 2 +'px',
			'opacity': '-='+ ($ (this).css ('opacity') - side_opacity)
			}, speed, 'swing', function () {
				$ (this).next ().removeClass ('right').addClass ('current');
				$ (this).next ().next ().removeClass ('over_right').addClass ('right');
				$ (this).removeClass ('current').addClass ('left');
				$ (this).prev ().removeClass ('left').addClass ('over_left');
				
				$ ('#next').removeClass ('off');
				$ ('.slider > .current > span').css ('display', 'block');
				$ ('.slider > .current > span').animate ({
					'height': '+='+ span_height +'px'
					}, speed / 2, 'swing');
				$ ('.slider > .current').unbind ('click');
				$ ('.slider > .current').next ().unbind ('click').bind ('click', function () { $ ('#next').click (); });
				$ ('.slider > .current').prev ().unbind ('click').bind ('click', function () { $ ('#prev').click (); });
				$ ('.slider > .default_displayed').removeClass ('default_displayed');
				});
				
		var slideVerif = $ ('.slider > .slide');
		for (var x = 0; x < slideVerif.length; x++) {
			if ($ (slideVerif[x]).css ('height') > current_height)
				$ ('.slider').css ('display', 'none');
			}
		}
	});

$ ('#prev').click (function () {
	var over_left_count = $ ('.slider > .over_left').length;
	if (over_left_count == 0)
		addSlides ('before');
	
	if ($ ('.slider > .current').prev ().attr ('class') != null && $ ('#prev').attr ('class') != 'off') {
		delay = 0;
		$ ('#prev').addClass ('off');
		var current = $ ('.slider > .current');
		var current_frame = $ ('.slider > .current > img');
		var prev_frame = $ ('.slider > .left > img');
		
		$ (current_frame).animate ({
			'opacity': '-=1'
			}, speed, 'swing', function () { $ (current_frame).css ('opacity', 0); });
		
		$ (prev_frame).animate ({
			'opacity': '+=1'
			}, speed, 'swing', function () { $ (current_frame).css ('opacity', 0); });
		
		$ ('.slider > .current > span').animate ({
			'height': '-='+ span_height +'px'
			}, speed / 2, 'swing', function () { $ (this).css ('display', 'none'); });
		$ (current).prev ().animate ({
			'left': '+='+ side_width +'px',
			'width': '+='+ (current_width - side_width) +'px',
			'height': '+='+ (current_height - side_height) +'px',
			'margin-top': '-='+ (current_height - side_height) / 2 +'px',
			'opacity': '+='+ (current_opacity - side_opacity)
			}, speed, 'swing');
		$ (current).prev ().prev ().css ('display', 'block');
		$ (current).prev ().prev ().animate ({
			'width': '+='+ side_width +'px',
			'height': '+='+ (side_height - overside_height) +'px',
			'margin-top': '-='+ (side_height - overside_height) / 2 +'px',
			'opacity': '+='+ (side_opacity - overside_opacity)
			}, speed, 'swing');
		$ (current).next ().animate ({
			'width': '-='+ side_width +'px',
			'left': '+='+ side_width +'px',
			'height': '-='+ (side_height - overside_height) +'px',
			'margin-top': '+='+ (side_height - overside_height) / 2 +'px',
			'opacity': '-='+ (side_opacity - overside_opacity)
			}, speed, 'swing', function () { $ (this).css ('display', 'none'); });
		$ (current).animate ({
			'left': '+='+ current_width +'px',
			'width': '-='+ (current_width - side_width) +'px',
			'height': '-='+ (current_height - side_height) +'px',
			'margin-top': '+='+ (current_height - side_height) / 2 +'px',
			'opacity': '-='+ ($ (this).css ('opacity') - side_opacity)
			}, speed, 'swing', function () {
				$ (this).prev ().removeClass ('left').addClass ('current');
				$ (this).prev ().prev ().removeClass ('over_left').addClass ('left');
				$ (this).removeClass ('current').addClass ('right');
				$ (this).next ().removeClass ('right').addClass ('over_right');
				
				$ ('#prev').removeClass ('off');
				$ ('.slider > .current > span').css ('display', 'block');
				$ ('.slider > .current > span').animate ({
					'height': '+='+ span_height +'px'
					}, speed / 2, 'swing');
				$ ('.slider > .current').unbind ('click');
				$ ('.slider > .current').next ().unbind ('click').bind ('click', function () { $ ('#next').click (); });
				$ ('.slider > .current').prev ().unbind ('click').bind ('click', function () { $ ('#prev').click (); });
				$ ('.slider > .default_displayed').removeClass ('default_displayed');
				});
		}
	});

function initBinds () {	
	$ ('.right').bind ('click', function () { $ ('#next').click (); });
	$ ('.left').bind ('click', function () { $ ('#prev').click (); });
	}

function initStyles () {
	$ ('.slider').css ('width', current_width + side_width * 2 + overside_width * 2 +'px').css ('margin-left', -(current_width + side_width * 2 + overside_width * 2) / 2 +'px');
	$ ('.slide').css ('width', current_width +'px').css ('height', current_height +'px').css ('left', side_width +'px');
	$ ('.right').css ('width', side_width +'px').css ('height', side_height +'px').css ('top', '0').css ('margin-top', (current_height - side_height) / 2 +'px').css ('left', current_width + side_width +'px').css ('opacity', side_opacity);
	$ ('.left').css ('width', side_width +'px').css ('height', side_height +'px').css ('left', '0').css ('top', '0').css ('margin-top', (current_height - side_height) / 2 +'px').css ('opacity', side_opacity);
	$ ('.over_right').css ('width', overside_width +'px').css ('height', overside_height +'px').css ('top', '0').css ('margin-top', (current_height - overside_height) / 2 +'px').css ('left', current_width + side_width * 2 + overside_width +'px').css ('opacity', overside_opacity);
	$ ('.over_left').css ('width', overside_width +'px').css ('height', overside_height +'px').css ('left', '0').css ('top', '0').css ('margin-top', (current_height - overside_height) / 2 +'px').css ('opacity', overside_opacity);
	}

function addSlides (place) {
	var slides = $ ('.slides > .slide');
	if (place == 'before') {
		for (var i = slides.length - 1; i >= 0; i--) {
			$ ('.slider').html ('<div class="slide over_left" style=\'background-image: '+ $ (slides[i]).css ('backgroundImage') +';\'>'+ $ (slides[i]).html () +'</div>' + $ ('.slider').html ());
			}
	} else if (place == 'after') {
		for (var i = 0; i < slides.length; i++) {
			$ ('.slider').html ($ ('.slider').html () + '<div class="slide over_right" style=\'background-image: '+ $ (slides[i]).css ('backgroundImage') +';\'>'+ $ (slides[i]).html () +'</div>');
			}
		}
	initStyles ();
	initBinds ();
	}

function onFocus () {
	count = true;
	focus++;
	if (focus > 1)
		$ ('.slider_container').css ('display', 'none');
	}

function onBlur () {
	count = false;
	}

window.onfocus = onFocus;
window.onblur = onBlur;
