if(typeof AO !== "object")
	AO={};
	

/**
 * AO.AutoUser singleton class
 */

AO.AutoLogin=function()
{
	 
	var initialized = false;
	var loginForm = null;
	var loginForm2 = null;
	var loginBox = null;
	var loginBoxOpened = false;
	// var login_redir_link;
	var logout_link;
	// var logout_timeout=900000; // ms - 15 min
	var logout_timeout=1800000; // ms - 30 min
					
	// public interface
	return	{	
		
		// #################################################
		//   LOGIN
		// #################################################
		
		toggleLogin : function()
		{
			if(initialized)
				this.toggleLogin();
		},
		
		setUpLogin : function(logout_lnk) // logout link needed in case of no refresh
		{
			logout_link=logout_lnk;
			// login_redir_link=redir_link;
			// link prihlasenie		- odpojene kvoli boxik problemu	
			// $("#smi_login").click(AO.Common.Util.createHandler(this.toggleLogin,this));
			
			// wrapp reference
			loginBox = $("#sign-in-wrap");
			
			// FORM validation (closure variable)
			loginForm=$("#login_form");
			
			loginForm.validate({
				rules: {
					login: "required",
					passwd: "required"					
				},
				messages: {					
					login: "povinná položka",
					passwd: "povinná položka"					
				},
				
				errorClass: "invalid",
				// focusCleanup: true,
				submitHandler : AO.Common.Util.createHandler(this.doLogin,this)
			});
			
			$("#sec-menu").removeClass("d_none");
			initialized = true;
			
		},
		
		
		
		setUpLoggedLogin : function(logout_lnk)
		{
			logout_link=logout_lnk;
			
			// open
			$("#smi_my_account").click(AO.Common.Util.createHandler(this.toggleLogin,this));
			
			loginBox = $("#sign-in-wrap");	
			
			// timeout logout after 'logout_timeout' idle			
			// window.setTimeout(function(){AO.AutoLogin.doLogout();},logout_timeout);
		},
		
		
		resetLoginer : function()
		{
			loginForm = null;
			loginBox = null;
		},
		
		
		doLogin : function(e)
		{	
			$("#login_response_msg").text("").hide();
					
			var opts={
				success : AO.Common.Util.createHandler(this.doLoginComplete,this),
		        error : AO.Common.Util.createHandler(this.responseError,this),				
		        url : AO.Common.settings.BASE_URL,
		        dataType : 'json',
				method : "POST"
			};
			
			loginForm.ajaxSubmit(opts);
		},
				
		
		doLoginComplete : function(d)
		{
			if(d.result===1)
			{
				this.resetLoginer();
				
				// this.proccesLoginOK(d.data.html_login_box);
				
				// redirect
				// window.location.href=login_redir_link;
				
				// refresh
				// window.location.reload(true);
				
				// refresh parsed location
				//var loc=window.location.href;
				if(d.data.user_type==10) // admin
					var loc='/ocenenie-auta';
				else // other
					var loc='/ocenenie-auta/ibase.php?id=6&viewmode=myPriceCarsList';
				loc=loc.replace("?action=logout","");
				window.location.href=loc;
			}	
			else		
				this.proccesLoginError(d.error);
			
		},
		
		
		proccesLoginOK : function(html)
		{
			$("#login_area_wrap").html(html);
			
			loginBoxOpened=false;
			
			this.setUpLoggedLogin();
		},
		
		
		proccesLoginError : function(err)
		{
			switch(err.code)
			{
				case 3 :
					$("#login_response_msg").text("Nesprávne meno alebo heslo!").slideDown();
				break;
				
				default :
					$("#login_response_msg").text("Prihlásenie neprebehlo úspešne!").slideDown();
				break;
			}
		},
		
		
		responseError : function()
		{
			alert("Prihlásenie sa nepodarilo!");
		},
		
		
		doLogout : function()
		{
			window.location.href=logout_link;
		},
		
		// DESIGN
		
		toggleLogin : function() // e
		{
			// odpojene kvoli inemu volaniu
			// e.preventDefault();
			
			if(loginBoxOpened)
				this.hideLogin();
			else
				this.showLogin();
				
			loginBoxOpened=!loginBoxOpened;
		},
		
		
		showLogin : function()
		{
			loginBox.slideDown();
		},		
		
		
		hideLogin : function()
		{
			loginBox.hide();
		},
		
		//// login page sufix 2
		
		setUpLogin2 : function() // logout link needed in case of no refresh
		{
			
			// login_redir_link=redir_link;
			// link prihlasenie		- odpojene kvoli boxik problemu	
			// $("#smi_login").click(AO.Common.Util.createHandler(this.toggleLogin,this));
						
			// FORM validation (closure variable)
			loginForm2=$("#login_form2");
			
			loginForm2.validate({
				rules: {
					login: "required",
					passwd: "required"					
				},
				messages: {					
					login: "povinná položka",
					passwd: "povinná položka"					
				},
				
				errorClass: "invalid",
				// focusCleanup: true,
				submitHandler : AO.Common.Util.createHandler(this.doLogin2,this)
			});
						
			initialized = true;
			
		},
		
		doLogin2 : function(e)
		{	
			$("#login_response_msg2").text("").hide();
					
			var opts={
				success : AO.Common.Util.createHandler(this.doLoginComplete2,this),
		        error : AO.Common.Util.createHandler(this.responseError,this),				
		        url : AO.Common.settings.BASE_URL,
		        dataType : 'json',
				method : "POST"
			};
			
			loginForm2.ajaxSubmit(opts);
		},
				
		
		doLoginComplete2 : function(d)
		{
			if(d.result===1)
			{							
				// refresh parsed location
				var loc='/ocenenie-auta/ibase.php?id=6&viewmode=myPriceCarsList';
				loc=loc.replace("?action=logout","");
				window.location.href=loc;
			}	
			else		
				this.proccesLoginError2(d.error);
			
		},
		
		proccesLoginError2 : function(err)
		{
			switch(err.code)
			{
				case 3 :					
					$("#login_response_msg2").text("Nesprávne meno alebo heslo!").show();
				break;
				
				default :
					$("#login_response_msg2").text("Prihlásenie neprebehlo úspešne!").show();
				break;
			}
		}
		
		
	// return end	
	}
	
}();
