/*
 * Unobstrusive form validation, 
 * adds error messages to elements 
 * named after the input's id (if it exists).
 */
 
var AFM_MESSAGES = new Array();
AFM_MESSAGES['fr'] = new Array();
AFM_MESSAGES['en'] = new Array();

AFM_MESSAGES['fr']['errors'] = "Des erreurs se trouvent dans vos données, veuillez réviser les différents champs."; 
AFM_MESSAGES['fr']['required'] = "Ce champs est requis."; 
AFM_MESSAGES['fr']['alphanumeric'] = "Seulement les caractères alphanumériques sont acceptés (A-Z, 0-9).";

AFM_MESSAGES['en']['errors'] = "Errors were found in your data. Please revise the different fields."; 
AFM_MESSAGES['en']['required'] = "This field is required."; 
AFM_MESSAGES['en']['alphanumeric'] = "Only alphanumeric caracters (A-Z, 0-9) are accepted.";
 
function automaticFormValidation(el){    
    var foundError = false;    
    for(var i=0;i<=el.elements.length;i++){
    
        var currentElement = el.elements[i];
        if( currentElement == null ) continue;
        var messageElement = document.getElementById(currentElement.id+"_message");
        if( messageElement != null ) messageElement.innerHTML = "";
        
        var value = "";
        switch(currentElement.type){
            case "text":
                value = currentElement.value;
                break;
            case "textarea":
                value = currentElement.value;
                break;
        }
        
        if( currentElement.className != "" ){
            var classes = currentElement.className.split(" ");
            for(var j=0;j<=classes.length;j++){
                var className = classes[j];
                switch(className){
                    case "required":
                        if( value.length == 0 ){
                            foundError = true;                            
                            if( messageElement != null ) messageElement.innerHTML += " "+AFM_MESSAGES[automaticFormValidation_lang]['required'];
                        }
                        break;
                    case "alphanumeric":
                        if( !AFV_alphanumeric(value) ){
                            foundError = true;                            
                            if( messageElement != null ) messageElement.innerHTML += " "+AFM_MESSAGES[automaticFormValidation_lang]['alphanumeric'];
                        }
                        break;
                }
            }
        }
    
    }    
    if( !foundError ) return true;
    else {
        var topMessage = document.getElementById('AFV_message');
        if( topMessage != null ){
            topMessage.innerHTML = AFM_MESSAGES[automaticFormValidation_lang]['errors'];        
            window.location = "#AFV_message";
        }
        return false;
    }
} 

function automaticFormValidation_onload(){
    var elements = document.getElementsByTagName('form');
    for( var i=0; i < elements.length; i++ ){
        elements[i].onsubmit = function(){
            return automaticFormValidation(this);
        };
        /*
if( document.addEventListener ) {
            elements[i].addEventListener('submit',function(){ return automaticFormValidation(this); },false);
        } else if (document.attachEvent){
            elements[i].attachEvent('onsubmit',function(){ return automaticFormValidation(this); });
        }
*/
    }    
}

function AFV_alphanumeric(alphane){
    var numaric = alphane;
    for(var j=0; j<numaric.length; j++) {
        var alphaa = numaric.charAt(j);
        var hh = alphaa.charCodeAt(0);
        if((hh > 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123)){
        } else {
            return false;
        }
    }
    return true;
}

var oldonload = window.onload;
if (typeof window.onload != 'function') {
    window.onload = automaticFormValidation_onload;
} else {
    window.onload = function() {
        if (oldonload) {
            oldonload();
        }
        automaticFormValidation_onload();
    }
}
 