﻿var $PSHomeOwnerLoginForm = {
	loginUrl : (__siteroot+'/psweb/psmember/memberlogin.rhtml'),
	validator : null,
	showErrorTip:function(el, message){
		if(el.data("qtip")) el.qtip("destroy");
		el
			.qtip({
				content: message,
				position: {
					corner: {
						tooltip: 'bottomLeft',
						target: 'topLeft'
					}
				},
				show: { ready: true },
				hide: false,
				style: {
					border: {
						width: 5,
						radius: 5
					},
					padding: 7, 
					textAlign: 'center',
					tip: true,
					name: 'red'
				}
			})
			.keyup(function(){
				el.qtip("destroy");
			});
	},
	send : function(form){
		var _this=this;
		var el=this.formElement;
		var f=el.form;
		var url=this.loginUrl;
		var requireMsg = el.requireMsg.html();
		var invalidMsg = el.invalidMsg.html();
		var greetMsg = el.greetMsg.html();
		if(this.validator.form())
		{
			this.formElement.showLoader();
			$.post(url,{
				Username:this.formElement.username.val(),
				Password:this.formElement.password.val(),
				remember:this.formElement.remember.checked
			}, function(json){				
				if(json.success)
				{
					// object from greet-message.js
					psgm = psGreetMessage;
					if(psgm && psgm.updateFooterMessage && typeof psgm.updateFooterMessage=='function'){
						var chatGreetEl = $('.chat-greet');
						psgm.showSuccessTip(chatGreetEl,greetMsg, function(){
							psgm.updateFooterMessage(true, json.FirstName, json.LastName);
							setTimeout(function(){
								psgm.destroySuccessTip(chatGreetEl);
							}, 7777);
							$('#form-homeowner-login').hide();
							// reset form
							_this.formElement.username.val(''); _this.formElement.password.val(''); _this.formElement.remember.val(false);
							
							_this.formElement.hideLoader();
						});
					}
				}
				else
				{
					//var error=$('<label for="Username" class="error">Incorrect data for login</label>');
					//error.insertAfter($('input[name=Username]'));
					_this.formElement.username.focus();
					_this.showErrorTip(_this.formElement.username, invalidMsg);
					_this.formElement.hideLoader();
				}
			},"json");
		}
		else{
			this.validator.focusInvalid();
			_this.showErrorTip(_this.formElement.username, requireMsg);
		};
	},
	initValidator:function(){
		if(this.formElement.form==null)this.formElement.form=$('#form-homeowner-login');
		var f=this.formElement.form;
		var requireMsg = '';
		this.validator=f.validate({
			rules : {
				username:"required",
				password:"required"	
			},
			messages : {
				username : requireMsg,
				password : requireMsg
			}
		});
	},
	formElement:{
		form:null,
		btnSubmit:null, btnLoader:null,
		remember:null, username:null, password:null,
		requireMsg:null, invalidMsg:null, greetMsg:null,
		init:function(){
			if(!this.form) this.form=$('#form-homeowner-login');
			if(!this.btnSubmit) this.btnSubmit=$('#btnHomeOwnerLoginSubmit', this.form);
			if(!this.btnLoader) this.btnLoader=$('#btnHomeOwnerLoginLoader', this.form);
			if(!this.remember) this.remember=$('#remember', this.form);
			if(!this.username) this.username=$('#username', this.form);
			if(!this.password) this.password=$('#password', this.form);
			if(!this.requireMsg) this.requireMsg=$('.login-require-message', this.form);
			if(!this.invalidMsg) this.invalidMsg=$('.login-invalid-message', this.form);
			if(!this.greetMsg) this.greetMsg=$('.login-greet-message', this.form);
			
			this.hideLoader();
		},
		showLoader:function(){
			this.remember.attr('disabled',true);
			this.username.attr('disabled',true);
			this.password.attr('disabled',true);
			this.btnSubmit.attr('disabled',true).hide();
			this.btnLoader.show();
		},
		hideLoader:function(){
			this.remember.removeAttr('disabled');
			this.username.removeAttr('disabled');
			this.password.removeAttr('disabled');
			this.btnSubmit.removeAttr('disabled').show();
			this.btnLoader.hide();
		}
	},
	init : function(params){
		if(params) $.extend(this, params);
		var _this=this;
		this.formElement.btnSubmit.click(function(){
			_this.send();
		});
	}
};

$(function(){ 
	$PSHomeOwnerLoginForm.formElement.init();
	$PSHomeOwnerLoginForm.initValidator();
	$PSHomeOwnerLoginForm.init();
});