function setCaretToEnd (control) {
	  if (control.createTextRange) {
		var range = control.createTextRange();
		range.collapse(false);
		range.select();
	  }
	  else if (control.setSelectionRange) {
		control.focus();
		var length = control.value.length;
		control.setSelectionRange(length, length);
	  }
}

function addEventPhone(){ 
	if(document.all) isIE = true;
	else isIE = false;

	phoneFields = getTextFieldsByClass("Phone");

	for(i=0; phoneFields[i] != null; i++){
		if(!isIE){
			phoneFields[i].addEventListener("keydown", phoneEnforce, false);
		} else {
			phoneFields[i].attachEvent("onkeydown", phoneEnforce);
		}
	}
}

function phoneEnforce(evt){
	if(isIE){
		elem = window.event.srcElement;
		key  = window.event.keyCode;
		evt  = window.event;
	} else {
		elem = evt.target;
		key  = evt.keyCode;
	}

	if(key == 9) return;

	if((key == 8 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !evt.shiftKey){
		if(key != 8){
			if(elem.value.length == 0){
				elem.value += "(";
			} else if(elem.value.length == 4){
				elem.value += ")";
			} else if(elem.value.length == 8){
				elem.value += "-";
			} else if(elem.value.length == 13){
				if(!isIE) evt.preventDefault();
				else evt.returnValue = false
				return false;
			}
		setCaretToEnd(elem);
		}
	}
	else {
		if(!isIE) evt.preventDefault();
		else evt.returnValue = false
	}
}

//PostalCode
function postalCodeEnforce(evt){
	if(isIE){
		elem = window.event.srcElement;
		key  = window.event.keyCode;
		evt  = window.event;
	} else {
		elem = evt.target;
		key  = evt.keyCode;
	}

	if(key == 9) return;

	len = elem.value.length;

	if(key == 8){
		return true;
	}

	if(len == 0 || len == 2 || len == 5){	// Lettres
		if((key == 8 || key == 46 || (key >= 65 && key <= 90))){
			elem.value += String.fromCharCode(key);
			setCaretToEnd(elem);
		}
		if(!(key == 8 || key == 46)){
			if(!isIE) evt.preventDefault();
			else evt.returnValue = false
		}
	} else if((len == 1 || len == 4 || len == 6 || len == 3)){								// Chiffres
		if((key == 8 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105)) && !evt.shiftKey){
			if(len == 3){
				elem.value += " ";
				setCaretToEnd(elem);
			}
		}
		else {
			if(!isIE) evt.preventDefault();
			else evt.returnValue = false
		}
	} else if(len == 7){
		if(!isIE) evt.preventDefault();
		else evt.returnValue = false
		return false;
	}
	
}

function addEventPostalCode(){ 
	if(document.all) isIE = true;
	else isIE = false;

	phoneFields = getTextFieldsByClass("PostalCode");

	for(i=0; phoneFields[i] != null; i++){
		if(!isIE){
			phoneFields[i].addEventListener("keydown", postalCodeEnforce, false);
		} else {
			phoneFields[i].attachEvent("onkeydown", postalCodeEnforce);
		}
	}
}

///////////////////
function addEventInteger(){ 
	if(document.all) isIE = true;
	else isIE = false;

	integerFields = getTextFieldsByClass("Integer");

	for(i=0; integerFields[i] != null; i++){
		if(!isIE){
			integerFields[i].addEventListener("keydown", integerEnforce, false);
		} else {
			integerFields[i].attachEvent("onkeydown", integerEnforce);
		}
	}
}

function integerEnforce(evt){
	if(!evt){
		evt = window.event;
		key = evt.which;
	} else {
		key = evt.keyCode;
	}

	if(key == 8 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105)){}
	else {
		if(!isIE) evt.preventDefault();
		else evt.returnValue = false
	}
}

function addEventNumber(){		// Only supports nb >= 0
	if(document.all) isIE = true;
	else isIE = false;

	numberFields = getTextFieldsByClass("Number");

	for(i=0; numberFields[i] != null; i++){
		if(!isIE){
			numberFields[i].addEventListener("keydown", numberEnforce, false);
		} else {
			numberFields[i].attachEvent("onkeydown", numberEnforce);
		}
	}
}

function numberEnforce(evt){
	if(!evt){
		evt = window.event;
		key = evt.which;
		elem = window.event.srcElement;
	} else {
		key = evt.keyCode;
		elem = evt.target;
	}

	window.status = key;

	if(key == 8 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105) || key == 190 || key == 110){
		if(elem.value.indexOf(".") != -1 && (key == 190 || key == 110)) {
			if(!isIE) evt.preventDefault();
			else evt.returnValue = false
		}
	}
	else {
		if(!isIE) evt.preventDefault();
		else evt.returnValue = false
	}
}

function addEventMoney(){		// Only supports nb >= 0
	if(document.all) isIE = true;
	else isIE = false;

	moneyFields = getTextFieldsByClass("Money");

	for(i=0; moneyFields[i] != null; i++){
		if(!isIE){
			moneyFields[i].addEventListener("keydown", moneyEnforce, false);
		} else {
			moneyFields[i].attachEvent("onkeydown", moneyEnforce);
		}
	}
}

function moneyEnforce(evt){
	if(!evt){
		evt = window.event;
		key = evt.which;
		elem = window.event.srcElement;
	} else {
		key = evt.keyCode;
		elem = evt.target;
	}

	window.status = key;

	if(key == 8 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105) || key == 190 || key == 110){
		if(elem.value.length == 0){
			elem.value += "0";
			setCaretToEnd(elem);
		}

		if(elem.value.indexOf(".") != -1 && (key == 190 || key == 110)) {
			if(!isIE) evt.preventDefault();
			else evt.returnValue = false
		}
		
		pos = elem.value.indexOf(".");
		
		if(pos >= 0 && elem.value.length > (pos+2) && key != 8){
			if(!isIE) evt.preventDefault();
			else evt.returnValue = false
		}
	}
	else {
		if(!isIE) evt.preventDefault();
		else evt.returnValue = false
	}
}

function setAllRestraints(){
	addEventInteger();
	addEventNumber();
	addEventMoney();
	addEventPhone();
	addEventPostalCode();
}