//------------------------------------------------------------------//
//													 				//
//					 	QuickSend					 				//
//													 				//
//------------------------------------------------------------------//
// Date de création					: 18/06/2008					//
// Dernière modification 			: 18/06/2008					//
// Auteur 							: Johan Leche					//
// Propriétaire						: Keyrio SARL					//
// Contact							: j.leche@keyrio.fr				//
// Web								: http://www.keyrio.fr			//
//------------------------------------------------------------------//
//																	//
// Dépendances :			- prototype.js 		version 1.6			//
// 							- scriptaculous.js	version 1.8			//
//																	//
//------------------------------------------------------------------//	
var QuickSend = Class.create();

QuickSend.prototype = 
{
	initialize: function(params)
	{
		//params
		this.m_sTriggerId			= params.sTriggerId;
		this.m_sSendUrl				= params.sSendUrl;
		this.m_sParamEmail			= params.sParamEmail;
		this.m_sDefaultMessage		= params.sDefaultMessage		|| 'votre email';
		
		this.m_sCss					= params.sCss					|| 'quick_send_css';
		this.m_sTriggerAction		= params.sTriggerAction 		|| 'click';
		this.m_sContainerId			= params.sContainerId			|| 'quick_send_container'
		this.m_sButtonId			= params.sButtonId				|| 'quick_send_button'
		this.m_sLabel				= params.sLabel 				|| 'Email :';
		this.m_sError				= params.sError 				|| '';
		
		this.m_nPK					= params.nPK 				|| 0;

		// variables de contrôle
		this.m_bIsOpen				= false;
		this.m_bSended				= false;
		
		this.launchEvents();
	},
	
	
	launchEvents: function()
	{
		var self = this;
		
		// apparition du formulaire
		Event.observe
		(
			self.m_sTriggerId,
			self.m_sTriggerAction,
			function()
			{
				self.buildBox();
			}
		);	
	},
	
	
	buildBox: function()
	{
		var self = this;
		
		if (!this.m_bIsOpen)
		{
			this.m_bIsOpen 	= true;
			
			var oContainer  = new Element('div', {'id': self.m_sContainerId, 'class': self.m_sCss});
			var oField 		= new Element('input', {'type': 'text', 'id': self.m_sParamEmail, 'name': self.m_sParamEmail, 'value': self.m_sDefaultMessage});
			var oButton		= new Element('input', {'type': 'button', 'id': self.m_sButtonId, 'name':self.m_sButtonId, 'value': 'Ok'});
			
			var oTable  	= new Element('table');
			var oTBody  	= new Element('tbody');
			var oTR1  		= new Element('tr');
			var oTR2  		= new Element('tr');
			var oTD1  		= new Element('td', {'class': 'quicksend_col_01'}).update(self.m_sLabel);
			var oTD2  		= new Element('td', {'class': 'quicksend_col_02'});
			var oTD3  		= new Element('td', {'colspan': 2, 'class': 'quicksend_col_03'});
			
			oContainer.hide();
			
			oContainer.appendChild(oTable);
			oTable.appendChild(oTBody);
			oTBody.appendChild(oTR1);
			oTR1.appendChild(oTD1);
			oTR1.appendChild(oTD2);
			oTBody.appendChild(oTR2);
			oTR2.appendChild(oTD3);
			oTD2.appendChild(oField);
			oTD3.appendChild(oButton);
			
			$(self.m_sTriggerId).getOffsetParent().appendChild(oContainer);
			
			Effect.BlindDown(self.m_sContainerId, { duration: 0.8 });
			
			// envoi du message	
			Event.observe
			(
				self.m_sButtonId,
				'click',
				function()
				{
					self.processSend();
				}
			);	
			
			// message par defaut
			Event.observe
			(
				self.m_sParamEmail,
				'focus',
				function()
				{
					if ($(self.m_sParamEmail).value == '' || $(self.m_sParamEmail).value == self.m_sDefaultMessage)
						$(self.m_sParamEmail).value = '';
				}
			);	
			
			// message par defaut
			Event.observe
			(
				self.m_sParamEmail,
				'blur',
				function()
				{
					if ($(self.m_sParamEmail).value == '')
						$(self.m_sParamEmail).value = self.m_sDefaultMessage;
				}
			);			
		}
	},
	
	
	processSend: function()
	{
		var self 	= this;
		
		var sEmail 	= $(this.m_sParamEmail).value;
		var sUrl 	= this.m_sSendUrl + '&' + this.m_sParamEmail + '=' + sEmail;
		
		var sUrl = 'envoi-par-mail-' + escape(sEmail) + '-' + this.m_nPK + '.html';
		
		new Ajax.Request
		(
			sUrl,
			{
				onSuccess: function(oXHR)
				{
					self.callbackSend(oXHR.responseText);
				}
			}
		);
	},
	
	
	callbackSend: function(psResponseText)
	{
		alert('Envoi en cours');
		
		var oJSON = eval('(' + psResponseText + ')');
		
		if (oJSON)
		{
			alert(oJSON.message);
		}
		else
			alert('Une erreur est survenue');
	}
}
//EOF	