/*
* Registration Form Class
* Uses mootools framework
* Stardock
* mlucas
* Last Updated: 2008-09-12
*/
var stardock_sdnet_account_registrations = new Class({
	initialize : function(formId) {
		var _frmRegistration = $(formId);
		var _this = this;

		// Set up slides
		window.addEvent('domready', function() {
			$('btnSubmit').set('disabled', true);

			var status = {
				'true': 'open',
				'false': 'close'
			};
			var _slidesteps = new Array();
			_slidesteps[2] = new Fx.Slide('step2').hide();
			_slidesteps[3] = new Fx.Slide('step3').hide();
			
			// Start form off in first field
			$('txtFirst').focus();
			// Is it a back button ?
			if ($('currentStep').get('value') == 3)
			{
				_slidesteps[2].show();
				_slidesteps[3].show();
				$('txtNickName').set('readonly', true);
				$('btnSubmit').set('disabled', false);
				$('btnSubmit').set('value', 'Create New Account');
			}
			
			// Assign event handlers
			/* Form submit, process depending on step */
			_frmRegistration.addEvent('submit', function() {
				var currentStep = _frmRegistration.getElementById('currentStep').get('value');
				if (currentStep == 1) {
					_slidesteps[2].slideIn();
					$('currentStep').set('value', 2);
					$('txtNickName').set('value', $('txtFirst').get('value') + $('txtLast').get('value'));
					_this.CheckNickNameAvailability();
				} else if (currentStep == 2) {
					if ($('btnSubmit').get('value') == "Continue") {
						//$('txtNickName').set('readonly', true);
						_slidesteps[3].slideIn();
						
						$('currentStep').set('value', 3);
						$('btnSubmit').set('value', 'Create New Account');
						var nextFocus = function(){ $('txtEmail1').focus(); }
						nextFocus.delay(1000);
					} else {
						_this.CheckNickNameAvailability();
					}		
				} else if (currentStep == 3) {
					/* Use existing validation function */
					if ($('btnSubmit').get('value') == "Check Availability") {
						_this.CheckNickNameAvailability();
					} else {
						if (validate()) {
							return true;
						} else {
							return false;
						}
					}
				} else { return false; }
				return false;
			});

			/* First name field, check if both name fields are not empty before enabling continue button */
			_frmRegistration.getElementById('txtFirst').addEvent('keyup', function() {
				if (_frmRegistration.getElementById('txtFirst').get('value') != ""
					&& _frmRegistration.getElementById('txtLast').get('value') != "") {
					_frmRegistration.getElementById('btnSubmit').set('disabled', false);
				} else {
					_frmRegistration.getElementById('btnSubmit').set('disabled', true);
				}
			});

			/* Last name field, check if both name fields are not empty before enabling continue button */
			_frmRegistration.getElementById('txtLast').addEvent('keyup', function() {
				if (_frmRegistration.getElementById('txtFirst').get('value') != ""
					&& _frmRegistration.getElementById('txtLast').get('value') != "") {
					_frmRegistration.getElementById('btnSubmit').set('disabled', false);
				} else {
					_frmRegistration.getElementById('btnSubmit').set('disabled', true);
				}
			});

			/* NickName field, make sure nickname is available before enabling continue */
			_frmRegistration.getElementById('txtNickName').addEvent('keypress', function(e)
			{
				var key=e.event.keyCode;

				if (key != 9 && key != 10 && key != 13) // Tab, Carriage Return, Line Feed
				{
					//$('currentStep').set('value', 2);
					$('btnSubmit').set('value', 'Check Availability');
					$('btnSubmit').set('disabled', false);
				}
			});

		});
	},
	CheckNickNameAvailability : function() {
		var NickRequest = new Request.HTML({url: $('frmRegister').getProperty('action'),
			onComplete : function (responseTree, responseElements, responseHTML, responseJavaScript) {
				if (responseHTML == "0") {
					$('availability').innerHTML = "Nickname unavailable, please choose another";
					$('btnSubmit').set('disabled', true);
					$('txtNickName').focus();
					$('txtNickName').select();
					NameValid = false;
					
				} else if (responseHTML == "1") {
					$('availability').innerHTML = "<span style=\"color: #F00; font-weight: bold\">Nickname available!</span>";
					$('btnSubmit').set('disabled', false);
					$('txtNickName').focus();
					if ($('currentStep').get('value') == 3) {
						$('txtEmail1').focus();
						$('btnSubmit').set('value', 'Create New Account');
					} else {
						$('btnSubmit').set('value', 'Continue');
					}
					NameValid = true;
				}
			},
			onFailure : function (instance) {
				$('availability').innerHTML = "Nickname unavailable, please choose another (2)";
				$('btnSubmit').set('disabled', true);
				$('txtNickName').focus();
				$('txtNickName').select();
				NameValid = false;
			}
		}).post({'cmd': 'checknick', 'txtNickName': $('txtNickName').get('value')});
	}
});