var error_name = "Veuillez indiquer le nom, s'il vous plait";
var error_firstname = "Veuillez indiquer le pr�nom, s'il vous plait";
var error_birthday = "Veuillez indiquer la date de naissance, s'il vous plait";
var error_street = "Veuillez indiquer le nom de la rue, s'il vous plait";
var error_number = "Veuillez indiquer le num�ro de la rue, s'il vous plait";
var error_pc = "Veuillez indiquer le code postal, s'il vous plait";
var error_be_pc = "Veuillez indiquer le code postal valide (4 chiffres), s'il vous plait";
var error_city = "Veuillez indiquer la commune, s'il vous plait";
var error_country = "Veuillez indiquer le pays, s'il vous plait";
var error_tel = "Veuillez indiquer au minimun un num�ro de t�l�phone, s'il vous plait";
var error_be_tel = "Veuillez indiquer le num�ro de t�l�phone valide (9 ou 10 chiffres), s'il vous plait";
var error_be_gsm = "Veuillez indiquer le num�ro de GSM valide (10 chiffres), s'il vous plait";
var error_mail = "Veuillez indiquer une adresse e-mail valable, s'il vous plait";
var error_password = "Veuillez indiquer un password valable (lettres + caract�res sp�cciaux + chiffres, min 6 cars), s'il vous plait";

var forgot_name = "Veuillez indiquer le nom, s'il vous plait";
var forgot_subject = "Veuillez introduire le sujet, s'il vous plait";
var forgot_mail = "Veuillez introduire l'adresse e-mail, s'il vous plait";
var forgot_message = "Veuillez indiquer le contenu du message, s'il vous plait";
var error_dossier_number = "Veuillez indiquer le num�ro de dossier, s'il vous plait";

var error_string = "(*) est un champ obligatoire";
var error_int = "Veuillez indiquer un nombre valable, s'il vous plait";
var error_select = "Veuillez selectioner une option, s'il vous plait";
var error_real = "Veuillez indiquer un nombre valable, s'il vous plait";
var error_date = "Veuillez indiquer une date valable, s'il vous plait";
var error_time = "Veuillez indiquer l'heure valable, s'il vous plait";
var error_datetime = "Veuillez indiquer une date heure valable, s'il vous plait";
var error_selected = "Le bouton radio n'est pas s�l�ctionn�";

//--------------------------------------------------------------------------------------------------------------

