/*
 * Copyright 2009 - eSolution - All rights reserved
 */
function getKey(e){
	if (window.event)
		return window.event.keyCode;
	else if (e)
		return e.which;
	else
		return null;
}

function filterCompany(obj,evt,nocr){
	var pattern = ' \'.-()@&\\/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterAddress(obj,evt,nocr){
	var pattern = ' \',.-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterPostcode(obj,evt,nocr){
	var pattern = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterCity(obj,evt,nocr){
	//var pattern = ' \'-ABCDEFGHIJKLMNOPQRSTUVWXYZ'; pattern plus large pour gérer les cedexs, ..
	var pattern = ' \',.-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterCountry(obj,evt,nocr){
	var pattern = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterName(obj,evt,nocr){
	var pattern = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterEmail(obj,evt,nocr){
	var pattern = '_-@.abcdefghijklmnopqrstuvwxyz0123456789';
	return filter_(obj, evt, pattern,2, nocr);
}
function filterPhone(obj,evt,nocr){
	var pattern = ' .-()+0123456789';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterApe(obj,evt,nocr){
	var pattern = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterTvaIntracom(obj,evt,nocr){
	var pattern = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterURL(obj,evt,nocr){
	var pattern = '/:_-.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
	return filter_(obj, evt, pattern, 0, nocr);
}
function filterTitle(obj,evt,nocr){
	var pattern = ' ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	return filter_(obj, evt, pattern, 0, nocr);
}
function filterAlpha(obj,evt,nocr){
	var pattern = ' ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	return filter_(obj, evt, pattern, 0, nocr);
}
function filterPositiveInteger(obj,evt,nocr){
	return filter_(obj, evt, "0123456789", 0, nocr);
}
function filterPositiveNumber(obj,evt,nocr){
	if(locale == "en_EN")
		return filter_(obj, evt, ".0123456789", 0, nocr);
	else
		return filter_(obj, evt, ",0123456789", 0, nocr);
}
function filterReference(obj,evt,nocr){
	return filter_(obj, evt, " -ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 1, nocr);
}

function filter(obj,evt,pattern,nocr){
	return filter_(obj, evt, pattern, 0, nocr);
}
function filterUpperCase(obj,evt,pattern,nocr){
	return filter_(obj, evt, pattern, 1, nocr);
}
function filterLowerCase(obj,evt,pattern,nocr){
	return filter_(obj, evt, pattern, 2, nocr);
}

function filter_(obj,evt,pattern,format,nocr){
	var tab1="ÀÁÂÃÄÅàáâãäåÈÉÊËèéêëÌÍÎÏìíîïÒÓÔÕÖØòóôõöøÙÚÛÜùúûüÇçÑñÿ";
	var tab2="AAAAAAaaaaaaEEEEeeeeIIIIiiiiOOOOOOooooooUUUUuuuuCcNny";
	var charac;
	var indx;
	var key = getKey(evt);
	if(key==13)
		return !nocr;
	if(key==null || key==0 || key==8 || key==9 || key==27)
		return true;
	charac = String.fromCharCode(key);
	indx=tab1.indexOf(charac);
	if (indx != -1)
		charac=tab2.charAt(indx);
	switch (format){
		case 1: charac = charac.toUpperCase(); break;
		case 2: charac = charac.toLowerCase(); break;
	}
	if (pattern.indexOf(charac) != -1){
		if (obj.createTextRange){ // IE
			var selectedRange = document.selection.createRange();//.duplicate();
			selectedRange.text=charac;
			selectedRange.select();
		}else if(typeof obj.selectionStart != 'undefined'){ // Gecko
			var beg=obj.selectionStart;
			var end=obj.selectionEnd;
			obj.value= obj.value.substring(0,beg)+charac+obj.value.substring(end);
			obj.selectionStart=obj.selectionEnd=beg+1;
		}else{ // other: can't filter
			return true;
		}
	}
	return false;
}
function submit(i){
	document.forms[i].submit();
}