/*********************************************************************************************************************

	FORM MANAGER															by Gilles Ryan

**********************************************************************************************************************/

// Variables :


// Error messages :

var sEmptyErrorMessage = 			"Certains champs du formulaire sont manquants :";
var sDefaultValueErrorMessage = 	"Certains champs du formulaire doivent être renseignés :";
var sRoundNumericErrorMessage =		"Certains champs doivent être au format numérique (rond) :";
var sLengthErrorMessage =			"Certains champs contiennent trop de caractères :";
var sEMailErrorMessage = 			"Certains champs ne sont pas au bon format d'adresse e-mail :";
var sConfirmationErrorMessage = 	"Certains champs n'ont pas une confirmation exact :";

var sCheckCase_Empty_untyped_ErrorMessage =						"Vous avez oubliez de spécifier un champ";
var sCheckCase_Empty_firstname_ErrorMessage = 					"Vous devez spécifier un nom.";
var sCheckCase_Empty_lastname_ErrorMessage = 					"Vous devez spécifier un prénom.";
var sCheckCase_Empty_location_ErrorMessage = 					"Vous devez spécifier une adresse.";
var sCheckCase_Empty_zipfr_ErrorMessage =						"Vous devez spécifier un code postal.";
var sCheckCase_Empty_phone_ErrorMessage =						"Vous devez spécifier un numéro de téléphone.";
var sCheckCase_Empty_email_ErrorMessage = 						"Vous devez spécifier une adresse e-mail.";
var sCheckCase_Empty_message_ErrorMessage =		 				"Vous devez spécifier un message.";
var sCheckCase_Empty_password_ErrorMessage =		 			"Vous devez spécifier un mot de passe.";
var sCheckCase_Empty_passwordconfirmation_ErrorMessage =		"Vous devez spécifier le mot de passe de confirmation.";

var sCheckCase_DefaultValue_untyped_ErrorMessage =				"Vous avez oubliez de spécifier un champ";
var sCheckCase_DefaultValue_firstname_ErrorMessage = 			"Vous devez spécifier un nom.";
var sCheckCase_DefaultValue_lastname_ErrorMessage =				"Vous devez spécifier un prénom.";
var sCheckCase_DefaultValue_location_ErrorMessage = 			"Vous devez spécifier une adresse.";
var sCheckCase_DefaultValue_zipfr_ErrorMessage =				"Vous devez spécifier un code postal.";
var sCheckCase_DefaultValue_phone_ErrorMessage =				"Vous devez spécifier un numéro de téléphone.";
var sCheckCase_DefaultValue_email_ErrorMessage = 				"Vous devez spécifier une adresse e-mail.";
var sCheckCase_DefaultValue_message_ErrorMessage = 				"Vous devez spécifier un message.";
var sCheckCase_DefaultValue_password_ErrorMessage = 			"Vous devez spécifier un mot de passe.";
var sCheckCase_DefaultValue_passwordconfirmation_ErrorMessage =	"Vous devez spécifier le mot de passe de confirmation.";

var sCheckCase_RoundNumeric_untyped_ErrorMessage =				"Un champ n'est pas au format numérique (rond).";
var sCheckCase_RoundNumeric_zipfr_ErrorMessage =				"Le code postal doit être au format numérique (rond).";
var sCheckCase_RoundNumeric_phone_ErrorMessage =				"Le numéro de téléphone doit être au format numérique (rond).";

var sCheckCase_Length_untyped_ErrorMessage =					"Un champ contient trop de caractères.";
var sCheckCase_Length_firstname_ErrorMessage = 					"Le champ du nom contient trop de caractères.";
var sCheckCase_Length_lastname_ErrorMessage =					"Le champ du prénom contient trop de caractères.";
var sCheckCase_Length_location_ErrorMessage = 					"Le champ de l'adresse contient trop de caractères.";
var sCheckCase_Length_zipfr_ErrorMessage =						"Le champ du code postal contient trop de caractères.";
var sCheckCase_Length_phone_ErrorMessage =						"Le numéro de téléphone contient trop de caractères.";
var sCheckCase_Length_email_ErrorMessage = 						"L'adresse e-mail contient trop de caractères.";
var sCheckCase_Length_message_ErrorMessage = 					"Votre message est trop long.";
var sCheckCase_Length_password_ErrorMessage = 					"Le champ du mot de passe contient trop de caractères.";
var sCheckCase_Length_passwordconfirmation_ErrorMessage =		"Le mot de passe de confirmation contient trop de caractères.";

