/* Tinybox - jQuery.small.image.box 
 * Licensed under the GPL (http://www.opensource.org/licenses/gpl-license.php) license.
 *
 * Version: 0.4-nec
 *
 * Requires: jQuery 1.2+
 *
 * Compatibility: 
 *		WinXP: Firefox, Opera, MSIE 7
 *		MacOSX: Firefox, Safari, Opera
 *
 * WARNING : This is a "in-dev" version.
 * 
 */
 
jQuery.fn.tinybox = function(settings) {
	settings = jQuery.extend({
		set: false,
		closeImg: "close.gif",
		loadingImg: "loading.gif",
		prevLabel: "lightbox-btn-prev.gif",
		nextLabel: "lightbox-btn-next.gif",
		closeLabel: "close",
		noTitleLabel: "",
		copyrightLabel : "&copy; Elena et Phil",
		displayNav: true
	}, settings);
	settings.overlayCss = jQuery.extend({
		background:"black",
		position:"absolute",
		width:"100%",
		height: jQuery(document).height(),
		top: 0,
		left: 0,
		zIndex: 9990
	}, settings.overlayCss);
	settings.tinyboxCss = jQuery.extend({
		background:"white",
		position: "absolute",
		textAlign: "center",
		padding: 10,
		zIndex: 9999
	}, settings.tinyboxCss);
	settings.closeButtonCss = jQuery.extend({
		position: "absolute",
		top: 0,
		right: 0,
		border: 0
	}, settings.closeButtonCss);
	settings.imgTitleCss = jQuery.extend({
		fontSize: "11px",
		marginTop: 5,
		marginBottom: 2,
		textAlign: "center", 
		padding: 0	
	}, settings.imgTitleCss);
	settings.nextlabelCss = jQuery.extend({
		position: "absolute",										  
		top: 0,
		marginTop: 50,
		right: 0,
		textDecoration: "none"
	}, settings.nextlabelCss);
	settings.prevlabelCss = jQuery.extend({
		position: "absolute",										  
		top: 0,
		left: 0,
		marginTop:50,
		textDecoration: "none"
	}, settings.prevlabelCss);
	settings.paginationEltCss = jQuery.extend({
		marginLeft: 2,
		marginRight: 2,		
		textDecoration: "none"
	}, settings.paginationEltCss);
	if( !jQuery("#overlay").size() ) jQuery('<div id="overlay"></div>').css(settings.overlayCss).appendTo("body").hide();
	if( !jQuery("#tinybox").size() ) jQuery('<div id="tinybox"></div>').css(settings.tinyboxCss).appendTo("body").hide();
	settings.collection = new Array();
	this.each(function() {
		if( this.tagName == "A" && this.href != "" && this.href != "#" ) {
			settings.collection.push(this);
		}
	});
	
		
	settings.nbrImg = settings.collection.length;
	jQuery(settings.collection).click(function() {
		var maxImg = settings.nbrImg;
		jQuery("#actual_img").fadeOut("fast");
		
		jQuery("#tb_img_infos").fadeOut("fast");
		if( !settings.alreadyClicked ) {
			jQuery("#tinybox").css("width", "100px");
			jQuery("#tinybox").css("height", "100px");
			jQuery("#tinybox").css("left", (jQuery(window).width() - 50) / 2);
			jQuery("#tinybox").css("top", "20px");
			settings.alreadyClicked = true;
		}
		jQuery("#overlay").css(settings.overlayCss);
		if( jQuery.browser.msie ) jQuery("#overlay").css("height", jQuery(window).height() );
		if( jQuery.browser.safari ) jQuery("#overlay").css("height", jQuery(window).height() );
		jQuery("#overlay").show().fadeTo("fast", 0.85);
		window.scrollTo(0,0);
		jQuery("#tinybox").css(settings.tinyboxCss).fadeIn("fast");
		
		jQuery('<img id="tb_loader" src="'+settings.loadingImg+'" alt="chargement..." />').appendTo("#tinybox").css({position: "absolute", top: ((jQuery("#tinybox").height() - 16) / 2), left: ((jQuery("#tinybox").width() - 16) / 2)}).fadeIn("fast");
		var tb_img_infos = jQuery('<div id="tb_img_infos" style="margin-top:5px"></div>').css("position", "relative");
		jQuery('<a href="#" id="tb_close" title="'+settings.closeLabel+'"><img style="border: 0;" alt="'+settings.closeLabel+'" src="'+settings.closeImg+'" /></a>').css(settings.closeButtonCss).appendTo( jQuery(tb_img_infos) );
		
		
		if( settings.displayNav ) {
			//var tb_img_title = jQuery(this).attr("title") || settings.noTitleLabel;
			var copyright = settings.copyrightLabel;
			//jQuery(tb_img_infos).append("<h4>"+tb_img_title+"</h4>");
			jQuery(tb_img_infos).append("<h5>"+copyright+"</h5>");
			var tb_pagination = jQuery('<div id="tb_pagination"></div>');
			var actualPosition = jQuery(settings.collection).index( jQuery(this)[0] ) + 1;
			if( actualPosition > 1 ) {
				var prev = jQuery(settings.collection).get( actualPosition-2 );
				jQuery('<a id="prev" href="#"><img style="border: 0;" alt="'+settings.prevLabel+'" src="'+settings.prevImg+'" /></a> ').appendTo( jQuery(tb_pagination) ).css(settings.prevlabelCss).click(function() {		
					jQuery(prev).triggerHandler("click");
				});
			}
			if( maxImg > 1 ) jQuery(' <strong>'+(actualPosition)+'/'+maxImg+'</strong> ').css(settings.paginationEltCss).appendTo( jQuery(tb_img_infos) );
			if( actualPosition < maxImg ) {
				var next = jQuery(settings.collection).get( actualPosition );
				jQuery(' <a id="next" href="#"><img style="border: 0;" alt="'+settings.nextLabel+'" src="'+settings.nextImg+'" /></a>').appendTo( jQuery(tb_pagination) ).css(settings.nextlabelCss).click(function() {
					jQuery(next).triggerHandler("click");
				});
			}
			jQuery(tb_img_infos);
			settings.heightAdjust = 45;			
			
		} else {
			jQuery("#tb_img_infos").css("padding", "5px 0 0");
			settings.heightAdjust = 15;
		}
				

		
		var img_tb_loader = new Image();
		img_tb_loader.onload = function() {
			
			jQuery("#tb_loader").fadeOut("fast");
			jQuery("#tinybox").animate(
			    {
			    	top: 40,
			    	height: img_tb_loader.height + settings.heightAdjust
			    },
			    "normal"
			).animate(
			    {
			    	left: (jQuery(window).width() - img_tb_loader.width) / 2,
			    	width: img_tb_loader.width
			    },
			    "normal",
			    function() {
					// redimension du overlay
					jQuery("#tb_loader").fadeOut("fast");
					jQuery(this).empty().append( jQuery(tb_pagination) ).append( jQuery('<img src="'+img_tb_loader.src+'" id="actual_img" />') ).append( jQuery(tb_img_infos) );
					jQuery("#tb_img_infos").children("h4").css(settings.imgTitleCss);					
					jQuery(img_tb_loader).fadeIn("slow");	
					jQuery("#next").hide();
					jQuery("#prev").hide();					
					jQuery("#overlay").click(function() {
						jQuery("#tinybox").fadeOut("fast");
						jQuery("#overlay").fadeOut("normal");
					});
					img_tb_loader.src = jQuery(this).attr("href");
					jQuery("#tinybox").hover(function(){
						   jQuery("#next").fadeIn("fast");
						   jQuery("#prev").fadeIn("fast");
						 },function(){
						   jQuery("#next").fadeOut("fast");
						   jQuery("#prev").fadeOut("fast");
					});
					jQuery("#tb_close").click(function() {						
						jQuery("#overlay").fadeOut("fast");
						jQuery("#tinybox").fadeOut("fast");
						jQuery("#next").fadeOut("fast");
						jQuery("#prev").fadeOut("fast");
					});
				}
			);
		};
		img_tb_loader.src = jQuery(this).attr("href");
		return false;
	});
};