var loginHandler = {

	init : function() {
		if ($F('user_email')) $('user_password').focus();
		else $('user_email').focus();
	},

	dialog : null,

	directUrl: '/',

	params : null,

	field : 'user_email',

	enterFunction : function(event) {
		console.dir(event);
		if(event.keyCode == Event.ENTER) alert('Enter key was pressed');
	},

	loginButtonFunction : function(event) {

		event.stop();

		// field check
		if (this.field == 'user_email' && $('user_email').getValue() && !$('user_password').getValue()) {
			$('user_password').focus();
			return false;
		}

		var cmd = '/';

		var user_email_value = $F($('login').select('.user_email').pop());
		var user_password_value = $F($('login').select('.user_password').pop());
		var durl = this.directUrl;

		if (!user_email_value || !user_password_value) {
			$(this.field).focus();
			return false;
		}

		// disabling inputs
		$('user_email').disable();
		$('user_password').disable();
		// showing progress image
		$('login_loading').show();

		// hiding view selector
		if ($('login_view_tr')) {
			$('login_view_tr').hide();
			$('login_view_select').disable();
		}

		new Ajax.Request(cmd, {
			method:'POST',
			parameters: {
				page : 'User_UserPage',
				event : 'checkLogin',
				user_email : user_email_value,
				user_password : user_password_value,
				ajax_login : 1,
				view_rid : $('login_view_select') ? $('login_view_select').getValue() : null,
				referrer: this.referrer
			},
			onSuccess: function(transport){
				eval('var response = ' + transport.responseText + ';');
				var login_error_msg = $('login').select('.login_error_msg').pop();
				if (response && response.success) {
					login_error_msg.toggleClassName('login_ok');
					login_error_msg.innerHTML=loginHandler.params.loginOK;
					login_error_msg.show();
					if (typeof windowHandler != 'undefined') windowHandler.resize();
					document.location = response.url ? response.url : durl;
				} else {
					if (typeof windowHandler != 'undefined') windowHandler.resize();
					// enabling inputs
					$('user_email').enable();
					$('user_password').enable();
					// hiding progress image
					$('login_loading').hide();
					// back to username
					$('user_email').focus();

					// view selector
					login_error_msg.toggleClassName('login_error');
					if (response.views) {
						login_error_msg.innerHTML=loginHandler.params.chooseView;
						if ($('login_view_tr')) {
							// fill select
							$('login_view_select').descendants().each(Element.remove);
							for (var i=0; i<response.views.length; i++) {
								$('login_view_select').options[$('login_view_select').options.length] = new Option(response.views[i].name, response.views[i].id);
							}

							// enable fields
							$('login_view_tr').show();
							$('login_view_select').enable();
						}
					} else {
						login_error_msg.innerHTML=loginHandler.params.loginError;
					}
					login_error_msg.show();

					Windows.focusedWindow.updateHeight();
				}
				try {__click=false;} catch(e) {}
			},
			onFailure: function(){  }
		});

		return false;
	},

	cancelButtonFunction : function(event) {

	},

	setField : function(event) {
		this.field = event.element().id;
	},

	observeLoginForm : function(event, params) {
		$('login_loading').hide();
		$('login_error_msg').hide();
		if ($('login_view_tr')) {
			$('login_view_tr').hide();
			$('login_view_select').disable();
		}
		this.params = params;
		this.init();
		this.setEventHandlers();
	},

	setEventHandlers : function() {
		$('login').select('.login_button_login').each(function(element){
			$(element).observe('click', loginHandler.loginButtonFunction.bindAsEventListener(loginHandler));
		});

		$('login').select('.login_button_cancel').each(function(element){
			$(element).observe('click', windowHandler.hide.bindAsEventListener(windowHandler));
		});

		$('login_form').observe('submit', loginHandler.loginButtonFunction.bindAsEventListener(loginHandler));

		$('user_email').observe('focus', loginHandler.setField.bindAsEventListener(loginHandler));
		$('user_password').observe('focus', loginHandler.setField.bindAsEventListener(loginHandler));

		$('user_email').focus();
	},

	openLoginWindow : function(event, referrer, directUrl) {
		if (event) event.stop();
		if (referrer) this.referrer = referrer;
		if (directUrl) this.directUrl = directUrl; else this.directUrl = '/';

		windowHandler.init({
			id : 'login',
			overlay: true
		});
		windowHandler.show('login');

		this.setEventHandlers();

		window.scroll(0,0);

		return false;
	},

	initLoginWindow : function(params) {
		this.params = params;
		$('user_button_login').observe('click', loginHandler.openLoginWindow.bindAsEventListener(loginHandler, params.referrer));
		$('login_loading').hide();
	}
}