var sCheckCase_EMail_email_ErrorMessage =						"L'adresse e-mail n'est pas au bon format (utilisateur@serveur.domaine)";

var sCheckCase_Confirmation_passwordconfirmation_ErrorMessage =	"Le mot de passe de confirmation et différent du mot de passe entré.";


// enumerators

var FieldParameter =
{
	unknow : 0,
	requiered : 1,
	checkempty : 2,
	capitalize : 3,
	roundnumeric : 4,
	defaultvalue : 5,
	length : 6,
	confirmation : 7
}

var FieldType =
{
	untyped : 0,
	firstname : 1,
	lastname : 2,
	location : 3,
	zipfr : 4,
	city : 5,
	phone : 6,
	email : 7,
	message : 8,
	password : 9,
	passwordconfirmation : 10
}

var CheckCase =
{
	unknow : 0,
	empty : 1,
	defaultvalue : 2,
	capitalize : 3,
	length : 4,
	roundnumeric : 5,
	spam: 6,
	email : 7,
	confirmation : 8
}

/* FormManager class constructor (sFormId : Form element id)
*	==>	Create object methods and functions 		
*/
function FormManager(sFormId)
{
	this.formId = sFormId;
	this.Fields = new FormManagerFields();
	
	this.load = function() {FormManager_load(this);}	
}

/* FormManager Load function (obj : FormManager object reference)
*	==>	Set FormManager events functions and fields events functions
*/
function FormManager_load(obj)
{
	document.getElementById(obj.formId).onsubmit = function() {return (FormManager_load_onsubmit(obj));}

	var Field;
	
	for (var i = 0 ; i < obj.Fields.colFields.count() ; i++)
	{
		Field = obj.Fields.colFields.get(i);
		if (Field.elementId && Field.defaultValue != "")
		{
			Field.load();
		}
	}
}

