YackTrack.Register = new YAHOO.widget.Dialog("ytRegister", { 
		effect: {effect: YAHOO.widget.ContainerEffect.FADE, duration: 0.25},
		postmethod: "async", 
		hideaftersubmit: false, 
		fixedcenter: true,
		modal: true,
		close: false,
		visible: false,
		draggable: false }
	);
YackTrack.Register.setHeader("Register");
YackTrack.Register.formId = 'ytRegisterForm';
YackTrack.Register.handleSubmit = function() {
	YackTrack.Util.removeAllErrors([
		'user_email', 'display_name', 'user_password', 'confirm_password', 'user_timezone',
		'defaultEmailFmt', 'defaultQueryNotification', 'defaultBlogNotification' 
	]);
	YackTrack.Util.removeFormError(YackTrack.Register.formId);
	this.submit();
};
YackTrack.Register.handleCancel = function() {
	this.cancel();
};
YackTrack.Register.validate = function() {
	var valid = true;
	var data = this.getData();
	if (!validations["required"](data.user_email)) {
		YackTrack.Util.addError('user_email', 'You must enter a valid email address.');
		valid = false;
	}
	if (!validations["email"](data.user_email)) {
		YackTrack.Util.addError('user_email', 'You must enter a valid email address.');
		valid = false;
	}
	if (!validations["required"](data.display_name)) {
		YackTrack.Util.addError('display_name', 'You must enter a display name.');
		valid = false;
	}
	if (!validations["required"](data.user_password)) {
		YackTrack.Util.addError('user_password', 'You must enter your password.');
		valid = false;
	}
	if (!validations["equals"](data.user_password, data.confirm_password)) {
		YackTrack.Util.addError('confirm_password', 'The confirm password is not equal to the password field.');
		valid = false;
	}
	if (!validations["required"](data.user_timezone)) {
		YackTrack.Util.addError('user_timezone', 'You must select a time zone.');
		valid = false;
	}
	if (!validations["required"](data.defaultEmailFmt)) {
		YackTrack.Util.addError('defaultEmailFmt', 'You must select a default email format.');
		valid = false;
	}
	if (!validations["required"](data.defaultQueryNotification)) {
		YackTrack.Util.addError('defaultQueryNotification', 'You must select a default query notification timing.');
		valid = false;
	}
	if (!validations["required"](data.defaultBlogNotification)) {
		YackTrack.Util.addError('defaultBlogNotification', 'You must select a default blog notification timing.');
		valid = false;
	}
	return valid;
};
YackTrack.Register.callback.success = function(o) {
	var ok = false;
	var msg = "";
	try {
		var resp = YAHOO.lang.JSON.parse(o.responseText);
		ok = resp.success;
		msg = resp.message;
	} catch (e) { 
		YackTrack.Util.addFormError(YackTrack.Register.formId, e);
	}
	if (ok) {
		YackTrack.Register.destroy();
		window.location.reload();
	} else {
		YackTrack.Util.addFormError(YackTrack.Register.formId, msg);
	}
};
YackTrack.Register.callback.failure = function(o) {
	YackTrack.Util.addFormError(YackTrack.Register.formId, o.responseText);
};
YackTrack.Register.cfg.queueProperty("buttons", [ 
			{ text: "Register", handler: YackTrack.Register.handleSubmit, isDefault: true },
			{ text: "Cancel", handler: YackTrack.Register.handleCancel } 
		]);
YackTrack.Register.cfg.queueProperty("keylisteners", [
		new YAHOO.util.KeyListener(document, { keys:27 },  							
			{ fn: YackTrack.Register.handleCancel,
			scope: YackTrack.Register,
			correctScope: true } ),
		new YAHOO.util.KeyListener(document, { keys:13 },  							
			{ fn: YackTrack.Register.handleSubmit,
			scope: YackTrack.Register,
			correctScope: true } )
	]);
