var boo_nn4=document.layers;
var boo_nn6=document.getElementById&&!document.all;
var boo_nn=boo_nn4||boo_nn6;
var boo_ie=document.all&&!boo_nn;
var boo_dhtml=document.getElementById||document.all||document.layers;
var int_idtimer;
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération des informations du navigateur							*/
/* nom :		getBrowserInfo														*/
/* entrées :																		*/
/*				- str_key			: string	: clé								*/
/* sortie :																			*/
/*				- var_ret			: variant	: valeur							*/
/*----------------------------------------------------------------------------------*/
function getBrowserInfo(){
	var arr_param=getBrowserInfo.arguments;
	var obj_nav=navigator,obj_regexp,obj_matches;
	var str_key=arr_param[0];
	var var_ret=null;
	switch(str_key.toLowerCase()){
		case 'codename':
			var_ret=obj_nav.appCodeName;
			break;
		case 'minorversion':
			var_ret=obj_nav.appMinorVersion;
			break;
		case 'appname':
			var_ret=obj_nav.appName;
			break;
		case 'appversion':
			var_ret=0;
			obj_regexp=new RegExp("MSIE ([0-9]+((.|,)([0-9]+)){0,})", "gim");
			obj_matches=obj_regexp.exec(obj_nav.userAgent);
			if(obj_matches!=null)if(obj_matches.length>0)var_ret=parseFloat(obj_matches[1]);
			if(var_ret==0){
					obj_regexp=new RegExp("Firefox/([0-9]+((.|,)([0-9]+)){0,})", "gim");
					obj_matches=obj_regexp.exec(obj_nav.userAgent);
					if(obj_matches!=null)if(obj_matches.length>0)var_ret=parseFloat(obj_matches[1]);
			}
			if(var_ret==0){
				try{
					var_ret=parseFloat(obj_nav.appVersion);
				}catch(e){}
			}
			break;
		case 'cookieenabled':
			var_ret=obj_nav.cookieEnabled;
			break;
		case 'cpuclass':
			var_ret=obj_nav.cpuClass;
			break;
		case 'online':
			var_ret=obj_nav.onLine;
			break;
		case 'platform':
			var_ret=obj_nav.platform;
			break;
		case 'useragent':
			var_ret=obj_nav.userAgent;
			break;
		case 'browserlanguage':
			var_ret=obj_nav.browserLanguage;
			break;
		case 'systemlanguage':
			var_ret=obj_nav.systemLanguage;
			break;
		case 'userlanguage':
			var_ret=obj_nav.userLanguage;
			break;
	}
	return var_ret;
}
var boo_ie8=(getBrowserInfo('appversion')>=8?true:false);
/*----------------------------------------------------------------------------------*/
/* Class contrôle														 			*/
/* nom :		control																*/
/* entrées :																		*/
/*				- [str_remotedata]	: string	: url XML des données				*/
/*				- [int_errmode]		: integer	: 1 - err resume global 			*/
/*												  2 - err detail global  			*/
/*												  4 - err resume individuel			*/
/*												  8 - err detail individuel  		*/
/*												  16 - sortir à la 1ere erreur 		*/
/*				- [obj_form]		: object	: form de référence					*/
/* attributs :																		*/
/*				- str_remotedata	: string	: url XML des données				*/
/*				- int_errmode		: string	: gestion des erreurs				*/
/*				- obj_form			: string	: form de référence					*/
/*				- var_data_accept	: variant	: liste des controles acceptées		*/
/*				- var_data_except	: variant	: liste des controles ignorées		*/
/*				- str_errxmlload	: string	: msg d'erreur de chargement xml	*/
/*				- boo_debug			: boolean	: debugage							*/
/* méthodes :																		*/
/*				- run				: Démarrage des tests							*/
/*				- add				: Ajout d'un controle							*/
/*				- del				: Suppression d'un control						*/
/*				- enabled			: Désactivation d'un controle					*/
/*----------------------------------------------------------------------------------*/
function control(){
	var arr_param=control.arguments;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.str_remotedata=(arr_param.length>0?arr_param[0]:'');
	this.int_errmode=(arr_param.length>1?arr_param[1]:1);
	this.obj_form=(arr_param.length>2?arr_param[2]:null);
	this.str_errxmlload='Vos paramètres de sécurité ne permettent pas le chargement du fichier de contrôle.';
	this.var_data_accept=null;
	this.var_data_except=null;
	this.boo_debug=false;
	
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PRIVÉES															*/
	/*------------------------------------------------------------------------------*/
	var arr_verifdata=new Array();
	var global=this;

	/*------------------------------------------------------------------------------*/
	/* METHODES PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.run=verifData;
	this.add=addData;
	this.del=delData;
	this.enabled=enabledData;

	/*------------------------------------------------------------------------------*/
	/* METHODES PRIVÉES																*/
	/*------------------------------------------------------------------------------*/
	/*------------------------------------------------------------------------------*/
	/* Fonction de test d'un champs	ou d'une chaine									*/
	/* nom :		checkData														*/
	/* entrées :																	*/
	/*				- var_data			: variant	: objet ou chaine				*/
	/*				- [boo_isnull]		: boolean	: vide autorisé					*/
	/*				- [boo_istext]		: boolean	: valeur texte					*/
	/*				- [str_accept]		: string	: caractères autorisés			*/
	/*				- [str_reject]		: string	: caractères refusés			*/
	/*				- [str_min]			: string	: minimum						*/
	/*				- [str_max]			: string	: maximum						*/
	/*				- [str_fct]			: string	: fonction						*/
	/*				- [str_fctmask]		: string	: mask des paramètres			*/
	/*				- [var_fctretok]	: variant	: retour succes					*/
	/*				- [boo_ret]			: boolean	: etat si success				*/
	/* sortie :																		*/
	/*				- boo_ret			: boolean	: etat ou false si echec		*/
	/*------------------------------------------------------------------------------*/
	function checkData(){
		var arr_param=checkData.arguments;
		var var_data=arr_param[0],var_fctretok=(arr_param.length>9?arr_param[9]:'');
		var str_accept=(arr_param.length>3?arr_param[3]:''),str_reject=(arr_param.length>4?arr_param[4]:''),str_min=(arr_param.length>5?arr_param[5]:''),str_max=(arr_param.length>6?arr_param[6]:''),str_fct=(arr_param.length>7?arr_param[7]:''),str_fctmask=(arr_param.length>8?arr_param[8]:'');
		var boo_isnull=(arr_param.length>1?arr_param[1]:false),boo_istext=(arr_param.length>2?arr_param[2]:true),boo_ret=(arr_param.length>10?arr_param[10]:true);
		obj_field=(typeof(var_data)=='object'?var_data:getElement(var_data));
		obj_field=(obj_field!=null?obj_field:var_data);
		if(typeof(obj_field)=='object'){
			switch(obj_field.nodeName){
				case 'OPTION':
					if(obj_field.parentElement!=null){
						obj_field.parentElement.style.backgroundColor='#FFFFFF';
						obj_field.parentElement.style.color='#000000';
					}
					str_value=obj_field.value;
					break;
				case 'IFRAME':
					obj_field.contentWindow.document.body.style.backgroundColor='#FFFFFF';
					obj_field.contentWindow.document.body.style.color='#000000';
					str_value=obj_field.contentWindow.document.body.innerHTML;
					break;
				default:
					obj_field.style.backgroundColor='#FFFFFF';
					obj_field.style.color='#000000';
					str_value=obj_field.value;
					break;
			}
		}else str_value=obj_field;
		if((!boo_isnull&&isEmpty(obj_field,false))||((!boo_isnull||str_value!='')&&((!boo_istext&&!(isNumeric(obj_field,true)||isDateTime(obj_field)))||((str_accept!=''||str_reject!='')&&!isGoodText(obj_field,str_accept,str_reject,true))||isOutOfBound(obj_field,str_min,str_max,boo_istext,false)||(str_fct!=''&&eval((str_fctmask!=''?replaceAll(str_fct,str_fctmask,(boo_istext||isDateTime(str_value)?'"'+str_value.replace('"','\\"')+'"':str_value)):str_fct))!=var_fctretok)))){
			if(typeof(obj_field)=='object'){
				switch(obj_field.nodeName){
					case 'OPTION':
						obj_field.parentElement.style.backgroundColor='#FFCC66';
						obj_field.parentElement.style.color='#330066';
						if(obj_field.parentElement.style.display=='block')obj_field.parentElement.focus();
						break;
					case 'IFRAME':
						obj_field.contentWindow.document.body.style.backgroundColor='#FFCC66';
						obj_field.contentWindow.document.body.style.color='#330066';
						if(obj_field.style.display=='block')obj_field.contentWindow.document.body.focus();
						break;
					default:
						obj_field.style.backgroundColor='#FFCC66';
						obj_field.style.color='#330066';
						if(obj_field.style.display=='block')obj_field.focus();
						break;
				}
			}
			boo_ret=false;
		}
		if(global.boo_debug&&!boo_ret)alert('name:'+(typeof(obj_field)=='object'?obj_field.name:obj_field)+'\ntype:'+obj_field.nodeName+'\n'+'test null:'+(!boo_isnull&&isEmpty(obj_field,false)?'ok':'ko')+'\n'+(!boo_isnull||str_value!=''?'test numeric or date:'+(!boo_istext&&!(isNumeric(obj_field,true)||isDateTime(obj_field))?'ko':'ok')+'\n'+'test format:'+((str_accept!=''||str_reject!='')&&!isGoodText(obj_field,str_accept,str_reject,true)?'ko':'ok')+'\n'+'test limit:'+(isOutOfBound(obj_field,str_min,str_max,boo_istext,false)?'ko':'ok'):'')+'\n'+'test function:'+(str_fct!=''&&eval((str_fctmask!=''?replaceAll(str_fct,str_fctmask,(boo_istext||isDateTime(str_value)?'"'+str_value.replace('"','\\"')+'"':str_value)):str_fct))!=var_fctretok?'ko':'ok'));
		return boo_ret;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de vérification de données											*/
	/* nom :		verifData														*/
	/* entrées :																	*/
	/*				- [str_remotedata]	: string	: Url XML des données			*/
	/*				- [int_errmode]		: integer	: 1 - err resume global 		*/
	/*												  2 - err detail global  		*/
	/*												  4 - err resume individuel		*/
	/*												  8 - err detail individuel  	*/
	/*												  16 - sortir à la 1ere erreur 	*/
	/*				- [obj_form]		: object	: reference du form				*/
	/* sortie :																		*/
	/*				- boo_ret			: boolean	: true ou false si echec		*/
	/*------------------------------------------------------------------------------*/
	function verifData(){
		var arr_type,arr_data,arr_param=verifData.arguments;
		var var_fctretok;
		var int_nbrow,int_cnt1,int_cnt2,int_cnt3;
		var obj_name,obj_field;
		var str_min,str_max,str_accept,str_reject,str_type,str_erreur,str_information,str_msg='',str_fct,str_fctmask;
		var boo_enabled,boo_isnull,boo_istext,boo_err=false,boo_ret=true;
		if(arr_param.length>0)global.str_remotedata=arr_param[0];
		if(arr_param.length>1)global.int_errmode=arr_param[1];
		if(arr_param.length>2)global.obj_form=arr_param[2];
		if(global.int_errmode==null)global.int_errmode=1;
		if(global.str_remotedata!='')arr_data=getVerifData(global.str_remotedata);
		else arr_data=arr_verifdata
		if(arr_data!=null){
			for(int_cnt1=0;int_cnt1<arr_data.length;int_cnt1++){
				boo_err=false;
				obj_field=null;
				obj_name=arr_data[int_cnt1][0][0];
				boo_enabled=arr_data[int_cnt1][0][1];
				if(global.var_data_accept!=null){
					boo_enabled=false;
					if(typeof(global.var_data_accept)=='object'){
						for(int_cnt2=0;int_cnt2<global.var_data_accept.length;int_cnt2++){
							if(obj_name==global.var_data_accept[int_cnt2]){
								boo_enabled=true;
								break;
							}
						}
					}else if(obj_name==global.var_data_accept)boo_enabled=true;
				}
				if(global.var_data_except!=null){
					if(typeof(global.var_data_except)=='object'){
						for(int_cnt2=0;int_cnt2<global.var_data_except.length;int_cnt2++){
							if(obj_name==global.var_data_except[int_cnt2]){
								boo_enabled=false;
								break;
							}
						}
					}else if(obj_name==global.var_data_except)boo_enabled=false;
				}
				if(boo_enabled){
					boo_isnull=arr_data[int_cnt1][1][0];
					boo_istext=arr_data[int_cnt1][1][1];
					str_accept=arr_data[int_cnt1][2][0];
					str_reject=arr_data[int_cnt1][2][1];
					str_min=arr_data[int_cnt1][3][0];
					str_max=arr_data[int_cnt1][3][1];
					str_erreur=arr_data[int_cnt1][4][0];
					str_information=arr_data[int_cnt1][4][1];
					str_fct=arr_data[int_cnt1][5][0];
					str_fctmask=arr_data[int_cnt1][5][1];
					var_fctretok=arr_data[int_cnt1][5][2];
					if(global.obj_form!=null)if(typeof(global.obj_form)=='object')if(global.obj_form.nodeName=='FORM')obj_field=eval('global.obj_form.'+obj_name);
					if(obj_field==null)obj_field=getElement(obj_name);
					if(obj_field==null)obj_field=obj_name;
					arr_type=getType(obj_field);
					str_type=arr_type[arr_type.length - 1];
					if(str_type=='select-multiple'||str_type=='select-one'){
						obj_field.style.backgroundColor='#FFFFFF';
						obj_field.style.color='#000000';
						int_nbrow=obj_field.options.length;
						int_cnt3=0;
						for(int_cnt2=0;int_cnt2<int_nbrow;int_cnt2++){
							if(obj_field.options[int_cnt2].selected){
								int_cnt3=int_cnt3+1;
								boo_err=!checkData(obj_field.options[int_cnt2],boo_isnull,boo_istext,str_accept,str_reject,'','',str_fct,str_fctmask,var_fctretok,!boo_err);
								boo_ret=(boo_err?false:boo_ret);
								if(boo_err)break;
							}
						}
						if(!boo_isnull){
							if(str_min!=''&&isNumeric(str_min,true)&&parseInt(str_min)>-1&&int_cnt3<parseInt(str_min))boo_err=true;
							if(str_max!=''&&isNumeric(str_max,true)&&parseInt(str_max)>-1&&int_cnt3>parseInt(str_max))boo_err=true;
							boo_ret=(boo_err?false:boo_ret);
						}
						if(boo_err){
							obj_field.style.backgroundColor='#FFCC66';
							obj_field.style.color='#330066';
							if(((global.int_errmode|1)==global.int_errmode&&str_erreur!='')||((global.int_errmode|2)==global.int_errmode&&str_information!=''))str_msg+=(str_msg!=''?'\n\n':'')+((global.int_errmode|1)==global.int_errmode?str_erreur:'')+((global.int_errmode|2)==global.int_errmode?((global.int_errmode|3)==global.int_errmode&&str_erreur!=''?'\n':'')+str_information:'');
							if(((global.int_errmode|4)==global.int_errmode&&str_erreur!='')||((global.int_errmode|8)==global.int_errmode&&str_information!=''))alert(((global.int_errmode|4)==global.int_errmode?str_erreur:'')+((global.int_errmode|8)==global.int_errmode?((global.int_errmode|12)==global.int_errmode&&str_erreur!=''?'\n':'')+str_information:''));
							if((global.int_errmode|16)==global.int_errmode)break;
							if(obj_field.style.display=='block')obj_field.focus();
						}
					}else{
						if(typeof(obj_field)=='object'){
							int_cnt3=0;
							if(obj_field.length==null){
								if(str_type!='checkbox'||(str_type=='checkbox'&&obj_field.checked)){
									int_cnt3=int_cnt3+1;
									boo_err=!checkData(obj_field,boo_isnull,boo_istext,str_accept,str_reject,(str_type=='checkbox'?'':str_min),(str_type=='checkbox'?'':str_max),str_fct,str_fctmask,var_fctretok,!boo_err);
									boo_ret=(boo_err?false:boo_ret);
								}
							}else{
								for(int_cnt2=0;int_cnt2<obj_field.length;int_cnt2++){
									arr_type=getType(obj_field[int_cnt2]);
									str_type=arr_type[arr_type.length - 1];
									if(str_type!='checkbox'||(str_type=='checkbox'&&obj_field[int_cnt2].checked)){
										int_cnt3=int_cnt3+1;
										boo_err=!checkData(obj_field[int_cnt2],boo_isnull,boo_istext,str_accept,str_reject,(str_type=='checkbox'?'':str_min),(str_type=='checkbox'?'':str_max),str_fct,str_fctmask,var_fctretok,!boo_err);
										boo_ret=(boo_err?false:boo_ret);
										if(boo_err)break;
									}
								}
							}
							if(str_type=='checkbox'&&!boo_isnull){
								if(str_min!=''&&isNumeric(str_min,true)&&int_cnt3<parseInt(str_min))boo_err=true;
								if(str_max!=''&&isNumeric(str_max,true)&&int_cnt3>parseInt(str_max))boo_err=true;
								boo_ret=(boo_err?false:boo_ret);
							}
						}else{
							boo_err=!checkData(obj_field,boo_isnull,boo_istext,str_accept,str_reject,str_min,str_max,str_fct,str_fctmask,var_fctretok,!boo_err);
							boo_ret=(boo_err?false:boo_ret);
						}
						if(boo_err){
							if(((global.int_errmode|1)==global.int_errmode&&str_erreur!='')||((global.int_errmode|2)==global.int_errmode&&str_information!=''))str_msg+=(str_msg!=''?'\n\n':'')+((global.int_errmode|1)==global.int_errmode?str_erreur:'')+((global.int_errmode|2)==global.int_errmode?((global.int_errmode|3)==global.int_errmode&&str_erreur!=''?'\n':'')+str_information:'');
							if(((global.int_errmode|4)==global.int_errmode&&str_erreur!='')||((global.int_errmode|8)==global.int_errmode&&str_information!=''))alert(((global.int_errmode|4)==global.int_errmode?str_erreur:'')+((global.int_errmode|8)==global.int_errmode?((global.int_errmode|12)==global.int_errmode&&str_erreur!=''?'\n':'')+str_information:''));
							if((global.int_errmode|16)==global.int_errmode)break;
						}
					}
				}
			}
		}
		if(str_msg!=''&&!boo_ret)alert(str_msg);
		return boo_ret;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de récupération des données de vérification							*/
	/* nom :		getVerifData													*/
	/* entrées :																	*/
	/*				- [str_remotedata]	: string	: Url XML des données		 	*/
	/* sortie :																		*/
	/*				- arr_ret			: array		: Tableau de données			*/
	/*------------------------------------------------------------------------------*/
	function getVerifData(){
		var arr_ret=new Array(),arr_script,arr_param=getVerifData.arguments;
		var var_fctretok;
		var str_accept,str_reject,str_min,str_max,str_fct,str_fctmask,str_erreur,str_information,str_page,str_script,str_name;
		var obj_nodecontrol,obj_nodepage,obj_nodedata,obj_xmldoc=(boo_ie?new ActiveXObject('Microsoft.XMLDOM'):document.implementation.createDocument('','',null));
		var int_cnt1,int_cnt2,int_cnt3;
		var boo_isnull,boo_istext;
		if(arr_param.length>0)global.str_remotedata=arr_param[0];
		if(global.str_remotedata!=''&&obj_xmldoc!=null){
			obj_xmldoc.async=false;
			try{
				obj_xmldoc.load(global.str_remotedata);
			}catch(e){
				if(global.str_errxmlload!='')alert(global.str_errxmlload);
			}
			obj_nodecontrol=obj_xmldoc.getElementsByTagName('CONTROL');
			str_script=document.location.href;
			arr_script=str_script.split('?');
			str_script=arr_script[0].replace('\\','/');
			arr_script=str_script.split('/');
			str_script=arr_script[(arr_script.length-1)];
			for(int_cnt1=0;int_cnt1<obj_nodecontrol.length;int_cnt1++){
				str_name=obj_nodecontrol[int_cnt1].getAttribute('NAME');
				if(getElement(str_name)!=null){
					str_page='';
					obj_nodepage=obj_nodecontrol[int_cnt1].getElementsByTagName('PAGE');
					for(int_cnt2=0;int_cnt2<obj_nodepage.length;int_cnt2++){
						str_page=obj_nodepage[int_cnt2].getAttribute('NAME');
						boo_isnull=true;
						boo_istext=true;
						str_accept='';
						str_reject='';
						str_min='';
						str_max='';
						str_erreur='';
						str_information='';
						str_fct='';
						str_fctmask='';
						var_fctretok='';
						obj_nodedata=obj_nodepage[int_cnt2].childNodes;
						for(int_cnt3=0;int_cnt3<obj_nodedata.length;int_cnt3++){
							switch(obj_nodedata[int_cnt3].nodeName){
								case 'PROPERTY':
									boo_isnull=(obj_nodedata[int_cnt3].getAttribute('ISNULL')=='true'?true:false);
									boo_istext=(obj_nodedata[int_cnt3].getAttribute('ISTEXT')=='true'?true:false);
									break;
								case 'EXPRESSION':
									str_accept=obj_nodedata[int_cnt3].getAttribute('ACCEPT');
									str_reject=obj_nodedata[int_cnt3].getAttribute('REJECT');
									break;
								case 'LIMIT':
									str_min=obj_nodedata[int_cnt3].getAttribute('MIN');
									str_max=obj_nodedata[int_cnt3].getAttribute('MAX');
									break;
								case 'MESSAGE':
									str_erreur=obj_nodedata[int_cnt3].getAttribute('ERREUR');
									str_information=obj_nodedata[int_cnt3].getAttribute('INFORMATION');
									break;
								case 'FUNCTION':
									str_fct=obj_nodedata[int_cnt3].getAttribute('NAME');
									str_fctmask=obj_nodedata[int_cnt3].getAttribute('MASK');
									var_fctretok=obj_nodedata[int_cnt3].getAttribute('RETOK');
									if(var_fctretok.toLowerCase()=='true'||var_fctretok.toLowerCase()=='false')var_fctretok=(var_fctretok.toLowerCase()=='true'?true:false);
									else if(isNumeric(var_fctretok))var_fctretok=eval(var_fctretok);
									break;
							}
						}
						if((str_page==str_script||str_page=='')&&str_name!='')arr_ret[arr_ret.length]=[[str_name,true],[boo_isnull,boo_istext],[str_accept,str_reject],[str_min,str_max],[str_erreur,str_information],[str_fct,str_fctmask,var_fctretok]];
					}
				}
			}
		}
		if(arr_verifdata!=null)for(int_cnt1=0;int_cnt1<arr_verifdata.length;int_cnt1++)arr_ret[arr_ret.length]=arr_verifdata[int_cnt1];
		return arr_ret;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction d'ajout de données													*/
	/* nom :		addData															*/
	/* entrées :																	*/
	/*				- var_data			: variant	: objet ou chaine				*/
	/*				- [boo_isnull]		: boolean	: vide autorisé					*/
	/*				- [boo_istext]		: boolean	: valeur texte					*/
	/*				- [str_accept]		: string	: caractères autorisés			*/
	/*				- [str_reject]		: string	: caractères refusés			*/
	/*				- [str_min]			: string	: minimum						*/
	/*				- [str_max]			: string	: maximum						*/
	/*				- [str_erreur]		: string	: erreur						*/
	/*				- [str_information]	: string	: information					*/
	/*				- [str_fct]			: string	: fonction						*/
	/*				- [str_fctmask]		: string	: mask des paramètres			*/
	/*				- [var_fctretok]	: string	: retour succes					*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function addData(){
		var arr_param=addData.arguments;
		var var_data=arr_param[0],var_fctretok=(arr_param.length>11?arr_param[11]:'');
		var str_accept=(arr_param.length>3?arr_param[3]:''),str_reject=(arr_param.length>4?arr_param[4]:''),str_min=(arr_param.length>5?arr_param[5]:''),str_max=(arr_param.length>6?arr_param[6]:''),str_erreur=(arr_param.length>7?arr_param[7]:''),str_information=(arr_param.length>8?arr_param[8]:''),str_fct=(arr_param.length>9?arr_param[9]:''),str_fctmask=(arr_param.length>10?arr_param[10]:'');
		var boo_isnull=(arr_param.length>1?arr_param[1]:false),boo_istext=(arr_param.length>2?arr_param[2]:true);
		if(arr_verifdata==null)arr_verifdata=new Array();
		arr_verifdata[arr_verifdata.length]=[[var_data,true],[boo_isnull,boo_istext],[str_accept,str_reject],[str_min,str_max],[str_erreur,str_information],[str_fct,str_fctmask,var_fctretok]];
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de suppression de données											*/
	/* nom :		delData															*/
	/* entrées :																	*/
	/*				- var_data			: variant	: objet ou chaine				*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function delData(){
		var arr_data=new Array(),arr_param=delData.arguments;
		var var_data=arr_param[0];
		var int_cnt;
		if(arr_verifdata!=null)for(int_cnt=0;int_cnt<arr_verifdata.length;int_cnt++)if(var_data!=arr_verifdata[int_cnt][0][0])arr_data[arr_data.length]=arr_verifdata[int_cnt];
		arr_verifdata=arr_data;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction d'activation ou desactivation de données							*/
	/* nom :		enabledData														*/
	/* entrées :																	*/
	/*				- boo_state			: boolean	: etat							*/
	/*				- [var_data]		: variant	: objet ou chaine				*/
	/*				- [var_except]		: variant	: objet ou chaine ignore		*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function enabledData(){
		var arr_param=enabledData.arguments;
		var obj_field;
		var boo_ignore,boo_exist,boo_state=arr_param[0];
		var var_data=(arr_param.length>1?arr_param[1]:null),var_except=(arr_param.length>2?arr_param[2]:null);
		var int_cnt1,int_cnt2,int_cnt3;
		global.var_data_accept=null;
		global.var_data_except=null;
		if(arr_verifdata!=null){
			for(int_cnt1=0;int_cnt1<arr_verifdata.length;int_cnt1++){
				boo_ignore=false;
				obj_field=arr_verifdata[int_cnt1][0][0];
				if(var_except!=null){
					if(typeof(var_except)!='object')var_except=new Array(var_except);
					for(int_cnt2=0;int_cnt2<var_except.length;int_cnt2++){
						if(obj_field==var_except[int_cnt2]){
							boo_ignore=true;
							break;
						}
					}
				}
				if((var_data==null||var_data==obj_field)&&!boo_ignore)arr_verifdata[int_cnt1][0][1]=boo_state;
				if(arr_verifdata[int_cnt1][0][1]){
					if(global.var_data_accept==null)global.var_data_accept=new Array();
					global.var_data_accept[global.var_data_accept.length]=obj_field;
				}else{
					if(global.var_data_except==null)global.var_data_except=new Array();
					global.var_data_except[global.var_data_except.length]=obj_field;
				}
			}
		}
		if(var_data!=null){
			if(typeof(var_data)!='object')var_data=new Array(var_data);
			if(boo_state){
				if(global.var_data_accept!=null){
					if(typeof(global.var_data_accept)!='object')global.var_data_accept=new Array(global.var_data_accept);
					for(int_cnt1=0;int_cnt1<var_data.length;int_cnt1++){
						boo_exist=false;
						for(int_cnt2=0;int_cnt2<global.var_data_accept.length;int_cnt2++){
							if(var_data[int_cnt1]==global.var_data_accept[int_cnt2]){
								boo_exist=true;
								break;
							}
						}
						if(!boo_exist)global.var_data_accept[global.var_data_accept.length]=var_data[int_cnt1];
					}
				}else global.var_data_accept=var_data;
			}else{
				if(global.var_data_except!=null){
					if(typeof(global.var_data_except)!='object')global.var_data_except=new Array(global.var_data_except);
					for(int_cnt1=0;int_cnt1<var_data.length;int_cnt1++){
						boo_exist=false;
						for(int_cnt2=0;int_cnt2<global.var_data_except.length;int_cnt2++){
							if(var_data[int_cnt1]==global.var_data_except[int_cnt2]){
								boo_exist=true;
								break;
							}
						}
						if(!boo_exist)global.var_data_except[global.var_data_except.length]=var_data[int_cnt1];
					}
				}else global.var_data_except=var_data;
			}
		}
		if(var_except!=null){
			if(typeof(var_except)!='object')var_except=new Array(var_except);
			if(!boo_state){
				if(global.var_data_accept!=null){
					if(typeof(global.var_data_accept)!='object')global.var_data_accept=new Array(global.var_data_accept);
					for(int_cnt1=0;int_cnt1<var_except.length;int_cnt1++){
						boo_exist=false;
						for(int_cnt2=0;int_cnt2<global.var_data_accept.length;int_cnt2++){
							if(var_except[int_cnt1]==global.var_data_accept[int_cnt2]){
								boo_exist=true;
								break;
							}
						}
						if(!boo_exist)global.var_data_accept[global.var_data_accept.length]=var_except[int_cnt1];
					}
				}else global.var_data_accept=var_except;
			}else{
				if(global.var_data_except!=null){
					if(typeof(global.var_data_except)!='object')global.var_data_except=new Array(global.var_data_except);
					for(int_cnt1=0;int_cnt1<var_except.length;int_cnt1++){
						boo_exist=false;
						for(int_cnt2=0;int_cnt2<global.var_data_except.length;int_cnt2++){
							if(var_except[int_cnt1]==global.var_data_except[int_cnt2]){
								boo_exist=true;
								break;
							}
						}
						if(!boo_exist)global.var_data_except[global.var_data_except.length]=var_except[int_cnt1];
					}
				}else global.var_data_except=var_except;
			}
		}
	}
}
/*----------------------------------------------------------------------------------*/
/* Class fenêtre														 			*/
/* nom :		windows																*/
/* entrées :																		*/
/*				- [str_url]			: string	: Url de la page					*/
/*				- [int_width]		: integer	: largeur				 			*/
/*				- [int_height]		: integer	: hauteur							*/
/*				- [str_properties]	: string	: propriétés						*/
/*				- [str_name]	    : string	: nom de la fenetre					*/
/*				- [str_blankpage]   : string	: page vide      					*/
/*				- [obj_form]		: object	: reference du form					*/
/*				- [str_method]      : string	: methode (GET|POST)				*/
/* attributs :																		*/
/*				- str_url			: string	: Url de la page					*/
/*				- int_width			: integer	: largeur				 			*/
/*				- int_height		: integer	: hauteur							*/
/*				- str_properties	: string	: propriétés						*/
/*				- str_name			: string	: nom de la fenetre					*/
/*				- str_blankpage     : string	: page vide      					*/
/*				- obj_form			: object	: reference du form					*/
/*				- str_method		: string	: methode (GET|POST)				*/
/*				- boo_debug			: boolean	: debugage							*/
/* methodes :																		*/
/*				- open				: ouverture										*/
/*				- close				: fermeture										*/
/*----------------------------------------------------------------------------------*/
function windows(){
	var arr_param=windows.arguments;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.str_url=(arr_param.length>0?arr_param[0]:'about:blank');
	this.int_width=(arr_param.length>1?arr_param[1]:400);
	this.int_height=(arr_param.length>2?arr_param[2]:300);
	this.str_properties=(arr_param.length>3?arr_param[3]:'');
    this.str_name=(arr_param.length>4?arr_param[4]:'newpopup');
    this.str_blankpage=(arr_param.length>5?arr_param[5]:'about:blank');
    this.obj_form=(arr_param.length>6?arr_param[6]:null);
    this.str_method=(arr_param.length>7?arr_param[7]:'GET');
	this.boo_debug=false;
	this.boo_alwaysontop=true;
	this.obj_wo=null;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PRIVÉES															*/
	/*------------------------------------------------------------------------------*/
	var global=this;
	/*------------------------------------------------------------------------------*/
	/* METHODES PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.open=openWin;
	this.close=closeWin;
	this.focus=focusWin;
	/*------------------------------------------------------------------------------*/
	/* METHODES PRIVÉES																*/
	/*------------------------------------------------------------------------------*/
	/*------------------------------------------------------------------------------*/
	/* Fonction d'ouverture de fenêtre												*/
	/* nom :		openWin															*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*				- obj_wo			: object	: objet fenêtre					*/
	/*------------------------------------------------------------------------------*/
	function openWin(){
	    var arr_param=openWin.arguments;
		if(arr_param.length>0)if(arr_param[0]!=null)global.str_url=(arr_param[0]!=''?arr_param[0]:'about:blank');
		if(arr_param.length>1)if(arr_param[1]!=null)global.int_width=(arr_param[1]!=''?arr_param[1]:400);
		if(arr_param.length>2)if(arr_param[2]!=null)global.int_height=(arr_param[2]!=''?arr_param[2]:300);
		if(arr_param.length>3)if(arr_param[3]!=null)global.str_properties=arr_param[3];
		if(arr_param.length>4)if(arr_param[4]!=null)global.str_name=(arr_param[4]!=''?arr_param[4]:'newpopup');
		if(arr_param.length>5)if(arr_param[5]!=null)global.str_blankpage=(arr_param[5]!=''?arr_param[5]:'about:blank');
		if(arr_param.length>6)if(arr_param[6]!=null)global.obj_form=(arr_param[6]!=''?arr_param[6]:null);
		if(arr_param.length>7)if(arr_param[7]!=null)global.str_method=(arr_param[7]!=''?arr_param[7]:'GET');
	    closeWin();
	    //if(global.boo_alwaysontop&&boo_ie){
	    //    global.obj_wo=window.showModelessDialog((global.obj_form!=null?global.str_blankpage:global.str_url),null,'dialogTop='+(global.int_top!=null?global.int_top:((screen.height-global.int_height)/2))+'px;dialogLeft='+(global.int_left!=null?global.int_left:((screen.width-global.int_width)/2))+';dialogWidth='+global.int_width+'px;300px;dialogHeight='+global.int_height+'px;'+(global.str_properties!=''?','+global.str_properties.replace(',',';'):''));
	    //}else{
	        global.obj_wo=window.open((global.obj_form!=null?global.str_blankpage:global.str_url),global.str_name,'top='+(global.int_top!=null?global.int_top:((screen.height-global.int_height)/2))+',left='+(global.int_left!=null?global.int_left:((screen.width-global.int_width)/2))+',width='+global.int_width+',height='+global.int_height+(global.str_properties!=''?','+global.str_properties:''));
	    //}
	    postData();
	    focusWin();
		return global.obj_wo;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de post dans la fenêtre												*/
	/* nom :		postData														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function postData(){
		var str_action,str_method,str_target,str_viewstate;
		var obj_viewstate=getElement('__VIEWSTATE');
		if(global.obj_form!=null){
			str_action=global.obj_form.action;
			str_method=global.obj_form.method;
			str_target=global.obj_form.target;
			str_viewstate=(obj_viewstate!=null?obj_viewstate.value:'');
			global.obj_form.action=global.str_url;
			global.obj_form.method=global.str_method;
			global.obj_form.target=global.str_name;
			if(obj_viewstate!=null)obj_viewstate.value='';
			global.obj_form.submit();
			global.obj_form.action=str_action;
			global.obj_form.method=str_method;
			global.obj_form.target=str_target;
			if(obj_viewstate!=null)obj_viewstate.value=str_viewstate;
		}
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de fermeture de fenêtre												*/
	/* nom :		closeWin														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function closeWin(){
	    if(global.obj_wo!=null)if(false==global.obj_wo.closed)global.obj_wo.close();
    }
	/*------------------------------------------------------------------------------*/
	/* Fonction de focus de fenêtre												    */
	/* nom :		focusWin														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function focusWin(){
	    if(global.obj_wo!=null){
	        if(global.obj_wo.closed==false){
	            try{
	                global.obj_wo.focus();
	            }catch(e){}
	            try{
	                global.obj_wo.window.onblur=function(){global.obj_wo.focus();};
	            }catch(e){}
            }
        }
        window.onfocus=function(){
            if(global.obj_wo!=null){
                if(global.obj_wo.closed==false){
    	            try{
                        global.obj_wo.focus();
    	            }catch(e){}
                }else window.onfocus=null;
            }else window.onfocus=null;
        };
    }
}
/*----------------------------------------------------------------------------------*/
/* Fonction opération null                                                 			*/
/* nom :		nop     															*/
/* entrées :																		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function nop(){
}
/*----------------------------------------------------------------------------------*/
/* Fonction de recherche et remplace de toutes les occurences dans chaine			*/
/* nom :		replaceAll															*/
/* entrées :																		*/
/*				- str_text			: string	: chaine à traiter					*/
/*				- str_search		: string	: chaine recherchée					*/
/*				- str_replace		: string	: chaine de replacement				*/
/* sortie :																			*/
/*				- str_ret			: string	: chaine traitée					*/
/*----------------------------------------------------------------------------------*/
function replaceAll(){
	var arr_param=replaceAll.arguments;
	var str_text=arr_param[0],str_search=arr_param[1],str_replace=arr_param[2],str_ret=str_text;
	while(str_ret.indexOf(str_search)>=0)str_ret=str_ret.replace(str_search,str_replace);
	return str_ret;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de recherche et remplace de toutes les occurences dans chaine via regexp*/
/* nom :		ereplaceAll															*/
/* entrées :																		*/
/*				- str_text			: string	: chaine à traiter					*/
/*				- str_search		: string	: chaine recherchée					*/
/*				- str_replace		: string	: chaine de replacement				*/
/* sortie :																			*/
/*				- str_ret			: string	: chaine traitée					*/
/*----------------------------------------------------------------------------------*/
function ereplaceAll(){
	var arr_param=ereplaceAll.arguments;
	var str_text=arr_param[0], str_search=arr_param[1], str_replace=(arr_param.length>2?arr_param[2]:''),str_ret=str_text;
	var obj_ereg=new RegExp(str_search, 'gim');
	while(str_ret.match(obj_ereg))str_ret=str_ret.replace(obj_ereg, str_replace);
	return str_ret;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de recherche et remplace dans chaine via regexp							*/
/* nom :		ereplace															*/
/* entrées :																		*/
/*				- str_text			: string	: chaine à traiter					*/
/*				- str_search		: string	: chaine recherchée					*/
/*				- str_replace		: string	: chaine de replacement				*/
/* sortie :																			*/
/*				- str_ret			: string	: chaine traitée					*/
/*----------------------------------------------------------------------------------*/
function ereplace(){
	var arr_param=ereplace.arguments;
	var str_text=arr_param[0], str_search=arr_param[1], str_replace=(arr_param.length>2?arr_param[2]:''),str_ret=str_text;
	var obj_ereg=new RegExp(str_search, 'gim');
	if(str_ret.match(obj_ereg))str_ret=str_ret.replace(obj_ereg, str_replace);
	return str_ret;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de supression des espaces double										*/
/* nom :		ITrim																*/
/* entrées :																		*/
/*				- str_text			: string	: chaine non formatée				*/
/* sortie :																			*/
/*				- str_text			: string	: chaine formattée					*/
/*----------------------------------------------------------------------------------*/
function ITrim(){
	var arr_param=ITrim.arguments;
	var str_text=arr_param[0];
	return (str_text.indexOf('  ')==-1)?str_text:ITrim(str_text.substring(0,str_text.indexOf('  '))+str_text.substring(str_text.indexOf('  ')+1));
}
/*----------------------------------------------------------------------------------*/
/* Fonction de supression des espaces à gauche										*/
/* nom :		LTrim																*/
/* entrées :																		*/
/*				- str_text			: string	: chaine non formatée				*/
/* sortie :																			*/
/*				- str_text			: string	: chaine formattée					*/
/*----------------------------------------------------------------------------------*/
function LTrim(){
	var arr_param=LTrim.arguments;
	var str_text=arr_param[0];
	return (str_text.charAt(0)==' ')?LTrim(str_text.substring(1)):str_text;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de supression des espaces à droite										*/
/* nom :		RTrim																*/
/* entrées :																		*/
/*				- str_text			: string	: chaine non formatée				*/
/* sortie :																			*/
/*				- str_text			: string	: chaine formattée					*/
/*----------------------------------------------------------------------------------*/
function RTrim(){
	var arr_param=RTrim.arguments;
	var str_text=arr_param[0];
	return (str_text.charAt(str_text.length-1)==' ')?RTrim(str_text.substring(0,str_text.length-1)):str_text;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de supression des espaces double,à gauche et à droite					*/
/* nom :		Trim																*/
/* entrées :																		*/
/*				- str_text			: string	: chaine non formatée				*/
/* sortie :																			*/
/*				- str_text			: string	: chaine formattée					*/
/*----------------------------------------------------------------------------------*/
function Trim(){
	var arr_param=Trim.arguments;
	var str_text=arr_param[0];
	return LTrim(RTrim(ITrim(str_text)));
}
/*----------------------------------------------------------------------------------*/
/* Fonction de vérification de l'existance d'un élément	dans un autre				*/
/* nom :		isChild																*/
/* entrées :																		*/
/*				- obj_srcelement	: object	: objet source						*/
/*				- obj_dstelement	: object	: objet destination					*/
/* sortie :																			*/
/*				- obj_ret			: object	: objet ou null si echec			*/
/*----------------------------------------------------------------------------------*/
function isChild(){
	var arr_param=isChild.arguments;
	var obj_srcelement=arr_param[0],obj_dstelement=arr_param[1];
	while(obj_srcelement){
		if(obj_srcelement==obj_dstelement)return true;
		obj_srcelement=obj_srcelement.parentNode;
	}
	return false;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération de la position left d'un élément						*/
/* nom :		posLeft																*/
/* entrées :																		*/
/*				- obj_element		: object	: objet element						*/
/* sortie :																			*/
/*				- int_cleft			: integer	: position							*/
/*----------------------------------------------------------------------------------*/
function posLeft(){
	var arr_param=posLeft.arguments;
	var obj_element=arr_param[0];
	var int_cleft=0;
	if(obj_element.offsetParent){
		while(obj_element.offsetParent){
			int_cleft+=obj_element.offsetLeft
			obj_element=obj_element.offsetParent;
		}
	}else if(obj_element.x)int_cleft+=obj_element.x;
	return int_cleft;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération de la position top d'un élément							*/
/* nom :		posTop																*/
/* entrées :																		*/
/*				- obj_element		: object	: objet element						*/
/* sortie :																			*/
/*				- int_ctop			: integer	: position							*/
/*----------------------------------------------------------------------------------*/
function posTop(){
	var arr_param=posTop.arguments;
	var obj_element=arr_param[0];
	var int_ctop=0;
	if(obj_element.offsetParent){
		while(obj_element.offsetParent){
			int_ctop+=obj_element.offsetTop
			obj_element=obj_element.offsetParent;
		}
	}else if(obj_element.y)int_ctop+=obj_element.y;
	return int_ctop;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération l'évenement												*/
/* nom :		getEvent															*/
/* entrées :																		*/
/*				- [obj_event]		: object	: objet evenement 					*/
/* sortie :																			*/
/*				- obj_event			: object	: évenement ou false si echec		*/
/*----------------------------------------------------------------------------------*/
function getEvent(){
	var arr_param=getEvent.arguments;
	var obj_event=(arr_param.length>0?arr_param[0]:false);
	if(!obj_event)obj_event=window.event;
	return obj_event;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération d'un élément cible de l'évenement						*/
/* nom :		getEventTarget														*/
/* entrées :																		*/
/*				- [obj_event]		: object	: objet evenement 					*/
/* sortie :																			*/
/*				- obj_element		: object	: objet ou null si echec			*/
/*----------------------------------------------------------------------------------*/
function getEventTarget(){
	var arr_param=getEventTarget.arguments;
	var obj_element,obj_event=getEvent((arr_param.length>0?arr_param[0]:false));
	if(obj_event.target)obj_element=obj_event.target;
	else if(obj_event.srcElement)obj_element=obj_event.srcElement;
	if(obj_element.nodeType==3)obj_element=obj_element.parentNode; // defeat Safari bug
	return obj_element;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération d'un élément											*/
/* nom :		getElement															*/
/* entrées :																		*/
/*				- str_name			: string	: nom de l'élément					*/
/*				- [obj_win]			: object	: objet fenêtre 					*/
/* sortie :																			*/
/*				- obj_ret			: object	: objet ou null si echec			*/
/*----------------------------------------------------------------------------------*/
function getElement(){
	var arr_param=getElement.arguments;
	var str_name=arr_param[0];
	var boo_current=(arr_param.length>1?false:true);
	var obj_win=(arr_param.length>1?arr_param[1]:window),obj_ret=null;
	var int_cnt;
	try{
		if(boo_ie&&!boo_ie8)obj_ret=obj_win.document.all(str_name);
		else obj_ret=obj_win.document.getElementById(str_name);
	}catch(e){
		obj_ret=null;
	}
	try{
		if(obj_ret==null)obj_ret=obj_win.document.getElementsByName(str_name);
    	if(obj_ret!=null)if(obj_ret.length!=null)if(obj_ret.length==0)obj_ret=null;
	}catch(e){
		obj_ret=null;
	}
	if(obj_ret==null&&obj_win.frames!=null){
        if(obj_win.frames.length){
			for(int_cnt=0;!obj_ret&&int_cnt<obj_win.frames.length;int_cnt++){
				obj_ret=getElement(str_name,obj_win.frames[int_cnt]);
			    if(obj_ret!=null)if(obj_ret.length!=null)if(obj_ret.length==0)obj_ret=null;
			    if(obj_ret!=null)break;
			}
		}
	}
	try{
		if(obj_ret==null&&boo_current)obj_ret=getElement(str_name,window.top);
        if(obj_ret!=null)if(obj_ret.length!=null)if(obj_ret.length==0)obj_ret=null;
	}catch(e){
		obj_ret=null;
	}
	return obj_ret;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de test d'un champs vide												*/
/* nom :		isEmpty																*/
/* entrées :																		*/
/*				- var_data			: variant	: objet ou chaine					*/
/*				- [boo_err]			: boolean	: etat si success					*/
/* sortie :																			*/
/*				- boo_err			: boolean	: etat ou false si echec			*/
/*----------------------------------------------------------------------------------*/
function isEmpty(){
	var arr_param=isEmpty.arguments;
	var var_data=arr_param[0];
	var str_value;
	var boo_err=(arr_param.length>1?arr_param[1]:false);
	if(typeof(var_data)=='object'){
		if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
			var_data.parentElement.style.backgroundColor='#FFFFFF';
			var_data.parentElement.style.color='#000000';
		}else{
			var_data.style.backgroundColor='#FFFFFF';
			var_data.style.color='#000000';
		}
		str_value=var_data.value;
	}else str_value=var_data;
	if(Trim(str_value)==''){
		if(typeof(var_data)=='object'){
			if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
				var_data.parentElement.style.backgroundColor='#FFCC66';
				var_data.parentElement.style.color='#330066';
				if(var_data.parentElement.style.display=='block')var_data.parentElement.focus();
			}else{
				var_data.style.backgroundColor='#FFCC66';
				var_data.style.color='#330066';
				if(var_data.style.display=='block')var_data.focus();
			}
		}
		boo_err=true;
	}
	return boo_err;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de test d'un champs numéric												*/
/* nom :		isNumeric															*/
/* entrées :																		*/
/*				- var_data			: variant	: objet ou chaine					*/
/*				- [boo_err]			: boolean	: etat si success					*/
/* sortie :																			*/
/*				- boo_err			: boolean	: etat ou false si echec			*/
/*----------------------------------------------------------------------------------*/
function isNumeric(){
	var arr_param=isNumeric.arguments;
	var var_data=arr_param[0];
	var str_value;
	var boo_test=false,boo_err=(arr_param.length>1?arr_param[1]:true);
	if(typeof(var_data)=='object'){
		if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
			var_data.parentElement.style.backgroundColor='#FFFFFF';
			var_data.parentElement.style.color='#000000';
		}else{
			var_data.style.backgroundColor='#FFFFFF';
			var_data.style.color='#000000';
		}
		str_value=var_data.value;
	}else str_value=var_data;
	var obj_ereg=new RegExp(/^([-+]?[,.]?)$|^([-+]?[,.]?\d+)$|^([-+]?\d+[,.]?([\d]?)+)$/);
	try{
        boo_test=(!str_value.match(obj_ereg)?true:false);
	}catch(e){
	    boo_test=false;
	}
	if(boo_test){
		if(typeof(var_data)=='object'){
			if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
				var_data.parentElement.style.backgroundColor='#FFCC66';
				var_data.parentElement.style.color='#330066';
				if(var_data.parentElement.style.display=='block')var_data.parentElement.focus();
			}else{
				var_data.style.backgroundColor='#FFCC66';
				var_data.style.color='#330066';
				if(var_data.style.display=='block')var_data.focus();
			}
		}
		boo_err=false;
	}
	return boo_err;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de test les limite d'un champs (numeric ou nb caractères)				*/
/* nom :		isOutOfBound														*/
/* entrées :																		*/
/*				- var_data			: variant	: objet ou chaine					*/
/*				- str_min			: integer	: minimum							*/
/*				- str_max			: integer	: maximum							*/
/*				- [boo_istext]		: boolean	: false pour nb de car ou true		*/
/*				- [boo_err]			: boolean	: etat si success					*/
/* sortie :																			*/
/*				- boo_err			: boolean	: etat ou false si echec			*/
/*----------------------------------------------------------------------------------*/
function isOutOfBound(){
	var arr_param=isOutOfBound.arguments;
	var obj_refdate,obj_date;
	var var_data=arr_param[0];
	var str_min=arr_param[1],str_max=arr_param[2];
	var int_year,int_month,int_day,int_hour=0,int_minute=0,int_second=0,int_refyear,int_refmonth,int_refday,int_refhour=0,int_refminute=0,int_refsecond=0;
	var boo_istext=(arr_param.length>3?arr_param[3]:true),boo_err=(arr_param.length>4?arr_param[4]:false);
	var str_value='';
	if(typeof(var_data)=='object'){
		if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
			var_data.parentElement.style.backgroundColor='#FFFFFF';
			var_data.parentElement.style.color='#000000';
		}else{
			var_data.style.backgroundColor='#FFFFFF';
			var_data.style.color='#000000';
		}
		str_value=var_data.value;
	}else str_value=var_data;
	if(boo_istext){
		if(str_min!='')if(str_value.length<(str_min*1))boo_err=true;
		if(str_max!='')if(str_value.length>(str_max*1))boo_err=true;
	}else{
		if(str_min!=''){
			if(isNumeric(str_min)&&(str_value*1)<(str_min*1))boo_err=true;
			else{
				obj_refdate=getDateTime(str_min);
				obj_date=getDateTime(str_value);
				if(obj_refdate!=null&&obj_date!=null)if(obj_date.getTime()<obj_refdate.getTime())boo_err=true;
			}
		}
		if(str_max!=''){
			if(isNumeric(str_max)&&(str_value*1)>(str_max*1))boo_err=true;
			else{
				obj_refdate=getDateTime(str_max);
				obj_date=getDateTime(str_value);
				if(obj_refdate!=null&&obj_date!=null)if(obj_date.getTime()>obj_refdate.getTime())boo_err=true;
			}
		}
	}
	if(boo_err){
		if(typeof(var_data)=='object'){
			if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
				var_data.parentElement.style.backgroundColor='#FFCC66';
				var_data.parentElement.style.color='#330066';
				if(var_data.parentElement.style.display=='block')var_data.parentElement.focus();
			}else{
				var_data.style.backgroundColor='#FFCC66';
				var_data.style.color='#330066';
				if(var_data.style.display=='block')var_data.focus();
			}
		}
	}
	return boo_err;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de test des caractères d'un champs										*/
/* nom :		isGoodText															*/
/* entrées :																		*/
/*				- var_data			: variant	: objet ou chaine					*/
/*				- [str_accept]		: string	: expression autorisée				*/
/*				- [str_reject]		: string	: expression refusée				*/
/*				- [boo_err]			: boolean	: etat si success					*/
/* sortie :																			*/
/*				- boo_err			: boolean	: etat ou false si echec			*/
/*----------------------------------------------------------------------------------*/
function isGoodText(){
	var arr_param=isGoodText.arguments;
	var var_data=arr_param[0];
	var str_value,str_accept=(arr_param.length>1?arr_param[1]:''),str_reject=(arr_param.length>2?arr_param[2]:'');
	var boo_err=(arr_param.length>3?arr_param[3]:true);
	if(typeof(arr_param[0])=='object'){
		switch(var_data.nodeName){
			case 'OPTION':
				if(var_data.parentElement!=null){
					var_data.parentElement.style.backgroundColor='#FFFFFF';
					var_data.parentElement.style.color='#675C53';
				}
				str_value=var_data.value;
				break;
			case 'IFRAME':
				var_data.contentWindow.document.body.style.backgroundColor='#FFFFFF';
				var_data.contentWindow.document.body.style.color='#675C53';
				str_value=var_data.contentWindow.document.body.innerHTML;
				alert('isGoodText:'+str_value);
				break;
			default:
				var_data.style.backgroundColor='#FFFFFF';
				var_data.style.color='#675C53';
				str_value=var_data.value;
				break;
		}
	}
	var str_value=(typeof(var_data)=='object'?var_data.value:var_data);
	var boo_ret=arr_param[3];
	if(str_accept!=''){
		var obj_ereg=new RegExp(str_accept,'gim');
		if(!str_value.match(obj_ereg))boo_ret=false;
	}
	if(str_reject!=''){
		var obj_ereg=new RegExp(str_reject,'gim');
		if(str_value.match(obj_ereg))boo_ret=false;
	}
	if(!boo_ret&&typeof(var_data)=='object'){
		switch(var_data.nodeName){
			case 'OPTION':
				var_data.parentElement.style.backgroundColor='#BED600';
				var_data.parentElement.style.color='#675C53';
				if(var_data.parentElement.style.display=='block')var_data.parentElement.focus();
				break;
			case 'IFRAME':
				var_data.contentWindow.document.body.style.backgroundColor='#BED600';
				var_data.contentWindow.document.body.style.color='#675C53';
				if(var_data.style.display=='block')var_data.contentWindow.document.body.focus();
				break;
			default:
				var_data.style.backgroundColor='#BED600';
				var_data.style.color='#675C53';
				if(var_data.style.display=='block')var_data.focus();
				break;
		}
	}
	return boo_ret;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération du types de données										*/
/* nom :		getType																*/
/* entrées :																		*/
/*				- var_data			: variant	: objet ou chaine					*/
/* sortie :																			*/
/*				- arr_ret			: array		: tableau de type d'objets			*/
/*----------------------------------------------------------------------------------*/
function getType(){
	var arr_ret=new Array(),arr_param=getType.arguments;
	var var_data=arr_param[0];
	if(arr_param.length>0){
		if(var_data!=null){
			if(typeof(var_data)=='object'){
				if(var_data.length==null||var_data.type!=null)arr_ret[arr_ret.length]=(var_data.type!=null?var_data.type:'inconnu');
				else{
					var boo_exist=false;
					var int_cnt1=0,int_cnt2=0;
					var var_type='';
					for(int_cnt1=0;int_cnt1<var_data.length;int_cnt1++){
						var_type=var_data[int_cnt1];
						if(var_type==null)arr_ret.concat(getType(var_type));
						else{
							boo_exist=false;
							for(int_cnt2=0;int_cnt2<arr_ret.length;int_cnt2++){
								if(arr_ret[int_cnt2]==var_type.type){
									boo_exist=true;
									break;
								}
							}
							if(!boo_exist)arr_ret[arr_ret.length]=var_type.type;
						}
					}
				}
			}else arr_ret[arr_ret.length]=(typeof(var_data)!=null?typeof(var_data):'inconnu');
		}else arr_ret[arr_ret.length]='paramètre manquant';
	}else arr_ret[arr_ret.length]='paramètre manquant';
	return arr_ret;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de selection de tout les objets selectionnables							*/
/* nom :		selectAll															*/
/* entrées :																		*/
/*				- var_field			: variante	: objet ou chaine					*/
/*				- [boo_select]		: boolean	: true si selectionner				*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function selectAll(){
	var arr_type,arr_param=selectAll.arguments;
	var var_field=arr_param[0];
	var boo_select=(arr_param.length>1?arr_param[1]:true);
	var str_type;
	var int_cnt1,int_cnt2;
	var obj_field=(typeof(var_field)=='object'?var_field:getElement(var_field));
	if(obj_field!=null){
		if(obj_field.length>0){
			for(int_cnt1=0;int_cnt1<obj_field.length;int_cnt1++){
				arr_type=getType(obj_field[int_cnt1]);
				str_type=arr_type[arr_type.length-1];
				if(str_type=='select-multiple'||str_type=='select-one'){
					if(obj_field[int_cnt1].options.length!=null)for(int_cnt2=0;int_cnt2<obj_field[int_cnt1].options.length;int_cnt2++)obj_field[int_cnt1].options[int_cnt2].selected=boo_select;
				}else if(str_type=='checkbox')obj_field[int_cnt1].checked=boo_select;
			}
		}else{
			arr_type=getType(obj_field);
			str_type=arr_type[arr_type.length-1];
			if(str_type=='select-multiple'||str_type=='select-one'){
				if(obj_field.options.length!=null)for(int_cnt1=0;int_cnt1<obj_field.options.length;int_cnt1++)obj_field.options[int_cnt1].selected=boo_select;
			}else if(str_type=='checkbox')obj_field.checked=boo_select;
		}
	}
}
/*----------------------------------------------------------------------------------*/
/* Fonction de mise à vide de tout les champs d'un formulaire						*/
/* nom :		clearField															*/
/* entrées :																		*/
/*				- obj_frm			: object	: objet formulaire					*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function clearField(){
	var arr_type,arr_param=clearField.arguments;
	var str_type;
	var int_cnt;
	var obj_field,obj_fields,obj_frm=(arr_param.length>0?arr_param[0]:null);
	if(document.getElementsByTagName&&obj_frm!=null){
		obj_fields=obj_frm.getElementsByTagName('INPUT');
		for(int_cnt=0;obj_field=obj_fields.item(int_cnt++);){
			arr_type=getType(obj_field);
			str_type=arr_type[arr_type.length - 1];
			if(str_type=='text'||str_type=='textarea'||str_type=='checkbox')obj_field.value='';
		}
		obj_fields=obj_frm.getElementsByTagName('SELECT');
		for(int_cnt=0;obj_field=obj_fields.item(int_cnt++);)obj_field.options.selectedIndex=0;
	}
}
/*----------------------------------------------------------------------------------*/
/* Fonction d'affichage/masque d'objet												*/
/* nom :		showHide															*/
/* entrées :																		*/
/*				- var_object		: variante	: objet ou nom						*/
/*				- [boo_visible]		: boolean	: état								*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function showHide(){
	var arr_param=showHide.arguments;
	var var_object=arr_param[0];
	var boo_visible=(arr_param.length>1?arr_param[1]:null);
	if(typeof(var_object)!='object')var_object=getElement(var_object);
	if(var_object!=null)var_object.style.display=(boo_visible!=null?(boo_visible?'block':'none'):(var_object.style.display=='none'?'block':'none'));
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération d'une valeur numérique d'un objet ou d'une chaine		*/
/* nom :		getNumeric															*/
/* entrées :																		*/
/*				- var_data			: object	: objet ou chaine					*/
/* sortie :																			*/
/*				- dec_ret			: decimal	: valeur numerique					*/
/*----------------------------------------------------------------------------------*/
function getNumeric(){
	var arr_param=getNumeric.arguments;
	var var_data=arr_param[0];
	var obj_range,obj_field=(typeof(var_data)=='object'?var_data:null);
	var dec_ret=0;
	var int_curpos=0;
	var str_value=(obj_field!=null?obj_field.value:var_data),str_firstcar,str_nextcar,str_lastcar;
	if(str_value.indexOf(',')>0){
		str_value=str_value.replace(',','.');
		if(obj_field!=null)obj_field.value=parseFloat(str_value);
	}
	str_firstcar=str_value.substring(0,1);
	str_nextcar=(str_value.length>1?str_value.substring(1,2):'');
	str_lastcar=str_value.substring((str_value.length-1),str_value.length);
	if(str_firstcar=='.'||str_lastcar=='+'||str_lastcar=='-'||str_lastcar=='.'){
		str_value=(str_firstcar=='.'?'0':'')+str_value;
		int_curpos=str_value.length;
		str_value+=(str_lastcar=='+'||str_lastcar=='-'||str_lastcar=='.'?'0':'');
		int_curpos-=str_value.length;
		if(obj_field!=null)obj_field.value=str_value;
	}
	if(str_firstcar=='0'&&str_nextcar!='.'&&str_nextcar!=''&&obj_field!=null)obj_field.value=parseFloat(str_value);
	if(isEmpty(str_value,false)||!isNumeric(str_value,true)){
		str_value=dec_ret;
		if(obj_field!=null)obj_field.value=parseFloat(str_value);
	}
	if(int_curpos!=0&&obj_field!=null){
		obj_field.focus();
		if(boo_ie){
			obj_range=document.selection.createRange();
			obj_range.move('character',int_curpos);
			obj_range.select();
		}else{
			obj_field.selectionStart=(str_value.length+int_curpos);
			obj_field.selectionEnd=(str_value.length+int_curpos);
		}
	}
	dec_ret=str_value;
	return parseFloat(dec_ret);
}
/*----------------------------------------------------------------------------------*/
/* Fonction de surlignage d'une ligne ou d'une cellule								*/
/* nom :		surligne															*/
/* entrées :																		*/
/*				- obj_current		: object	: objet courant						*/
/*				- str_state			: string	: etat (over|out|click)				*/
/*				- str_overcolor		: string	: couleur over						*/
/*				- str_bgcolor		: string	: couleur background				*/
/*				- arr_bgcolor		: array		: couleur background par cellule	*/
/* sortie :																			*/
/*				-					: boolean	: true								*/
/*----------------------------------------------------------------------------------*/
var obj_clickobject=null;
var arr_clickbgcolor=Array();
var arr_outbgcolor=Array();
function surligne(){
	var arr_rgb,arr_param=surligne.arguments,arr_bgcolor=(arr_param.length>4?arr_param[4]:null);
	var obj_current=arr_param[0],obj_cellule=null;
	var str_state=arr_param[1],str_overcolor=(arr_param[2]==null?'#FBD84F':arr_param[2]),str_bgcolor=(arr_param[3]==null?'#FFFFFF':arr_param[3]),str_currentcolor=null,str_newcolor=null,str_rgb,str_hex='0123456789ABCDEF';
    var boo_dom=null;
	var int_cnt1,int_cnt2,int_rgb;
    if(typeof(obj_current.style)=='undefined')return false;
	if(obj_current.tagName.toLowerCase()=='tr'){
		if(str_state=='click'&&obj_clickobject!=obj_current){
			if(obj_clickobject!=null){
				obj_cellule=(typeof(document.getElementsByTagName)!='undefined'?obj_clickobject.getElementsByTagName('td'):(typeof(obj_clickobject.cells)!='undefined'?obj_clickobject.cells:false));
				boo_dom=(typeof(window.opera)=='undefined'&&typeof(obj_cellule[0].getAttribute)!='undefined');
				for(int_cnt1=0;int_cnt1<obj_cellule.length;int_cnt1++){
					if(boo_dom)obj_cellule[int_cnt1].setAttribute('bgcolor',arr_clickbgcolor[int_cnt1],0);
					else obj_cellule[int_cnt1].style.backgroundColor=arr_clickbgcolor[int_cnt1];
				}
			}
			obj_clickobject=obj_current;
		}
		obj_cellule=(typeof(document.getElementsByTagName)!='undefined'?obj_current.getElementsByTagName('td'):(typeof(obj_current.cells)!='undefined'?obj_current.cells:false));
		boo_dom=(typeof(window.opera)=='undefined'&&typeof(obj_cellule[0].getAttribute)!='undefined');
		for(var int_cnt1=0;int_cnt1<obj_cellule.length;int_cnt1++){
			str_currentcolor=(boo_dom?obj_cellule[int_cnt1].getAttribute('bgcolor'):obj_cellule[0].style.backgroundColor);
			if(str_currentcolor.indexOf('rgb')>=0){
				str_rgb=str_currentcolor.slice(str_currentcolor.indexOf('(')+1,str_currentcolor.indexOf(')'));
				arr_rgb=str_rgb.split(',');
				str_currentcolor='#';
				for(int_cnt2=0;int_cnt2<3;int_cnt2++){
					int_rgb=arr_rgb[int_cnt2].valueOf();
					str_currentcolor+=str_hex.charAt(int_rgb/16)+str_hex.charAt(int_rgb%16);
				}
			}
			if(str_currentcolor==''||str_state=='over'&&str_overcolor!=''){
				str_newcolor=str_overcolor;
				arr_outbgcolor[int_cnt1]=str_currentcolor;
			}else if(str_state=='click'&&str_overcolor!=''){
				str_newcolor=str_overcolor;
				arr_clickbgcolor[int_cnt1]=(arr_bgcolor!=null?(int_cnt1<arr_bgcolor.length?(arr_bgcolor[int_cnt1]!=''?arr_bgcolor[int_cnt1]:str_bgcolor):str_bgcolor):str_bgcolor);
				arr_outbgcolor[int_cnt1]=str_currentcolor;
			}else if(str_currentcolor.toLowerCase()==str_overcolor.toLowerCase()&&str_state=='out')str_newcolor=arr_outbgcolor[int_cnt1];
			if(str_newcolor){
				if(boo_dom)obj_cellule[int_cnt1].setAttribute('bgcolor',str_newcolor,0);
				else obj_cellule[int_cnt1].style.backgroundColor=str_newcolor;
			}
		}
	}else if(obj_current.tagName.toLowerCase()=='td'){
		obj_cellule=obj_current;
		boo_dom=(typeof(window.opera)=='undefined'&&typeof(obj_cellule.getAttribute)!='undefined');
		if(str_state=='click'&&obj_clickobject!=obj_current){
			if(obj_clickobject!=null){
				if(boo_dom)obj_cellule.setAttribute('bgcolor',str_bgcolor,0);
				else obj_cellule.style.backgroundColor=str_bgcolor;
			}
			obj_clickobject=obj_current;
		}
		obj_clickobject=obj_current;
		str_currentcolor=(boo_dom?obj_cellule.getAttribute('bgcolor'):obj_cellule.style.backgroundColor);
		if(str_currentcolor.indexOf('rgb')>=0){
			str_rgb=str_currentcolor.slice(str_currentcolor.indexOf('(')+1,str_currentcolor.indexOf(')'));
			arr_rgb=str_rgb.split(',');
			str_currentcolor='#';
			for(int_cnt1=0;int_cnt1<3;int_cnt1++){
				int_rgb=arr_rgb[int_cnt1].valueOf();
				str_currentcolor+=str_hex.charAt(int_rgb/16)+str_hex.charAt(int_rgb%16);
			}
		}
		if(str_currentcolor==''||str_state=='over'&&str_overcolor!=''){
			str_newcolor=str_overcolor;
			arr_outbgcolor[0]=str_currentcolor;
		}else if(str_state=='click'&&str_overcolor!=''){
			str_newcolor=str_overcolor;
			arr_clickbgcolor[0]=str_bgcolor;
			arr_outbgcolor[0]=str_currentcolor;
		}else if(str_currentcolor.toLowerCase()==str_overcolor.toLowerCase()&&str_state=='out')str_newcolor=arr_outbgcolor[0];
		if(str_newcolor){
			if(boo_dom)obj_cellule.setAttribute('bgcolor',str_newcolor,0);
			else obj_cellule.style.backgroundColor=str_newcolor;
		}
	}
    return true;
}
/*----------------------------------------------------------------------------------*/
/* Fonction d'insertion d'une chaine dans un objet  								*/
/* nom :		insertString														*/
/* entrées :																		*/
/*				- var_src   		: variant	: objet ou chaine source			*/
/*				- var_dst			: variant	: objet ou chaine destination		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function insertString(){
    var arr_param=insertString.arguments;
    var var_src=arr_param[0],var_dst=arr_param[1];
    var obj_selection,obj_range,obj_docfrag,obj_lastnode;
    var boo_window=false;
    var int_cnt;
    if(typeof(var_src)=='object')var_src=var_src.value;
    if(typeof(var_dst)=='string')var_dst=getElement(var_dst);
    if(var_dst.length>1){
        for(int_cnt=0;int_cnt<var_dst.length;int_cnt++){
            if(var_dst[int_cnt].nodeName=="IFRAME")boo_window=true;
            if(var_dst[int_cnt].nodeName=="TEXTAREA"){
                var_dst=var_dst[int_cnt];
                boo_window=false;
                break;
            }
        }
    }
    if(var_dst!=null){
	    try{
	        var_dst.focus();
	    }catch(e){}
        if(document.selection){
		    obj_selection=document.selection.createRange();
            if(boo_window)obj_selection.pasteHTML(var_src);
            else obj_selection.text=var_src;
		}else{
            if(boo_window){
                if(boo_ie){
        		    obj_selection=document.selection.createRange();
                    obj_selection.text=var_src;
                }else{
                    obj_selection=var_dst.getSelection();
                    obj_range=obj_selection.getRangeAt(0);
                    obj_docfrag=obj_range.createContextualFragment(var_src);
                    obj_range.collapse(true);
                    obj_lastnode=obj_docfrag.childNodes[obj_docfrag.childNodes.length-1];
                    obj_range.insertNode(obj_docfrag);
                    try{
                        var_dst.document.designMode="on";
                    }catch(e){}
                    if(obj_lastnode.nodeType==Node.TEXT_NODE){
                        obj_range=var_dst.document.createRange();
                        obj_range.setStart(obj_lastnode,obj_lastnode.nodeValue.length);
                        obj_range.setEnd(obj_lastnode, obj_lastnode.nodeValue.length);
                        obj_selection=var_dst.getSelection();
                        obj_selection.removeAllRanges();
                        obj_selection.addRange(obj_range);
                    }
                }
            }else{
                if(var_dst.selectionStart){
		            var int_start=var_dst.selectionStart;
		            var int_end=var_dst.selectionEnd;
		            var_dst.value=var_dst.value.substring(0,int_start)+var_src+var_dst.value.substring(int_end,var_dst.value.length);
                }else var_dst.value+=var_src;
            }
    	}
	}
}
/*----------------------------------------------------------------------------------*/
/* Fonction d'affectation d'une chaine dans un objet  								*/
/* nom :		setElementData														*/
/* entrées :																		*/
/*				- str_elementname	: string	: nom de l'élément          		*/
/*				- str_text			: string	: valeur objet ou chaine    		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function setElementData(){
    var arr_param=setElementData.arguments;
    var str_elementname=arr_param[0],str_text=arr_param[1];
	var obj_element=getElement(str_elementname);
	if(obj_element!=null){
	    switch(obj_element.tagName.toLowerCase()){
	        case "input":
	        case "textarea":
	            obj_element.value=str_text;
	            break;
	        default:
        	    obj_element.innerHTML=str_text;
	            break;
	    }
	}	
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération d'un objet                  							*/
/* nom :		getObject		        											*/
/* entrées :																		*/
/*				- str_elementname  	: string	: nom de l'objet            		*/
/*				- str_type			: string	: type d'élément               		*/
/*				- [boo_create]		: boolean	: créer si non existant        		*/
/*				- [boo_display]		: boolean	: afficher                     		*/
/* sortie :																			*/
/*				- obj_element		: object	: objet                         	*/
/*----------------------------------------------------------------------------------*/
function getObject(){
    var arr_param=getObject.arguments;
    var str_elementname=arr_param[0];
    var str_type=arr_param[1];
    var boo_create=(arr_param.length>2?arr_param[2]:true);
    var boo_display=(arr_param.length>3?arr_param[3]:false);
    var obj_element=getElement(str_elementname);
    if(obj_element==null&&boo_create){
        obj_element=document.createElement(str_type);
        obj_element.id=str_elementname;
        obj_element.name=str_elementname;
        obj_element.style.position="absolute";
        obj_element.style.left=0;
        obj_element.style.top=0;
        obj_element.style.width=0;
        obj_element.style.height=0;
        if(!boo_display) obj_element.style.display="none";
        try{
            document.body.appendChild(obj_element);
        }catch(e){}
    }
    return obj_element;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération de la position X d'un objet                  			*/
/* nom :		findPosX		        											*/
/* entrées :																		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function findPosX(){
	var arr_param=findPosX.arguments;
	var int_curleft=0;
	if (arr_param[0].offsetParent){
		while(arr_param[0].offsetParent){
			int_curleft+=arr_param[0].offsetLeft
			arr_param[0]=arr_param[0].offsetParent;
		}
	}else if(arr_param[0].x)int_curleft+=arr_param[0].x;
	return int_curleft;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération de la position Y d'un objet                  			*/
/* nom :		findPosY		        											*/
/* entrées :																		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function findPosY(){
	var int_curtop=0
	var arr_param=findPosY.arguments;
	if (arr_param[0].offsetParent){
		while (arr_param[0].offsetParent){
			int_curtop+=arr_param[0].offsetTop;
			arr_param[0]=arr_param[0].offsetParent;
		}
	}else if(arr_param[0].y)int_curtop+=arr_param[0].y;
	return int_curtop;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération de l'objet Date d'un objet ou d'une chaine  			*/
/* nom :		getDateTime		        											*/
/* entrées :																		*/
/*				- var_data        	: variante	: objet ou nom de l'objet ou chaine */
/* sortie :																			*/
/*				- obj_date   		: object	: Objet date ou null               	*/
/*----------------------------------------------------------------------------------*/
function getDateTime(){
    var arr_param=getDateTime.arguments;
    var var_data=arr_param[0];
    var str_value='';
    var int_year,int_month,int_day,int_hour=0,int_minute=0,int_second=0;
    var obj_date=null;
    if(typeof(var_data)=='object')str_value=var_data.value;
    else str_value=var_data;
    var obj_ereg=new RegExp("^(\\d{1,4})([/-]{1})(\\d{1,2})([/-]{1})(\\d{1,4})([ ]{1}(\\d{1,2})[:]{1}(\\d{1,2})([:]{1}(\\d{1,2}))?)?$", "gim");
    var obj_match=obj_ereg.exec(str_value);
    if(obj_match!=null){
        if(!(obj_match[1].length>2&&obj_match[5].length>2)){
            int_day=(obj_match[5].length>2?obj_match[1]:obj_match[5]);
            if(!isNumeric(int_day))return false;
            int_day=(int_day*1);
            int_day=(isNaN(int_day)?0:int_day);
            int_month=obj_match[3];
            if(!isNumeric(int_month))return false;
            int_month=(int_month*1);
            int_month=(isNaN(int_month)?0:int_month);
            int_year=(obj_match[1].length>2?obj_match[1]:obj_match[5]);
            if(!isNumeric(int_year))return false;
            int_year=(int_year*1);
            int_year=(isNaN(int_year)?0:int_year);
            int_hour=(obj_match.length>7?obj_match[7]:0);
            if(!isNumeric(int_hour))return false;
            int_hour=(int_hour*1);
            int_hour=(isNaN(int_hour)?0:int_hour);
            int_minute=(obj_match.length>8?obj_match[8]:0);
            if(!isNumeric(int_minute))return false;
            int_minute=(int_minute*1);
            int_minute=(isNaN(int_minute)?0:int_minute);
            int_second=(obj_match.length>10?obj_match[10]:0);
            if(!isNumeric(int_second))return false;
            int_second=(int_second*1);
            int_second=(isNaN(int_second)?0:int_second);
            obj_date=new Date(int_year, (int_month-1), int_day, int_hour, int_minute, int_second);
            if(parseInt(obj_date.getDate())+'/'+(parseInt(obj_date.getMonth())+1)+'/'+parseInt(obj_date.getFullYear())+' '+parseInt(obj_date.getHours())+':'+parseInt(obj_date.getMinutes())+':'+parseInt(obj_date.getSeconds())!=int_day+'/'+int_month+'/'+int_year+' '+int_hour+':'+int_minute+':'+int_second) obj_date=null;
        }
    }
    return obj_date;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de vérification du format DateTime d'un objet ou d'une chaine  			*/
/* nom :		isDateTime		        											*/
/* entrées :																		*/
/*				- var_data        	: variante	: objet ou nom de l'objet ou chaine */
/* sortie :																			*/
/*				- boo_err   		: boolean	: Erreur ou non                    	*/
/*----------------------------------------------------------------------------------*/
function isDateTime(){
    var arr_param=isDateTime.arguments;
    var var_data=arr_param[0];
    var str_value;
	if(typeof(var_data)=='object'){
		if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
			var_data.parentElement.style.backgroundColor='#FFFFFF';
			var_data.parentElement.style.color='#000000';
		}else{
			var_data.style.backgroundColor='#FFFFFF';
			var_data.style.color='#000000';
		}
		str_value=var_data.value;
	}else str_value=var_data;
    var obj_date=getDateTime(str_value);
    var boo_err=(obj_date==null?true:false);
    if(boo_err&&typeof(var_data)=='object'){
		try{
			if(typeof(var_data)=='object'){
				if(var_data.tagName=='OPTION'&&var_data.parentElement!=null){
					var_data.parentElement.style.backgroundColor='#FFCC66';
					var_data.parentElement.style.color='#330066';
					if(var_data.parentElement.style.display=='block')var_data.parentElement.focus();
				}else{
					var_data.style.backgroundColor='#FFCC66';
					var_data.style.color='#330066';
					if(var_data.style.display=='block')var_data.focus();
				}
			}
        }catch(e){}
	}
    return !boo_err;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de comparaison entre 2 Dates                                  			*/
/* nom :		DateDiff		        											*/
/* entrées :																		*/
/*				- var_datetest      : variante	: reference date teste              */
/*				- var_dateref       : variante	: reference date reference          */
/*				- [str_unit]		: string	: year|month|day|hour|minute|second */
/* sortie :																			*/
/*				- int_diff   		: integer	: difference                    	*/
/*----------------------------------------------------------------------------------*/
function DateDiff(){
    var arr_param=DateDiff.arguments;
    var var_datetest=arr_param[0],var_dateref=arr_param[1];
    var str_value,str_unit=(arr_param.length>2?arr_param[2]:'day');
    var int_diff=0,int_timestamp,int_year_ref,int_month_ref,int_day_ref,int_hour_ref=0,int_minute_ref=0,int_second_ref=0,int_year_test,int_month_test,int_day_test,int_hour_test=0,int_minute_test=0,int_second_test=0;
    var obj_datetest=getDateTime(var_datetest),obj_dateref=getDateTime(var_dateref);
    if(obj_datetest!=null&&obj_dateref!=null){
		int_timestamp=(obj_datetest.getTime()-obj_dateref.getTime());
        switch(str_unit){
            case 'second':
                int_diff=(int_timestamp/1000);
                break;
            case 'minute':
                int_diff=(int_timestamp/60000);
                break;
            case 'hour':
                int_diff=(int_timestamp/3600000);
                break;
            case 'day':
                int_diff=(int_timestamp/86400000);
                break;
            case 'month':
                int_diff=(int_timestamp/2592000000);
                break;
            case 'year':
                int_diff=(int_timestamp/31536000000);
                break;
        }
    }
    return int_diff;
}
/*----------------------------------------------------------------------------------*/
/* Fonction de récupération de la date server                             			*/
/* nom :		getServerDate	        											*/
/* entrées :																		*/
/*			    - str_uid	        : string	: uid de la template                */
/*              - [str_root]        : string    : répertoire racine                 */
/*				- [str_div]     	: string	: nom de la div                     */
/*				- [str_format]     	: string	: format de la date                 */
/*				- [int_interval]	: integer	: interval                     		*/
/*				- [str_interval]	: string	: type (DAY|MONTH|YEAR|HOUR|MINUTE) */
/*              - [int_refreshrate] : integer	: temps de raffraichissement   		*/
/*              - [str_cmdajaxurl]  : string    : url de commande via ajax          */
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function getServerDate(){
	var arr_datetime,arr_date,arr_time,arr_param=getServerDate.arguments;
	var str_uid=(arr_param.length>0?arr_param[0]:''),str_root=(arr_param.length>1?arr_param[1]:'/'),str_div=(arr_param.length>2?arr_param[2]:''),str_format=(arr_param.length>3?arr_param[3]:''),str_interval=(arr_param.length>5?arr_param[5]:''),str_cmdajaxurl=(arr_param.length>7?arr_param[7]:str_root+'generator/ajax_cmd.aspx'),str_functionret='';
	var int_interval=(arr_param.length>4?arr_param[4]:0),int_refreshrate=(arr_param.length>6?arr_param[6]:60),int_day,int_month,int_year,int_hour,int_minute,int_second;
	var obj_url=new url();
	if(str_uid!=''&&str_uid!=''){
        arr_param=[['DATE',[['FORMAT', str_format],['INTERVAL', int_interval],['INTERVAL_TYPE', str_interval]],str_uid]];
        str_functionret='getServerDate("'+str_uid+'","'+str_root+'","'+str_div+'","'+str_format+'",'+int_interval+',"'+str_interval+'",'+int_refreshrate+',"'+str_cmdajaxurl+'")';
        obj_url.getContent('getElement("'+str_div+'").innerHTML',str_cmdajaxurl,true,obj_url.setXML(arr_param),'','','','',true,0,'');
        try{
            window.clearTimeout(int_idtimer);
        }catch(e){}
        if((int_refreshrate*1000)<=0)int_refreshrate=1;
        int_idtimer=window.setTimeout(str_functionret,(int_refreshrate*1000));
    }
}
/*----------------------------------------------------------------------------------*/
/* Fonction de transformation d'un texte en image                            		*/
/* nom :		text2image		        											*/
/* entrées :																		*/
/*				- str_path        	: string	: chemain d'accès aux images        */
/*				- str_text			: string	: text                         		*/
/*				- [str_textposition]: string	: [horizontal|vertical]        		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function text2image(){
    var arr_param=text2image.arguments,str_path=arr_param[0],str_text=arr_param[1],str_textposition=(arr_param.length>2?arr_param[2]:'horizontal');
    for(var int_cnt=0;int_cnt!=str_text.length;int_cnt++)document.write('<IMG src="'+str_path+str_text.charCodeAt(int_cnt)+'.gif" border="0"/>'+(str_textposition.toLowerCase()=='vertical'?'<br/>':''));
}
/*----------------------------------------------------------------------------------*/
/* Fonction de positionnement d'un text                                        		*/
/* nom :		textposition	        											*/
/* entrées :																		*/
/*				- str_text			: string	: text                         		*/
/*				- str_textposition	: string	: [horizontal|vertical]        		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function textposition(){
    var arr_param=textposition.arguments,str_text=arr_param[0],str_textposition=(arr_param.length>1?arr_param[1]:'horizontal');
    switch(str_textposition.toLowerCase()){
        case 'vertical':
            for(var int_cnt=0;int_cnt!=str_text.length;int_cnt++)document.write(str_text.charAt(int_cnt)+'<br/>');
            break;
        case 'horizontal':
            document.write(str_text);
            break;
    }
}
/*----------------------------------------------------------------------------------*/
/* Fonction de copie d'un texte dans le presse papier                        		*/
/* nom :		copytoclipboard        											    */
/* entrées :																		*/
/*				- str_text       	: string	: text                              */
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function copytoclipboard(){
    var arr_param=copytoclipboard.arguments;
    var str_text=arr_param[0];
    if(window.clipboardData) window.clipboardData.setData("Text", str_text);
    else if(window.netscape) { 
        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
        var obj_clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
        if(!obj_clip) return false;
        var obj_trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
        if(!obj_trans) return false;
        obj_trans.addDataFlavor('text/unicode');
        var obj_string = new Object();
        var obj_string = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
        var str_copytext = str_text;
        obj_string.data = str_copytext;
        obj_trans.setTransferData("text/unicode",obj_string,str_copytext.length*2);
        var obj_clipid = Components.interfaces.nsIClipboard;
        if(!obj_clip) return false;
        obj_clip.setData(obj_trans,null,obj_clipid.kGlobalClipboard);
    }
    return true;
}
/*----------------------------------------------------------------------------------*/
/* Fonction d'ajustement d'une iframe                                          		*/
/* nom :		adjustiframesize        											*/
/* entrées :																		*/
/*				- obj_iframe       	: object	: objet iframe                      */
/*				- int_width			: integer	: largeur                      		*/
/*				- int_height		: integer	: hauteur                      		*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function adjustiframesize(){
    var arr_param=adjustiframesize.arguments;
    var obj_iframe=arr_param[0],int_width=arr_param[1],int_height=arr_param[2];
    if(int_width!=0)document.getElementById(obj_iframe.name).style.width=int_width+'px';
    if(int_height!=0)document.getElementById(obj_iframe.name).style.height=int_height+'px';
}
/*----------------------------------------------------------------------------------*/
/* Fonction d'ouverture d'une popup                                          		*/
/* nom :		popup                   											*/
/* entrées :																		*/
/*				- str_url       	: string	: url                               */
/*				- str_title			: string	: title                      		*/
/*				- str_properties    : string	: options                      		*/
/*				- str_alternate	    : string	: alternate                    		*/
/*				- str_redirecturl	: string	: redirect page						*/
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function popup(){
    var arr_param=popup.arguments;
    var str_url=arr_param[0],str_properties=(arr_param.length>1?arr_param[1]:'resizable=yes,scrollbars=yes'),str_alternate=(arr_param.length>2?arr_param[2]:''),str_redirecturl=(arr_param.length>3?arr_param[3]:''),str_key,str_value;
    var obj_popup=null,obj_windows=new windows(),obj_url=new url(),obj_form,obj_file;
	var int_cnt;
    try{
		obj_form=getObject('frmpopup','FORM');
        if(obj_form!=null){
			obj_url.parseUrl(str_url);
			str_url=obj_url.str_uri;
			str_param=obj_url.str_param;
			if(str_param!=''){
				if(str_param.substr(0,1)=='?')str_param=str_param.substr(1);
				if(str_param!=''){
					arr_param=str_param.split('&');
					for(int_cnt=0;int_cnt<arr_param.length;int_cnt++){
						str_key=arr_param[int_cnt].substr(0,arr_param[int_cnt].indexOf('='));
						str_value=arr_param[int_cnt].substr((str_key.length+1));
						obj_file=getObject(str_key,'INPUT');
						if(obj_file!=null){
							obj_file.value=str_value;
							obj_form.appendChild(obj_file);
						}
					}
				}
			}
			obj_file=getObject('__URL','INPUT');
			if(obj_file!=null){
				obj_file.value=str_url+'?'+str_param;
				obj_form.appendChild(obj_file);
			}
			obj_file=getObject('__MESSAGE','INPUT');
			if(obj_file!=null){
				obj_file.value='';
				obj_form.appendChild(obj_file);
			}
			obj_windows.str_method='POST';
			obj_windows.obj_form=obj_form;
			if(str_redirecturl!='')obj_windows.str_blankpage=str_redirecturl;
			obj_windows.str_url=str_url
		}
		obj_windows.str_url=str_url;
		obj_windows.str_properties=str_properties;
		obj_popup=obj_windows.open();
    }catch(e){
        if(obj_popup!=null)obj_windows.close();
        obj_popup=null;
    }
    if((obj_popup==null||!obj_popup)&&str_alternate!='')eval(str_alternate);
}
/*----------------------------------------------------------------------------------*/
/* Class cours de bourse												 			*/
/* nom :		listquote															*/
/* entrées :																		*/
/*				- [str_root]	    : string	: répertoire racine 				*/
/*				- [str_remotedata]	: string	: url XML des données				*/
/*				- [int_errmode]		: integer	: 1 - err resume global 			*/
/*												  2 - err detail global  			*/
/*												  4 - err resume individuel			*/
/*												  8 - err detail individuel  		*/
/*												  16 - sortir à la 1ere erreur 		*/
/*				- [obj_form]		: object	: form de référence					*/
/* attributs :																		*/
/*              - str_root          : string    : répertoire racine                 */
/*				- str_remotedata	: string	: url XML des données				*/
/*				- int_errmode		: string	: gestion des erreurs				*/
/*				- obj_form			: object	: form de référence					*/
/*				- obj_url			: object	: objet url     					*/
/*				- str_redirecturl	: string	: url de redirection                */
/*              - str_downloadurl   : string    : url de download                   */
/*              - str_cmdurl        : string    : url de commande                   */
/*              - str_cmdajaxurl    : string    : url de commande via ajax          */
/*              - str_format        : string    : format                            */
/*              - str_ouput         : string    : sortie                            */
/*              - str_language      : string    : langue                            */
/*              - str_defaultdate   : string    : date par default                  */
/*              - dec_defaultnumber : decimal   : nombre par default                */
/*				- boo_debug			: boolean	: debugage							*/
/* méthodes :																		*/
/*				- refreshchart      : actualise les graphiques de la page en cours 	*/
/*				- search            : recherche les données dans une plage de date	*/
/*              - calculate         : calcul la somme investie à une date donnée    */
/*              - cancel            : annule l'action en cours                      */
/*              - print             : imprime la page en cours                      */
/*              - send              : envoi la page en cours à un veritable ami     */
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function listquote(){
	var arr_param=listquote.arguments;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.str_root=(arr_param.length>0?arr_param[0]:'/');
	this.str_remotedata=(arr_param.length>1?arr_param[1]:'');
	this.int_errmode=(arr_param.length>2?arr_param[2]:1);
	this.obj_form=(arr_param.length>3?arr_param[3]:null);
	this.obj_url=new url();
	this.str_errpopup='If you are using a popup blocker please deactivate it';
	this.str_errdateearlierthan5='The start date must not be earlier than 5 years'
	this.str_redirecturl=this.str_root+'generator/redirect.aspx';
	this.str_downloadurl=this.str_root+'generator/download.aspx?file=';
	this.str_cmdurl=this.str_root+'generator/cmd.aspx';
	this.str_cmdajaxurl=this.str_root+'generator/ajax_cmd.aspx';
	this.str_format='html';
	this.str_output='inline';
	this.str_language='en';
	this.str_defaultdate='dd/mm/yyyy';
	this.dec_defaultnumber=0;
	this.boo_debug=false;
	
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PRIVÉES															*/
	/*------------------------------------------------------------------------------*/
	var global=this;

	/*------------------------------------------------------------------------------*/
	/* METHODES PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.refreshchart=refreshchart;
	this.search=search;
	this.calculate=calculate;
    this.cancel=cancel;
    this.print=print;
    this.send=send;

	/*------------------------------------------------------------------------------*/
	/* METHODES PRIVÉES																*/
	/*------------------------------------------------------------------------------*/
	/*------------------------------------------------------------------------------*/
	/* Fonction d'actualisation des graphiques de la page en cours				    */
	/* nom :		refreshchart													*/
    /*			- str_chart	        : string	: reference du chart                */
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
    function refreshchart(){
        var arr_param=refreshchart.arguments,arr_keyvalue;
        var str_chart=arr_param[0],str_period_code='',str_comparison_id='',str_param,str_url=(arr_param.length>1?unescape(arr_param[1]):''),str_language='en';
        var obj_element,obj_window,obj_iframe=window.frames,obj_period_code=getElement('PERIOD_CODE_'+str_chart),obj_comparison=getElement('COMPARISON_'+str_chart);
        var int_cnt1,int_cnt2,int_id;
		if(str_chart!=''){
			try{
				if(obj_iframe.length>0){
					int_id=parseInt(str_chart.substring(7));
					if(obj_period_code!=null)str_period_code=obj_period_code.value;
					if(obj_comparison!=null){
						if(obj_comparison.length==null||obj_comparison.length==undefined){
							if(obj_comparison.checked)str_comparison_id=obj_comparison.value;
						}else for(int_cnt1=0;int_cnt1<obj_comparison.length;int_cnt1++)if(obj_comparison[int_cnt1].checked)str_comparison_id+=(str_comparison_id!=''?',':'')+obj_comparison[int_cnt1].value;
					}
					//alert(obj_comparison.length+' '+str_comparison_id);
					if(obj_iframe[str_chart]!=null)obj_window=obj_iframe[str_chart];
					else{
						for(int_cnt1=0;int_cnt1<obj_iframe.length;int_cnt1++){
							if(obj_iframe[int_cnt1].name==str_chart){
								obj_window=obj_iframe[int_cnt1];
								break;
							}
						}
					}
					if(obj_window!=null)str_url=obj_window.document.location.href;
				}
			}catch(e){}
			if(str_url!=''){
				global.obj_url.parseUrl(str_url);
				str_param=global.obj_url.str_param.substring(1);
				if(str_param!=''){
					arr_param=str_param.split('&');
					str_param='';
					for(int_cnt2=0;int_cnt2<arr_param.length;int_cnt2++){
						arr_keyvalue=arr_param[int_cnt2].split('=');
						if(arr_keyvalue[0].toUpperCase()=='__LANG'&&arr_keyvalue[1]!='')str_language=arr_keyvalue[1];
						if(!(arr_keyvalue[0].toUpperCase()=='__LANG'||arr_keyvalue[0].toUpperCase()=='__PERIOD_CODE'||arr_keyvalue[0].toUpperCase()=='__COMPARISON_ID'))str_param+=(str_param!=''?'&':'')+arr_param[int_cnt2];
					}
				}
				if(str_period_code!='')str_param+=(str_param!=''?'&':'')+'__PERIOD_CODE='+str_period_code;
				str_param+=(str_param!=''?'&':'')+'__LANG='+str_language;
				if(str_comparison_id!='')str_param+=(str_param!=''?'&':'')+'__COMPARISON_ID='+str_comparison_id;
				str_url=global.obj_url.str_uri+(str_param!=''?'?'+str_param:'');
			}
			if(str_url!=''){
				//str_url=this.str_root+str_url.substr(1);
				try{
					window.frames[str_chart].document.location.href=str_url;
				}catch(e){
					//alert('error 1.1: '+e.message);
					try{
						window.frames[str_chart].src=str_url;
					}catch(e){
						//alert('error 1.2: '+e.message);
						try{
							obj_window.document.location.href=str_url;
						}catch(e){
							//alert('error 1.3: '+e.message);
							try{
								obj_window.src=str_url;
							}catch(e){
								//alert('error 1.4: '+e.message);
								try{
									obj_iframe=getElement(str_chart);
									obj_element=document.createElement('IFRAME');
									obj_element.id=str_chart;
									obj_element.name=str_chart;
									obj_element=obj_iframe;
									obj_element.src=str_url;
									obj_iframe.parentNode.insertBefore(obj_element,obj_iframe.nextSibling);
								}catch(e){
									//alert('error 1.5: '+e.message);
								}
							}
						}
					}
				}
			}
		}
    }
	/*------------------------------------------------------------------------------*/
	/* Fonction de recherche de données dans une plage de date					    */
	/* nom :		search   														*/
	/* entrées :																	*/
    /*			- str_uid	        : string	: uid de la template                */
    /*			- [str_functionret] : string	: fonction de retour                */
    /*			- [str_format]      : string	: format                            */
	/*			- [str_output]      : string	: sortie                            */
	/*			- [str_language]    : string	: langue                            */
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
    function search(){
        var arr_param=search.arguments;
        var str_date,str_url,str_uid=(arr_param.length>0?arr_param[0]:''),str_functionret=(arr_param.length>1?arr_param[1]:''),str_addbefore='',str_addafter='';
        if(arr_param.length>2)if(arr_param[2]!=null)global.str_format=arr_param[2];
        if(arr_param.length>3)if(arr_param[3]!=null)global.str_output=arr_param[3];
        if(arr_param.length>4)if(arr_param[4]!=null)global.str_language=arr_param[4];
        var obj_date,obj_result=getElement('searchresult'),obj_date_start=getElement('TOOL_SEARCH_DATE_START'),obj_date_end=getElement('TOOL_SEARCH_DATE_END');
		var int_day,int_month,int_year;
        if(obj_date_start!=null&&obj_date_end!=null){
            obj_date_start.style.backgroundColor='#FFFFFF';
            obj_date_end.style.backgroundColor='#FFFFFF';
            obj_date_start.style.color='#000000';
            obj_date_end.style.color='#000000';
            obj_date=new Date();
			int_day=parseInt(obj_date.getDate());
			int_month=(parseInt(obj_date.getMonth())+1);
			int_year=parseInt(obj_date.getFullYear());
		    str_date=(int_day<10?'0':'')+int_day+'/'+(int_month<10?'0':'')+int_month+'/'+int_year;
            if(obj_date_start.value==''||obj_date_start.value=='dd/mm/yyyy'||obj_date_start.value=='yyyy-mm-dd')obj_date_start.value=str_date;
            if(obj_date_end.value==''||obj_date_end.value=='dd/mm/yyyy'||obj_date_end.value=='yyyy-mm-dd')obj_date_end.value=str_date;
            if(isDateTime(obj_date_start)&&isDateTime(obj_date_end)){
				if(DateDiff(obj_date_end,str_date)>0)obj_date_end.value=str_date;
				if(DateDiff(obj_date_start,obj_date_end)>0)obj_date_start.value=obj_date_end.value;
                if(DateDiff(str_date, obj_date_start, 'year')>5){
                    alert(global.str_errdateearlierthan5);
                }else{
	                arr_param=[['SEARCH',[['DATESTART', obj_date_start.value],['DATEEND', obj_date_end.value],['FORMAT', global.str_format],['OUTPUT', global.str_output],['LANGUAGE', global.str_language]],str_uid]];
                    if(obj_result!=null){
                        obj_result.style.display='none';
                        obj_result.innerHTML='<table height="100%" width="100%" border="0"><tr><td align="center" valign="middle"><img src="'+global.str_root+'medias/communs/wait.gif" alt="" border="0"/></td></tr></table>';
                    }
                    if(global.str_output=='stream'){
                        str_url=global.str_cmdurl+'?__UID='+str_uid+'&__CMD=SEARCH&__DATESTART='+obj_date_start.value+'&__DATEEND='+obj_date_end.value+'&__FORMAT='+global.str_format+'&__LANG='+global.str_language;
					    try{
						    window.open(str_url);
					    }catch(e){
						    alert(global.str_errpopup);
					    }
                        //popup(str_url,'resizable=yes,scrollbars=yes','if((obj_result=getElement(\'searchresult\'))!=null){alert(\''+global.str_errpopup+'\');obj_result.style.display=\'block\';}',global.str_redirecturl+'?__URL='+escape(str_url)+'&__META=0&__LANG='+global.str_language+'__MESSAGE=');
                    }else global.obj_url.getContent((obj_result!=null?'getElement("searchresult").innerHTML':''),global.str_cmdajaxurl,true,global.obj_url.setXML(arr_param),str_addbefore,str_addafter,str_functionret,'',true,0,'');
                    if(obj_result!=null&&global.str_output!='stream')obj_result.style.display='block';
                }
            }else{
                if(!isDateTime(obj_date_start)){
                    obj_date_start.style.backgroundColor='#CC0000';
                    obj_date_start.style.color='#FFFFFF';
                }
                if(!isDateTime(obj_date_end)){
                    obj_date_end.style.backgroundColor='#CC0000';
                    obj_date_end.style.color='#FFFFFF';
                }
            }
        }
    }
	/*------------------------------------------------------------------------------*/
	/* Fonction de calcul de somme investie à une date donnée			            */
	/* nom :		calculate  														*/
	/* entrées :																	*/
    /*			- str_uid	        : string	: uid de la template                */
    /*			- [str_functionret] : string	: fonction de retour                */
    /*			- [str_format]      : string    : format                            */
	/*			- [str_output]      : string	: sortie                            */
	/*			- [str_language]    : string	: langue                            */
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
    function calculate(){
        var arr_param=calculate.arguments;
        var str_uid=(arr_param.length>0?arr_param[0]:''),str_functionret=(arr_param.length>1?arr_param[1]:''),str_addbefore='',str_addafter='';
        if(arr_param.length>2)if(arr_param[2]!=null)global.str_format=arr_param[2];
        if(arr_param.length>3)if(arr_param[3]!=null)global.str_output=arr_param[3];
        if(arr_param.length>4)if(arr_param[4]!=null)global.str_language=arr_param[4];
        var obj_result=getElement('calculatorresult'),obj_amount=getElement('TOOL_CALCULATOR_AMOUNT'),obj_date_start=getElement('TOOL_CALCULATOR_DATE_START'),obj_dividend=getElement('TOOL_CALCULATOR_DIVIDEND');
        if(obj_amount!=null&&obj_date_start!=null){
            obj_amount.style.backgroundColor='#FFFFFF';
            obj_amount.style.color='#000000';
            obj_date_start.style.backgroundColor='#FFFFFF';
            obj_date_start.style.color='#000000';
            if(isNumeric(obj_amount)&&isDateTime(obj_date_start)){
	            arr_param=[['CALCULATOR',[['AMOUNT', obj_amount.value],['DATESTART', obj_date_start.value],['DATEEND', ''],['DIVIDEND', (obj_dividend.checked?'1':'0')],['FORMAT', global.str_format],['OUTPUT', global.str_output],['LANGUAGE', global.str_language]],str_uid]];
                if(obj_result!=null){
                    obj_result.style.display='none';
                    obj_result.innerHTML='<table height="100%" width="100%" border="0"><tr><td align="center" valign="middle"><img src="'+global.str_root+'medias/communs/wait.gif" alt="" border="0"/></td></tr></table>';
                }
                if(global.str_output=='stream'){
                    str_functionret='var obj_popup=null;try{obj_popup=window.open("'+global.str_downloadurl+'$1","result","resizable,scrollbars")}catch(e){obj_popup=null;}if((obj_popup==null||!obj_popup)&&(obj_result=getElement("calculatorresult"))!=null)obj_result.style.display="block";';
                    str_addbefore='<A href="'+global.str_downloadurl+'$1" target="self">';
                    str_addafter='</A>';
                }
                global.obj_url.getContent((obj_result!=null?'getElement("calculatorresult").innerHTML':''),global.str_cmdajaxurl,true,global.obj_url.setXML(arr_param),str_addbefore,str_addafter,str_functionret,'',true,0,'');
                if(obj_result!=null&&global.str_output!='stream')obj_result.style.display='block';
            }else{
                if(!isNumeric(obj_amount)){
                    obj_amount.style.backgroundColor='#CC0000';
                    obj_amount.style.color='#FFFFFF';
                }
                if(!isDateTime(obj_date_start)){
                    obj_date_start.style.backgroundColor='#CC0000';
                    obj_date_start.style.color='#FFFFFF';
                }
            }
        }
    }
	/*------------------------------------------------------------------------------*/
	/* Fonction d'annulation de l'action en cours       					        */
	/* nom :		cancel   														*/
	/* entrées :																	*/
    /*			- str_action        : string	: action                            */
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
    function cancel(){
        var arr_param=cancel.arguments;
        var str_action=arr_param[0];
        var obj_result,obj_amount,obj_date_start,obj_date_end;
        switch(str_action.toLowerCase()){
            case 'search':
                obj_result=getElement('searchresult');
                obj_date_start=getElement('TOOL_SEARCH_DATE_START');
                obj_date_end=getElement('TOOL_SEARCH_DATE_END');
                if(obj_date_start!=null&&obj_date_end!=null&&obj_result!=null){
                    obj_date_start.value=global.str_defaultdate;
                    obj_date_start.style.backgroundColor='#FFFFFF';
                    obj_date_start.style.color='#000000';
                    obj_date_end.value=global.str_defaultdate;
                    obj_date_end.style.backgroundColor='#FFFFFF';
                    obj_date_end.style.color='#000000';
                    obj_result.style.display='none';
                    obj_result.innerHTML='';
                }
                break;
            case 'calculator':
                obj_result=getElement('calculatorresult');
                obj_amount=getElement('TOOL_CALCULATOR_AMOUNT');
                obj_date_start=getElement('TOOL_CALCULATOR_DATE_START');
                if(obj_amount!=null&&obj_date_start!=null&&obj_result!=null){
                    obj_date_start.value=global.str_defaultdate;
                    obj_date_start.style.backgroundColor='#FFFFFF';
                    obj_date_start.style.color='#000000';
                    obj_amount.value=global.dec_defaultnumber;
                    obj_result.style.display='none';
                    obj_result.innerHTML='';
                }
                break;
        }
    }
	/*------------------------------------------------------------------------------*/
	/* Fonction d'impression de la page en cours       					            */
	/* nom :		print   														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
    function print(){
        window.print();
    }
	/*------------------------------------------------------------------------------*/
	/* Fonction d'envoi de la page en cours à un véritable ami			            */
	/* nom :		send       														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
    function send(){
    }
}
/*----------------------------------------------------------------------------------*/
/* Class url            												 			*/
/* nom :		url     															*/
/* entrées :																		*/
/* attributs :																		*/
/*				- str_errplugin     : string	: message plugin non activé     	*/
/*              - str_errunknow     : string    : message inconnu                   */
/*              - str_errunsupported: string    : message non supporté              */
/*				- str_url			: string	: url           					*/
/*				- str_uri			: string	: uri           					*/
/*				- str_protocol		: string	: protocol         					*/
/*				- str_host		    : string	: host                              */
/*				- int_port  		: integer	: port              				*/
/*				- str_path  		: string	: path                              */
/*				- str_script  		: string	: script                            */
/*				- str_param  		: string	: param                             */
/*				- boo_debug			: boolean	: debugage							*/
/* méthodes :																		*/
/*				- parseUrl 			: Parse une url                         		*/
/*				- getVirtualPath	: Récupère le chemin virtuel du chemin courant  */
/*				- getContent		: Récupère un contenu via httprequest           */
/*				- setXML 			: Crée une requête XML                          */
/*				- getXML 			: Récupére d'une requête XML           		    */
/* sortie :																			*/
/*----------------------------------------------------------------------------------*/
function url(){
    var arr_param=url.arguments;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.str_errplugin=(arr_param.length>0?arr_param[0]:'You need to activate plugin security.\nPlease contact your administrator.');
    this.str_errunknow=(arr_param.length>1?arr_param[1]:'Error Unknow');
    this.str_errunsupported=(arr_param.length>2?arr_param[2]:'XMLHttpRequest is not supported.\nPlease try with another web browser like Internet Explorer v6 Or FireFox v2.');
    this.str_url='';
    this.str_uri='';
    this.str_protocol='';
    this.str_host='';
    this.int_port=0;
    this.str_path='';
    this.str_script='';
    this.str_param='';
    this.arr_errrequest=[
						[100,"Continue"],
						[101,"Switching Protocols"],
						[200,"OK"],
						[201,"Created"],
						[202,"Accepted"],
						[203,"Non-Authoritative Information"],
						[204,"No Content"],
						[205,"Reset Content"],
						[206,"Partial Content"],
						[300,"Multiple Choices"],
						[301,"Moved Permanently"],
						[302,"Found"],
						[303,"See Other"],
						[304,"Not Modified"],
						[305,"Use Proxy"],
						[307,"Temporary Redirect"],
						[400,"Bad Request"],
						[401,"Unauthorized"],
						[403,"Forbidden"],
						[404,"Not Found"],
						[405,"Method Not Allowed"],
						[406,"Not Acceptable"],
						[407,"Proxy Authentication Required"],
						[408,"Request Timeout"],
						[409,"Conflict"],
						[410,"Gone"],
						[411,"Length Required"],
						[412,"Precondition Failed"],
						[413,"Request Entity Too Large"],
						[414,"Request URI Too Long"],
						[415,"Unsupported Media Type"],
						[416,"Requested Range Not Satisfiable"],
						[417,"Expectation Failed"],
						[500,"Internal Server Error"],
						[501,"Not Implemented"],
						[502,"Bad Gateway"],
						[503,"Service Unavailable"],
						[504,"Gateway Timeout"],
						[505,"HTTP Version Not Supported"]
					    ];
	this.boo_debug=false;
	
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PRIVÉES															*/
	/*------------------------------------------------------------------------------*/
    var arr_xmlobject=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.5.0'];
    var int_uninitialized=0;
    var int_loading=1;
    var int_loaded=2;
    var int_interactive=3;
    var int_complete=4;
    var int_mode_text=0;
    var int_mode_stream=1;
    var int_mode_body=2;
    var int_mode_xml=3;
    var int_datatype_text=0;
    var int_datatype_binary=1;
    var global=this;

	/*------------------------------------------------------------------------------*/
	/* METHODES PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.parseUrl=parseUrl;
	this.getVirtualPath=getVirtualPath;
	this.getContent=getContent;
	this.setXML=setXML;
	this.getXML=getXML;

	/*------------------------------------------------------------------------------*/
	/* METHODES PRIVÉES																*/
	/*------------------------------------------------------------------------------*/
	/*------------------------------------------------------------------------------*/
    /* Function de récupération les paramètres d'une URL					        */
    /* nom :		parseUrl														*/
    /* entrées :															        */
    /*			- str_url		    : string	: URL					            */
    /* sortie :																        */
	/*------------------------------------------------------------------------------*/
    function parseUrl(){
        var arr_param=parseUrl.arguments,arr_path;
        var str_url=arr_param[0];
        var str_uri=str_url.substr(0,(str_url.indexOf('?')>0?str_url.indexOf('?'):str_url.length)),str_param=str_url.replace(str_uri,''),str_protocol=(str_uri.indexOf('://')>0&&str_uri.indexOf('://')<5?str_uri.substr(0,str_uri.indexOf('://')):''),str_uri=(str_protocol!=''?str_uri.substr((str_protocol!=""?str_protocol.length+3:0),str_uri.length):str_uri),str_host='',str_path='',str_script='';
		var int_idport=str_uri.indexOf(':'),int_idroot=str_uri.indexOf('/'),int_port=parseInt((int_idport<int_idroot&&int_idport>0?str_uri.substr(int_idport+1,(int_idroot>=0?int_idroot:str_uri.length)):80));
        str_host=str_uri.substr(0,(int_idport<int_idroot&&int_idport>0?int_idport:(int_idroot>=0?int_idroot:str_uri.length)));
        str_uri=(int_idroot>=0?str_uri.substr(int_idroot,str_uri.length):'/');
        arr_path=str_uri.split('/');
        if(arr_path.length>0){
            for(var int_cnt=0;int_cnt<(arr_path.length-1);int_cnt++)str_path+=arr_path[int_cnt]+'/';
            str_script=arr_path[(arr_path.length-1)];
        }
        this.str_url=str_url;
        this.str_uri=str_uri;
        this.str_protocol=str_protocol;
        this.str_host=str_host;
        this.int_port=int_port;
        this.str_path=str_path;
        this.str_script=str_script;
        this.str_param=str_param;
    }
	/*------------------------------------------------------------------------------*/
    /* Function de récupération du chemin virtuel de l'URL courante 		        */
    /* nom :		getVirtualPath													*/
    /* entrées :															        */
    /*			- str_url		    : string	: URL					            */
    /* sortie :																        */
	/*------------------------------------------------------------------------------*/
    function getVirtualPath(){
        var arr_param=getVirtualPath.arguments,arr_path;
        var str_url=document.location.href,str_ret='./';
        var int_offset=0;
        global.parseUrl(str_url);
        if(global.str_path.length>0){
            if(global.str_path.substr(0,1)=='/')int_offset=1;
            arr_path=global.str_path.split('/');
            for(var int_cnt=int_offset;int_cnt<(arr_path.length-1);int_cnt++)str_ret+='../';
        }
        return str_ret;
    }
    /*------------------------------------------------------------------------------*/
    /* Function de récupération d'une contenu via httprequest           		    */
    /* nom :		getContent												        */
    /* entrées :															        */
    /*				- str_result	    : string	: instance du resultat	        */
    /*				- str_content	    : string	: url ou contenu		        */
    /*				- [boo_url]		    : boolean	: url ou non			        */
    /*				- [str_method]	    : (GET|POST): type d'envois			        */
    /*				- [obj_query]	    : string	: param si envois POST	        */
    /*				- [str_addbefore]   : string	: chaine avant resultat	        */
    /*				- [str_addafter]    : string	: chaine après resultat	        */
    /*				- [str_functionret] : string	: fonction retour               */
    /*              - [boo_async]       : boolean   : asynchrone ou non             */
    /*              - [int_mode]        : integer   : mode de retour                */
    /*				- [str_debug]       : string	: debug une url ou un contenu   */
    /* sortie :																        */
    /*------------------------------------------------------------------------------*/
    function getContent(){
        var arr_param=getContent.arguments,arr_header=(arr_param.length>7?arr_param[7]:''),arr_mode=['Text','Stream','Body','XML'];
        var str_result=arr_param[0],str_content=arr_param[1],str_method=(arr_param.length>3?(arr_param[3]!=null?'POST':'GET'):'GET'),str_addbefore=(arr_param.length>4?arr_param[4]:''),str_addafter=(arr_param.length>5?arr_param[5]:''),str_functionret=(arr_param.length>6?arr_param[6]:''),str_debug=(arr_param.length>9?arr_param[10]:''),str_response='';
        var boo_url=(arr_param.length>2?arr_param[2]:false),boo_async=(arr_param.length>8?arr_param[8]:true),boo_error=false;
        var int_mode=(arr_param.length>9?arr_param[9]:0);
        var obj_query=(arr_param.length>3?(arr_param[3]!=null?arr_param[3]:null):null);
        if(boo_url){
	        var obj_xhr=null;
	        if(!window.ActiveXObject&&boo_ie){
		        alert(global.str_errplugin);
		        return false;
	        }
	        if(!window.XMLHttpRequest&&window.ActiveXObject){
		        for(int_cnt=(arr_xmlobject.length-1);int_cnt>=0;int_cnt--){
			        try{
				        obj_xhr=new ActiveXObject(arr_xmlobject[int_cnt]);
				        break;
			        }catch(e){}
		        }
	        }
	        if(obj_xhr==null){
		        try{
			        obj_xhr=new XMLHttpRequest();
		        }catch(e){}
	        }
	        if(obj_xhr==null)alert(global.str_errunsupported);
	        else{
	            try{
    		        obj_xhr.open(str_method,str_content,(boo_ie?boo_async:true));
    	        }catch(e){
    	            if(boo_url){
	                    try{
        				    global.obj_url.parseUrl(window.top.document.location.href);
    	                    str_current_host=global.obj_url.str_host;
        				    global.obj_url.parseUrl(str_content);
        	                str_content=str_content.replace(global.obj_url.str_host, str_current_host);
        		            obj_xhr.open(str_method,str_content,(boo_ie?boo_async:true));
            	        }catch(e){
            	            boo_error=true;
            	        }
        	        }else boo_error=true;
    	        }
    	        if(!boo_error){
		            if(arr_header!=null)for(var int_cnt=0;int_cnt<arr_header.length;int_cnt++) obj_xhr.setRequestHeader(arr_header[int_cnt][0],arr_header[int_cnt][1]);
		            obj_xhr.onreadystatechange=function(){
			            if(obj_xhr.readyState==int_complete){
			                if(global.boo_debug||str_debug==str_content)alert('status:\n'+getMsgStatus(obj_xhr.status)+'\nstatut code:'+obj_xhr.status+'\ndiv:'+str_result+'\nurl:'+str_content+'\nmethod:'+str_method+'\nasync:'+boo_async+'\nquery:'+obj_query+'\nreadyState:'+obj_xhr.readyState+'\ntext:'+obj_xhr.responseText);
                            if(obj_xhr.status==200||obj_xhr.status==0||global.boo_debug||str_debug==str_content)str_response=eval('obj_xhr.response'+arr_mode[int_mode]);
                            else str_response=getMsgStatus(obj_xhr.status);
                            str_addbefore=str_addbefore.replace('$1',str_response);
                            str_addafter=str_addafter.replace('$1',str_response);
			                if(str_result!=''){
			                    try{
			                        str_result=str_result.replace('$1',str_response);
                                    eval(str_result+'=str_addbefore+str_response+str_addafter');
                                }catch(e){}
				            }else{
                                with(open('','result','resizable,scrollbars').document){
                                    open();
                                    write(str_addbefore+str_response+str_addafter);
                                    close();
                                }
                            }
				            if(str_functionret!=''){
            		            try{
				                    eval(str_functionret.replace('$1',str_response));
                                }catch(e){}
				            }
			            }else if(global.boo_debug||str_debug==str_content)alert('div:'+str_result+'\nurl:'+str_content+'\nmethod:'+str_method+'\nasync:'+boo_async+'\nquery:'+obj_query+'\nreadyState:'+obj_xhr.readyState);
		            }
		            obj_xhr.send(obj_query);
                }
	        }
        }else{
	        var obj_result=getElement(str_result);
	        if(obj_result!=null){
		        obj_result.innerHTML=str_addbefore+str_content+str_addafter;
		        if(str_functionret!=''){
		            try{
    		            eval(str_functionret);
                    }catch(e){}
                }
	        }
        }
    }
    /*------------------------------------------------------------------------------*/
    /* Function de creation d'une requête XML                         		        */
    /* nom :		getURL													        */
    /* entrées :															        */
    /*				- arr_node   	    : array 	: tableau de parametres         */
    /* sortie :																        */
    /*				- obj_xml		    : object	: objet xml         	        */
    /*------------------------------------------------------------------------------*/
    function setXML(){
        var arr_param=setXML.arguments,arr_node=arr_param[0];
        var obj_node,obj_xml,obj_parser,obj_date=new Date();
        var int_datatype,int_hour=obj_date.getHours(),int_minute=obj_date.getMinutes(),int_second=obj_date.getSeconds();
        var var_value;
        var str_xml='';
        if(!window.ActiveXObject&&boo_ie){
	        alert(global.str_errplugin);
	        return false;
        }
        //str_xml+='<?xml version="1.0" encoding="UTF-8"?>\n';
        str_xml+='<REQUEST TIME="'+(int_hour<10?'0':'')+int_hour+':'+(int_minute<10?'0':'')+int_minute+':'+(int_second<10?'0':'')+int_second+'">';
        for(var int_cnt1=0;int_cnt1<arr_node.length;int_cnt1++){
	        arr_attributs=arr_node[int_cnt1][1];
	        obj_node=arr_node[int_cnt1][0];
	        str_xml+='<'+obj_node;
	        for(var int_cnt2=0;int_cnt2<arr_attributs.length;int_cnt2++)str_xml+=' '+arr_attributs[int_cnt2][0]+'="'+arr_attributs[int_cnt2][1]+'"';
	        var_value=arr_node[int_cnt1][2];
	        var_value=escape(var_value);
	        str_xml+='>'+var_value;
	        str_xml+='</'+obj_node+'>';
        }
        str_xml+='</REQUEST>';
        if(window.ActiveXObject){
	        obj_xml=new ActiveXObject('Microsoft.XMLDOM');
	        obj_xml.async='false';
	        obj_xml.loadXML(str_xml);
        }else{
	        obj_parser=new DOMParser();
	        obj_xml=obj_parser.parseFromString(str_xml,'text/xml');
        }
        if(global.boo_debug){
	        var str_debug='';
	        var obj_element=obj_xml.documentElement;
	        for(var int_cnt1=0;int_cnt1<obj_element.childNodes.length;int_cnt1++){
	            str_attributes='';
	            for(var int_cnt2=0;int_cnt2<obj_element.childNodes[int_cnt1].attributes.length;int_cnt2++)str_attributes+=' '+obj_element.childNodes[int_cnt1].attributes[int_cnt2].nodeName+'="'+obj_element.childNodes[int_cnt1].attributes[int_cnt2].nodeValue+'"';
	            str_debug+=(str_debug!=''?'\n':'')+'<'+obj_element.childNodes[int_cnt1].nodeName+''+str_attributes+'>'+(obj_element.childNodes[int_cnt1].childNodes.length>0?obj_element.childNodes[int_cnt1].childNodes[0].nodeValue:'')+'</'+obj_element.childNodes[int_cnt1].nodeName+'>';
            }
	        alert(str_debug);
        }
        return obj_xml;
    }
    /*------------------------------------------------------------------------------*/
    /* Function de récupération d'une requête XML                     		        */
    /* nom :		getURL													        */
    /* entrées :															        */
    /*				- str_urlxml   	    : string	: url xml                       */
    /*				- [str_functionret] : string 	: fonction de retour            */
    /* sortie :																        */
    /*				- obj_xml		    : object	: objet xml         	        */
    /*------------------------------------------------------------------------------*/
    function getXML(){
        var arr_param=getXML.arguments;
        var str_urlxml=arr_param[0],str_functionret=(arr_param.length>1?arr_param[1]:'');
        if(!window.ActiveXObject&&boo_ie){
	        alert(global.str_errplugin);
	        return false;
        }
        var obj_xml=(window.ActiveXObject?new ActiveXObject('MSXML2.DOMDocument.3.0'):null);
        if(obj_xml!=null){
	        obj_xml.async=false;
	        obj_xml.onreadystatechange=function(){
		        var int_state=obj_xml.readyState;
		        if(int_state==4){
			        var obj_err=obj_xml.parseError;
			        if(obj_err.errorCode!=0&&global.boo_debug)alert(obj_err.reason+' ('+obj_err.errorCode+')');
			        if(str_functionret!='')eval(str_functionret);
		        }
	        };
	        obj_xml.load(str_urlxml);
        }
    }
    /*------------------------------------------------------------------------------*/
    /* Function de récupération du message d'une requête via httprequest           	*/
    /* nom :		getMsgStatus											        */
    /* entrées :															        */
    /*				- int_code   	    : integer	: code du message     	        */
    /* sortie :																        */
    /*				- str_message 	    : string	: message       		        */
    /*------------------------------------------------------------------------------*/
    function getMsgStatus(){
        var arr_param=getMsgStatus.arguments;
        var int_code=arr_param[0];
	    var str_message=global.str_errunknow;
	    for(var int_cnt=0;int_cnt<global.arr_errrequest.length;int_cnt++){
		    if(global.arr_errrequest[int_cnt][0]==int_code){
			    str_message=global.arr_errrequest[int_cnt][1];
			    break;
		    }
	    }
	    return str_message;
    }
}
/*----------------------------------------------------------------------------------*/
/* Class calendrier														 			*/
/* nom :		calendar															*/
/* entrées :																		*/
/*				- str_instance			: string	: nom de l'instance				*/
/*				- [boo_enablebackdate]	: boolean	: antidatage possible			*/
/*				- [str_bgcolor_overdate]: string	: couleur d'une date survolée	*/
/*				- [str_bgcolor_outdate]	: string	: couleur d'une date survolée	*/
/* attributs :																		*/
/*				- boo_enablebackdate	: boolean	: antidatage possible			*/
/*				- boo_debug				: boolean	: debugage						*/
/* methodes :																		*/
/*				- init					: initialisation							*/
/*				- open					: ouverture									*/
/*				- refresh				: actualisation								*/
/*				- prevMonth				: mois précédant							*/
/*				- nextMonth				: mois suivant								*/
/*				- prevYear				: annee précédante							*/
/*				- nextYear				: annee suivante							*/
/*				- overDate				: survole d'un jour							*/
/*				- outDate				: survole d'un jour							*/
/*				- selectDate			: sélection'un jour							*/
/*				- state					: etat du style d'une date					*/
/*----------------------------------------------------------------------------------*/
function calendar(){
	var arr_param=calendar.arguments;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.str_instance=arr_param[0];
	this.boo_enablebackdate=(arr_param.length>1?arr_param[1]:false);
	this.str_bgcolor_overdate=(arr_param.length>2?arr_param[2]:'#FFCC66');
	this.str_bgcolor_outdate=(arr_param.length>3?arr_param[3]:'#C4D3EA');
	this.boo_debug=false;
	/*------------------------------------------------------------------------------*/
	/* ATTRIBUTS PRIVÉES															*/
	/*------------------------------------------------------------------------------*/
	var global=this;
	var arr_months1=new Array('31','28','31','30','31','30','31','31','30','31','30','31');
	var arr_months2=new Array('31','29','31','30','31','30','31','31','30','31','30','31');
	var arr_date=new Array(42);
	var arr_state=new Array('enabled','disabled','selected');
	var obj_update;
	var obj_cdate=new Date;
	var int_cmonth=obj_cdate.getMonth();
	var int_cyear=obj_cdate.getFullYear();
	var int_month=obj_cdate.getMonth();
	var int_year=obj_cdate.getFullYear();
	/*------------------------------------------------------------------------------*/
	/* METHODES PUBLIQUES															*/
	/*------------------------------------------------------------------------------*/
	this.init=initCalendar;
	this.open=openCalendar;
	this.refresh=refreshCalendar;
	this.prevMonth=prevMonth;
	this.nextMonth=nextMonth;
	this.prevYear=prevYear;
	this.nextYear=nextYear;
	this.noBackDate=noBackDate;
	this.overDate=overDate;
	this.outDate=outDate;
	this.selectDate=selectDate;
	this.state=styleDate;
	/*------------------------------------------------------------------------------*/
	/* METHODES PRIVÉES																*/
	/*------------------------------------------------------------------------------*/
	/*------------------------------------------------------------------------------*/
	/* Fonction d'initialisation du calendrier										*/
	/* nom :		initCalendar													*/
	/* entrées :																	*/
	/*				- [obj_event]		: object	: objet evenement				*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function initCalendar(){
		var arr_param=initCalendar.arguments;
		var obj_event=getEvent((arr_param.length>0?arr_param[0]:false)),obj_srcelement=(obj_event.target?obj_event.target:obj_event.srcElement),obj_calendar=getElement(global.str_instance);
		if(obj_calendar!=null){
			if(obj_calendar.length>0)obj_calendar=obj_calendar[0];
			if(!isChild(obj_srcelement,obj_calendar))obj_calendar.style.display='none';
		}
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction d'ouverture du calendrier											*/
	/* nom :		openCalendar													*/
	/* entrées :																	*/
	/*				- [obj_element]		: object	: objet element					*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function openCalendar(){
		var arr_param=openCalendar.arguments;
		var obj_calendar=getElement(global.str_instance),obj_element=arr_param[0];
		obj_update=obj_element;
		if(obj_calendar!=null){
			if(obj_calendar.length>0)obj_calendar=obj_calendar[0];
			obj_calendar.style.left=posLeft(obj_element);
			obj_calendar.style.top=posTop(obj_element)+obj_element.offsetHeight;
			obj_calendar.style.display='';
			// First check date is valid
			curdt=obj_element.value;
			curdtarr=curdt.split('/');
			isdt=true;
			for(var k=0;k<curdtarr.length;k++){
				if(isNaN(curdtarr[k]))
					isdt=false;
			}
			if(isdt&(curdtarr.length==3)){
				int_month=curdtarr[1]-1;
				int_year=curdtarr[2];
				global.refresh(curdtarr[0],curdtarr[1]-1,curdtarr[2]);
			}else global.refresh(0,int_month,int_year);
		}
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction d'actualisation														*/
	/* nom :		refreshCalendar													*/
	/* entrées :																	*/
	/*				- int_sday			: integer	: selected day					*/
	/*				- int_smonth		: integer	: selected month				*/
	/*				- int_syear			: integer	: selected year					*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function refreshCalendar(){
		var arr_months,arr_param=refreshCalendar.arguments;
		var obj_month,obj_element,obj_cdate=new Date(),obj_date=new Date();
		var int_cnt1,int_cnt2,int_sday=arr_param[0],int_smonth=arr_param[1],int_syear=arr_param[2],int_cdate=obj_cdate.getDate(),int_cday;
		var boo_backdate,boo_selectdate;
		obj_date.setDate(1);
		obj_date.setFullYear(int_syear);
		obj_date.setMonth(int_smonth);
		int_cday=obj_date.getDay();
		for(int_cnt1=1;int_cnt1<13;int_cnt1++){
			obj_month=getElement(global.str_instance+'M'+int_cnt1);
			if(obj_month!=null){
				if(obj_month.length>0)obj_month=obj_month[0];
				obj_month.style.display='none';
			}
		}
		obj_month=getElement(global.str_instance+'M'+(int_smonth+1));
		if(obj_month!=null){
			if(obj_month.length>0)obj_month=obj_month[0];
			obj_month.style.display='block';
		}
		obj_year=getElement(global.str_instance+'Y');
		if(obj_year!=null){
			if(obj_year.length>0)obj_year=obj_year[0];
			obj_year.innerHTML=int_syear;
		}
		arr_months=((int_syear%4)==0)?arr_months2:arr_months1;
		for(int_cnt1=1;int_cnt1<=42;int_cnt1++){
			for(int_cnt2=0;int_cnt2<arr_state.length;int_cnt2++){
				obj_element=getElement(global.str_instance+'D'+int_cnt1+arr_state[int_cnt2]);
				if(obj_element!=null){
					if(obj_element.length>0)obj_element=obj_element[0];
					global.state(int_cnt1,'enabled');
					if((int_cnt1>=(int_cday-(-1)))&&(int_cnt1<=int_cday-(-arr_months[int_smonth]))){
						boo_backdate=((int_cnt1-int_cday<int_cdate)&&(int_smonth==int_cmonth)&&(int_syear==int_cyear));
						boo_selectdate=((int_sday>0)&&(int_cnt1-int_cday==int_sday));
						if(boo_backdate&&!global.boo_enablebackdate)global.state(int_cnt1,'disabled');
						else if(boo_selectdate)global.state(int_cnt1,'selected');
						else global.state(int_cnt1,'enabled');
						obj_element.onmouseover=(boo_backdate&&!global.boo_enablebackdate)?null:global.overDate;
						obj_element.onmouseout=(boo_backdate&&!global.boo_enablebackdate)?null:global.outDate;
						obj_element.onclick=(boo_backdate&&!global.boo_enablebackdate)?null:global.selectDate;
						obj_element.innerHTML=int_cnt1-int_cday;	
						arr_date[int_cnt1]=(int_cnt1-int_cday)+'/'+(int_smonth-(-1))+'/'+int_syear;
					}else{
						obj_element.innerHTML='&nbsp;';
						obj_element.onmouseover=null;
						obj_element.onmouseout=null;
						obj_element.style.cursor='default';
					}
				}
			}
		}
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de déplacement au mois précédant									*/
	/* nom :		prevMonth														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function prevMonth(){
		int_month-=1;
		if(int_month<0){
			int_month=11;
			int_year--;
		}
		if(!global.boo_enablebackdate)global.noBackDate();
		global.refresh(0,int_month,int_year);
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de déplacement au mois suivant										*/
	/* nom :		nextMonth														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function nextMonth(){
		int_month+=1;
		if(int_month>=12){
			int_month=0;
			int_year++;
		}
		if(!global.boo_enablebackdate)global.noBackDate();
		global.refresh(0,int_month,int_year);
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de déplacement au mois précédant									*/
	/* nom :		prevYear														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function prevYear(){
		int_year--;
		if(!global.boo_enablebackdate)global.noBackDate();
		global.refresh(0,int_month,int_year);
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de déplacement au mois suivant										*/
	/* nom :		nextYear														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function nextYear(){
		int_year++;
		if(!global.boo_enablebackdate)global.noBackDate();
		global.refresh(0,int_month,int_year);
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de déplacement au mois suivant										*/
	/* nom :		nextYear														*/
	/* entrées :																	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function noBackDate(){
		if((int_year>int_cyear)|((int_year==int_cyear)&&(int_month>=int_cmonth)))return;
		else{
			int_year=int_cyear;
			int_month=int_cmonth;
			//cfd=scfd;
		}
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de survole d'un jour												*/
	/* nom :		overDate														*/
	/* entrées :																	*/
	/*				- [obj_event]		: object	: objet evenement 				*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function overDate(){
		var arr_param=overDate.arguments;
		var obj_event=getEvent((arr_param.length>0?arr_param[0]:false));
		getEventTarget(obj_event).style.background=global.str_bgcolor_overdate;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de survole d'un jour												*/
	/* nom :		outDate															*/
	/* entrées :																	*/
	/*				- [obj_event]		: object	: objet evenement 				*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function outDate(){
		var arr_param=outDate.arguments;
		var obj_event=getEvent((arr_param.length>0?arr_param[0]:false));
		getEventTarget(obj_event).style.background=global.str_bgcolor_outdate;
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de sélection d'un jour												*/
	/* nom :		selectDate														*/
	/* entrées :																	*/
	/*				- [obj_event]		: object	: objet evenement 				*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function selectDate(){
		var arr_param=selectDate.arguments;
		var obj_event=getEvent((arr_param.length>0?arr_param[0]:false)),obj_calendar=getElement(global.str_instance);
		var int_cnt,int_idate;
		int_idate=getEventTarget(obj_event).id.replace(global.str_instance+'D','');
		for(int_cnt=0;int_cnt<arr_state.length;int_cnt++)int_idate=int_idate.replace(arr_state[int_cnt],'');
		obj_update.value=arr_date[parseInt(int_idate)];
		if(obj_calendar!=null){
			if(obj_calendar.length>0)obj_calendar=obj_calendar[0];
			obj_calendar.style.display='none';
		}
	}
	/*------------------------------------------------------------------------------*/
	/* Fonction de personnalisation du style de la date								*/
	/* nom :		styleDate														*/
	/* entrées :																	*/
	/*				- int_idday			: integer	: id case jour		 			*/
	/*				- str_state			: string	: (enabled|disabled|selected) 	*/
	/* sortie :																		*/
	/*------------------------------------------------------------------------------*/
	function styleDate(){
		var arr_param=styleDate.arguments;
		var int_cnt,int_idday=arr_param[0];
		var str_state=arr_param[1];
		var obj_element;
		for(int_cnt=0;int_cnt<arr_state.length;int_cnt++){
			obj_element=getElement(global.str_instance+'D'+int_idday+arr_state[int_cnt]);
			if(obj_element!=null){
				if(obj_element.length>0)obj_element=obj_element[0];
				obj_element.style.display=(arr_state[int_cnt]==str_state?'block':'none');
			}
		}
	}
	/*------------------------------------------------------------------------------*/
	/* INITIALISATION																*/
	/*------------------------------------------------------------------------------*/
	document.all?document.attachEvent('onclick',global.init):document.addEventListener('click',global.init,false);
}