/**
 * fenetre plugin
 *
 */

(function($){

	/*
	 * @name $.fenetre
	 * @desc fonction principal du plugin : charge la page correspondante et laisse la fenetre cachee
	 * @return void
	 */
	$.fenetre = function(param) {
		var param = $.extend({
			idFen : null,
			url : null,
			type : 'classic' // classic ou iframe
		},param);

		if ( param.idFen == null || !/^([^ ]*\/)*[^ .]*\.(html|htm|php)(\?.*){0,1}$/.test(param.url) )
			return false;
		
		if ( $("#fen_cadre").length == 0)
			$.fenetre.creerCadre(param);
			
		$("#" + param.idFen).remove();
		$("#fen_contenu").append('<div id="'+ param.idFen +'" style="overflow:auto"></div>');
		
		if ( param.type == 'classic' )
			$("#" + param.idFen).load(param.url, function(data){ ajax_JsChargement( $("#" + param.idFen) ); });
		else if (param.type == 'iframe')
			$("#" + param.idFen).append('<iframe frameborder="0" src="'+param.url+'"></iframe>');	
		return true;

	};
	/*
	 * @name $.fenetre.creerCadre
	 * @desc cree le cadre qui contiendra les fenetre
	 * @return void
	 */
	$.fenetre.creerCadre = function(param){
		if ( $("#cadreFen").length != 0 )
			$("#cadreFen").remove();
		
		var cadreFen = $('\
					    <div id="fen_cadre">\
							<div id="fen_ombre"></div>\
					  		<div id="fen_contenu">\
								<p id="btFermer">FERMER</p>\
								<p id="coinHG"></p>\
								<p id="coinBD"></p>\
								<p id="coinBG"></p>\
								<p class="chargement"></p>\
							</div>\
						</div>');
		$("body").append(cadreFen);
		$("#fen_ombre").css('opacity', '0.8').click(function(){ $.fenetre.cacher() });
		$("#btFermer").click(function(){ $.fenetre.cacher() });
		$(document).keydown(function(e){ 
			if (e.keyCode == 27) $.fenetre.cacher();
		});
	};
	/* @name $.fenetre.afficher
	 * @desc affiche la fenetre et le contenu correspondant a l'id passer en parametre
	 * @return void
	 */
	$.fenetre.afficher = function(idFen, lMaxi){
		var marge = 50;
		var largeurMaxi = lMaxi == null ? 820 : lMaxi;
		var largeurIframe = 950;
		var hauteurMaxi = $.fenetre.getPageHeight() - 2 * marge;
		var top = marge + $.fenetre.getPageYScroll();
		
		// affichage de gif d'attente
		$("#fen_contenu > div").hide();
		$("#fen_contenu .chargement").show();
		$("#fen_contenu").css('height', '100px').css('width', '300px').css('top', top);
		$("#fen_ombre").css('height', $("body").height() );
		$("#fen_cadre").css('left', '0');
		$("#" + idFen).css('height', 'auto').css('width', 'auto');
		
		if ( $("#fen_contenu #" + idFen).length == 1){
			if ( $("#" + idFen + "> iframe").length != 0){
				var largeur = largeurIframe + 'px';
				var hauteur = hauteurMaxi + 'px';
				$("#" + idFen + "> iframe").css('height', hauteur).css('width', largeur);
			}
			else{
				var l = $("#" + idFen).width();
				var h = $("#" + idFen).height();
				var largeur = l < largeurMaxi && l > 300 ? l : largeurMaxi;
			 	var hauteur = h < hauteurMaxi && h > 100 ? h : hauteurMaxi;
			}
			
			$("#" + idFen).css('height', hauteur).css('width', largeur);
			$("#fen_contenu").animate({width : largeur}, 'slow', function() {
				$("#fen_contenu").animate({height : hauteur}, 'slow', function() {
					$("#fen_contenu > .chargement").hide();
					$("#" + idFen).show();
				});
			});
		}	
	};
	/* @name $.fenetre.cacher
	 * @desc cache la popup
	 * @return void
	 */
	$.fenetre.cacher = function(){
		$("#fen_cadre").css('left', '-5000px');
	};
	/*
	 * @name $.fenetre.getPageScroll
	 * @desc retourne la position de l'ecran par rapport à la page
	 *       fonction tirée du plugin facebox.jquery.js et quirksmode.com
	 * @return void
	 */
	$.fenetre.getPageYScroll = function() {
		var xScroll;
		if (self.pageYOffset)
			yScroll = self.pageYOffset;
		else if (document.documentElement && document.documentElement.scrollTop) 	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		else if (document.body) // all other Explorers
			yScroll = document.body.scrollTop;
		return yScroll;
	};
	/*
	 * @name $.fenetre.getPageHeight
	 * @desc retourne la hauteur l'ecran
	 *       fonction tiree du plugin facebox.jquery.js et quirksmode.com
	 * @return void
	 */
	$.fenetre.getPageHeight = function() {
		var windowHeight
		if (self.innerHeight)	// all except Explorer
			windowHeight = self.innerHeight;
		else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
			windowHeight = document.documentElement.clientHeight;
		else if (document.body) // other Explorers
			windowHeight = document.body.clientHeight;
		return windowHeight;
	};

})(jQuery)
