// JavaScript Document
//		<body onload='document.protect.screenwidth.value = screen.width;document.protect.user.focus();'>

function AjaxCom(){//declaration de la class
	//window.disableExternalCapture();
	
	var AjaxCom_ffx=document&&navigator.userAgent.indexOf('Firefox')!=-1;
	var AjaxCom_ie4=document.all&&navigator.userAgent.indexOf('Opera')==-1;
	var AjaxCom_ns6=document.getElementById&&!document.all;
	var AjaxCom_ns4=document.layers;
	//===============================================================
	//=================       PRIVATE VAR      ======================
	var corpArrayFind			= Array();
	var essaicompteur			= 0;
	var connection				= false;
	var time_delay				= 5000;
	var time_OutDelay			= 30000; // temp en milisecondes du time out de communication
	var time_Erreur				= 10;
	var time_delaysendData		= 100;
	var url_default_ini			= new String('apog_webengin_action.php');
	var param_default_ini		= new String('action');
	var DataCom					= new Array();
	var DataComMultiple			= new Array();
	var DataStock				= new Array();
	var choix					= new String(null);
	var id_html_general			= new String(null);
	/**/
	var DataLoad_Ok				= new Boolean(false);
	var id_DataLoad				= new String(null);
	var type_DataLoad			= new String(null);
	var function_DataLoad		= new String(null);
	var param_DataLoad			= new String(null);
	/**/
	var _save_choix				= new String(null);
	var _save_param				= new String(null);
	var _save_id				= new String(null);
	var _save_state				= new Number(0);
	var _save_functionVar		= new String(null);
	var _saveidmultiple			= null;
	/**/
	var timerGeneral			= null;
	var timerErreur				= null;
	var timerTimeOut			= null;
	var timerSendData			= null;
	var timerSendData_obj		= null;
	var timerSendData_data		= null;
	var WidthOfScreen			= null;
	var HeightOfScreen			= null;
	var Display_All_Erreur		= false;
	var Display_Minimum_Erreur	= true;
	var Display_Middle_Erreur	= true;
	var Display_Maximum_Erreur	= true;
	//
	var _pagination				= new Boolean(false);
	var _pagination_limit		= null;
	var _pagination_limitstart	= null;
	//
	var _ordering				= new Boolean(false);
	var _ordering_order			= null;
	var _ordering_dir			= null;
	//
	var __act_scrollTop 		= null;
	var __modifScrollOnReceived	= false;
	var __moveIndicOnScroll		= false;
	var __lighbox_enable		= false;
	//var __act_clientheight 		= null;
//Strings des erreurs
	var ErString_0000			= '<strong>Erreur:</strong> ';
	var ErString_0001			= 'Votre navigateur ne supporte pas les objets XMLHTTPRequest...';
	var ErString_0002			= 'Aucune donn&eacute;es renvoy&eacute;es par le serveur...<br />Veuillez relancer votre navigateur.';
	var ErString_0003			= 'Time Out...';
	var ErString_0010			= 'Expression function incorrecte';
	var ErString_0011			= 'Evaluation function impossible'
	var ErString_0012			= 'Expression incorrecte';
	var ErString_0013			= 'Evaluation impossible';
	var ErString_0014			= 'Erreur de connexion au serveur de donn\351e';
		
	var_initialisation = function(){
		url_default_ini			= new String('apog_webengin_action.php');
		param_default_ini		= new String('action');
		DataCom					= new Array();	
		DataStock				= new Array();
		choix					= new String(null);
		id_html_general			= new String(null);
		id_DataLoad				= new String(null);
		param_DataLoad			= new String(null);
		_save_choix				= new String(null);
		_save_param				= new String(null);
		_save_id				= new String(null);
		_save_state				= new Number(0);
		DataLoad_Ok				= new Boolean(false);
		_save_functionVar		= new String(null);
		timerGeneral			= null;
		timerErreur				= null;
		WidthOfScreen			= null;
		HeightOfScreen			= null;
		connection				= true;
		_pagination				= new Boolean(false);
		_pagination_limit		= null;
		_pagination_limitstart	= null;
		_ordering				= new Boolean(false);
		_ordering_order			= null;
		_ordering_dir			= null;
	}
	//===============================================================
	//================        PUBLIC FUNCTION    ====================	
	this.Data_Init = function(id){
		createCorpArrayFind();
		var_initialisation();
		Hide_Load_Erreur();
		//===============================================================
		//================        Event Capture      ====================		
		if (AjaxCom_ns4 || AjaxCom_ns6) {	//firefox
			window.onkeydown = this.Event_refresh;
			//window.onbeforeunload = this.Event_OnBeforeUnLoad;
			//window.onunload = this.Event_OnUnLoad;
			//document.write('<_frameset rows="99%,1*" border="0" onbeforeunload="'+this.Event_OnBeforeUnLoad+'">')
		}else{//ie
			document.onkeydown = this.Event_refresh;
			//window.onbeforeunload = this.Event_OnBeforeUnLoad;
			//window.onunload = this.Event_OnUnLoad;
		}
		if ( this.__moveIndicOnScroll == true ){
			if ( AjaxCom_ffx ){
				document.onscroll	= this.moveIndicatorOnScroll;
			}else if ( AjaxCom_ie4 ) {
				window.onscroll		= this.moveIndicatorOnScroll;
			}else if ( AjaxCom_ns4 || AjaxCom_ns6 ) {
				document.captureEvents(Event.SCROLL);
				document.onscroll	= this.moveIndicatorOnScroll;		
			}
		}
		id_html_general = id;
		Data_Load('Data_Init', null, id);
	}
	
	
	 this._load = function( _page, _value, _task, _target, _param, _callback ){
		if ( _param == null ) var _param = new Array();
		_param['components'] = _value;
		_param['task'] = _task;
		Components_Load(_page, _param, _target, _callback);
	}
		
	
	
	
	this.currentSend = function(){ return !DataLoad_Ok;}
	this.Test_Connect = function(tmp, id){ Data_Load('Test_Connect', tmp, id); }
	this.Event_OnUnLoad = function(event){ window.close(); }
	this.Load = function(choix, param, id, functionload){ Data_Load(choix, param, id, functionload); }
	this.Print = function(param, type){ Print_fileDoc('Print', param, type); }
	this.Load_file = function(id, type){ Load_fileDoc(id, type); }
	this.Page = function(choix, param, id, functionload){ Page_Load(choix, param, id, functionload);	}
	//this.Read_Data = function(value){ return DataStock[value]; }
	this.getStockValue = function(){ if (Data != null) return	Data; }
	this.resetStockValue = function(){ Data = null; }
	
	this.Deconnection = function(tmp, id, redirect){
		if (!id) id = id_html_general;
		if ( tmp == null ) var tmp = new Array();
		if ( redirect != null ) tmp['header_redirect'] = true;
		Data_Load('Deconnection', tmp, id);
		DataCom['page'] = url_default_ini;
		DataCom['param'] = param_default_ini;
	}
	
	this.sleep = function(time){
		var start = date.getTime();
		while(start+time > date.getTime()) true;
		return;
	}

	this.Event_OnBeforeUnLoad = function(event){
		if (AjaxCom_ie4) return;
		//time_OutDelay = -1;
		document.write('<form id="id_formunload" name="formunload" onsubmit="url('+ DataCom['page'] +')" target="_self" method="post"><input type="hidden" name="'+DataCom['param'].substr(0, DataCom['param'].length-1)+'" value="4" /></form>');
		document.formunload.submit();
		sleep(10000);
		if (AjaxCom_ns4 || AjaxCom_ns6) return HandleOnClose(event); // pass argument event block 		
	}

	/*this.SaveVar = function(param){
		var tmp = new Array();
		tmp[0] = createSaveParam('param', param);
		Data_Load('SaveVar', tmp);
	}

	this.LoadVar = function(param, functionCallBack){
		_save_functionVar = functionCallBack;
		var reg = new RegExp(',', 'g');
		var tmp = new Array();
		tmp[0] = 'param='+param.replace(reg, '!brvbar;');
		Data_Load('LoadVar', tmp, 'AjaxComLoadVar_callback');	
	}*/

	this.load_Tmpl = function( _value, _id, _target, _param ){
		DataLoad_Ok = false;
		if ( _target == null ) _target = '_self';
		if ( _param == null )
			var _param				= new Array();
		_param['p']				= _value;
		_param['type']			= _target;
		if ( _target == 'popup' ){
			_paramstr = createStringParam(_param);
			this.printApp( 'Load_tmpl', _paramstr, true, _value );
			return;
		}else if ( _target == '_blank' ){
			_paramstr = createStringParam(_param);
			this.printApp( 'Load_tmpl', _paramstr, false, _value );
			return;
		}else if ( _target == '_self' ){
			if ( _id == null ) _id = id_html_general;
			_param['target']		= _id;
			Page_Load('Load_tmpl', _param);
			return;
		}
		Page_Load('Load_tmpl', _param);
	}
	
	
	this.LoadImage = function( _link, _id_div, _delete_file, _styleParam ){
		DataLoad_Ok = false;
		if ( _id_div == null ) _id_div = id_html_general;
		if ( _delete_file == null ) _delete_file = false;
		if ( _styleParam == null ) _styleParam = new Array();
		var tmp = new Array();
		tmp['link']		= _link;
		tmp['delete']	= _delete_file;
		_param = createStringParam(tmp);
		if (DataCom['param']) 
			var data = DataCom['param']+'=Load_Image'+_param;
		else 
			var data = param_default_ini+'=Load_Image'+_param;
		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
			
		$str = '<img src="'+url+'?'+data+'"';
		for (var i in _styleParam ){
			$str += ' '+ i +'="'+ _styleParam[i] +'"';
		}
		$str += ' />';
		document.getElementById( _id_div ).innerHTML = $str;
		//document.getElementById( _id_div ).innerHTML = '<img src="'+url+'?'+data+'" />';
		DataLoad_Ok = true;
		
	}

	
	this.printApp = function( choix, param, popup, Title){
		DataLoad_Ok = false;
		type = '';
		if ( popup == null ) popup = true;
		if ( choix == null || choix == '') choix = 'Load_Image';
		if ( param == null ) param = '';
		if ( Title == null ){ 
			Title = 'Print';
			//type = '&type=print'
		}
		if ( choix == 'Load_tmpl'){
			type	= '&print=print';	
		}else{
			type	= '&print='+choix;	
			choix = 'Print';
		}
		
		if ( param['width'] != null )		width	= param['width']; 	else width = 750;
		if ( param['height'] != null )		height	= param['height'];	else height = 480;
		param['width'] = null;
		param['height'] = null;
		if ( typeof param == 'string' ) _param = param; 
		else _param = createStringParam(param);

		if (DataCom['param']) 
			var data = DataCom['param']+'='+choix+_param+type;
		else 
			var data = param_default_ini+'='+choix+_param+type;


		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
			
		if ( popup == false )
			window.open(url+'?'+data, Title, 'status=yes,toolbar=yes,scrollbars=yes,titlebar=yes,menubar=yes,resizable=yes,width='+width+',height='+height);
		else
			document.open(url+'?'+data, Title, 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=yes,resizable=yes,width='+width+',height='+height+',directories=no,location=no');
		DataLoad_Ok = true;
	}

	this.Event_refresh = function(e){
		var keynum = e ? e.which : window.event.keyCode;
		var keychar = String.fromCharCode(keynum);
		var numcheck = /\x74/;
		if (numcheck.test(keychar)){
			if (AjaxCom_ie4) window.event.keyCode = 0;
			Data_Load(_save_choix, _save_param, _save_id);
			return false; //false pour empecher firefox d'executer la commande global de rafraichissement
		}
		return e; //false pour empecher firefox d'executer la commande global de rafraichissement
	}
	
	/*
	*	Pagination Call
	*	@ limitstart  = Number of start draw page
	*	@ function script call (page)
	*/
	this.paginationV2 = function( _limitstart, _components, _task, _target ){
		_pagination = true;
		_pagination_limitstart = _limitstart == null ? 0 : _limitstart;	
		this._load( 'components', _components, _task, _target );
	}
	
	this.pagination = function(_limitstart, _function, _param){
		_pagination = true;
		_pagination_limitstart = _limitstart;
		try {
			if ( _param != null )
				eval(_function+'('+_param+');');
			else
				eval(_function+'();');
		}catch(err){
			alert('erreur: '+err.name);
		}
	}
	/*
	*	Pagination Call
	*	@ limit  = Number of lenght limit
	*/
	this.paginationlimitV2 = function( _limit, _components, _task, _target ){
		_pagination = true;
		_pagination_limit = _limit;
		this._load( 'components', _components, _task, _target );
	}
	
	this.paginationlimit = function(_limit, _function, _param){
		_pagination = true;
		_pagination_limit = _limit;
		try {
			if ( _param != null )
				eval(_function+'('+_param+');');
			else
				eval(_function+'();');
		}catch(err){
			alert('erreur: '+err.name);
		}
	}
	
	/*
	*
	*/
	this.tableOrderingV2 = function( _order, _dir, _components, _task, _target, _callback ){
		_ordering				= true;
		_ordering_order			= _order;
		_ordering_dir			= _dir;
		this._load( 'components', _components, _task, _target, null, _callback );
	}
	
	this.tableOrdering = function( order, dir, task, _param ){
		_ordering				= true;
		_ordering_order			= order;
		_ordering_dir			= dir;
		if (task != 'submit' && task != '') {
			try {
				if ( _param != null )
					eval(task+'('+_param+');');
				else
					eval(task+'();');
			}catch(err){
				alert('erreur: '+err.name);
			}
		}else{ form.submit();}
	}
	
	
	this.orderingItemsTool = function ( _ordering, _moveorder, _components, _task, _target ) {
		var _param = new Array();
		_param['ordering']	= _ordering;
		_param['move']		= _moveorder;
		this._load( 'components', _components, _task, _target, _param );
	}

	//===============================================================
	//================       PRIVATE FUNCTION    ====================
	paginationGet = function( _param ){
		if ( _pagination == true ){
			if (_pagination_limit != null)
				_param['limit'] = _pagination_limit;
			else
				_param['limit'] = document.hiddenForm.limit.value;
			if (_pagination_limitstart != null)
				_param['limitstart'] = _pagination_limitstart;
			else
				_param['limitstart'] = document.hiddenForm.limitstart.value;
			_param['filter_order']		= document.hiddenForm.filter_order.value;
			_param['filter_order_Dir']	= document.hiddenForm.filter_order_Dir.value;
			_pagination_limit = null;
			_pagination_limitstart = null;
			_pagination = false;
			return _param;
		}else{
			return _param;
		}
	}

	orderingGet = function( _param ) {
		if ( _ordering == true ){
			if (_ordering_order != null)
				_param['filter_order'] = _ordering_order;
			else
				_param['filter_order'] = document.hiddenForm.filter_order.value;
			if (_ordering_dir != null)
				_param['filter_order_Dir'] = _ordering_dir;
			else
				_param['filter_order_Dir'] = document.hiddenForm.filter_order_Dir.value;
			_param['limit']			= document.hiddenForm.limit.value;
			_param['limitstart']	= document.hiddenForm.limitstart.value;
			_ordering_order = null;
			_ordering_dir = null;
			_ordering = false;
			return _param;
		}else{
			return _param;
		}
	}

	AjaxComLoadVar_callback = function(value){
		var result = false;
		for (var i in value){
			DataStock[i] = value[i];
			var result = true;
		}
		if (_save_functionVar != null)
			try {
				eval(_save_functionVar+'('+result+');');
			}catch(err){
				if(err.name == 'SyntaxError') Display_Load_Erreur(ErString_0010+':'+_save_functionVar);//'Expression function incorrecte'
				else Display_Load_Erreur(ErString_0011+':'+_save_functionVar,2);//'evaluation function impossible'
			}
	}

	Read_file = function(value){
		if (DataCom['param']) 
			var data = DataCom['param']+'='+DataCom['LoadFile']+'&file='+value;
		else 
			var data = param_default_ini+DataCom['LoadFile']+'&file='+value;
		
		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
		document.open(url+'?'+data);
		
	}
	
	Print_fileDoc = function(choix, param, type){
		type = 'print';
		var optstr = param;
		if (Number(choix)){
			if (DataCom['param']) 
				var data = DataCom['param']+'='+DataCom[Number(choix)]+optstr+'&type='+type;
			else 
				var data = param_default_ini+'='+DataCom[Number(choix)]+optstr+'&type='+type;
		}else{
			if (DataCom['param']) 
				var data = DataCom['param']+'='+choix+optstr+'&type='+type;
			else 
				var data = param_default_ini+'='+choix+optstr+'&type='+type;
		}
		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
		document.open(url+'?'+data, 'Print', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=yes,resizable=yes,width=750,height=480,directories=no,location=no');
	}
	
	Load_fileDoc = function(value, type){
		if (DataCom['param']) 
			var data = DataCom['param']+'='+DataCom['FileView']+'&id='+value+'&type='+type;
		else 
			var data = param_default_ini+DataCom['FileView']+'&id='+value+'&type='+type;
		
		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
		document.open(url+'?'+data);
	}
	
	Data_Load = function(choix, param, id, functionload){
		prepar_load('data', choix, param, id, functionload);
	}
	
	Page_Load = function(choix, param, id, functionload){
		prepar_load('page', choix, param, id, functionload);		
	}

	Components_Load = function(choix, param, id, functionload){
		prepar_load('components'/*choix*/, choix, param, id, functionload);
	}
	
	prepar_load = function(type, choix, param, id, functionload){
		DataLoad_Ok = false;
		param = paginationGet( param );
		param = orderingGet( param );
		//gestion des params
		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
		
		var data = '';
		if ( typeof(choix) == 'Number' || Number(choix) ){
			if ( DataCom['param'] ) 
				data = DataCom['param']+'='+DataCom[Number(choix)];//+createStringParam(param);
			else 
				data = param_default_ini+'='+DataCom[Number(choix)];//+createStringParam(param);
		}else{
			if ( DataCom['param'] ) 
				data = DataCom['param']+'='+choix;//+createStringParam(param);
			else 
				data = param_default_ini+'='+choix;//+createStringParam(param);
		}
		if ( param != null ) data +=	createStringParam(param);
		xhr_object_gestion( type, url, data, id, functionload );
	}
	
	xhr_object_gestion = function(type, url, data, id, functionload){
		var closing  = (time_OutDelay < 0);
		var xhr_object = null;
		if (window.XMLHttpRequest) xhr_object = new XMLHttpRequest(); else
		if (window.ActiveXObject) xhr_object = new ActiveXObject('Microsoft.XMLHTTP');else
		{ // XMLHttpRequest non supporte par le navigateur 
	   		Display_Load_Erreur(ErString_0001); //"Votre navigateur ne supporte pas les objets XMLHTTPRequest..."
	   		return; 
		}
		id_DataLoad			= id;
		type_DataLoad		= type;
		function_DataLoad	= functionload;
		xhr_object.open('POST', url, true);//
		//Send the proper header information along with the request
		xhr_object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		xhr_object.setRequestHeader('Content-length', data.length);
		xhr_object.setRequestHeader('Connection', 'close');
		//
		xhr_object.onreadystatechange = function(){
			if ( xhr_object.readyState == 4){
				if (_save_state == 3){
					if( xhr_object.responseText.indexOf( '<b>Parse error</b>' ) > 0) {
						if (xhr_object.responseText.indexOf( "eval()'d code</b> on line <b>1</b>" ) > 0 )
							alert(ErString_0014);
						else
							alert(xhr_object.responseText);
					}
					if ( xhr_object.responseText.indexOf( '<b>Fatal error</b>' ) > 0) {
						alert( xhr_object.responseText );
					}
					evalok = eval_Text(xhr_object.responseText, true);
					if ( ( !evalok && type_DataLoad != 'data' ) || 
						  ( evalok && xhr_object.responseText.indexOf( '<' ) === 0) ){
							try {
								document.getElementById(id_DataLoad).innerHTML = xhr_object.responseText;
							} catch(err) {
								//alert( err.name );
								DataCom['communication']				= new Array();
								DataCom['communication']['datatype']	= 'echo';
								DataCom['communication']['echo']		= xhr_object.responseText;
								DataCom['communication']['id_target']	= id_DataLoad;
							}
					}
					type_DataLoad = 'data'
					records_multiple();
					DataLoad_Ok = true;
				}else{
					if (!closing){
						DataLoad_Ok = false;
						timerTimeOut_function(ErString_0002, 'data load 2\n'+xhr_object.responseText);//"Aucune donnees renvoyees par le serveur..."
					}
				}
			}else
				_save_state = xhr_object.readyState;
		}
		
		if (!closing){
			clearTimeout(this.timerTimeOut);
			//timerTimeOut = setTimeout("timerTimeOut_function('','data_load to:"+time_OutDelay+"')",time_OutDelay);
			timerGeneral = setInterval("timerGeneral_function()",100);
		}
		
		this.timerSendData_obj = xhr_object;
		this.timerSendData_data = data;
    	this.timerSendData = setTimeout("timer_senddata()", time_delaysendData);
		Show_Load_Indic();			
		
	}
	
	function Traitement_Data(Data){
			//if ( typeof(Data) != 'object' || Data == null || Data == 'null' ) return;
			if ( Data == null ) return;
			var id				= Data['id_target'] ? Data['id_target'] : id_DataLoad ? id_DataLoad : id_html_general;
			var param			= Data['param'] ? Data['param'] : param_DataLoad ? param_DataLoad : '';
			var type			= Data['datatype'] ? Data['datatype'] : '';
			var functionLoad	= Data['loadresultfunction'] ? Data['loadresultfunction'] : '';
			var load_resultpage	= Data['loadresultpage'] ? Data['loadresultpage'] : '';
			var echo			= Data['echo'] ? Data['echo'] : '';				 
			var value			= Data['value'] ? Data['value'] : '';
			var stockfunction	= Data['function'] ? Data['function'] : '';
			switch(type){
				case 'datacom':
					Data_Load(load_resultpage, param, id);
					return;
				break;
				case 'page':
					Page_Load(load_resultpage, param, id, functionLoad);
					return;
				break;
				case 'components':
					var components	= Data['components'] ? Data['components'] : 'connect';
					var task 		= Data['task'] ? Data['task'] : 'view';
					var target 		= Data['target'] ? Data['target'] : id_html_general;
					var tmp = new Array();
					tmp['components'] = components;
					tmp['task'] = task;
					Components_Load('components', tmp, target);
					return;
				break;
				case 'header':
					change_header(value);
				break;
				case 'echo':
					document.getElementById(id).innerHTML = echo;
				break;
				case 'function':
					try {
						eval(functionLoad);
					}catch(err){
						if(err.name == 'SyntaxError') Display_Load_Erreur(ErString_0010);//'Expression function incorrecte'
						else Display_Load_Erreur(ErString_0011,2);//'evaluation function impossible'
					}
				break;
				case 'stockvalue':
					if ( stockfunction != '' ){
						try {
							eval(stockfunction+'(value)');
					   	}catch(err){
							if(err.name == 'SyntaxError') Display_Load_Erreur(ErString_0010);//'Expression function incorrecte'
							else Display_Load_Erreur(ErString_0011,3);//'evaluation function impossible'
						}
					}else{
						_save_functionVar = null;
						AjaxComLoadVar_callback(value);
					}
				break;
				case 'readfile':
					Read_file(echo);
				break;
			}
			multipleReceive_task();
			Hide_Load_Indic();
			return;
	}
	
	change_header=  function(value){
		window.location = value;
	}
	
	multipleReceive_task = function(){
			param = pop_multiple();
			Traitement_Data( param );
	}
	
	/*
	*		******************
	*		* Timer Function *
	*		******************
	*/
	
	push_multiple = function( param ){
		if ( typeof(DataComMultiple) != 'object' || DataComMultiple == null || DataComMultiple.length <= 0 ) DataComMultiple = new Array(); 
		DataComMultiple.push( param );
	}
	
	pop_multiple = function(){
		if ( typeof(DataComMultiple) != 'object' || DataComMultiple == null || DataComMultiple.length <= 0 ) return null;
		if ( DataComMultiple.length == 1 && DataComMultiple[0]['loadresultpage'] != 'JSAfterLoad' ){
			
			if ( __lighbox_enable == true ) {
				jsAfter = new Array();
				jsAfter['datatype']				= 'function';
				jsAfter['loadresultfunction']	= 'Mediabox.scanPage();';
				push_multiple( jsAfter );
			}
			
			jsAfter = new Array();
			jsAfter['datatype']			= 'datacom';
			jsAfter['loadresultpage']	= 'JSAfterLoad';
			push_multiple( jsAfter );
		}
		param = DataComMultiple.shift();
		return param;
	}	
	
	get_valide_multiple = function(){
		return (DataComMultiple.length > 0);
	}
	
	push_multiple_function = function( _function ){
		var param = new Array();
		param['datatype']			= 'function';
		param['loadresultfunction']	= _function;
		push_multiple( param );
	}
	
	records_multiple = function(){
			var _function = null;
			if (!DataCom['communication']) return;
			//
			if ( DataCom['communication']['datatype'] != 'multiple' ){
				_function = null;
				if ( DataCom['communication']['loadresultfunction'] != null ){
					_function = DataCom['communication']['loadresultfunction'];
					delete DataCom['communication']['loadresultfunction'];
				}
				push_multiple( DataCom['communication'] );
				if ( _function != null ){
					push_multiple_function( _function );
				}
			}			
			
			if ( function_DataLoad != null ){
				push_multiple_function( function_DataLoad );
				function_DataLoad			= null;
			}	
			
			if ( DataCom['communication']['datatype'] == 'multiple' ){
					for (var i in DataCom['communication']['multiple']){
						var _function = null;
						if ( DataCom['communication']['multiple'][i]['loadresultfunction'] != null ){
							_function = DataCom['communication']['multiple'][i]['loadresultfunction'];
							delete DataCom['communication']['multiple'][i]['loadresultfunction'];
						}
						push_multiple( DataCom['communication']['multiple'][i] );
						if ( _function != null ){
							push_multiple_function( _function );
						}
					}
					
			}
			delete DataCom['communication']['multiple'];
			delete DataCom['communication'];								
	}
	
	
	timerGeneral_function = function(){
		if (__modifScrollOnReceived == true ) this.getDefaultScrollTop();
		if (DataLoad_Ok == true){
			DataLoad_Ok = false;
			Hide_Load_Indic();
			clearInterval(timerGeneral);
			clearTimeout(this.timerSendData);
			clearTimeout(this.timerErreur);
			multipleReceive_task();
			if (__modifScrollOnReceived == true ) this.setDefaultScrollTop();
		}
	}
	
	timer_senddata = function(){
		clearTimeout(this.timerSendData);
		//timerGeneral = setInterval("timerGeneral_function()",100);
		this.timerSendData_obj.send(this.timerSendData_data);
	}
	
	timerErreur_function = function(){
		clearTimeout(this.timerErreur);
		var Indicobjerreur = AjaxCom_ie4? document.all.id_AjaxCom_Load_Indic_erreur : AjaxCom_ns6? document.getElementById('id_AjaxCom_Load_Indic_erreur') : AjaxCom_ns4? document.id_AjaxCom_Load_Indic_erreur : '';
		Indicobjerreur.innerHTML = '';
		this.Hide_Load_Indic();
	}
	
	timerDisplay_Erreur_function = function(){
		clearTimeout(this.timerErreur);
		var Erreurobj = AjaxCom_ie4? document.all.id_AjaxCom_Erreur_Text : AjaxCom_ns6? document.getElementById('id_AjaxCom_Erreur_Text') : AjaxCom_ns4? document.id_AjaxCom_Erreur_Text : '';
		Erreurobj.innerHTML = '';
		this.Hide_Load_Erreur();
	}
	
	timerTimeOut_function = function(message, debug_callfunction){
		clearInterval(timerGeneral);
		clearTimeout(this.timerTimeOut);
		var Indicobjerreur = AjaxCom_ie4? document.all.id_AjaxCom_Load_Indic_erreur : AjaxCom_ns6? document.getElementById('id_AjaxCom_Load_Indic_erreur') : AjaxCom_ns4? document.id_AjaxCom_Load_Indic_erreur : '';
		if (!message || message == '') message = ErString_0003; //'Time Out...'
		Indicobjerreur.innerHTML = ErString_0000+message;
		message = '';
		this.timerErreur = this.setTimeout('this.timerErreur_function()',time_delay);
	}
	
	
	/*
	*		**************************
	*		* ALL Indicator Function *
	*		**************************
	*/

	Show_Load_Indic = function(){
		var Indicobjerreur = AjaxCom_ie4? document.all.id_AjaxCom_Load_Indic_erreur : AjaxCom_ns6? document.getElementById('id_AjaxCom_Load_Indic_erreur') : AjaxCom_ns4? document.id_AjaxCom_Load_Indic_erreur : '';
		Indicobjerreur.innerHTML = '';		
		var Indicobj = AjaxCom_ie4? document.all.id_AjaxCom_Load_Indic : AjaxCom_ns6? document.getElementById('id_AjaxCom_Load_Indic') : AjaxCom_ns4? document.id_AjaxCom_Load_Indic : '';
		Indicobj.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? Indicobj.style : Indicobj;
		Indicobj.thestyle.visibility='visible';
		Show_Indicateur();
	}
	
	Hide_Load_Indic = function(){
		var Indicobj = AjaxCom_ie4? document.all.id_AjaxCom_Load_Indic : AjaxCom_ns6? document.getElementById('id_AjaxCom_Load_Indic') : AjaxCom_ns4? document.id_AjaxCom_Load_Indic : '';
		Indicobj.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? Indicobj.style : Indicobj;
		Indicobj.thestyle.visibility=(AjaxCom_ie4||AjaxCom_ns6)? 'hidden' : 'hide';
		Hide_Indicateur();
	}

	Display_Load_Erreur = function(message, Importance){//Importance 1 haute, 2 moyen, 3 minime -> default moyenne
		if (!Display_All_Erreur) return;
		if (!Importance) Importance = 2;
		if (!Display_Minimum_Erreur && Importance==3) return;
		if (!Display_Middle_Erreur && Importance==2) return;
		if (!Display_Maximum_Erreur && Importance==1) return;
		var Erreurobj = AjaxCom_ie4? document.all.id_AjaxCom_Erreur_Text : AjaxCom_ns6? document.getElementById('id_AjaxCom_Erreur_Text') : AjaxCom_ns4? document.id_AjaxCom_Erreur_Text : '';//id_AjaxCom_Erreur_Text
		if (!message || message == '') var message = ErString_0009; //'Time Out...'
		Erreurobj.innerHTML = message;
		Show_Load_Erreur();
		this.timerErreur = this.setTimeout('this.timerDisplay_Erreur_function()',time_Erreur);	
	}
	
	Show_Load_Erreur = function(){
		var Erreurobj = AjaxCom_ie4? document.all.id_AjaxCom_Erreur : AjaxCom_ns6? document.getElementById('id_AjaxCom_Erreur') : AjaxCom_ns4? document.id_AjaxCom_Erreur : '';
		Erreurobj.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? Erreurobj.style : Erreurobj;
		Erreurobj.thestyle.visibility='visible';
		Show_Indicateur();
	}
	
	Hide_Load_Erreur = function(){
		clearTimeout(this.timerTimeOut);
		clearTimeout(this.timerErreur);
		clearInterval(timerGeneral);
		var Erreurobj = AjaxCom_ie4? document.all.id_AjaxCom_Erreur : AjaxCom_ns6? document.getElementById('id_AjaxCom_Erreur') : AjaxCom_ns4? document.id_AjaxCom_Erreur : '';
		Erreurobj.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? Erreurobj.style : Erreurobj;
		Erreurobj.innerHTML = '';
		Erreurobj.thestyle.visibility=(AjaxCom_ie4||AjaxCom_ns6)? 'hidden' : 'hide';
		Hide_Indicateur();
	}	
	
	Show_Indicateur = function(){
		var Erreurobj = AjaxCom_ie4? document.all.id_AjaxCom_Control : AjaxCom_ns6? document.getElementById('id_AjaxCom_Control') : AjaxCom_ns4? document.id_AjaxCom_Control : '';
		Erreurobj.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? Erreurobj.style : Erreurobj;
		Erreurobj.thestyle.visibility='visible';
		
		var topobject = AjaxCom_ie4? document.all.id_AjaxCom_Control : AjaxCom_ns6? document.getElementById('id_AjaxCom_Control') : AjaxCom_ns4? document.id_AjaxCom_Control : '';
		topobject.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? topobject.style : topobject;
	}
	
	Hide_Indicateur = function(){
		var Erreurobj = AjaxCom_ie4? document.all.id_AjaxCom_Control : AjaxCom_ns6? document.getElementById('id_AjaxCom_Control') : AjaxCom_ns4? document.id_AjaxCom_Control : '';
		Erreurobj.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? Erreurobj.style : Erreurobj;
		Erreurobj.thestyle.visibility=(AjaxCom_ie4||AjaxCom_ns6)? 'hidden' : 'hide';	
	}	
	
	this.moveIndicatorOnScroll = function ( event ){
		var _object = document.getElementById('id_AjaxCom_Control');
		_object.thestyle=(AjaxCom_ie4||AjaxCom_ns6)? _object.style : _object;
		_object.thestyle.top = ( getBrowserInnerTop()+200 )+'px';
	}
	/*
	*		*******************
	*		* Function Commun *
	*		*******************
	*/
	
	getBrowserInnerTop = function() {
		if (document.documentElement) return document.documentElement.scrollTop;
		else if (document.body)	return document.body.scrollTop;
		else if (self.pageYOffset) return self.pageYOffset;
		return 0;
	}
	
	
	eval_Text = function(txt_value, nodisperror){
		try {
			eval(txt_value);
		} catch(err) {
			if (nodisperror == true) return false;
			if(err.name == 'SyntaxError') Display_Load_Erreur(ErString_0012);//'Expression incorrecte'
			else Display_Load_Erreur(ErString_0013,3);//'evaluation impossible'
			return false;
		}
		return true;
	}
	
	createCorpArrayFind = function(){
			var ArraySearch = Array();
			for (var i in ArraySearch ){
					corpArrayFind.push( i );
			}
	}

	Arrayfind = function(str, _array) {
		result = false;
		for ( var i in _array ){
			if ( _array[i] === str ) result = true;
		}
		return result;
	}
	
	createStringParam = function(Param,first){
		if ( typeof( Param ) != 'object' || Param == null || Param == 'null' ) return '';
		var tmp = '';
		var k=0;
		for (var i in Param ){
			if (Param[i] != null){
				if ( Arrayfind( i, corpArrayFind  ) === false )
					if (first && k==0)
						tmp += '?'+i+'='+Param[i];
					else
						tmp += '&'+i+'='+Param[i];
					k++;
			}
		}	
		return tmp;
	}
	
	createSaveParam = function(Name, Param){
		var tmp = '';
		var k=0;
		for (var i in Param ){
			if (k!=0)
				tmp += '!brvbar;';
			tmp += i + '!equiv;' + replaceAndComByTild(Param[i]);
			k++;
		}
		return (Name + '=' +tmp);
	}
	
	replaceAndComByTild = function(Param){
		var regneg = new RegExp('-', 'g');
		var regandco = new RegExp('&', 'g');		
		var str = Param.replace(regneg, '&ndash;');
		return str.replace(regandco, '-');
	}
	
	generaterandomcle = function(nbre){
		var cle = ''; 
		if (!nbre) nbre = 16;
		var s='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
		for (var i=0; i < nbre; i++) 
		{ 
			cle = cle + s.substr(Math.random()*61, 1);
		}
		return cle;
	}
	
	print_r = function(tab, t){
		result = '';
		if (!t) t='';
		for(var i in tab){
			if(typeof(tab[i]) == 'object')
				result = result + print_r(tab[i],t+'['+i+']');
			else
				result = result + t + '['+ i + ']=' + tab[i] + '\n';
		}
		return result;
	}
	
	this.pr = function(tab, t){
		
		return 	print_r(tab, t);
	}
	this.setDefaultScrollTop = function(){
		if (document.documentElement) var __act_clientheight = document.documentElement.clientHeight;
		else if (document.body) var __act_clientheight = document.body.clientHeight;
		else if (self.pageYOffset) var __act_clientheight = self.clientHeight;	
		if ( __act_clientheight < __act_scrollTop){
			if (document.documentElement) document.documentElement.scrollTop = 0;
			else if (document.body)	document.body.scrollTop = 0;
			else if (self.pageYOffset) self.pageYOffset = 0;	
		}
	}
	
	this.setScrollTop = function( _value ){
			if (document.documentElement) document.documentElement.scrollTop = _value;
			else if (document.body)	document.body.scrollTop = _value;
			else if (self.pageYOffset) self.pageYOffset = _value;	
	}
		
	this.getDefaultScrollTop = function(){
		if (document.documentElement) __act_scrollTop = document.documentElement.scrollTop;
		else if (document.body)	__act_scrollTop = document.body.scrollTop;
		else if (self.pageYOffset) __act_scrollTop = self.pageYOffset;
	}
	
	this.getUrl = function(){
		if (DataCom['param']) 
			var data = DataCom['param'];
		else 
			var data = param_default_ini;
		if (DataCom['page'])
			var url = DataCom['page'];
		else
			var url = url_default_ini;
		return url+'?'+data;
	}
}

