YackTrack.ChangePassword = new YAHOO.widget.Dialog("ytChangePassword", { 
		effect: {effect: YAHOO.widget.ContainerEffect.FADE, duration: 0.25},
		postmethod: "async", 
		hideaftersubmit: false, 
		fixedcenter: true,
		modal: true,
		close: false,
		visible: false,
		draggable: false }
	);
YackTrack.ChangePassword.setHeader("Change Password");
YackTrack.ChangePassword.formId = 'ytPasswordForm';
YackTrack.ChangePassword.handleSubmit = function() {
	YackTrack.Util.removeAllErrors([
		'user_password', 'new_password', 'confirm_password' 
	]);
	YackTrack.Util.removeFormError(YackTrack.ChangePassword.formId);
	this.submit();
};
YackTrack.ChangePassword.handleCancel = function() {
	this.cancel();
};
YackTrack.ChangePassword.validate = function() {
	var valid = true;
	var data = this.getData();
	if (!validations["required"](data.user_password)) {
		YackTrack.Util.addError('user_password', 'You must enter your password.');
		valid = false;
	}
	if (!validations["required"](data.new_password)) {
		YackTrack.Util.addError('new_password', 'You must enter a new password.');
		valid = false;
	}
	if (!validations["equals"](data.new_password, data.confirm_password)) {
		YackTrack.Util.addError('confirm_password', 'The confirm password is not equal to the new password.');
		valid = false;
	}
	return valid;
};
YackTrack.ChangePassword.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.ChangePassword.formId, e);
	}
	if (ok) {
		YackTrack.ChangePassword.destroy();
		// TODO: should change password reload the page?
		// window.location.reload();
	} else {
		YackTrack.Util.addFormError(YackTrack.ChangePassword.formId, msg);
	}
};
YackTrack.ChangePassword.callback.failure = function(o) {
	YackTrack.Util.addFormError(YackTrack.ChangePassword.formId, o.responseText);
};
YackTrack.ChangePassword.cfg.queueProperty("buttons", [ 
			{ text: "Change Password", handler: YackTrack.ChangePassword.handleSubmit, isDefault: true },
			{ text: "Cancel", handler: YackTrack.ChangePassword.handleCancel } 
		]);
YackTrack.ChangePassword.cfg.queueProperty("keylisteners", [
		new YAHOO.util.KeyListener(document, { keys:27 },  							
			{ fn: YackTrack.ChangePassword.handleCancel,
			scope: YackTrack.ChangePassword,
			correctScope: true } ),
		new YAHOO.util.KeyListener(document, { keys:13 },  							
			{ fn: YackTrack.ChangePassword.handleSubmit,
			scope: YackTrack.ChangePassword,
			correctScope: true } )
	]);
YackTrack.ChangePassword.getDialogData = function() {
	YackTrack.dataReady.fire();
	YackTrack.dataReady.unsubscribeAll();
};
YackTrack.ChangePassword.getForm = function() {
	return "<form method='POST' name='" + YackTrack.ChangePassword.formId + "' id='" + YackTrack.ChangePassword.formId + "' action='ajaxPanel'>\n" +
		"<label for='user_password' class='ytLabel'>Current Password*</label>\n" +
		"<br />\n" +
		"<input id='user_password' name='user_password' class='txt' type='password' size='20' />\n" +
		"<br /><br />\n" +
		"<label for='new_password' class='ytLabel'>Password*</label>\n" +
		"<br />\n" +
		"<input id='new_password' name='new_password' class='txt' type='password' size='20' />\n" +
		"<br /><br />\n" +
		"<label for='confirm_password' class='ytLabel'>Confirm Password*</label>\n" +
		"<br />\n" +
		"<input id='confirm_password' name='confirm_password' class='txt' type='password' size='20' />\n" +
		"<br /><br />\n" +
		"<input id='mode' name='mode' value='exec' type='hidden' />\n" +
		"<input id='fromUrl' name='fromUrl' value='' type='hidden' />\n" +
		"<input id='panel' name='panel' value='changepassword' type='hidden' />\n" +
		"</form>\n";
}

