jQuery.fn.popin = function(o) {
	var settings = jQuery.extend({
		width : 250,
		height : 250,
		newId : 'popSansNom',
		className: "",
		loaderImg: "",
		opacity: .15,
		onStart: null,
		onComplete: null,
		onExit: null,
		htmlContent:"",
		forceOpen:false,
		title:'Sans titre'
	}, o);
	// Action ouverture
	jQuery(this).each(function() {
		jQuery(this).click(function() {
			PPNopen($(this).attr("href"));
			return false;
		});
	});
	// Popin Ouverture
	var Loader = new Image();
	Loader.src = settings.loaderImg;
	ie6 = ($.browser.msie && ($.browser.version == "6.0")) ? true : false;
	// CSS
	$("body").css("position", "relative");
	if(settings.htmlContent || settings.forceOpen)
	{
		PPNopen($(this).attr("href"));
	}
	function PPNopen(url) {
		if(settings.onStart != null) {
			settings.onStart();
		}
		if(ie6 == true) {
			$("#PPNCSS").remove();
			$("body").append(''
				+	'<style type="text/css" id="PPNCSS">'
					+	'.'+settings.newId+'popin {top:expression(documentElement.scrollTop + body.scrollTop + (documentElement.clientHeight/2) - ' + (settings.height/2) + ' + "px")}'
				+	'</style>'
				+	'');
		}
		// Insertion du voile & Verrouillage du scroll	
		$("body").prepend('<div class="'+settings.newId+'popin-voile"></div>');
		// Patch IE6
		if(ie6 == true)
		{
			
			PPNhtmlScroll 			= document.getElementsByTagName("html")[0].scrollTop;
			var PPNbodyMargin 		= new Object();
			PPNbodyMargin.top 		= parseInt($("body").css("margin-top"));
			PPNbodyMargin.right 	= parseInt($("body").css("margin-right"));
			PPNbodyMargin.bottom 	= parseInt($("body").css("margin-bottom"));
			PPNbodyMargin.left 		= parseInt($("body").css("margin-left"));
			$("html, body").css("height", "100%");
			//$("html, body").css("overflow", "hidden");
			$("body").height($("body").height());
			PPNbodyHeight = parseInt($("body").height());
			$("html, body").css("overflow", "visible");
			$("html, body").css("overflow-x", "visible");
			PPNbodyTop = ((PPNbodyMargin.top + PPNbodyMargin.bottom) < PPNhtmlScroll) ? (PPNbodyMargin.top + PPNbodyMargin.bottom - PPNhtmlScroll) : 0;
			$("body").css("top", PPNbodyTop );					
		}
		else
		{
			//$("html, body").css("overflow", "hidden");
		}
		// Insertion de la popin et animation
		$(".popin").css("height", $("body").height() );
		// Requête
		if(settings.htmlContent=='')
		{
			appliquerCssPopin();
			$.ajax({
				type: "GET",
				url: url,
				dataType: "html",
				success: function(m)
				{
					// Création de la popin
					
					// Chargement du contenu
					$("."+settings.newId+"popin .popin-content").html(m);
				},
				complete: function(){
					// Loader
					// Affichage
					if(ie6 == true) 
					{
						$("."+settings.newId+"popin").css("top", parseInt($("."+settings.newId+"popin").css("top")) - PPNbodyTop );
					}
					$("."+settings.newId+"popin").fadeIn("slow", function() 
					{
						if(settings.onComplete != null) 
						{
							settings.onComplete();
						}
					});
				}
			});
		}
		else
		{
			appliquerCssPopin();
			// Chargement du contenu
			$("."+settings.newId+"popin .popin-content").empty().append(settings.htmlContent)
			// Loader
			// Affichage
			if(ie6 == true) 
			{
				$("."+settings.newId+"popin").css("top", parseInt($(".popin").css("top")) - PPNbodyTop );
			}
			$("."+settings.newId+"popin").fadeIn("slow", function() 
			{
				if(settings.onComplete != null) 
				{
					settings.onComplete();
				}
			});
		}
		// Action fermeture
		/*
		$("."+settings.newId+"popin").click(function() 
		{
			$("."+settings.newId+"popin").topZIndex( { increment: 10 } );
			return false;
		});
		*/
		$("."+settings.newId+"popin .popin-header .popin-close").click(function() 
		{
			PPNclose();
			return false;
		});
		$("."+settings.newId+"popin-reduit .popin-header .popin-close").click(function() 
		{
			PPNclose();
			return false;
		});
		$("."+settings.newId+"popin .popin-header .popin-reduire").click(function() 
		{
			popinReduire();
			return false;
		});
		$("."+settings.newId+"popin-reduit .popin-header .popin-aggrandir").click(function() 
		{
			popinAggrandir();
			return false;
		});
	}
	function popinReduire()
	{
		$(".popinsMinis ."+settings.newId+"popin-reduit").css("display",	"inline-block");
		$("."+settings.newId+"popin").css("display",						"none");
		majPosPage();
	}
	function popinAggrandir()
	{
		$(".popinsMinis ."+settings.newId+"popin-reduit").css("display",					"none");
		$("."+settings.newId+"popin").css("display",						"block");
		majPosPage();
	}
	// Popin fermeture
	function PPNclose()
	{
		$("html").unbind("keydown");
		$("."+settings.newId+"popin").fadeOut("slow", function() {
			// Suppression du voile & Déverrouillage du scroll	
			if(ie6 == true) {
				//$("html, body").css("height", "auto");
				//$("html, body").css("overflow", "auto");
				//$("html, body").css("overflow-x", "hidden");
				$("body").css("top", 0);
				window.scrollTo(0, (PPNhtmlScroll) );
			} else {
				//$("html, body").css("overflow", "auto");
			}
			if(settings.onExit != null) {
				settings.onExit();
			}
			$("."+settings.newId+"popin").remove();
		});
		$(".popinsMinis ."+settings.newId+"popin-reduit").fadeOut("slow", function() {	
			$(".popinsMinis ."+settings.newId+"popin-reduit").remove();
			majPosPage();
		});
		
	}
	function appliquerCssPopin()
	{
		$("."+settings.newId+"popin").remove();
		$(".popinsMinis ."+settings.newId+"popin-reduit").remove();
		var divHeader = '<div class="popin-header"><a class="popin-close"><img class="popin-header-img" src="/images/mac_close.png"/></a> <span class="popin-header-title">'+settings.title+'</span></div>';
		$("body").prepend('<div class="'+settings.newId+'popin ' + settings.className + '">'+divHeader+'<div class="popin-content"></div></div>');
		var divHeader2 = '<div class="popin-header"><a class="popin-close"><img class="popin-header-img" src="/images/mac_close.png"/></a><a class="popin-aggrandir"><img class="popin-header-img" src="/images/mac_aggrandir.png"/></a> <span class="popin-header-title"><span class="reduit">'+settings.title+'</span></span></div>';
		$(".popinsMinis").prepend('<div class="'+settings.newId+'popin-reduit ' + settings.className + '">'+divHeader2+'</div>');
		
		$("."+settings.newId+"popin").draggable({ handle: ".popin-header"},{ cursor: 'crosshair' },{ opacity: 0.5 },{ appendTo: 'parent' }, { start: function(event, ui) { 
											$("."+settings.newId+"popin").topZIndex( { increment: 2 } );
										}});
		/*
		$("."+settings.newId+"popin-reduit").draggable({ handle: ".popin-header"},{ cursor: 'crosshair' },{ opacity: 0.5 },{ appendTo: 'parent' }, { start: function(event, ui) { 
											$("."+settings.newId+"popin-reduit").topZIndex( { increment: 2 } );
										}});
		*/
		$("."+settings.newId+"popin").resizable(
			{
				resize: function(event, ui)
				{
					$("."+settings.newId+"popin .popin-content").css("height",		$("."+settings.newId+"popin").height()
																					- 	parseInt($("."+settings.newId+"popin").css("padding-top"))
																					- 	parseInt($("."+settings.newId+"popin").css("padding-bottom"))
																					- 	$("."+settings.newId+"popin .popin-header").height()
																				)
																.css("width",		$("."+settings.newId+"popin").width()
																					- 	parseInt($("."+settings.newId+"popin").css("padding-left"))
																					- 	parseInt($("."+settings.newId+"popin").css("padding-right"))
																				)
				}
			});
		
		
		// CSS 
		$("."+settings.newId+"popin")			.css("left",						"50%")
												.css("width",						settings.width)
												.css("height",						settings.height)
												.css("overflow",					"hidden")
												.css("margin-left",					-(settings.width/2))
												;
		$("."+settings.newId+"popin").topZIndex( { increment: 10 } );
		$(".popinsMinis ."+settings.newId+"popin-reduit")	.css("width",						250)
												.css("height",						30)
												.css("overflow",					"hidden")
												.css("display",						"none")
												;
		$(".popinsMinis ."+settings.newId+"popin-reduit").topZIndex( { increment: 10 } );
		$("."+settings.newId+"popin .popin-content")	.css("padding", '10px')
														.css("padding-top", "20px")
														;
		$("."+settings.newId+"popin .popin-content")	.css("overflow",					"auto")
														.css("height",		$("."+settings.newId+"popin").height()
																- 	parseInt($("."+settings.newId+"popin").css("padding-top"))
																- 	parseInt($("."+settings.newId+"popin").css("padding-bottom"))
																- 	$("."+settings.newId+"popin .popin-header").height()
																- 	parseInt($("."+settings.newId+"popin .popin-content").css("padding-top"))
																- 	parseInt($("."+settings.newId+"popin .popin-content").css("padding-bottom"))
																- 	parseInt($("."+settings.newId+"popin .popin-header").css("padding-top"))
																- 	parseInt($("."+settings.newId+"popin .popin-header").css("padding-bottom"))
															)
														.css("width",		$("."+settings.newId+"popin").width()
																- 	parseInt($("."+settings.newId+"popin").css("padding-left"))
																- 	parseInt($("."+settings.newId+"popin").css("padding-right"))
																- 	parseInt($("."+settings.newId+"popin .popin-content").css("padding-left"))
																- 	parseInt($("."+settings.newId+"popin .popin-content").css("padding-right"))
															)
														
														;
		if(ie6 == true) {
			$("."+settings.newId+"popin")		.css("position",					"absolute")
												.css("margin-top",					0)
												;
		}
		else {
			$("."+settings.newId+"popin")		.css("position",					"fixed")
												.css("top",							"50%")
												.css("margin-top",					-(settings.height/2))
												;
		}
	}
	
};

