// Copyright Biz&Go 2006
var isAccount;

var AuthenticatorObject = Class.create();
AuthenticatorObject.prototype = {
  initialize: function (sMethod,isActive){
		// Constructor
		this.method = sMethod;
		this.container = "loginExistingCustomer";
		isAccount = (arguments[2] != null) ? true : false;
		this.checkAuthenticatedUser(isActive, isAccount);
		setTimeout("fnLoadPngs()",100);
		setTimeout("fnLoadImPngs()",100);			
	},
	updateHtmlLoginZone : function() {
		// Update left zone
		var flashEffect = new fx.Flash('loginState', {color_from:"#ffffff", color_to:"#b1ddf7", count:3, duration:600});
		flashEffect.onComplete = function() {					
			new AjaxUpdaterObject('loginState','/bzajax','&ajaxaction=getLoginState','post');	
			new AjaxUpdaterObject('loginFoot','/bzajax','&ajaxaction=getLoginLink','post');	
			$('loginState').style.backgroundColor='';
			if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) {
				setTimeout("fnLoadPngs()",500);
				setTimeout("fnLoadImPngs()",500);
			}
		}
		flashEffect.toggle();
	},
	checkAuthenticatedUser : function(isActive) {
		if(isActive) {
			var ajaxFadeCheckerEffect = new fx.Opacity('loginExistingCustomer',	
			{
				duration: 300, 
				onComplete: function() 
					{				
						new Ajax.Updater(
							'loginExistingCustomer',		
							'/bzajax',
							{	
								method:'post',
								postBody:'&ajaxaction=getUserDetails'+((isAccount) ? '&aac=true' : ''),
								onComplete : function () {
									Element.hide('bzloader');
									ajaxFadeCheckerEffect.clearTimer();
									ajaxFadeCheckerEffect.setOpacity(1);
									if(ie) {	
										fnLoadPngs();
										fnLoadImPngs();
									}
								}
							}		
						);
					}
			});
			ajaxFadeCheckerEffect.custom(1, 0.4);
			ajaxFadeCheckerEffect.toggle();
			this.showLoader();
		}
	},
	authenticateUser : function(oForm,container) {
		// Start Options
		this.container = container;
		var authenticateUserAjaxOptions = {
			// Form method (post, get)
			method : 'post',
			// Parameters to pass to remote url
			parameters : Form.serialize(oForm),
			// Connect mode
			asynchronous:true,
			// Server response on Success
			onSuccess : function(rsp) {
				// Hide loader
				AuthenticatorObject.prototype.hideLoader();
				var responseArray = eval(rsp.responseText);
				if(responseArray.lg=='1' && responseArray.pw=='1') {
					$('usr_pwd').className='';
					$('usr_login').className='';					
					$('c_usr_login').innerHTML = '';
					$('c_usr_pwd').innerHTML = '';
					new Ajax.Updater(
						'loginExistingCustomer',		
						'/bzajax',
						{	
							method:'post',
							postBody:'&ajaxaction=getUserDetails'+((isAccount) ? '&aac=true' : ''),
							onComplete : function() {
									if(ie) {	
										fnLoadPngs();
										fnLoadImPngs();
									}
							}
						}
					);									
				}
				else if(responseArray.lg=='0' && responseArray.pw=='1'){
					// Désactivation
					$('usr_pwd').className='';
					$('c_usr_pwd').innerHTML = '';
					// Activation visuelle des erreurs
					$('usr_login').className='errfield';
					$('c_usr_login').innerHTML = '<img src="img/common/iButtonError16px.png" id="usrLoginErrIm" onmouseover="AuthenticatorObject.prototype.displayErrorBalloon(\'usrLoginErrIm\',\'Votre identifiant est erronn&eacute; ou inexistant\')" onmouseout="AuthenticatorObject.prototype.hideErrorBalloon(\'usrLoginErrIm\');" style="position:absolute; padding-top:1px; padding-left:2px;"” align="middle" />';
					if(ie) {	
						fnLoadPngs();
						fnLoadImPngs();
					}				
				}
				else if(responseArray.lg=='1' && responseArray.pw=='0'){
					// Désactivation
					$('usr_login').className='';
					$('c_usr_login').innerHTML = '';
					// Activation visuelle des erreurs					
					$('usr_pwd').className='errfield';
					$('c_usr_pwd').innerHTML += '<img src="img/common/iButtonError16px.png" id="usrPwdErrIm" onmouseover="AuthenticatorObject.prototype.displayErrorBalloon(\'usrPwdErrIm\',\'Votre mot de passe est erronn&eacute; ou inexistant\')" onmouseout="AuthenticatorObject.prototype.hideErrorBalloon(\'usrPwdErrIm\');" style="position:absolute; padding-top:1px; padding-left:2px;"” align="middle" />';					
					if(ie) {	
						fnLoadPngs();
						fnLoadImPngs();
					}					
				}
				else if(responseArray.lg=='0' && responseArray.pw=='0'){
					// Activation visuelle des erreurs
					$('usr_login').className='errfield';
					$('c_usr_login').innerHTML = '<img src="img/common/iButtonError16px.png" id="usrLoginErrIm" onmouseover="AuthenticatorObject.prototype.displayErrorBalloon(\'usrLoginErrIm\',\'Votre identifiant est erronn&eacute; ou inexistant\')" onmouseout="AuthenticatorObject.prototype.hideErrorBalloon(\'usrLoginErrIm\');" style="position:absolute; padding-top:1px; padding-left:2px;"” align="middle" />';					
					$('usr_pwd').className='errfield';
					$('c_usr_pwd').innerHTML += '<img src="img/common/iButtonError16px.png" id="usrPwdErrIm" onmouseover="AuthenticatorObject.prototype.displayErrorBalloon(\'usrPwdErrIm\',\'Votre mot de passe est erronn&eacute; ou inexistant\')" onmouseout="AuthenticatorObject.prototype.hideErrorBalloon(\'usrPwdErrIm\');" style="position:absolute; padding-top:1px; padding-left:2px;"” align="middle" />';					
					if(ie) {	
						fnLoadPngs();
						fnLoadImPngs();
					}				
				}
			},
			// On request error
			onFailure : function(rsp) {
				alert("Une erreur e11 s'est produite, veuillez vous reconnecter ultérieurement");
			}
		};
		// End Options
		// Launch request
		this.showLoader();
		this.doAjaxFadeEffect(authenticateUserAjaxOptions,true);
	},
	showLoader : function() {
		$('bzloader').style.left = 0 + "px";
		$('bzloader').style.top  = 0 + "px";
		
		var cElm = this.container;
		$('bzloader').style.position = "absolute";
		var loaderInitialPosition = Position.cumulativeOffset($(cElm));
		var loaderDimensions	= Element.getDimensions('bzloader');
		
		var oContainerElm = Element.getDimensions(cElm);
		var loaderPosLeft = Math.floor(loaderInitialPosition[0]+((oContainerElm.width-loaderDimensions.width)/2));
		var loaderPosTop  = Math.floor(loaderInitialPosition[1]+((oContainerElm.height-loaderDimensions.height)/2));
		
		// Calculate loader position inside rendering element
		$('bzloader').style.left =  loaderPosLeft + "px";
		$('bzloader').style.top = loaderPosTop + "px";
		$('bzloader').style.display = '';
	},
	displayErrorBalloon : function(el, msg) {
		// Displays a error balloon under the image
		var balloonInitialPosition = Position.cumulativeOffset($(el));
		
		$('balloon').style.left = (balloonInitialPosition[0]-100) + "px";
		$('balloon').style.top = (balloonInitialPosition[1]+18) + "px";
		$('balloon').innerHTML = msg;
		$(el).className = 'balloonSenderElm';
		
		$('balloon').style.display='block';
	},
	hideErrorBalloon : function(el) {
		$(el).className = '';
		$('balloon').style.display='';
	},	
	doAjaxFadeEffect:function(pOp,isCall) {
			ajaxFadeEffect = new fx.Opacity('loginExistingCustomer',{duration: 300, onComplete: function(){
				if(isCall && pOp) 
					new Ajax.Request('/bzajax', pOp);
		  }
		});
		
		ajaxFadeEffect.custom(1, 0.4);
		ajaxFadeEffect.toggle();
	},
	hideLoader : function() {
		ajaxFadeEffect.clearTimer;
		ajaxFadeEffect.setOpacity(1);
		Element.hide('bzloader');
	}
};
