(function($){
	$.widget("ui.login", {
		
		submitClass : '.Submit',
		loginClass : '.Login',
		passwordClass : '.Password',
		errors : new Array(),
		progressClass : '.Loading',
		loginDefaultValue : '',
		passwordDefaultValue : '',

		_init : function() {
			var self = this;
			var o = this.options;
			this.loginDefaultValue = this.element.find(this.loginClass).val();
			this.passwordDefaultValue = this.element.find(this.passwordClass)
					.val();
			
			this.element.find(this.passwordClass).attr('defaultPass', this.passwordDefaultValue );
			this.element.find(this.loginClass).bind('focus', function(e) {
				self.onLoginFocus(e);
			});
			this.element.find(this.loginClass).bind('blur', function(e) {
				self.onLoginBlur(e);
			});

			this.element.find(this.passwordClass).bind('focus', function(e) {
				self.onPasswordFocus(e);
			});
			this.element.find(this.passwordClass).bind('blur', function(e) {
				self.onPasswordBlur(e);
			});
		},

		onPasswordFocus : function(e) {
			var currentValue = $(e.target).val();
			if (currentValue == this.passwordDefaultValue) {
				$(e.target).val('');
			}
		},

		onPasswordBlur : function(e) {
			var currentValue = $(e.target).val();
			if (currentValue == '') {
				$(e.target).val(this.passwordDefaultValue);
			}
		},

		onLoginBlur : function(e) {
			var currentValue = $(e.target).val();
			if (currentValue == '') {
				$(e.target).val(this.loginDefaultValue);
			}
		},

		onLoginFocus : function(e) {
			var currentValue = $(e.target).val();
			if (currentValue == this.loginDefaultValue) {
				$(e.target).val('');
			}
		},

		onSubmit : function(e) {
			var self = this;
			this.showProgress();
			var login = this.element.find('.Login').val();
			var password = this.element.find('.Login').val();
			
			$.ajax( {
				'url' : '/server/Jsonrpc/Authentification/',
				'type' : 'POST',
				'dataType' : 'json',
				'data' : '{"method":"authentificate","params":["' + login + '", "'
						+ password + '"], "id":1}',
				'error' : function(data) {
					self.hideProgress();
				},
				'success' : function(data) {
					self.hideProgress();
				}
			});
			e.preventDefault();
			e.stopPropagation();
		},
		
		showProgress : function() {
			this.element.append('<div class="Loading"></div>');
		},
		
		showFailed:function(){
			
		},

		hideProgress : function() {
			this.element.find(this.progressClass).remove();
		}
	});
})(jQuery);