function toggleRightPasswordField(unisonID){
	var url = 'UnisonLoginFormToggler/toggleRightPasswordField?unisonID='+unisonID;
	new Ajax.Request(url,{
		onSuccess : function(response){eval(response.responseText); return false},
		onFailure : function(response) {alert(response.responseText);}
	});
}

UnisonLoginID = Class.create();
UnisonLoginID.applyTo('#UnisonLoginForm_UnisonLoginForm_UnisonID');
UnisonLoginID.applyTo('#UnisonLoginForm_LoginForm_UnisonID');
UnisonLoginID.prototype = {
		onblur: function(e){
			toggleRightPasswordField(this.value);
			//Event.stop(e);
			return false;
		}
};


UnisonLoginForm = Class.create();
UnisonLoginForm.applyTo('#UnisonLoginForm_UnisonLoginForm');
UnisonLoginForm.applyTo('#UnisonLoginForm_LoginForm');

UnisonLoginForm.prototype = {
	initialize: function(){
		var idField = this.id+'_UnisonID';
		var epmuid = $(idField);
		if(epmuid){
			if(epmuid.value){
				epmuid.onblur();
			}
		}
	},
	
	hide: function(el){
		var input = el.getElementsByTagName('input')[0];
		if(input) {
			if(!Element.hasClassName(input, 'action')){
				input.value = '';
			}
		}
		el.style.display = 'none';
	},
	
	show: function(el){
		el.style.display = 'block';
	},

	toggleRelavents: function(which){
		var needToShow = new Array();
		var needToHide = new Array();
		switch(which){
			case 'password':
				needToShow.push($('Password'));
				needToShow.push($('LostPassword'));
				needToShow.push($('Remember'));
				needToShow.push($(this.id+'_action_dologin'));
				needToHide.push($('DOB'));
				needToHide.push($('WrongIDExplanatory'));
				needToHide.push($('NoBothExplanatory'));
				needToHide.push($('DOBExplanatory'));
				break;
			case 'dob':
				needToShow.push($('DOBExplanatory'));
				needToShow.push($('DOB'));
				needToShow.push($(this.id+'_action_dologin'));
				needToHide.push($('Password'));
				needToHide.push($('LostPassword'));
				needToHide.push($('Remember'));
				needToHide.push($('WrongIDExplanatory'));
				needToHide.push($('NoBothExplanatory'));
				break;
			case 'wrongepmuid':
				needToShow.push($('WrongIDExplanatory'));
				needToHide.push($('DOBExplanatory'));
				needToHide.push($('DOB'));
				needToHide.push($(this.id+'_action_dologin'));
				needToHide.push($('Password'));
				needToHide.push($('LostPassword'));
				needToHide.push($('Remember'));
				needToHide.push($('NoBothExplanatory'));
				break;
			case 'nobothpaswordanddob':
				needToShow.push($('NoBothExplanatory'));
				needToHide.push($('DOBExplanatory'));
				needToHide.push($('DOB'));
				needToHide.push($(this.id+'_action_dologin'));
				needToHide.push($('Password'));
				needToHide.push($('LostPassword'));
				needToHide.push($('Remember'));
				needToHide.push($('WrongIDExplanatory'));
				break;
		}
		var i;
		for(i=0; i<needToShow.length; i++){
			this.show(needToShow[i]);
		}
		for(i=0; i<needToHide.length; i++){
			this.hide(needToHide[i]);
		}
	}
};

function errorMessage(msg, fullMessage) {
	// More complex error for developers
	if(fullMessage && window.location.href.indexOf('//dev') != -1) {
		// Get the message from an Ajax response object
		try {
			if(typeof fullMessage == 'object') fullMessage = fullMessage.status + '//' + fullMessage.responseText;
		} catch(er) {
			fullMessage = "";
		}
		msg = msg + '<br>' + fullMessage.replace(/\n/g,'<br>');
	}

	$('statusMessage').showMessage(msg,'bad',60);
}

Behaviour.register({
	'#statusMessage' : {
		showMessage : function(message, type, waitTime, clearManually) {
			if(this.fadeTimer) {
				clearTimeout(this.fadeTimer);
				this.fadeTimer = null;
			}
			if(this.currentEffect) {
				this.currentEffect.cancel();
				this.currentEffect = null;
			}

			this.innerHTML = message;
			this.className = type;
			//Element.setOpacity(this, 1);

			this.style.position = 'absolute';
			this.style.display = '';
			this.style.visibility = '';

			if(!clearManually) {
				this.fade(0.5,waitTime ? waitTime : 5);
			}
		},
		clearMessage : function(waitTime) {
			this.fade(0.5, waitTime);
		},
		fade: function(fadeTime, waitTime) {
			if(!fadeTime) fadeTime = 0.5;

			// Wait a bit before fading
			if(waitTime) {
				this.fadeTimer = setTimeout((function() {
					this.fade(fadeTime);
				}).bind(this), waitTime * 1000);

			// Fade straight away
			} else {
			 	this.currentEffect = new Effect.Opacity(this,
				    { duration: 0.5,
				      transition: Effect.Transitions.linear,
				      from: 1.0, to: 0.0,
				      afterFinish : this.afterFade.bind(this) });
			}
		},
		afterFade : function() {
			this.style.visibility = 'hidden';
			this.style.display = 'none';
			this.innerHTML = '';
		}
	}
});