function trim(str) {
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

function add_char(str, pos, ch) {
    str = str.substring(0, pos) + ch + str.substring(pos, str.length);
    return str;
}

function del_char(str, pos) {
    str = str.substring(0, pos) + str.substring(pos+1, str.length);
    return str;
}

function del_all_char(str, ch) {
    var i = 0;
	while (i < str.length) {
        var charAt = str.charAt(i);
        if ( charAt == ch ) str = del_char(str, i);
        else i++;
    }
    return str;
}

function set_field(element, test, value) {
    if (element.value == test) element.value = value;
}

function validator(text_error) {
    if ( text_error == "" ) return true;
    else return false;
}

function set_class(element, classname, valid) {
    if ( valid ) element.className = classname;
    //else element.className = "error";
}

function error_message(element, message) {
    alert(message); 
    element.focus(); 
    return false; 
}

function choose_alert(element, message, defaultmessage) {
    if ( message == '' ) return error_message(element, defaultmessage);
    else return error_message(element, message);
}

function get_formula(id) {
    var id = (id == null) ? 'buivanhon' : id;
    if (document.getElementById) return document.getElementById(id);
    return window.id;
}

//--------------------------------------------------------------------------------------------------------------

function check_int(element, finished) {
    var content = element.value;
    var i = 0;
    while ( i < content.length ) {
        var charAt = content.charAt(i);
        if ( is_digit(charAt) ) i++;
        else {
            content = del_char(content, i);
            element.value = content;
        }
    }
    if ( finished ) set_class(element, 'int', is_int(element.value));
    else set_class(element, 'int', true);
}

function check_signed_int(element, finished) {
    var content = element.value;
    var i = 0;
    while ( i < content.length ) {
        var charAt = content.charAt(i);
        if ( is_digit(charAt) || (i == 0 && charAt == '-') ) i++;
        else {
            content = del_char(content, i);
            element.value = content;
        }
    }
    if ( finished ) set_class(element, 'int', is_int(element.value));
    else set_class(element, 'int', true);
}

function check_real(element, finished) {
    var content = element.value;
    var i = 0;
    while (i < content.length) {
        var charAt = content.charAt(i);
        if ( is_digit(charAt) || (i != 0 && charAt == '.') ) i++;
        else {
            content = del_char(content, i);
            element.value = content;
        }
    }
    if ( finished ) set_class(element, 'real', is_real(element.value));
    else set_class(element, 'real', true);
}

function check_signed_real(element, finished) {
    var content = element.value;
    var i = 0;
    while (i < content.length) {
        var charAt = content.charAt(i);
        if ( is_digit(charAt) || (i == 0 && charAt == '-') || (i != 0 && charAt == '.') ) i++;
        else {
            content = del_char(content, i);
            element.value = content;
        }
    }
    if ( finished ) set_class(element, 'real', is_real(element.value));
    else set_class(element, 'real', true);
}

function check_date(element, finished) {
    var content = element.value;
    content = content.substr(0, 10);
    var i = content.length;
    var charAt = content.charAt(i-1);
    if ( (i == 3 || i == 6) && charAt != '-' && charAt != '/' && charAt != '.' ) { 
        content = add_char(content, i-1, '-');
        i++; charAt = content.charAt(i-1);
    }
    
    if (i == 1 && charAt > '3') { 
        content = content.substr(0, i-1);
    } else if (i == 2 && content.charAt(0) == '3' && charAt > '1') { 
        content = content.substr(0, i-1);
    } else if (i == 4 && charAt > '1') { 
        content = content.substr(0, i-1);
    } else if (i == 5 && content.charAt(3) == '1' && charAt > '2') { 
        content = content.substr(0, i-1);
    }
    
    if ( !is_digit(charAt) && i != 3 && i != 6 ) { 
        content = content.substr(0, i-1);
    }
    
    if ( element.value != content ) element.value = content;
    if ( i == 10 || finished ) set_class(element, 'date', is_date(element.value));
    else set_class(element, 'date', true);
}

function check_mail(element, finished) {
    var content = del_all_char(element.value, ' ');
    if ( element.value != content ) element.value = content;
}

function check_time(element, finished) {
	var content = element.value;
	content = content.substr(0, 8);
    var i = content.length;
	var charAt = content.charAt(i-1);
	
	if ( (i == 3 || i == 6) && charAt != ':' ) { 
        content = add_char(content, i-1, ':');
        i++; charAt = content.charAt(i-1);
    }
	if ( ( charAt < '0' || charAt > '9' ) && ( i != 3 ) && ( i != 6 ) ) {
	     content = content.substr(0,i-1);
	} else if ( i == 1 && charAt > '2' ) {
         content = content.substr(0,i-1);
    } else if ( i == 2 && content.charAt(0) == '2' && charAt > '3' ) {
         content = content.substr(0,i-1);
    } else if ( (i == 3 || i == 6) && charAt != ':' ) {
         content = content.substr(0,i-1);
    } else if ( (i == 4 || i == 7) && charAt > '5' ) {
         content = content.substr(0,i-1);
    }
    
    if ( element.value != content ) element.value = content;
    if ( i == 8 || finished ) set_class(element, 'time', is_time(element.value));
    else set_class(element, 'time', true);
}
 
function check_datetime(element, finished) {
    var content = element.value;
    content = content.substr(0, 19);
    var i = content.length;
    var charAt = content.charAt(i-1);
    if ( i == 11 && charAt != ' ' ) { 
        content = add_char(content, i-1, ' ');
        i++; charAt = content.charAt(i-1);
    }
    
    if ( i < 11 ) check_date(element, finished);
    else if ( i == 10 ) set_class(element, 1);
    else if ( i > 11 ) {
    	if ( (i == 14 || i == 17) && charAt != ':' ) { 
            content = add_char(content, i-1, ':');
            i++; charAt = content.charAt(i-1);
        }
        if ( ( charAt < '0' || charAt > '9' ) && ( i != 14 ) && ( i != 17 ) ) {
    	     content = content.substr(0, i-1);
    	} else if ( i == 12 && charAt > '2' ) {
             content = content.substr(0, i-1);
        } else if ( i == 13 && content.charAt(12) == '2' && charAt > '3' ) {
             content = content.substr(0, i-1);
        } else if ( (i == 14 || i == 17) && charAt != ':' ) {
             content = content.substr(0, i-1);
        } else if ( (i == 15 || i == 18) && charAt > '5' ) {
             content = content.substr(0, i-1);
        }
    }
    
    if ( element.value != content ) element.value = content;
    if ( i == 19 || finished ) set_class(element, 'datetime', is_datetime(element.value));
    else set_class(element, 'datetime', true);
}

function check_account(element, finished) {
	var content = element.value;
	content = content.substr(0, 19);
    element.className = '';

	content = content.replace('-', ' ');
	
	var i = content.length;
	var charAt = content.charAt(i-1);
	
	if ( i < 3 ) {
        if (charAt < 'A' || charAt > 'Z') {
           content = del_char(content, i-1);
        }
    } else {
        if (i == 4 || i == 9 || i == 14) {
            content = add_char(content, i, ' ');
        } else if (i == 5 || i == 10 || i == 15) {
            if ( charAt != ' ' ) {
                content = del_char(content, i-1, ' ');
            }
        } else {
            if ( charAt < '0' || charAt > '9' ) {
                content = del_char(content, i-1);
            }
        }
    }
	
	if ( element.value != content ) element.value = content;
	if (finished || content.length == 19) set_class(element, 'account', is_account(element.value));
	else set_class(element, 'account', true);
}

//--------------------------------------------------------------------------------------------------------------

function isset(element) {
    if ( element ) return true;
    else return false;
}

function is_string(content, min, max) {
    content = trim(content);
    if (min <= content.length && content.length <= max) return true;
    else return false;
}

function is_letter(content) {
    var filter = /^[a-zA-Z]$/;
    return filter.test(content);
}

function is_alphabetic(content) {
    var filter = /^[a-zA-Z]+$/;
    return filter.test(content);
}

function is_digit(content) {
    var filter = /^\d/;
    return filter.test(content);
}

function is_int(content) {
    var filter = /^(\+|\-)?\d+/;
    return filter.test(content);
}

function is_real(content) {
    var filter = /^(((\+|\-)?\d+(\.\d*)?)|((\+|\-)?(\d*\.)?\d+))$/;
    return filter.test(content);
}

function is_time(content) {
    var filter = /^([0-1][0-9]|2[0-3])(:([0-5][0-9])){1,2}$/;
    return filter.test(content);
}

function is_date(content) {
    var filter = /^([0][1-9]|[1-2][0-9]|[3][0-1])([-]|[/]|[.])([0][1-9]|[1][0-2])([-]|[/]|[.])([0-2][0-9]{3})$/;
    if ( filter.test(content) ) {
        var split = content.split('-'|'/'|'.');
        var month = parseInt(split[1]);
        if ( parseInt(split[0])==31 && (month==2 || month==4 || month==6 || month==9 || month==11) ) return false;
        return true;
    }
    return false;
}

function is_datetime(content) {
    var split = content.split(' ');
    if ( is_date(split[0]) && is_time(split[1]) ) {
        return true;
    }
    return false;
}

function is_mail(content) {
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return filter.test(content);
}

function is_password(content) {
    var filter = /([a-zA-Z0-9].*[!,@,=,+,-,#,$,%,^,&,*,?,_,~])|([!,@,=,+,-,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/;
    if ( content.length > 30 ) return true;
    if ( content.length < 6 ) return false;
    return filter.test(content);
}

function is_account(account) {
    var content = '';
	for (i=0; i<account.length; i++) {
		if (account.charAt(i) != '-' && account.charAt(i) != '/') {
			content += account.charAt(i);
		}
	}
	base = content.substr(0, content.length-2);
	checkdigit = content.substr(content.length-2, 2);
	result = base % 97;
	if (result == 0) result = 97;
	if (result == checkdigit) return true;
    return false;
}

function is_selected(element) {
    var selected = false;
    for (var i = 0; i < element.length; i++) {
        if ( element[i].checked ) selected = true;
    }
    return selected;
}

function set_selected(element, value) {
    for (var i = 0; i < element.length; i++) {
        if ( element[i].value == value ) element[i].checked = true;
    }
    return false;
}

//--------------------------------------------------------------------------------------------------------------

function validate_string(element, message, min, max) {
    var min = (min == null) ? 1 : min;
    var max = (max == null) ? 255 : max;
    if ( !isset(element) || is_string(element.value, min, max) ) return true;
    else element.value = trim(element.value);
    return choose_alert(element, message, error_string);
}

function validate_blob(element, message, min, max) {
    var min = (min == null) ? 1 : min;
    var max = (max == null) ? 65535 : max;
    return validate_string(element, message, min, max);
}

function validate_password(element, message, min, max) {
    var min = (min == null) ? 6 : min;
    var max = (max == null) ? 255 : max;
    if ( !isset(element) || is_password(element.value, min, max) ) return true;
    return choose_alert(element, message, error_password);
}

function validate_mail(element, message) {
    if ( !isset(element) || is_mail(element.value) ) return true;
    return choose_alert(element, message, error_mail); 
}

function validate_int(element, message) {
    if ( !isset(element) || is_int(element.value) ) return true;
    return choose_alert(element, message, error_int);
}

function validate_select(element, message) {
    if ( !isset(element) || element.value != 0 ) return true;
    return choose_alert(element, message, error_select);
}

function validate_real(element, message) {
    if ( !isset(element) || is_real(element.value) ) return true;
    return choose_alert(element, message, error_real);
}

function validate_date(element, message) {
    if ( !isset(element) || is_date(element.value) ) return true;
    return choose_alert(element, message, error_date);
}

function validate_time(element, message) {
    if ( !isset(element) || is_time(element.value) ) return true;
    return choose_alert(element, message, error_time);
}

function validate_datetime(element, message) {
    if ( !isset(element) || is_datetime(element.value) ) return true;
    return choose_alert(element, message, error_datetime);
}

function validate_radio(element, message) {
    if ( !isset(element) || is_selected(element) ) return true;
    return choose_alert(element[0], message, error_selected);
}

