/**
 *
 * @fileoverview Gestisce le chiamate del form di login/iscrizione
 *
 * @filename login.js

 * @created 2008-05-07
 * @original author Giampaolo Bellavite
 * @copyright Kemen s.r.l.
 * @license Mozilla Public License Version 1.1
 * @version 0.1
 * @$LastChangedDate:: 2011-02-28#$
 * $LastChangedRevision: 4181 $
 * $LastChangedBy: faser $
*/

if(typeof(HOL) == 'undefined') {var HOL = {}};

HOL.login = {};

/*** Public methods ***/

/**
 * Esegue il login dal form di login
 * 
 */
HOL.login.loginUser = function(loginForm){
	var callback = {
		success: function(oResult){
			var parsedResponse = JSON.parse(oResult.responseText);
			

			
			Dom.removeClass('login-form','loader');
			// Controllo se c'e' un errore di validazione
			if (parsedResponse.CFValidationError) {
				HOL.forms.enableSubmit(loginForm);
				HOL.forms.catchValidationError(parsedResponse.CFValidationError, 'login-errore', loginForm);
			}
			else {
				document.location=parsedResponse;
			}
			return false;
		},
		failure: function(oResult){		
			var parsedResponse = JSON.parse(oResult.responseText);
			var body = "<p>Controlla di aver inserito la tua e-mail e la tua password correttamente.</p>";			
			body += "<p style='text-align:center;padding:10px'>";
			body += '<input type="button" onclick="$.fancybox.close();YAHOO.util.Dom.get(\'username\').select()" value="Riprova" /></p>';
			HOL.windowBox.showMessage('Login non valido',body);
			Dom.removeClass('login-form','loader');
			HOL.forms.enableSubmit(loginForm);
			HOL.forms.focusOnFirst('panelDialog');			
			return false;
		}
	};
	
	HOL.forms.cleanValidationError(loginForm,'login-errore');
	Dom.addClass('login-form','loader');
	HOL.forms.disableSubmit(loginForm);

	Conn.setForm(loginForm);
	var oConn = Conn.asyncRequest('POST', 
								  '/_ajax.common.cfm?_isXHR=true&method=loginUser', 
								  callback);
	// reset the form state after the submit
	Conn.resetFormState(); 
	return true;

};


/**
 * Esegue il login dal form di login
 * 
 */
HOL.login.loginUserFromFeedbackDialog = function(loginForm){
	var callback = {
		success: function(oResult){
			var parsedResponse = JSON.parse(oResult.responseText);
			Dom.removeClass('login-form','loader');
			// Controllo se c'e' un errore di validazione
			if (parsedResponse.CFValidationError) {
				HOL.forms.enableSubmit(loginForm);
				HOL.forms.catchValidationError(parsedResponse.CFValidationError, 'login-errore', loginForm);
			}
			else {
				feedbackBox.loadContent();
			}
			return false;
		},
		failure: function(oResult){
			var parsedResponse = JSON.parse(oResult.responseText);
			var body = "<p>Controlla di aver inserito la tua e-mail e la tua password correttamente.</p>";			
			body += "<p style='text-align:center;padding:10px'>";
			body += '<input type="button" onclick="$.fancybox.close();YAHOO.util.Dom.get(\'username\').select()" value="Riprova" /></p>';
			HOL.windowBox.showMessage('Login non valido',body);
			Dom.removeClass('login-form','loader');
			HOL.forms.focusOnFirst('panelDialog');		
			return false;
		}
	};
	
	HOL.forms.cleanValidationError(loginForm,'login-errore');
	Dom.addClass('login-form','loader');

	Conn.setForm(loginForm);
	var oConn = Conn.asyncRequest('POST', 
								  '/_ajax.common.cfm?_isXHR=true&method=loginUser', 
								  callback);
	// reset the form state after the submit
	Conn.resetFormState(); 
	return true;

};

/*
 * Invia la chiamata al server per il recupero della password 
 */
HOL.login.recoverPassword = function(frm){
	var callback = {
		success: function(oResult){
			var parsedResponse = JSON.parse(oResult.responseText);
			Dom.removeClass(frm,'loader');
			// Controllo se c'e' un errore di validazione
			if (parsedResponse.CFValidationError) {
				HOL.forms.enableSubmit(frm);
				HOL.forms.catchValidationError(parsedResponse.CFValidationError, 'recover-password-errore', frm);
				frm.email.select();
			}
			else {
				HOL.forms.enableSubmit(frm);
				$.fancybox.close();
				alert('La nuova password è stata inviata a ' + parsedResponse + '.');
				Dom.get('username').value=parsedResponse;
				Dom.get('username').select();
			}
		},
		failure: function(oResult){			
			HOL.panels.showError(oResult);
			HOL.forms.enableSubmit(frm);
		}
	};
	
	HOL.forms.cleanValidationError(frm,'login-errore');
	Dom.addClass(frm,'loader');
	HOL.forms.disableSubmit(frm);

	Conn.setForm(frm);
	var oConn = Conn.asyncRequest('POST', 
								  '/_ajax.common.cfm?_isXHR=true&method=recoverPassword', 
								  callback);
	// reset the form state after the submit
	Conn.resetFormState(); 
	return true;

};


/**
 * Registra e logga il nuovo cliente
 */
HOL.login.subscribeUser = function(frm){
	var callback = {
		success: function(oResult){
			var parsedResponse = JSON.parse(oResult.responseText);
			
			Dom.removeClass(frm,'loader');
			// Controllo se c'e' un errore di validazione
			if (parsedResponse.CFValidationError) {
				HOL.forms.enableSubmit(frm);
				HOL.forms.catchValidationError(parsedResponse.CFValidationError, 'iscrizione-errore', frm);
			}
			else {				
				document.location=parsedResponse;
			}
			return false;
		},
		failure: function(oResult){
			HOL.panels.showError(oResult);
			Dom.removeClass(frm,'loader');
			HOL.forms.enableSubmit(frm);
		
			return false;
		}
	};
	
	HOL.forms.cleanValidationError(frm,'iscrizione-errore');
	Dom.addClass(frm,'loader');
	HOL.forms.disableSubmit(frm);

	Conn.setForm(frm);
	var oConn = Conn.asyncRequest('POST', 
								  '/_ajax.ordine.cfm?_isXHR=true&method=subscribeUser', 
								  callback);
	// reset the form state after the submit
	Conn.resetFormState(); 
	return true;

};
