/***************************************************
	Messages de services
	Créé le 05/10/2011 par damien @ oceanet
***************************************************/
(function($) {

	//variables
	var vars = {
		animDuration: 200,
		masqueOpacity: 0.8
	};


	var methods = {
	
		init: function(o){ 

			var params = this.params;
			
			loadPopup(params);		
				
			$('.messageService_close').live('click', function(){
			
				closePopup(params);
				return false;
			});					

			$('#messageService_masque').live('click', function(){
				closePopup(params);
			});
		
			$(document).keydown(function(event){
				if(event.keyCode == 27){
					closePopup(params);
				}
			});
			
		},
		
		close: function(){
			closePopup(this.params);
		}		
		
	};	
		
		
		
		
		
	$.messageService = function(method){    
	
		if(methods[method]){
			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
		} 
		else if(typeof method === 'object' || ! method){
			
			//paramètres par défaut
			this.params = $.extend({
				title: 				'Message d\'information', 
				print:				null,
				download:			null,
				type:				'html',
				html: 				'',
				source:				'',
				width:				438,
				onLoad:				null,
				onLoadComplete:		null,
				onClose:			null,
				onCloseComplete:	null
			}, method);
		
			return methods.init.apply(this, arguments);
		}
		else{
			$.error('La méthode '+method+' n\'existe pas pour jQuery.messageService !');
		}    
	};


	//création du masque		
	function loadMasque(params){		
		$('#messageService_masque').remove();
		$('<div id="messageService_masque"></div>')
			.appendTo('body')
			.css('height', $(document).height()+'px')
			.fadeTo(vars.animDuration, vars.masqueOpacity);
	}			
	
	
	//création du popup
	function loadPopup(params){

		if(params.onLoad){
			params.onLoad();
		}

		if(params.type == 'url')	var content = $.ajax({ url:URL_SITE_HTTP+params.source, async:false }).responseText;
		else						var content = params.html;
			
		loadMasque();
		
		var message = 	'<div class="messageService_conteneur">';
		message +=			'<div class="messageService_conteneur_entete">';
		message +=				'<p class="messageService_conteneur_entete_titre" style="width:'+(params.width-180)+'px;">'+params.title+'</p>';
		message +=				'<a href="#" class="messageService_conteneur_entete_fermer messageService_close" title="Fermer">Fermer</a>';
		if(params.print != null) message += '<a href="'+URL_SITE_HTTP+params.print+'" class="messageService_conteneur_entete_print blank" title="Imprimer"><span></span>Imprimer</a>';
		if(params.download != null) message += '<a href="'+URL_SITE_HTTP+params.download+'" class="messageService_conteneur_entete_download blank" title="Télécharger">Télécharger</a>';
		message +=			'</div>';
		message +=			'<div class="messageService_conteneur_texte">';
		message +=				content;
		message +=			'</div>';
		message +=		'</div>';
	
		var msgSrv = $(message).appendTo('body');
		
		if($.browser.webkit)	var scroll_top = Number(document.body.scrollTop);
		else					var scroll_top = Number($('html').scrollTop());
		
		msgSrv.css({'width': 		params.width+'px',
					'margin-left':	'-'+(params.width/2)+'px',
					'margin-top': 	(scroll_top-Number(msgSrv.height()/2))+'px'
				}).fadeIn(vars.animDuration, function(){
					if(params.onLoadComplete){
						params.onLoadComplete();
					}
				});
				
		//Ajustement du top si trop haut
		var marginTop = Number(msgSrv.css('margin-top').replace('px', ''));
		var top = Number(msgSrv.css('top').replace('px', ''));
		if(top+marginTop < 0){
			msgSrv.css({'margin-top': 		'0px',
						'top':				'0px'
					});
		}

		
	}			
	
	
	//supprime le masque
	function closeMasque(params){
		$('#messageService_masque').fadeOut(vars.animDuration, function(){
			$(this).remove();
		});
	}
	
	
	//ferme le popup
	function closePopup(params){
		
		if(params.onClose){
			params.onClose();
		}
	
		closeMasque(params);
		
		$('.messageService_conteneur').fadeOut(vars.animDuration, function(){
			$(this).remove();
			if(params.onCloseComplete){
				params.onCloseComplete();
			}
		});
	}

})(jQuery);



/*
$(function(){

	$('#slogan').click(function(){
		$.messageService({
			title: 			'<strong>TEST</strong> <span>0123456789</span>',
			print:			'#',
			download:		'#',
			type:			'html',
			html: 			'<p><em>Test</em> <a href="#" class="messageService_close">[fermer avec une classe css]</a> <span id="fermerPopup">[fermer sur evenement exterieur]</span></p><br/>test<br/>test<br/>test<br/>test<br/>test<br/>test',
			source:			'popup_ajax/test.php',
			width:			650,
			onLoad:			function(){ },
			onLoadComplete:	function(){ },
			onClose:		function(){ },
			onCloseComplete:function(){ }
		});
	});
	
	$('#fermerPopup').live('click', function(){
		$.messageService('close');
	});
	
	
});*/