YackTrack.Register.getDialogData = function() {
	YackTrack.dataReady.fire(); 
	YackTrack.dataReady.unsubscribeAll();
};
YackTrack.Register.getForm = function() {
	return "<form method='POST' name='" + YackTrack.Register.formId + "' id='" + YackTrack.Register.formId + "' action='ajaxPanel'>" +
		"<label class='ytLabel' for='display_name'>Name*</label>\n" +
		"<br />\n" +
		"<input type='text' class='txt' size='20' name='display_name' id='display_name' />\n" +
		"<br /><br />\n" +
		"<label class='ytLabel' for='user_email'>Email*</label>\n" +
		"<br />\n" +
		"<input type='text' class='txt' size='20' name='user_email' id='user_email' />\n" +
		"<br /><br />\n" +
		"<label class='ytLabel' for='user_password'>Password*</label>\n" +
		"<br />\n" +
		"<input type='password' class='txt' size='20' name='user_password' id='user_password' />\n" +
		"<br /><br />\n" +
		"<label class='ytLabel' for='confirm_password'>Confirm Password*</label>\n" +
		"<br />\n" +
		"<input type='password' class='txt' size='20' name='confirm_password' id='confirm_password' />\n" +
		"<br /><br />\n" +
		"<label class='ytLabel' for='user_timezone'>Time Zone*</label>\n" +
		"<br />\n" +
		YackTrack.Register.getTimeZoneHtml() +
		"<br /><br />\n" +
		"<label class='ytLabel' for='defaultEmailFmt'>Default Email Format*</label>\n" +
		"<br />\n" +
		"<select class='required' name='defaultEmailFmt' id='defaultEmailFmt'>\n" +
		"<option value='TEXT' selected='selected'>TEXT</option>\n" +
		"<option value='HTML'>HTML</option>\n" +
		"</select>\n" +
		"<br /><br />\n" +
		"<label class='ytLabel' for='defaultQueryNotification'>Default Query Notification*</label>\n" +
		"<br />\n" +
		"<select class='required' name='defaultQueryNotification' id='defaultQueryNotification'>\n" +
		"<option value='NONE' selected='selected'>NONE</option>\n" +
		"<option value='DAILY'>DAILY</option>\n" +
		"<option value='INSTANT'>INSTANT</option>\n" +
		"</select>\n" +
		"<br /><br />\n" +
		"<label class='ytLabel' for='defaultBlogNotification'>Default Blog Post Notification*</label>\n" +
		"<br />\n" +
		"<select class='required' name='defaultBlogNotification' id='defaultBlogNotification'>\n" +
		"<option value='NONE' selected='selected'>NONE</option>\n" +
		"<option value='DAILY'>DAILY</option>\n" +
		"<option value='INSTANT'>INSTANT</option>\n" +
		"</select>\n" +
		"<br /><br />\n" +
		"By registering, you agree to the <a href='termsOfUse'>Terms of Service</a>\n" +
		"<input value='exec' type='hidden' name='mode' id='mode' />\n" +
		"<input value='home' type='hidden' name='fromUrl' id='fromUrl' />\n" +
		"<input value='join' type='hidden' name='panel' id='panel' />\n" +
		"<br /><br />\n" +
		"</form>\n";
}
YackTrack.Register.getTimeZoneHtml = function() {
	return "<select class='required' name='user_timezone' id='user_timezone'>\n" +
		"<option value='GMT-11:00'>GMT-11:00</option>\n" +
		"<option value='GMT-10:00'>GMT-10:00</option>\n" +
		"<option value='GMT-09:30'>GMT-09:30</option>\n" +
		"<option value='GMT-09:00'>GMT-09:00</option>\n" +
		"<option value='GMT-08:00'>GMT-08:00</option>\n" +
		"<option value='GMT-07:00'>GMT-07:00</option>\n" +
		"<option value='GMT-06:00'>GMT-06:00</option>\n" +
		"<option value='GMT-05:00'>GMT-05:00</option>\n" +
		"<option value='GMT-04:30'>GMT-04:30</option>\n" +
		"<option value='GMT-04:00'>GMT-04:00</option>\n" +
		"<option value='GMT-03:30'>GMT-03:30</option>\n" +
		"<option value='GMT-03:00'>GMT-03:00</option>\n" +
		"<option value='GMT-02:00'>GMT-02:00</option>\n" +
		"<option value='GMT-01:00'>GMT-01:00</option>\n" +
		"<option value='GMT+00:00'>GMT+00:00</option>\n" +
		"<option value='GMT+01:00'>GMT+01:00</option>\n" +
		"<option value='GMT+02:00'>GMT+02:00</option>\n" +
		"<option value='GMT+03:00'>GMT+03:00</option>\n" +
		"<option value='GMT+03:30'>GMT+03:30</option>\n" +
		"<option value='GMT+04:00'>GMT+04:00</option>\n" +
		"<option value='GMT+04:30'>GMT+04:30</option>\n" +
		"<option value='GMT+05:00'>GMT+05:00</option>\n" +
		"<option value='GMT+05:30'>GMT+05:30</option>\n" +
		"<option value='GMT+06:00'>GMT+06:00</option>\n" +
		"<option value='GMT+06:30'>GMT+06:30</option>\n" +
		"<option value='GMT+07:00'>GMT+07:00</option>\n" +
		"<option value='GMT+08:00'>GMT+08:00</option>\n" +
		"<option value='GMT+09:00'>GMT+09:00</option>\n" +
		"<option value='GMT+09:30'>GMT+09:30</option>\n" +
		"<option value='GMT+10:00'>GMT+10:00</option>\n" +
		"<option value='GMT+11:00'>GMT+11:00</option>\n" +
		"<option value='GMT+11:30'>GMT+11:30</option>\n" +
		"<option value='GMT+12:00'>GMT+12:00</option>\n" +
		"<option value='GMT+13:00'>GMT+13:00</option>\n" +
		"<option value='GMT+14:00'>GMT+14:00</option>\n" +
		"</select>\n";
}

