
	// Form ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	{
	    function applyForm()
	    {
            var oForm = document.forms.trialForm;
	        
	        if(isValidForm(oForm))
	        {
	            oForm.action = "/public/trial/createTrial.php";
          	    oForm.submit();
          	}
	    }
	    
	    function validateForm(oForm, bValid)
	    {
	        var oErrorMessages = document.getElementById("messageValidation");
	        
	        if(oForm.password.value != oForm.confirmation.value)
	        {
	            writeMessage(oForm.confirmation.name, "message.passwordConfirmationMismatch");
                bValid = false;
                swicthClassName(oForm.confirmation,true);
	        }
	        
	        /*if(oForm.email.value != oForm.email2.value)
	        {
	            writeMessage(oForm.email2.name, "message.emailConfirmationMismatch");
                bValid = false;
                swicthClassName(oForm.email2,true);
	        }*/
	        
	        var nbChecked = 0;
	        for(iInput = 0; iInput < oForm.elements.length; iInput ++)
            {
                if(oForm.elements[iInput].type == "checkbox")
                {
                    if(oForm.elements[iInput].name == "idBusinessSector[]")
                    {
                        if(oForm.elements[iInput].checked)
                        {
                            nbChecked ++;    
                        }    
                    }
                }
            }
            
            if(nbChecked == 0)
            {
                writeMessage('form.field.idBusinessSector', "form.requiredField.message");
                bValid = false;
            }
            
            var oDBName = oForm.dbname;
            var oOwner = oForm.enterprise;
            var oKeymail = oForm.username;
            var oEmail = oForm.email;
            
            var dbname = "keybook_" + oDBName.value;
            var owner = oOwner.value;
            var keymail = oKeymail.value + "@keybook.com";
            var email = oEmail.value;
            
            if(oDBName.value.indexOf("keybook_") == 0) {
                dbname = oDBName.value;
            }
            
            if(oKeymail.value.indexOf("@keybook.com") != -1) {
                keymail = oKeymail.value;
            }
            
            // make sure the fields "dbname", "owner" and "keymail"
            var sURL = "/common/accountCreation/ajax-checkUniqueFields.php?dbname=" + dbname + "&owner=" + escape(owner) + "&keymail=" + escape(keymail);
            var oRequest = new Ajax.Request(sURL, { asynchronous: false,
                onComplete : function(p_oRequest)
                {
                    if(p_oRequest.responseText != "") {
                        var oJSON = eval('(' + p_oRequest.responseText + ')');
                        if(oJSON) {
                            if(oJSON.result == "true") {
                                //bValid = true;
                                
                                // swicthClassName(oDBName, false);
                                swicthClassName(oOwner, false);
                                swicthClassName(oKeymail, false);
                            }
                            else {
                                if(oJSON.errorCode == "0") {
                                    if(oJSON.isDbNameUnique == "false" && oJSON.isKeymailUnique == "true") {
                                        errorMessage = Localization.getTranslation("message.dbnameNotUnique").replace("%s", "\"" + keymail + "\"");
                                        
                                        // swicthClassName(oDBName, true);
                                        
                                        var oNewErrorMessage = document.createElement("li");
                                        oNewErrorMessage.appendChild(document.createTextNode(errorMessage));
                                        oErrorMessages.appendChild(oNewErrorMessage);
                                        
                                        bValid = false;
                                    }
                                    if(oJSON.isOwnerUnique == "false") {
                                        errorMessage = Localization.getTranslation("message.ownerNotUnique").replace("%s", "\"" + owner + "\"");
                                        
                                        swicthClassName(oOwner, true);
                                        
                                        var oNewErrorMessage = document.createElement("li");
                                        oNewErrorMessage.appendChild(document.createTextNode(errorMessage));
                                        oErrorMessages.appendChild(oNewErrorMessage);
                                        
                                        bValid = false;
                                    }
                                    if(oJSON.isKeymailUnique == "false") {
                                        errorMessage = Localization.getTranslation("message.keymailNotUnique").replace("%s", "\"" + keymail + "\"");
                                        
                                        swicthClassName(oKeymail, true);
                                        
                                        var oNewErrorMessage = document.createElement("li");
                                        oNewErrorMessage.appendChild(document.createTextNode(errorMessage));
                                        oErrorMessages.appendChild(oNewErrorMessage);
                                        
                                        bValid = false;
                                    }
                                    
                                    // alert(errorMessage);
                                    
                                    hideAndDisplayMessage('');
                                }
                                else {
                                    //alert("Une erreur est survenue lors de la vérification de l'unicité des champs.");
                                    
                                    bValid = false;
                                }
                            }
                        }
                    }
                }, onException : function(p_oRequest, p_oException)
                {
                    throw p_oException;
                },
                onLoaded : function()
                {
                }
            });
	        
	        // make sure the fields "email"
            var sURL = "ajax-isContactEmailUnique.php?email=" + email;
            var oRequest = new Ajax.Request(sURL, { asynchronous: false,
                onComplete : function(p_oRequest)
                {
                    if(p_oRequest.responseText != "1") {
                        errorMessage = Localization.getTranslation("message.emailNotUnique").replace("%s", email);
                                        
                        swicthClassName(oEmail, true);
                        
                        var oNewErrorMessage = document.createElement("li");
                        oNewErrorMessage.appendChild(document.createTextNode(errorMessage));
                        oErrorMessages.appendChild(oNewErrorMessage);
                        
                        bValid = false;   
                    }
                    else {
                        swicthClassName(oEmail, false);
                    }
                }, onException : function(p_oRequest, p_oException)
                {
                    throw p_oException;
                },
                onLoaded : function()
                {
                }
            });
	        
	        return bValid;    
	    }
	}
	
	// Event ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	{
	    function onKeymailChanged() {
            var oForm = document.forms.trialForm;
            
            // get keymail
            var oInput   = oForm.username;
            var keymail  = oInput.value;
            
            // process keymail
            keymail = removeAccents(keymail);
            keymail = keymail.replace(/\s/g, '_').replace(/[,@#\|-]/g, '_');
            keymail = keymail.replace(/[^a-zA-Z0-9_]/g, '');
            
            // replace keymail
            oInput.value = keymail;
            
            // process dbname
            var dbname = keymail.replace(/\s/g, '_').replace(/[,.@#\|-]/g, '_');
            dbname     = removeAccents(dbname);
            
            // replace dbname
            var oDbName   = oForm.dbname;
            oDbName.value = dbname;
        }
    }