/* FormManager Load, onsubmit function (obj : FormManager object reference)
*	==>	Set FormManager onsubmit function 		
*/
function FormManager_load_onsubmit(obj)
{	
	if (obj.Fields.colFields.iCount == 0)
		return false;
	
	var validator_Empty = 			new FormValidator(null, sEmptyErrorMessage);
	var validator_Default =	 		new FormValidator(null, sDefaultValueErrorMessage);
	var validator_RoundNumeric =	new FormValidator(null, sRoundNumericErrorMessage);
	var validator_Length = 			new FormValidator(null, sLengthErrorMessage);
	var validator_Capitalize =		new FormValidator();
	var validator_EMail =			new FormValidator(null, sEMailErrorMessage);
	var validator_Confirmation =	new FormValidator(null, sConfirmationErrorMessage);
	
	for (var i = 0 ; i < obj.Fields.colFields.iCount ; i++)
	{
		var field = obj.Fields.get(i);
		
		if (field.parameters[FieldParameter.requiered]["activated"] && field.parameters[FieldParameter.checkempty]["activated"])
			FormManager_load_onsubmit_addfieldcheck(validator_Empty, 		CheckCase.empty,	 	field);
		
		if (field.parameters[FieldParameter.requiered]["activated"] && field.parameters[FieldParameter.defaultvalue]["activated"])
		{	
			FormManager_load_onsubmit_addfieldcheck(validator_Default, 		CheckCase.defaultvalue,	field);
		}
		if (field.parameters[FieldParameter.roundnumeric]["activated"])
		{	
			if (field.parameters[FieldParameter.defaultvalue]["activated"])
			{
				if (document.getElementById(field.elementId).value != field.parameters[FieldParameter.defaultvalue]["defaultValue"])
					FormManager_load_onsubmit_addfieldcheck(validator_RoundNumeric, 		CheckCase.roundnumeric,		field);
			}
			else
			{
				FormManager_load_onsubmit_addfieldcheck(validator_RoundNumeric, 		CheckCase.roundnumeric,		field);
			}
		}
		
		if (field.parameters[FieldParameter.length]["activated"])
		{	
			if (field.parameters[FieldParameter.defaultvalue]["activated"])
			{
				if (document.getElementById(field.elementId).value != field.parameters[FieldParameter.defaultvalue]["defaultValue"])
					FormManager_load_onsubmit_addfieldcheck(validator_Length, 		CheckCase.length,		field);
			}
			else
			{		
				FormManager_load_onsubmit_addfieldcheck(validator_Length, 		CheckCase.length,		field);
					
			}
		}
		
		if (field.parameters[FieldParameter.email]["activated"])
		{	
			if (field.parameters[FieldParameter.defaultvalue]["activated"])
			{
				if (document.getElementById(field.elementId).value != field.parameters[FieldParameter.defaultvalue]["defaultValue"])
					FormManager_load_onsubmit_addfieldcheck(validator_EMail, 		CheckCase.email,		field);
			}
			else
			{		
				FormManager_load_onsubmit_addfieldcheck(validator_EMail, 		CheckCase.email,		field);
					
			}
		}

		if (field.parameters[FieldParameter.email]["activated"])
		{	
			if (field.parameters[FieldParameter.defaultvalue]["activated"])
			{
				if (document.getElementById(field.elementId).value != field.parameters[FieldParameter.defaultvalue]["defaultValue"])
					FormManager_load_onsubmit_addfieldcheck(validator_Confirmation, 		CheckCase.confirmation,		field);
			}
			else
			{		
				FormManager_load_onsubmit_addfieldcheck(validator_EMail, 		CheckCase.confirmation,		field);
					
			}
		}

		if (field.parameters[FieldParameter.capitalize]["activated"])
			FormManager_load_onsubmit_addfieldcheck(validator_Capitalize, 	CheckCase.capitalize,	field);
	
	}

	if (!validator_Empty.validate())
		return false;

	if (!validator_Default.validate())
		return false;

	if (!validator_RoundNumeric.validate())
		return false;		
		
	if (!validator_Length.validate())
		return false;
	
	if (!validator_EMail.validate())
		return false;
	
	if (!validator_Confirmation.validate())
		return false;	
	
	if (!validator_Capitalize.validate())
		return false;
		
	return true;
}

