function isEntierValid(val) {
	   var accepted = true ;
	   var chaine =  new String(val);
	   if (( chaine.search(/[^0-9]/) != -1)) {
	   	accepted = false;
	   }
	   return(accepted);
	}
	
function isInteger(val) {
	var rx = new RegExp("^\\-?\\d+$");
	return rx.test(val);
}

function isDecimal(val) {
	var rx = new RegExp("^\\-?\\d+([\\.,]\\d+)?$");
	return rx.test(val);
}
	
function isComplet5Valid(val) {
	   var accepted = true ;
	   var chaine =  new String(val);
	   if (chaine.length < 5) {
	   	accepted = false;
	   }
	   return(accepted);
	}
	
function isComplet11Valid(val) {
	   var accepted = true ;
	   var chaine =  new String(val);
	   if (chaine.length < 11) {
	   	accepted = false;
	   }
	   return(accepted);
	}
function isComplet10Valid(val) {
	   var accepted = true ;
	   var chaine =  new String(val);
	   if (chaine.length < 10) {
	   	accepted = false;
	   }
	   return(accepted);
	}

function checkTextAreaLength(field){
	var maxlength = field.attributes.getNamedItem('maxlength').value;
	var thisLength = field.value.length;
	if(maxlength - thisLength <= 0){
		alert("Ce champ doit comporter moins de " + maxlength + " caractères.");
		field.value = field.value.substr(0, maxlength-1);
	}
}

function checkRibRipFormat(field){
	var elmts = field.split(' ');
	if(elmts.length == 4 || (elmts.length == 1 && elmts[0].length == 23)){
		var bqe = elmts.length == 4 ? elmts[0] : elmts[0].substr(0, 5);
		var gui = elmts.length == 4 ? elmts[1] : elmts[0].substr(5, 5);
		var cpt = elmts.length == 4 ? elmts[2].toUpperCase() : elmts[0].substr(10, 11);
		var cle = elmts.length == 4 ? elmts[3] : elmts[0].substr(21, 2);
		
		var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		var tab1 = "123456789123456789234567890123456789".split("");
		while (cpt.match(/\D/) != null)
		    cpt = cpt.replace(/\D/, tab1[tab.indexOf(cpt.match(/\D/))]);
		var cp = parseInt(cpt, 10);

		a = bqe%97;
		a = a*100000+parseInt(gui, 10);
		a = a%97;
		a = a*Math.pow(10, 11) + cp;
		a = a%97
		a = a*100;
		a = a%97
		a = 97-a;

		return a == cle;
	}
	return false;
}

function checkSirenSiretFormat(field){
	var rx = /^(\d{9})(\d{5})?$/;
	var ok = false;
	if(rx.test(field)){
		var siren = RegExp.$1;
		var nic = RegExp.$2;
		ok = checkLuhnAlgorithm(siren);
		if(nic.length > 0){
			ok = ok && checkLuhnAlgorithm(nic);
		}
	}
	
	return ok;
}

function checkLuhnAlgorithm(val){
	var sum = 0;
	for(var i=0; i<val.length; i++){
		var tmp = val.charAt(i);
		if((i+1)%2 == 0){
			tmp = tmp * 2;
			tmp = (tmp >= 10) ? tmp - 9 : tmp;
		}
		
		sum += tmp/1;
	}
	
	return (sum % 10) == 0;
}

function checkSelectBoxSelected(field){
	for(i=0; i<field.length; i++){
		if(field[i].selected)
			return field[i].value != "";
	}
	
	return false;
}

function checkRadioButtonChecked(field){
	var isChecked = false;

	for(i=0; i<field.length; i++){
		isChecked = isChecked || field[i].checked;
	}

	return isChecked;
}

function checkCheckBoxChecked(field){
	var isChecked = false;
	
	if(!field.length){
		field = new Array(field);
	}

	for(i=0; i<field.length; i++){
		isChecked = isChecked || field[i].checked;
	}

	return isChecked;
}

function checkPostalCodeFormat(code){
	var rx = new RegExp("^\\d{4,5}$");
	return rx.test(code);
}

function checkEmailFormat(email){
	var characters = "[^\\s<>\\(\\)\\[\\]\\\\\\.,;:@\"]";
	var name = "[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]";
	var pattern = "^(" + characters + "*" + characters + "\\.)*" + characters + "*" + characters + "@(" + name + "\\.)+" + name + "$";

	var rx = new RegExp(pattern);
	return rx.test(email);
}

function checkDateFormat(date, format){
	var mmAAAA = (format == "MM/AAAA");

	var pattern = "^(\\d{1,2})";
	pattern += mmAAAA ? "" : "/(\\d{1,2})";
	pattern += "/(\\d{4,4})$";

	var rx = new RegExp(pattern);

	var matches = rx.exec(date);

	if(matches != null){
		var idxM = mmAAAA ? 1 : 2;
		var idxY = mmAAAA ? 2 : 3;

		var d = mmAAAA ? 1 : matches[1]*1;
		var m = matches[idxM]*1;
		var y = matches[idxY]*1;

		if(m > 12)
			return false;

		switch(m){
			case 1 :
			case 3 :
			case 5 :
			case 7 :
			case 8 :
			case 10 :
			case 12 :
				if(d > 31)
					return false;
				break;
			case 4 :
			case 6 :
			case 9 :
			case 11 :
				if(d>30)
					return false;
				break;
			case 2 :
				if(y%4==0 && y%100!=0 || y%400==0){
					if(d>29)
						return false;
				}
				else{
					if(d>28)
						return false;
				}
			default :
				break;
		}

		return true;
	}

	return false;
}