/* CUSTOM */

$(window).smartresize(function(){
	sliderCorrectOnResize( "sl1" );
});


$(document).ready(function(){
	startSlider( "sl1", true, true, randomSlide("sl1") );
	// startSlider( context, allowLoop, autoSlideshow, firstSlide );

	avoidCalendarClick();
	$("table").mouseleave( function(){
		avoidCalendarClick();
	});
});

function avoidCalendarClick(){
	$("table caption a").attr("title", "");
	$("table caption a").attr("href", "#");
	$("table caption a").click( function(evt){
		evt.preventDefault();
	});
}


/* SLIDER */

function randomSlide( context ){
	var maxSlides = $("#"+context+" .group").length;
	var randomSlide = Math.floor(Math.random()*maxSlides);
	return randomSlide;
}

function startSlider( context, allowLoop, autoSlideshow, firstSlide ){
	allowLoop = (typeof(allowLoop) != "undefined") ? allowLoop : true;
	autoSlideshow = (typeof(autoSlideshow) != "undefined") ? autoSlideshow : false;
	
	if( $("#"+context+" .group").length > 1 ){
		var currentSlide = $("#"+context+" .group.selected").attr("id");
		currentSlide = ( !currentSlide ) ? ( !firstSlide ) ? context+"-0" : context+"-"+firstSlide : currentSlide;

		sliderScrollTo( context, "#"+currentSlide, true );
		disableButtons( context, allowLoop );
		
		$("#"+context+"-menu .next").click(function(evt){
			clickNext( context, allowLoop );
			evt.preventDefault();
		});

		$("#"+context+"-menu .prev").click(function(evt){
			clickPrev( context, allowLoop );
			evt.preventDefault();
		});
		
		$("#"+context+"-menu .specific").click(function(evt){
			var target = $(this).attr("href");
			clickSpecific( context, allowLoop, target );
			evt.preventDefault();
		});

	} else {
		$("#"+context+"-menu .next, #"+context+"-menu .prev, #"+context+"-menu .specific").css("visibility", "hidden");
	}
	
	if( autoSlideshow ){
		startAutoClickSlider( context, allowLoop );
	}
}

function clickNext( context, allowLoop ){
	var target = findNext( context, allowLoop );
	clickSpecific( context, allowLoop, target );
}

function clickPrev( context, allowLoop ){
	var target = findPrev( context, allowLoop );
	clickSpecific( context, allowLoop, target );
}

function clickSpecific( context, allowLoop, target ){
	sliderScrollTo( context, target );
	disableButtons( context, allowLoop );
	
	stopAutoClickSlider( context );
	startAutoClickSlider( context, allowLoop );
}

function sliderCorrectOnResize( context ){
	var tgt = findSelectedGroup( context );
	sliderScrollTo( context, "#"+tgt );
}

function sliderScrollTo( context, target, nospeed ){
	var spd = (nospeed) ? 0 : 400;
	$("#"+context).scrollTo( target, spd );
	markSelectedGroup( context, target );
}

function markSelectedGroup( context, target ){
	$("#"+context+" .group").removeClass("selected");
	$(target).addClass("selected");
	markSliderMenu( context, target );
}

function markSliderMenu( context, target ){
	$("#"+context+"-menu a").removeClass("selected");
	$("#"+context+"-menu a[href="+target+"]").addClass("selected");
	
	$(".caption p").html( $(target).find("img").attr("title") );
}

function findSelectedGroup( context ){
	if( !$("#"+context+" .group").hasClass("selected") ){
		$("#"+context+" .slider .group:first-child").addClass("selected");
	}
	return( $("#"+context+" .group.selected").attr("id") );
}

function findNext( context, allowLoop ){
	var total = $("#"+context+" .group").length;
	var selected_id = findSelectedGroup( context );
	var selected_index = parseFloat( selected_id.split("-").pop() );
	if( allowLoop ){
		var target = ( selected_index == total-1 ) ? "#"+context+"-0" : "#"+context+"-"+(selected_index+1);
	} else {
		var target = ( selected_index == total-1 ) ? "#"+context+"-"+selected_index : "#"+context+"-"+(selected_index+1);
	}
	return target;
}

function findPrev( context, allowLoop ){
	var total = $("#"+context+" .group").length;
	var selected_id = findSelectedGroup( context );
	var selected_index = parseFloat( selected_id.split("-").pop() );
	if( allowLoop ){
		var target = ( selected_index == 0 ) ? "#"+context+"-"+(total-1) : "#"+context+"-"+(selected_index-1);
	} else {
		var target = ( selected_index == 0 ) ? "#"+context+"-"+selected_index : "#"+context+"-"+(selected_index-1);
	}
	return target;
}

function disableButtons( context, allowLoop ){
	var total = $("#"+context+" .group").length;
	var selected_id = findSelectedGroup( context );
	var selected_index = parseFloat( selected_id.split("-").pop() );
	if( !allowLoop ){
		if( selected_index == 0 ){
			$("#"+context+"-menu .prev").addClass("disabled");
			$("#"+context+"-menu .next").removeClass("disabled");
		} else if( selected_index == total-1 ){
			$("#"+context+"-menu .prev").removeClass("disabled");
			$("#"+context+"-menu .next").addClass("disabled");
		} else {
			$("#"+context+"-menu .prev").removeClass("disabled");
			$("#"+context+"-menu .next").removeClass("disabled");
		}
	}
}

/* automatic slideshow */

var repeatAutoClickSlider = new Array();

function startAutoClickSlider( context, allowLoop ){
	repeatAutoClickSlider[context] = setInterval( 'autoClickSlider("'+context+'", '+allowLoop+')', 8000 );
}

function stopAutoClickSlider( context ){
	clearInterval( repeatAutoClickSlider[context] );
}

function autoClickSlider( context, allowLoop ){
	clickNext( context, allowLoop );
}