/* FormManager Load, onsubmit, add field check function (formValidator : FormValidator object reference ; eCheckCase : Field check case enumerator constant ; field : FormManagerField object reference)
*	==>	Add field check FormManager form submit 		
*/
function FormManager_load_onsubmit_addfieldcheck(formValidator, eCheckCase, field)
{
	switch (field.fieldType)
	{
		case FieldType.untyped :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_untyped_ErrorMessage);
					break;

				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_untyped_ErrorMessage, field.defaultValue);
					break;
					
				/*
				case CheckCase.capitalize :
					formValidator.addCheck(field.elementId, "capitalize");
					break;				

				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_untyped_ErrorMessage + " (" + field.maxLength + " maximum)", field.maxLength);
					break;						
					
				case CheckCase.roundnumeric :
					formValidator.addCheck(field.elementId, "round", sCheckCase_RoundNumeric_untyped_ErrorMessage);
					break;
				*/
			}
			break;
			
		case FieldType.firstname :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_firstname_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_firstname_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
			
				case CheckCase.capitalize :
					formValidator.addCheck(field.elementId, "capitalize");
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_firstname_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;		
			}
			break;

		case FieldType.lastname :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_lastname_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_lastname_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
					
				case CheckCase.capitalize :
					formValidator.addCheck(field.elementId, "capitalize");
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_lastname_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	
			}
			break;

		case FieldType.location :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_location_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_location_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_location_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	
			}
			break;

		case FieldType.zipfr :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_zipfr_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_zipfr_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
					
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_zipfr_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	

				case CheckCase.roundnumeric :
					formValidator.addCheck(field.elementId, "round", sCheckCase_RoundNumeric_zipfr_ErrorMessage);
					break;					
			}
			break;

		case FieldType.phone :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_phone_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_phone_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_phone_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	

				case CheckCase.roundnumeric :
					formValidator.addCheck(field.elementId, "round", sCheckCase_RoundNumeric_phone_ErrorMessage);
					break;					
			}
			break;

		case FieldType.email :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_email_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_email_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
					
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_email_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	
					
				case CheckCase.email :
					formValidator.addCheck(field.elementId, "email", sCheckCase_EMail_email_ErrorMessage);
					break;	
			}
			break;

		case FieldType.message :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_message_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_message_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_message_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " caractères maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	
			}
			break;
			
		case FieldType.password :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_password_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_password_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_password_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	
			}
			break;			

		case FieldType.passwordconfirmation :
			switch (eCheckCase)
			{
				case CheckCase.unknow :
					// Nothing
					break;
				
				case CheckCase.empty :
					formValidator.addCheck(field.elementId, "empty", sCheckCase_Empty_passwordconfirmation_ErrorMessage);
					break;
					
				case CheckCase.defaultvalue :
					formValidator.addCheck(field.elementId, "default", sCheckCase_DefaultValue_passwordconfirmation_ErrorMessage, field.parameters[FieldParameter.defaultvalue]["defaultValue"]);
					break;
				
				case CheckCase.length :
					formValidator.addCheck(field.elementId, "length", sCheckCase_Length_passwordconfirmation_ErrorMessage + " (" + field.parameters[FieldParameter.length]["maxLength"] + " maximum)", field.parameters[FieldParameter.length]["maxLength"]);
					break;	

				case CheckCase.confirmation :
					formValidator.addCheck(field.elementId, "confirmation", sCheckCase_Confirmation_passwordconfirmation_ErrorMessage , field.parameters[FieldParameter.confirmation]["tocheck"]);
					break;	


		}
			break;		
	}
}

// FormManagerFields class constructor
function FormManagerFields()
{
	this.colFields = new Collection();
	
	this.add = function(sElementId, eFieldType) {FormManagerFields_add(this, arguments);}
	this.get = function(sElementId) {return (FormManagerFields_get(this, sElementId));} 
	this.length = function() {return (FormManagerFields_count(this));}
}

// FormManagerFields add function (obj : FormManagerFields object reference ; args : passed arguments list)
function FormManagerFields_add(obj, args)
{
	// add a new field
	var field = new FormManagerField(args[0], args[1], args);
	obj.colFields.add(args[0], field);
}

// FormManagerFields get function (obj : FormManagerFields object reference ; sElementId : Element Id of Field )
function FormManagerFields_get(obj, sElementId)
{
	// return element id field
	return (obj.colFields.get(sElementId));
} 

// FormManagerFields count function (obj : FormManagerFields object reference )
function FormManagerFields_count(obj)
{
	// return fields count
	return (obj.colFields.count());
}

