/*

$Id: signup.js 103 2006-03-29 06:44:36Z lindsay $
$Revision: 103 $
$Date: 2006-03-29 17:44:36 +1100 (Wed, 29 Mar 2006) $
$Author: lindsay $

*/

function buttonClick(e){
	var buttonAction = e.target.id;

	switch(buttonAction){
		case 'togglePasswordDisplay':
			togglePasswordDisplay();
			break;

		default:
			// do nothing
	}
}

function togglePasswordDisplay(){
	var passwordField = document.getElementById('password');
	var passwordFieldType = passwordField.getAttribute('type');
	var toggleButton = document.getElementById('togglePasswordDisplay');
	var newPasswordElement = document.createElement('INPUT');

	newPasswordElement.setAttribute('type', passwordFieldType == 'password' ? 'text' : 'password');
	newPasswordElement.setAttribute('id', 'password');
	newPasswordElement.setAttribute('name', 'password');
	newPasswordElement.setAttribute('value', passwordField.value);

	passwordField.parentNode.insertBefore(newPasswordElement, passwordField);
	passwordField.parentNode.removeChild(passwordField);

	toggleButton.removeChild(toggleButton.childNodes[0]);
	toggleButton.appendChild(document.createTextNode(passwordFieldType == 'password' ? 'Hide' : 'Show'));
}

function submitButtonClick(e){
	e.target.form.onsubmit = validate;
}

function validate(){
	var form = document.forms['joinForm'];
	var errorMessages = {};
	var wrapper;
	var errorMessageElement;
	var errorThrown = false;
	var validEmailRE = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;
	var validURLRE = /http[s]*:\/\/[^\.]+\.[a-zA-Z]+.*/i;

	/* Clear existing error messages */
	var divElements = document.getElementsByTagName('DIV');
	for(var i = divElements.length - 1; i >= 0; i--){
		if(divElements[i].className == 'errorOverview' || divElements[i].className == 'errorMessage'){
			divElements[i].parentNode.removeChild(divElements[i]);
		}else{
			divElements[i].className = divElements[i].className.replace(/\s?error/g, '');
		}
	}

	if(joinStep == 1){
		if(form.firstName.value == ''){
			errorMessages.firstName = 'Please enter your first name';
			errorThrown = true;
		}

		if(form.emailAddress.value == ''){
			errorMessages.emailAddress = 'Please enter your email address';
			errorThrown = true;
		}else if(!validEmailRE.test(form.emailAddress.value)){
			errorMessages.emailAddress = 'Please enter a valid email address';
			errorThrown = true;
		}

		if(form.password.value == ''){
			errorMessages.password = 'Please enter a password';
			errorThrown = true;
		}else if(form.password.value.length < 3 || form.password.value.length > 255){
			errorMessages.password = 'Please enter a password between 3 and 255 characters long;';
			errorThrown = true;
		}
	}else if(joinStep == 2){
		if(form.name.value == ''){
			errorMessages.name = 'Please enter your show title';
			errorThrown = true;
		}

/*		if(form.episodeFilesURL.value == ''){
			errorMessages.episodeFilesURL = 'Please enter your Episode Files Location';
			errorThrown = true;
		}else if(!validURLRE.test(form.episodeFilesURL.value)){
			errorMessages.episodeFilesURL = 'Please enter a valid URL for your Episode Files Location (eg. http://example.com/myFiles/)';
			errorThrown = true;
		}*/
	}

	for(var i in errorMessages){
		wrapper = form[i].parentNode;
		wrapper.className += ' error';
		errorMessageElement = document.createElement('div');
		errorMessageElement.id = 'errorMessage_' + i;
		errorMessageElement.className = 'errorMessage';
//		errorMessageElement.style.display = 'none';
		errorMessageElement.innerHTML = errorMessages[i].replace(/\n/g, '<br />');
		wrapper.appendChild(errorMessageElement);
//		new Effect.Appear(errorMessageElement.id, {from: 0.5});
	}
	if(errorThrown){
		errorMessageElement = document.createElement('div');
		errorMessageElement.id = 'errorOverview';
		errorMessageElement.className = 'errorOverview';
//		errorMessageElement.style.display = 'none';
		errorMessageElement.innerHTML = 'Uh oh, seems there were a few things wrong, please check your details and try again.';
		document.getElementById('joinFormFieldset').insertBefore(errorMessageElement, document.getElementById('joinFormFieldset').childNodes[0]);
//		new Effect.Appear(errorMessageElement.id);
	}

	return !errorThrown;
}

function windowLoad_signup(){
//alert('windowLoad_signup')
	if(joinStep == 3){
		return false;
	}
	var form = document.forms['joinForm'];
	var buttons = form.getElementsByTagName('BUTTON');
	var button;
	for(var i = 0; i < buttons.length; i++){
		button = buttons[i];
		EventManager.addEventListener(button, 'click', buttonClick);
	}

	var submitButtons = form.getElementsByTagName('INPUT');
	var submitButton;
	for(var i = 0; i < submitButtons.length; i++){
		submitButton = submitButtons[i];
		if(submitButton.getAttribute('type') == 'submit' && submitButton.getAttribute('name') != 'cancelButton'){
			EventManager.addEventListener(submitButton, 'click', submitButtonClick);
		}
	}
}

EventManager.addEventListener(window, 'load', windowLoad_signup);