// FormManagerField class constructor (sElementId : Form element id ; eFieldType : Field type enumerator constant ; args : passed arguments list)
function FormManagerField(sElementId, eFieldType, args)
{
	this.elementId = (sElementId) ? sElementId : "undefined";
	this.fieldType = (eFieldType) ? eFieldType : FieldType.untyped ;
	
	this.parameters = new Array();
	
	// Initialize parameters
	this.parameters[FieldParameter.requiered] =					new Array();
	this.parameters[FieldParameter.requiered]["activated"] = 	false;
	
	this.parameters[FieldParameter.checkempty] =				new Array();
	this.parameters[FieldParameter.checkempty]["activated"] = 	false;	
	
	this.parameters[FieldParameter.capitalize] =				new Array();
	this.parameters[FieldParameter.capitalize]["activated"] = 	false;	
	
	this.parameters[FieldParameter.roundnumeric] =				new Array();
	this.parameters[FieldParameter.roundnumeric]["activated"] =	false;	
	
	this.parameters[FieldParameter.defaultvalue] =				new Array();
	this.parameters[FieldParameter.defaultvalue]["activated"] = false;	
	this.parameters[FieldParameter.defaultvalue]["defaultValue"] = "";	
	
	this.parameters[FieldParameter.length] =					new Array();
	this.parameters[FieldParameter.length]["activated"] =	 	false;	
	this.parameters[FieldParameter.length]["maxLength"] =	 	0;

	this.parameters[FieldParameter.email] =						new Array();
	this.parameters[FieldParameter.email]["activated"] =	 	false;	

	this.parameters[FieldParameter.confirmation] =					new Array();
	this.parameters[FieldParameter.confirmation]["activated"] =	 	false;	
	this.parameters[FieldParameter.confirmation]["tocheck"] =	 	"";

	// Initialize with field type
	FormManagerField_initializeWithFieldType(this);
	
	// Activate parameters
	if (args.length > 2 )
	{
		for (i = 2 ; i < args.length ; i++)
		{
			eParam = args[i];
			//alert(args[i]);
			this.parameters[args[i]]["activated"] = true;
			
			switch (args[i])
			{
				case FieldParameter.defaultvalue :
					i++;
					this.parameters[FieldParameter.defaultvalue]["defaultValue"] = args[i];
					break;
					
				case FieldParameter.length :
					i++;
					this.parameters[FieldParameter.length]["maxLength"] = args[i];
					break;
				
				case FieldParameter.confirmation :
					i++;
					this.parameters[FieldParameter.confirmation]["tocheck"] = args[i];
					break;
			}
		}
	}
	
	// Define load function
	this.load = function() {FormManagerField_load(this);}
}

/* FormManagerField  initializeWithFieldType function (field : Field object reference)
*	==>	Initialize field with field type default values 		
*/
function FormManagerField_initializeWithFieldType(field)
{
	switch (field.fieldType)
	{
		case FieldType.firstname :
			field.parameters[FieldParameter.capitalize]["activated"] = true;
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 20;
			break;

		case FieldType.lastname :
			field.parameters[FieldParameter.capitalize]["activated"] = true;
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 20;
			break;

		case FieldType.zipfr :
			field.parameters[FieldParameter.roundnumeric]["activated"] = true;
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 5;
			break;

		case FieldType.phone :
			field.parameters[FieldParameter.roundnumeric]["activated"] = true;
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 10;
			break;

		case FieldType.email :
			field.parameters[FieldParameter.email]["activated"] = true;
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 50;
			break;
			
		case FieldType.password :
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 20;
			break;				

		case FieldType.passwordconfirmation :
			field.parameters[FieldParameter.length]["activated"] = true;
			field.parameters[FieldParameter.length]["maxLength"] = 20;
			break;	
	}
}

/* FormManagerField  load function (obj: Field object reference)
*	==>	Set field element events 		
*/
function FormManagerField_load(obj)
{
	document.getElementById(obj.elementId).onfocus = function() {FormManagerField_load_onfocus(obj);}
	document.getElementById(obj.elementId).onblur = function() {FormManagerField_load_onblur(obj);}
}

/* FormManagerField  load, onfocus function (obj: Field object reference)
*	==>	Set field element onfocus event 		
*/
function FormManagerField_load_onfocus(obj)
{
	var sValue = trim(document.getElementById(obj.elementId).value);
	if (sValue == obj.parameters[FieldParameter.defaultvalue]["defaultValue"])
	{
		document.getElementById(obj.elementId).value = "";
	}
}

/* FormManagerField  load, onblur function (obj: Field object reference)
*	==>	Set field element onblur event 		
*/
function FormManagerField_load_onblur(obj)
{
	var sValue = trim(document.getElementById(obj.elementId).value);
	if (sValue == "")
	{
		document.getElementById(obj.elementId).value = obj.parameters[FieldParameter.defaultvalue]["defaultValue"];
	}
}