// JavaScript Document
//		<body onload='document.protect.screenwidth.value = screen.width;document.protect.user.focus();'>
var ajaxcom = {
	//window.disableExternalCapture();
	className				: 'ajaxcom',
	language				: 'fr',
	availablePlugins		: new Array( 'ahistory', 'aindicator', 'amessage' ),
	//===============================================================
	//=================       PRIVATE VAR      ======================
	xmlUploadHttp			: null,	//var For Upload
	essaicompteur			: 0,
	connection				: false,
	time_delay				: 5000,
	time_OutDelay			: 30000, // temp en milisecondes du time out de communication
	time_delaysendData		: 100,
	url_default_ini			: new String(),
	folder_base_doc			: '',
	param_default_ini		: new String(),
	DataCom					: new Array(),
	DataComMultiple			: new Array(),
	DataStock				: new Array(),
	choix					: new String(null),
	id_html_general			: new String(null),
	_scriptsAfterLoad		: new Array(),
	/**/
	DataLoad_Ok				: new Boolean(false),
	id_DataLoad				: new String(null),
	type_DataLoad			: new String(null),
	function_DataLoad		: new String(null),
	param_DataLoad			: new String(null),
	//_js_after_load			: false,
	/**/
	_ahistoryEnable			: false,
	_aindicatorEnable		: false,
	_amessageEnable			: false,
	/**/
	_save_choix				: new String(null),
	_save_param				: new String(null),
	_save_id				: new String(null),
	_save_readyState		: new Number(0),
	_save_functionVar		: new String(null),
	_saveidmultiple			: null,
	/**/
	timerGeneral			: null,
	timerTimeOut			: null,
	timerSendData			: null,
	timerSendData_obj		: null,
	timerSendData_data		: new String(null),
	timerSendData_phistory	: null,
	//
	_hiddenParam			: new Array(),
	//
	_array_error_list		: new Array(),
	_save_target_error_text	: null,
	//
	_pagination				: new Boolean(false),
	_pagination_limit		: null,
	_pagination_limitstart	: null,
	//
	_ordering				: new Boolean(false),
	_ordering_order			: null,
	_ordering_dir			: null,
	//
	__modifScrollOnReceived	: false,
	//__lighbox_enable		: false,
	//var __act_clientheight 		= null;
//Strings des erreurs

		
	translate: function( s ){
			return translate( this, s );
	},	
	
	getObject: function(){
			_object = null;
			if ( isIE  ){
				_object = window;
			}else{
				_object = document;
			}
			return _object;
	},
	
	init: function( v ){
		if ( !v ) return;
		var t = this;
		if ( v.document_base_url ){ t.baseURL = v.document_base_url; }
		if ( v.language ){ t.language = v.language; }
		if ( v.url_default_ini ){ t.url_default_ini = v.url_default_ini; }
		if ( v.param_default_ini ){ t.param_default_ini = v.param_default_ini; }
		if ( v.id_html_general ){ t.id_html_general = v.id_html_general; }
		if ( v.folder_base_doc ){ t.folder_base_doc = v.folder_base_doc; }
		window.onload = ajaxcom.onLoad;
		document.write( '<div id="'+ this.className +'PrintDivTemp" style="position:absolute; display:none;"></div><div id="'+ this.className +'tempCallback" style="position:absolute; display:none;"></div>' );
	},
	
	eventsInit: function(){
		var t = this;
		//===============================================================
		//================        Event Capture      ====================				
		/* General Event */
		JEvent.addEvent( 'beforeload', t.onBeforeload );
		JEvent.addEvent( 'afterload', t.onAfterload );
		/* History event */
		if ( t._ahistoryEnable == true ){
			JEvent.addEvent( 'backward', t.onBackward );
			JEvent.addEvent( 'forward', t.onForward );
			JEvent.addEvent( 'link', t.onLink );
		}
	},
	/*
	initialize: function() {
		this.var_initialisation();
		//if ( this.pbaseURL == '' ) this.pbaseURL = this.baseURL + 'js/';
		//u = this.pbaseURL + 'langs/' + this.language + '.js';
	},*/
	
	var_initialisation: function(){
		var t = this/*, d = document, w = window, na = navigator, ua = na.userAgent*/;		
		t.DataCom					= new Array();	
		t.DataStock					= new Array();
		t.choix						= new String(null);
		//t.id_html_general			= new String(null);
		t.id_DataLoad				= new String(null);
		t.param_DataLoad			= new String(null);
		t._save_choix				= new String(null);
		t._save_param				= new String(null);
		t._save_id					= new String(null);
		t._save_state				= new Number(0);
		t.DataLoad_Ok				= new Boolean(false);
		t._save_functionVar			= new String(null);
		t.timerGeneral				= null;
		t.connection				= true;
		t._pagination				= new Boolean(false);
		t._pagination_limit			= null;
		t._pagination_limitstart	= null;
		t._ordering					= new Boolean(false);
		t._ordering_order			= null;
		t._ordering_dir				= null;
		t.check_plugin( t.availablePlugins );
		loadLangs( this.baseURL +'/plugins/system/ajaxcom/langs/'+ this.language +'.js' );
	},
	
	check_plugin: function( v ){
		if ( typeof v == 'string' )
			v = new Array( v );
		if ( typeof v == 'object' ){
			for( i in v ){
				try {
					if ( class_exist( v[ i ] ) ){
						var _e = 'ajaxcom._'+ v[i] +'Enable = true;';
						eval( _e );
					}
				}catch(err){
						//eval( _e+'true' );
				}
				
			}
		}	
	},

	/**
	 *
	 */
	push_history: function(type, choix, param, id, functionload){
		_param = Array();
		_param['type']			= type;
		_param['choix']			= choix;
		_param['param']			= param;
		_param['id']			= id;
		_param['functionload']	= functionload;
		ahistory.push( _param );
	},
	
	/* On Document Load - Init Com Class */
	onLoad: function(id){
		var t = ajaxcom;
		if ( id != null ) t.id_html_general = id;
		t.var_initialisation();
		t.eventsInit();
		t.Hide_Load_Erreur();
		t.Data_Load('data_init', null, t.id_html_general);
	},
	
	onBackward: function( event ){
		_param = ahistory.get();
		ajaxcom.prepar_load( _param['type'], _param['choix'], _param['param'], _param['id'], _param['functionload']);
	},
	
	onForward: function( event ){
		_param = ahistory.get();
		ajaxcom.prepar_load( _param['type'], _param['choix'], _param['param'], _param['id'], _param['functionload']);
	},
	
	onLink: function( event ){
		_param = ahistory.get();
		ajaxcom.prepar_load( _param['type'], _param['choix'], _param['param'], _param['id'], _param['functionload']);
	},
	
	onAfterload: function( event ){
		ajaxcom.execAfterLoad();
		//autils.printElement( 'head' );
	},
	
	onBeforeload: function( event ){
		//autils.printElement( 'head' );
	},
	
	Event_OnBeforeUnLoad: function(event){
		if (this.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();
		this.sleep(10000);
		if (navigatorTest('nsx')) return HandleOnClose(event); // pass argument event block 		
	},
	
	onRefresh: function(e){
		//alert( 'refresh' );
		var keynum = e ? e.which : window.event.keyCode;
		var keychar = String.fromCharCode(keynum);
		var numcheck = /\x74/;
		if (numcheck.test(keychar)){
			if (navigatorTest('ie4')) window.event.keyCode = 0;
			this.Data_Load( this._save_choix, this._save_param, this._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
	},
	
	/**
	 *
	 */
	
	Data_Load: function(choix, param, id, functionload){
		this.prepar_load('data', choix, param, id, functionload);
	},
	
	Page_Load: function(choix, param, id, functionload){
		this.prepar_load('page', choix, param, id, functionload);		
	},
		
	//===============================================================
	//================        PUBLIC FUNCTION    ====================	

	component: function( _component, _task, _target, _param, _callback ){
		if ( _param == null ) var _param = new Array();
		_param['components']	= _component;
		_param['task']			= _task;
		this.prepar_load('components', 'components', _param, _target, _callback, true);
		/*if ( this._ahistoryEnable == true )
				this.push_history('components', 'components', _param, _target, _callback);*/
	},
	
	componentSendForm: function( _component, _task, _form, _target, _param, _callback ){
		if ( _param == null ) var _param = new Array();
		this.setdefaut_error();
		_param = getForm( _form, _param );
		this.component( _component, _task, _target, _param, _callback );
	},
	
	pluginTask: function( _plugin, _task, _param, _target, _callback ){
		if ( _param == null ) var _param = new Array();
		_param['plugin']	= _plugin;
		_param['plg_task']	= _task;
		this.prepar_load('plugin', 'plugin', _param, _target, _callback, false);
	},
	
	/* WIP - EXPERIMENTATION */
	componentPrint: function( _component, _task, _param ){
		this.component( _component, _task,  this.className +'PrintDivTemp', _param, 'ajaxcom.printpopup("'+ this.className +'PrintDivTemp")' );
	},
	/* WIP - EXPERIMENTATION */
	printpopup: function( id ){
		var object = $( id );
		title = 'Print';
		if ( _param['title'] != null ){ var title = _param['title']; _param['title'] = null;}
		popup = false;
		if ( _param['popup'] != null ){ var popup = _param['popup']; _param['popup'] = null;}
		width = 750;
		if ( _param['width'] != null ){ var width = _param['width']; _param['width'] = null;}
		height = 480;
		if ( _param['height'] != null ){ var height = _param['height']; _param['height'] = null;}
		var obj_popup = window.open('', title, 'status=yes,toolbar=yes,scrollbars=yes,titlebar=yes,menubar=yes,resizable=yes,width='+width+',height='+height);
		obj_popup.document.write( object.innerHTML );
	},
	
	load_image: function( _url, _target, _width, _height, _onclick ){
		if ( !_url || !_target ) return;
		var f = $( _target );
		var _param = this.return_value( 'getimagesize', _url );
		if ( _param != null ) {
			_width = !_width ? _param['width'] ? _param['width'] : '' : _width;
			_height = !_height ? _param['height'] ? _param['height'] : '' : _height;
			_onclick = !_onclick ? _param['onclick'] ? _param['onclick'] : '' : _onclick;
			if ( _onclick ) _onclick = 'onclick="' + _onclick +'"';
			if ( f.tagName == 'IMG' ){
				f.width = _width;
				f.height = _height;
				f.onclick = _onclick;
				f.src = this.getBaseDoc() +"/"+ _url;
			}else
				f.innerHTML = '<IMG src="'+ this.getBaseDoc() +"/"+ _url +'" width="'+ _width +'" height="'+ _height +'" '+ _onclick +'/>';
		}
		
		//var d = getById( 'target_essai' );
		//d.innerHTML = autils.printTagProperty( d, true );
	},
	
	loadFile: function( filename, name, deletefile ){
		var _param = new Array();
		_param['file'] = filename;	
		if ( name != null && name != '' ) _param['name'] = name;
		if ( deletefile != null ) _param['delete'] = 'false';
		var url = this.prepar_url();
		var data = this.prepar_data( 'downloadfile', _param );
		//document.open(url+'?'+data);
		//this.prepar_load('components', 'downloadfile', _param );
		window.open(url+'?'+data);
	},
	
	
	printdiv: function( id, _param ){
		if ( isIE )
			var d = 'document';
		else
			var d = 'window';
		var object = $( id );
		if ( _param == null ) var _param = new Array();
		var title = 'Print';
		if ( _param['title'] != null ){ title = _param['title']; _param['title'] = null;}
		var popup = false;
		if ( _param['popup'] != null ){ popup = _param['popup']; _param['popup'] = null;}
		var width = 750;
		if ( _param['width'] != null ){ width = _param['width']; _param['width'] = null;}
		var height = 480;
		if ( _param['height'] != null ){ height = _param['height']; _param['height'] = null;}
		var showprintbtn = '';
		if ( _param['showprintbtn'] != null ){
			showprintbtn = '<img src="'+this.baseURL+'images/system/printButton.png" onclick="'+ d +'.print();" style="cursor:pointer;"/>';
			_param['showprintbtn'] = null;
		}
		var reg = new RegExp('<ajaxcom_printbtn>(.+)</ajaxcom_printbtn>', 'g');
		var content = '<html>'+ autils.header2string(true) +'<body id="body" class="body">';
		content += object.innerHTML.replace(reg, showprintbtn);
		
		if ( isIE ){
			content += '</body></html>';
			document.write( content );
		}else{
			content += '<script language="JavaScript">'+ d +'.stop()</script></body></html>';
			var obj_popup = window.open(null, title, 'status=yes,toolbar=yes,scrollbars=yes,titlebar=yes,menubar=yes,resizable=yes,width='+width+',height='+height);
			obj_popup.location = 'about:blank';
			obj_popup.document.write( content );
		}
	},
	
	
	/*_print: function( _page, _value, _task, _param ){
		if ( _param == null ) var _param = new Array();
		_param['components']	= _value;	
		_param['task']			= _task;
		this.printApp(_page, _param);	
	},
	
	_load: function( _page, _value, _task, _target, _param, _callback ){
		if ( _param == null ) var _param = new Array();
		_param['components'] = _value;
		_param['task'] = _task;
		this.Components_Load(_page, _param, _target, _callback);
	}
	
	UpLoad: function( fileInput ){
				var contentType = 'application/x-www-form-urlencoded';//'application/xml';//'multipart/form-data';//'text/plain';//;
				
				var f			= $( fileInput );//document.getElementById( fileInput );
				var dest		= this.getUrl()+'=upload';//window.document.putform.dest.value;
				var filename	= f.value;
				var data		= fileInput +'='+ f.files.item(0).getAsBinary();//getAsDataURL
								//$('textsize').update($('fileupload').files.item(0).fileSize
				data			+= '&filename='+ filename;
				//var data		= f.files.item(0).getAsDataURL();
				//document.getElementById('console').innerHTML = data;
				//var file = f.files.item(0).getAsBinary();
				//alert( data.length );
				
				if (window.XMLHttpRequest) xmlUploadHttp = new XMLHttpRequest(); else
				if (window.ActiveXObject) xmlUploadHttp = new ActiveXObject('Microsoft.XMLHTTP');else
				{ // XMLHttpRequest non supporte par le navigateur 
					Display_Load_Erreur(this.translate( 'sterror._0001' )); //"Votre navigateur ne supporte pas les objets XMLHTTPRequest..."
					return; 
				}

				if(xmlUploadHttp!=null){
					//alert( dest+filename );
					xmlUploadHttp.open("PUT", dest, true);
					xmlUploadHttp.setRequestHeader('Content-type', contentType);//'text/plain');
					//xmlUploadHttp.setRequestHeader('Content-length', data.length);
					
					xmlUploadHttp.onreadystatechange=function()
					{
						if((xmlUploadHttp.readyState==4)&&(xmlUploadHttp.status == 200))
						{
							alert("File Uploaded");
						}
					}
					xmlUploadHttp.sendAsBinary(data);//sendAsBinary(data);
				}
	},*/
	
	
	currentSend: function(){ return !this.DataLoad_Ok;},
	//Test_Connect: function(tmp, id){ this.Data_Load('Test_Connect', tmp, id); },
	Event_OnUnLoad: function(event){ window.close(); },
	Load: function(choix, param, id, functionload){ this.Data_Load(choix, param, id, functionload); },
	//Print: function(param, type){ this.Print_fileDoc('Print', param, type); },
	//Load_file: function(id, type){ this.Load_fileDoc(id, type); },
	//Page:	function(choix, param, id, functionload){ this.Page_Load(choix, param, id, functionload);	},
	//Read_Data: function(value){ return this.DataStock[value]; },
	getStockValue: function(){ if (this.Data != null) return this.Data; },
	resetStockValue: function(){ this.Data = null; },
	/*
	Deconnection: function(tmp, id, redirect){
		if (!id) id = this.id_html_general;
		if ( tmp == null ) var tmp = new Array();
		if ( redirect != null ) tmp['header_redirect'] = true;
		this.Data_Load('Deconnection', tmp, id);
		this.DataCom['page']	= this.url_default_ini;
		this.DataCom['param']	= this.param_default_ini;
	},*/
	
	sleep: function(time){
		var start = date.getTime();
		while(start+time > date.getTime()) true;
		return;
	},

	return_value: function( _action, _args ){
		var _param = new Array();
		if ( _args )
			_param['args'] = _args;
		return this.xhr_object_gestion_synchrone( _action, _param );
	},
	/*SaveVar: function(param){
		var tmp = new Array();
		tmp[0] = createSaveParam('param', param);
		this.Data_Load('SaveVar', tmp);
	},

	LoadVar: function(param, functionCallBack){
		_save_functionVar = functionCallBack;
		var reg = new RegExp(',', 'g');
		var tmp = new Array();
		tmp[0] = 'param='+param.replace(reg, '!brvbar;');
		this.Data_Load('LoadVar', tmp, 'AjaxComLoadVar_callback');	
	},

	load_Tmpl: function( _value, _id, _target, _param ){
		this.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 = this.createStringParam(_param);
			this.printApp( 'Load_tmpl', _paramstr, true, _value );
			return;
		}else if ( _target == '_blank' ){
			_paramstr = this.createStringParam(_param);
			this.printApp( 'Load_tmpl', _paramstr, false, _value );
			return;
		}else if ( _target == '_self' ){
			if ( _id == null ) _id = this.id_html_general;
			_param['target']		= _id;
			this.Page_Load('Load_tmpl', _param);
			return;
		}
		this.Page_Load('Load_tmpl', _param);
	},
	
	
	LoadImage: function( _link, _id_div, _delete_file, _styleParam ){
		this.DataLoad_Ok = false;
		if ( _id_div == null ) _id_div = this.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 = this.createStringParam(tmp);
		if (this.DataCom['param']) 
			var data = this.DataCom['param']+'=Load_Image'+_param;
		else 
			var data = this.param_default_ini+'=Load_Image'+_param;
		if (this.DataCom['page'])
			var url = this.DataCom['page'];
		else
			var url = this.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+'" />';
		this.DataLoad_Ok = true;
		
	},*/

	/*
	printApp: function( choix, param, popup, Title){
		this.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 = this.createStringParam(param);

		if (this.DataCom['param']) 
			var data = this.DataCom['param']+'='+choix+_param+type;
		else 
			var data = this.param_default_ini+'='+choix+_param+type;


		if (this.DataCom['page'])
			var url = this.DataCom['page'];
		else
			var url = this.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');
		this.DataLoad_Ok = true;
	},
*/

	/*
	*	Filter Call
	*	@ filter  = value filter
	*	@ function script call (page)
	*/
	filter: function( _filter, _id, _component, _task, _target ){
		var _param = new Array();
		_param[_id]	= _filter;
		//_param = getHidden( _param );
		_param['components']	= _component;
		_param['task']			= _task;
		this.prepar_load('components', 'components', _param, _target, null);
	},
	
	/*
	*	search Call
	*	@ filter  = value search
	*	@ function script call (page)
	*/
	search: function( _search, _id, _component, _task, _target ){
		var _param = new Array();
		_param['search']		= _search;
		_param['components']	= _component;
		_param['task']			= _task;
		this.prepar_load('components', 'components', _param, _target, null);
	},
	/*
	*	Pagination Call
	*	@ limitstart  = Number of start draw page
	*	@ function script call (page)
	*/
	pagination: function( _limitstart, _component, _task, _target ){		
		var _param = new Array();
		_param['limitstart']	= _limitstart == null ? 0 : parseInt(_limitstart);
		_param['components']	= _component;
		_param['task']			= _task;
		this.prepar_load('components', 'components', _param, _target, null);
	},
	
	/*
	*	Pagination Call
	*	@ limit  = Number of lenght limit
	*/
	paginationlimit: function( _limit, _component, _task, _target ){
		var _param = new Array();
		_param['limit']			= parseInt(_limit);
		_param['components']	= _component;
		_param['task']			= _task;
		this.prepar_load('components', 'components', _param, _target, null);
	},
		
	/*
	*
	*/
	tableOrdering: function( _order, _dir, _component, _task, _target, _callback ){		
		var _param = new Array();
		_param['filter_order']		= _order;
		_param['filter_order_Dir']	= _dir;
		_param['components']		= _component;
		_param['task']				= _task;
		this.prepar_load('components', 'components', _param, _target, _callback);
	},
	
	orderingItemsTool: function ( _ordering, _moveorder, _component, _task, _target ) {
		var _param = new Array();
		_param['ordering']		= _ordering;
		_param['move']			= _moveorder;
		_param['components']	= _component;
		_param['task']			= _task;
		this.prepar_load('components', 'components', _param, _target, null);
	},

	//===============================================================
	//================       PRIVATE FUNCTION    ====================	
	getHidden: function( _param ){
		if ( _param == null )
			var _param = new Array();
		var f = document.hiddenForm; 
		if ( f ) { //return _param;
			// Step through the form elements 
			for( var i = 0; i < f.elements.length; i++ )
				if ( _param[ f.elements[i].name ] == null )
					_param[ f.elements[i].name ] = f.elements[i].value; 
		}
		/*if ( _hiddenParam.lenght > 0 )
			for (var i in _hiddenParam){
					_param[ i ] = _hiddenParam[i];
			}			
		_hiddenParam = new Array();*/
		return _param;
	},
	
	paginationGet: function( _param ){
		if ( this._pagination == true ){
			if ( this._pagination_limit != null )
				_param['limit'] = this._pagination_limit;
			else
				_param['limit'] = document.hiddenForm.limit.value;
			if ( this._pagination_limitstart != null )
				_param['limitstart'] = this._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;
			this._pagination_limit		= null;
			this._pagination_limitstart	= null;
			this._pagination			= false;
			return _param;
		}else{
			return _param;
		}
	},

	orderingGet: function( _param ) {
		if ( this._ordering == true ){
			if ( this._ordering_order != null )
				_param['filter_order'] = this._ordering_order;
			else
				_param['filter_order'] = document.hiddenForm.filter_order.value;
			if ( this._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;
			this._ordering_order	= null;
			this._ordering_dir		= null;
			this._ordering			= false;
			return _param;
		}else{
			return _param;
		}
	},

	AjaxComLoadVar_callback: function(value){
		var result = false;
		for (var i in value){
			this.DataStock[i] = value[i];
			var result = true;
		}
		if ( this._save_functionVar != null )
			//alert( value ) ;
			try {
				eval( this._save_functionVar+'('+result+');' );
			}catch(err){
				if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err/* this._save_functionVar*/ );//'Expression function incorrecte'
				else this.Display_Load_Erreur( this.translate( 'sterror._0011' ) +'<br />'+ err/*this._save_functionVar*/, 1 );//'evaluation function impossible'
			}
	},
/*
	Read_file: function(value){
		if (this.DataCom['param']) 
			var data = this.DataCom['param']+'='+this.DataCom['LoadFile']+'&file='+value;
		else 
			var data = this.param_default_ini+this.DataCom['LoadFile']+'&file='+value;
		
		if (this.DataCom['page'])
			var url = this.DataCom['page'];
		else
			var url = this.url_default_ini;
		document.open(url+'?'+data);
	},
	
	Print_fileDoc: function(choix, param, type){
		type = 'print';
		var optstr = param;
		if (Number(choix)){
			if (this.DataCom['param']) 
				var data = this.DataCom['param']+'='+this.DataCom[Number(choix)]+optstr+'&type='+type;
			else 
				var data = this.param_default_ini+'='+this.DataCom[Number(choix)]+optstr+'&type='+type;
		}else{
			if (this.DataCom['param']) 
				var data = this.DataCom['param']+'='+choix+optstr+'&type='+type;
			else 
				var data = this.param_default_ini+'='+choix+optstr+'&type='+type;
		}
		if (this.DataCom['page'])
			var url = this.DataCom['page'];
		else
			var url = this.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 (this.DataCom['param']) 
			var data = this.DataCom['param']+'='+this.DataCom['FileView']+'&id='+value+'&type='+type;
		else 
			var data = this.param_default_ini+this.DataCom['FileView']+'&id='+value+'&type='+type;
		
		if (this.DataCom['page'])
			var url = this.DataCom['page'];
		else
			var url = this.url_default_ini;
		document.open(url+'?'+data);
	},*/
	
	
	/**
	 *
	 *
	 */
	prepar_url: function(){
		if (this.DataCom['page'])
			var url = this.DataCom['page'];
		else
			var url = this.url_default_ini;
		return url;
	},
	
	prepar_data: function( choix, param, id ){
		var data = '';
		if ( typeof(choix) == 'Number' || Number(choix) ){
			if ( DataCom['param'] ) 
				data = this.DataCom['param']+'='+this.DataCom[Number(choix)];//+createStringParam(param);
			else 
				data = this.param_default_ini+'='+this.DataCom[Number(choix)];//+createStringParam(param);
		}else{
			if ( this.DataCom['param'] ) 
				data = this.DataCom['param']+'='+choix;//+createStringParam(param);
			else 
				data = this.param_default_ini+'='+choix;//+createStringParam(param);
		}
		if ( param != null ) data +=	this.createStringParam(param);
		if ( id != null ) data += '&target='+id;
		return data;
	},
	
	prepar_load: function( type, choix, param, id, functionload, pushhistory ){
		this.DataLoad_Ok = false;
		if ( this._ahistoryEnable == true && pushhistory == true )
				this.push_history(type, choix, param, id, functionload);		
		//alert( type +' - '+ choix +' - '+ param +' - '+ id );
		//alert( type );
		if ( this.DataCom[Number(choix)] == '' ) return;
		if ( param == null ) param = new Array();
		param = this.paginationGet( param ); // pagination V1 portabilité
		param = this.orderingGet( param );	// ordering V1 portabilité
		param = this.getHidden( param );
		//gestion des params
		var url = this.prepar_url();
		var data = this.prepar_data( choix, param, id );
		//alert( url +' - '+ data + ' - '+ id);
		this.xhr_object_gestion( type, url, data, id, functionload, pushhistory );
	},
	
	
	xhr_object_gestion_synchrone: function( _action, _param ){
		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 
	   		this.Display_Load_Erreur( this.translate( 'sterror._0001' ) ); //"Votre navigateur ne supporte pas les objets XMLHTTPRequest..."
	   		return; 
		}
		JEvent.fireEvent( 'beforeload' );
		var url = this.prepar_url();
		var data = this.prepar_data( _action, _param );
		xhr_object.open('POST', url +"?"+ data, false);//
		xhr_object.send( null );
		this.ready_data_loaded( xhr_object.responseText, true );
		var resultparam = this.pop_multiple();
		return this.Traitement_Data( resultparam );
	},
	
	xhr_object_gestion: function(type, url, data, id, functionload, pushhistory){
		var closing  = (this.time_OutDelay < 0);
		if ( !pushhistory ) pushhistory = false;
		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 
	   		this.Display_Load_Erreur( this.translate( 'sterror._0001' ) ); //"Votre navigateur ne supporte pas les objets XMLHTTPRequest..."
	   		return; 
		}
		
		JEvent.fireEvent( 'beforeload' );
		this.id_DataLoad		= id;
		this.type_DataLoad		= type;
		this.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-type', 'application/octet-stream');
		xhr_object.setRequestHeader('Content-length', data.length);
		xhr_object.setRequestHeader('Connection', 'close');
		//
		xhr_object.onreadystatechange = function(){
			//alert( xhr_object.readyState +'-'+xhr_object.status );
			if ( xhr_object.readyState == 4){
				//alert( xhr_object.responseText );
				ajaxcom.set_readyState( xhr_object.readyState );
				if ( xhr_object.status == 200 )
					ajaxcom.ready_data_loaded( xhr_object.responseText );
				else
					ajaxcom.Display_Load_Erreur( ajaxcom.translate( 'sterror._0004' ) );
			}else
				ajaxcom.set_readyState( xhr_object.readyState );
		}
		
		if (!closing){
			clearTimeout(this.timerTimeOut);
			//timerTimeOut = setTimeout("timerTimeOut_function('','data_load to:"+time_OutDelay+"')",time_OutDelay);
			this.timerGeneral = setInterval("ajaxcom.timerGeneral_function()",100);
		}
		
		this.timerSendData_obj = xhr_object;
		this.timerSendData_data = data;
		this.timerSendData_phistory = pushhistory;
    	this.timerSendData = setTimeout("ajaxcom.timer_senddata()", this.time_delaysendData);
		if ( this._aindicatorEnable )
			aindicator.show();
	},
	
	
	set_readyState: function( _value ){
		this._save_readyState = _value;
	},
	
	get_readyState: function( _value ){
		if ( !_value ) 
			return this._save_readyState;
		else return 4;
	},
	
	responseText_verif: function( responseText ){
		if (responseText=='') return false;
		if( responseText.indexOf( '<b>Parse error</b>' ) > 0) {
			if (responseText.indexOf( "eval()'d code</b> on line <b>1</b>" ) > 0 )
				this.Display_Load_Erreur( this.translate( 'sterror._0014' ) );//alert
			else
				this.Display_Load_Erreur( responseText );//alert
			return false;
		}
		if ( responseText.indexOf( '<b>Fatal error</b>' ) > 0) {
			this.Display_Load_Erreur( responseText );//alert
			return false;
		}
		if ( responseText.indexOf( '<br />\n<b>Warning</b>' ) >= 0) {
			this.Display_Load_Erreur( responseText );//alert
			return false;
		}
		return this.eval_Text(responseText, true);		
	},
	
	ready_data_loaded: function( responseText, forceState ){
			var _state = this.get_readyState( forceState );
			//alert( _state +'-'+ responseText );
			if (_state == 4 && responseText != '' ){
				//alert( responseText );
				var evalok = this.responseText_verif( responseText );
				if ( ( !evalok && this.type_DataLoad != 'data' ) || 
					  ( evalok && responseText.indexOf( '<' ) === 0) ){
						try {	
							$( this.id_DataLoad ).innerHTML = Base64.decode(responseText);
						} catch(err) {
							//alert( err.name );
							this.DataCom['communication']				= new Array();
							this.DataCom['communication']['datatype']	= 'echo';
							this.DataCom['communication']['value']		= Base64.decode(responseText);
							this.DataCom['communication']['target']		= this.id_DataLoad;
						}
				}
				this.type_DataLoad = 'data';
				this.records_multiple();
				this.DataLoad_Ok = true;
			}else{
				if (!this.closing){
					this.DataLoad_Ok = false;
					this.timerTimeOut_function( this.translate( 'sterror._0002' ), 'data load 2\n'+responseText );
					if ( this._ahistoryEnable == true && this.timerSendData_phistory == true ){
						this.timerSendData_phistory = false;
						ahistory.del();
					}
				}
			}
	},
	
	
	onDeconnection: function( page, param ){
		//if (!id) id = this.id_html_general;
		//if ( tmp == null ) var tmp = new Array();
		//if ( redirect != null ) tmp['header_redirect'] = true;	
		//this.onLoad();
		this.DataCom['page']	= page != null ? page : this.url_default_ini;
		this.DataCom['param']	= param != null ? param : this.param_default_ini;	
		//alert( ""+this.id_html_general );
		this.Data_Load('data_init', null, this.id_html_general);
	},
		
	
	/*Deconnection: function(tmp, id, redirect){
		if (!id) id = this.id_html_general;
		if ( tmp == null ) var tmp = new Array();
		if ( redirect != null ) tmp['header_redirect'] = true;
		this.Data_Load('Deconnection', tmp, id);
		this.DataCom['page']	= this.url_default_ini;
		this.DataCom['param']	= this.param_default_ini;
	},*/
	
	Traitement_Data: function(Data){
			if ( Data == null ) return;
			var type			= Data['datatype'] ? Data['datatype'] : '';
			switch(type){
				case 'deconnection':
					var page	= Data['page'] ? Data['page'] : null;
					var param	= Data['param'] ? Data['param'] : null;
					this.onDeconnection( page, param );
				break;
				case 'datacom':
					var load_resultpage	= Data['loadresultpage'] ? Data['loadresultpage'] : '';
					var param			= Data['param'] ? Data['param'] : this.param_DataLoad ? this.param_DataLoad : '';
					var id				= Data['target'] ? Data['target'] : this.id_DataLoad ? this.id_DataLoad : this.id_html_general;
					this.Data_Load(load_resultpage, param, id);
					return;
				break;
				case 'page':
					var load_resultpage	= Data['loadresultpage'] ? Data['loadresultpage'] : '';
					var param			= Data['param'] ? Data['param'] : this.param_DataLoad ? this.param_DataLoad : '';
					var id				= Data['target'] ? Data['target'] : this.id_DataLoad ? this.id_DataLoad : this.id_html_general;
					var functionLoad	= Data['loadresultfunction'] ? Data['loadresultfunction'] : '';
					this.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'] : this.id_html_general;
					var callback 	= Data['callback']		? Data['callback'] : '';
					var pushhistory = Data['pushhistory']	? true : false;
					var tmp = new Array();
					tmp['components'] = components;
					tmp['task'] = task;
					this.prepar_load('components', 'components', tmp, target, callback, pushhistory);
					return;
				break;
				case 'afterload':
					var value			= Data['value'] ? Data['value'] : '';
					//alert( 'script:\n'+ Base64.decode( value ) );
					this._scriptsAfterLoad.push( value );
				break;
				case 'formerror':
					// error gestion
					var array_error		= Data['array_error'] ? Data['array_error'] : '';
					var target 			= Data['target'] ? Data['target'] : '';
					var stockfunction	= Data['function'] ? Data['function'] : '';
					this.formerror_gestion( array_error, target );
					if ( stockfunction != '' ){
						try {
							eval(stockfunction+'(array_error)');
					   	}catch(err){
							if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err );//'Expression function incorrecte'
							else this.Display_Load_Erreur( this.translate( 'sterror._0011' )+'<br />'+err ,2);//'evaluation function impossible'
						}
					}
				break;	
				case 'echo':
					var echo			= Data['value'] ? Data['value'] : '';
					//var id				= Data['target'] ? Data['target'] : this.id_DataLoad ? this.id_DataLoad : this.id_html_general;
					var id				= Data['target'] ? Data['target'] : '';
					this.traitement_Echo( id, echo );
				break;
				case 'alert':
					var echo			= Data['value'] ? Data['value'] : '';
					alert( Base64.decode( echo ).replace('\\n', '\n') );
				break;
				case 'settitle':
					var value			= Data['value'] ? Data['value'] : '';
					this.change_title( Base64.decode( value ) );
				break;
				case 'setnavigationtitle':
					var value			= Data['value'] ? Data['value'] : '';
					this.change_navigation_title( Base64.decode( value ) );
				break;
				case 'loadscript':
					var value			= Data['value'] ? Data['value'] : '';
					//alert( 'loadscript:\n'+ Base64.decode( value ) );
					this.dynamicScriptLoad( Base64.decode( value ) );
				break;
				case 'script':
					var value			= Data['value'] ? Data['value'] : '';
					//alert( 'script:\n'+ Base64.decode( value ) );
					this.globaleval( Base64.decode( value ) );
				break;
				case 'confirme':
					var message			= Data['message'] ? Data['message'] : '';
					var action			= Data['action'] ? Data['action'] : '';
					this.confirme_action( message, action );
				break;
				case 'eval':
					var value			= Data['value'] ? Data['value'] : '';
					if ( value != '' ){
						try {
							eval(value);
						}catch(err){
							if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err );//'Expression function incorrecte'
							else this.Display_Load_Erreur( this.translate( 'sterror._0011' )+'<br />'+err, 1 );//'evaluation function impossible'
						}
					}
				break;
				case 'return':
					var value			= Data['value'] ? Data['value'] : null;
					return Base64.decode(value);
				break;
				case 'function':
					var functionLoad	= Data['loadresultfunction'] ? Data['loadresultfunction'] : '';
					if ( functionLoad != '' ){
						try {
							eval(functionLoad);
						}catch(err){
							if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err );//'Expression function incorrecte'
							else this.Display_Load_Erreur( this.translate( 'sterror._0011' )+'<br />'+err, 1 );//'evaluation function impossible'
						}
					}
				break;
				case 'stockvalue':
					var value			= Data['value'] ? Data['value'] : '';
					var stockfunction	= Data['function'] ? Data['function'] : '';
					if ( stockfunction != '' ){
						try {
							eval(stockfunction+'(value)');
					   	}catch(err){
							if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err );//'Expression function incorrecte'
							else this.Display_Load_Erreur( this.translate( 'sterror._0011' )+'<br />'+err, 2 );//'evaluation function impossible'
						}
					}else{
						this._save_functionVar = null;
						this.AjaxComLoadVar_callback(value);
					}
				break;
				case 'download':
					var value			= Data['value'] ? Data['value'] : '';
					var name			= Data['name'] ? Data['name'] : '';
					var deletefile		= Data['delete'] ? Data['delete'] : '';
					this.loadFile(value, name, deletefile);
				break;
				case 'readfile':
					//var echo			= Data['echo'] ? Data['echo'] : '';	
					var echo			= Data['value'] ? Data['value'] : '';
					this.Read_file(echo);
				break;
				case 'redirection':
					var location			= Data['location'] ? Data['location'] : '';
					window.location.href = Base64.decode(location);
				break;
			}
			this.multipleReceive_task();
			//this.Hide_Load_Indic();
			if ( this._aindicatorEnable )
				aindicator.hide();
			return;
	},
	
	globaleval: function(value){
		if(window.execScript){ //IE6
			return window.execScript(value);
		}else if(navigator.userAgent.indexOf('KHTML') != -1){ //safari, konqueror..
			var script = document.createElement('script');
			script.type = 'text/javascript';
			script.innerHTML = value;
			//script.text = value;
			document.getElementsByTagName('head')[0].appendChild(script);
			return true;
		}else{ // FireFox
			try {
				return window.eval(value);
			}catch(err){
				//if ( err == "TypeError: t.win.document is null" ) // for error in tinymce on reload page contening textarea linked on mce 
				if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err );//'Expression function incorrecte'
				else this.Display_Load_Erreur( this.translate( 'sterror._0011' )+'<br />'+err, 1 );//'evaluation function impossible'
				return false;
			}
			return result;
		}
	},
	
	dynamicScriptLoad: function( value ) {
	    var script = document.createElement('script');
	    script.type = 'text/javascript';
	    script.src = value;
	    document.getElementsByTagName('head')[0].appendChild(script);
	    //document.getElementsByTagName('head')[0].appendData(script);
	    //tinyMCE.onLoad();
	    return true;
	},
	
	change_title:  function(title){
		document.title = title;
		if ( this._ahistoryEnable )
			ahistory.changeLastTitle( title );
	},
	
	confirme_action: function( message, action ){
		if ( confirm( Base64.decode( message ) ) ){
			this.globaleval( Base64.decode( action ) );
		}
	},
	
	change_navigation_title:  function(title){
		if ( this._ahistoryEnable )
			ahistory.changeLastTitle( title, 1 );
	},
	
	execAfterLoad: function(){
		if ( this._scriptsAfterLoad.length > 0 ){
			for ( var i in this._scriptsAfterLoad ){
				try {
					this.globaleval( Base64.decode( this._scriptsAfterLoad[i] ) );
				}catch(err){
					if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0010' )+'<br />'+err );//'Expression function incorrecte'
					else this.Display_Load_Erreur( this.translate( 'sterror._0011' )+'<br />'+err, 1 );//'evaluation function impossible'
				}	
			}
		}
		this._scriptsAfterLoad = new Array();	
	},
	
	traitement_Echo: function( _id, _echo ){
		if ( _id == null || _id == '' || typeof( _id ) == 'object' ) return;
		if ( _id.indexOf( ':' ) > 0 ){
				var arr = _id.split( ':' );
				try { 
					$(arr[1]).value = Base64.decode(_echo);	
				}catch(err){
					try { 
						$(arr[0] +'.'+ arr[1]).value = Base64.decode(_echo);
					}catch(err){
						//alert( str );
						return;
					}
				}
				return;
		}
		var f = $(_id);
		if ( f != null )
			f.innerHTML = Base64.decode( _echo );		
	},
	
	formerror_gestion: function ( array_error, target ){
		for (var key in array_error){						// Debut Boucle de traitement de récuperation des erreurs
				if ( typeof(array_error[ key ]) != 'object' && typeof(array_error[ key ]) != 'array' && typeof(array_error[ key ]) != 'function'){
					var str = String(array_error[ key ]);
					if ( str.indexOf( '::' ) > 0 ){	// Si :: alors gestion de couleur des formulaires
						var arr = str.split( '::' );
						var arr_result = new Array();
						arr_result['form']	= arr[0];				// recup tout les parametres
						arr_result['elem']	= arr[1];
						arr_result['class']	= arr[2];
						arr_result['class_error']	= arr[3];
						arr_result['text']	= arr[4];
						this._array_error_list.push( arr_result );			// sauvegarde des parametres
					}else{											// sinon récup juste le texte d'erreur
						var arr_result = new Array();
						arr_result['text']	= array_error[ key ];
						this._array_error_list.push( arr_result );
					}
				}
		}													// Fin de boucle des récuperation
		
			for( var key in this._array_error_list ){			// Debut boucle de changement de couleur
				var f = $(  this._array_error_list[ key ][ 'form' ]  ); 		// Recup du formulaire
				if ( f ) {			// Si exist (evite d'arreter le process)
					if ( f.elements[  this._array_error_list[ key ][ 'elem' ]   ] ){					// Si exist (evite d'arreter le process)
						var e = f.elements[  this._array_error_list[ key ][ 'elem' ]   ];			// Recup de l'element
						if ( e.className != '' )												// Sauvegarde de la class
							this._array_error_list[ key ][ 'class' ] = e.className;
						e.className = this._array_error_list[ key ][ 'class_error' ];				// Affectation de la class
					}
				}
			}
		if( target != 'undefined' && target != '') {		// Si une id target associé -> affiche les erreurs
			var _error = '';
			for( var key in this._array_error_list ){			// Debut boucle de changement de couleur
				if ( Arrayfind( key ) === false && this._array_error_list[ key ][ 'text' ] != null  )	_error += this._array_error_list[ key ][ 'text' ]+'<br />';
			}
			this._save_target_error_text = target;
			var f = $( target );
			if ( f ){		// Si exist (evite d'arreter le process)
				f.innerHTML = _error;
			}
		}
		/*if( target != 'undefined' && target != '') {		// Si une id target associé -> affiche les erreurs
			var _error = '';
			for( var key in this._array_error_list ){			// Debut boucle de changement de couleur
				if ( Arrayfind( key , autils.corpArrayFind  ) === false )	_error += this._array_error_list[ key ][ 'text' ]+'<br />';
			}
			this._save_target_error_text = target;
			var f = $( target );
			if ( f ){		// Si exist (evite d'arreter le process)
				f.innerHTML = _error;
			}
		}*/
	},
	/*formerror_gestion: function ( array_error, target ){
		for (var key in array_error){						// Debut Boucle de traitement de récuperation des erreurs
			if ( Arrayfind( key , autils.corpArrayFind  ) === false ){
				if ( array_error[ key ].indexOf( '::' ) > 0 ){	// Si :: alors gestion de couleur des formulaires
					var arr = array_error[ key ].split( '::' );
					var arr_result = new Array();
					arr_result['form']	= arr[0];				// recup tout les parametres
					arr_result['elem']	= arr[1];
					arr_result['class']	= arr[2];
					arr_result['class_error']	= arr[3];
					arr_result['text']	= arr[4];
					this._array_error_list.push( arr_result );			// sauvegarde des parametres
				}else{											// sinon récup juste le texte d'erreur
					var arr_result = new Array();
					arr_result['text']	= array_error[ key ];
					this._array_error_list.push( arr_result );
				}
			}
		}													// Fin de boucle des récuperation
		
			for( var key in this._array_error_list ){			// Debut boucle de changement de couleur
				var f = $(  this._array_error_list[ key ][ 'form' ]  ); 		// Recup du formulaire
				if ( f ) {			// Si exist (evite d'arreter le process)
					if ( f.elements[  this._array_error_list[ key ][ 'elem' ]   ] ){					// Si exist (evite d'arreter le process)
						var e = f.elements[  this._array_error_list[ key ][ 'elem' ]   ];			// Recup de l'element
						if ( e.className != '' )												// Sauvegarde de la class
							this._array_error_list[ key ][ 'class' ] = e.className;
						e.className = this._array_error_list[ key ][ 'class_error' ];				// Affectation de la class
					}
				}
			}
		
		if( target != 'undefined' && target != '') {		// Si une id target associé -> affiche les erreurs
			var _error = '';
			for( var key in this._array_error_list ){			// Debut boucle de changement de couleur
				if ( Arrayfind( key , autils.corpArrayFind  ) === false )	_error += this._array_error_list[ key ][ 'text' ]+'<br />';
			}
			this._save_target_error_text = target;
			var f = $( target );
			if ( f ){		// Si exist (evite d'arreter le process)
				f.innerHTML = _error;
			}
		}
	},*/

	setdefaut_error: function(){
		while ( param = this._array_error_list.shift() ){
				var f = $( param[ 'form' ] );
				if ( f ){	
				//if ( document.getElementById( param[ 'form' ] ) ){			// Si exist (evite d'arreter le process)
				//	var f = document.getElementById( param[ 'form' ] ); 		// Recup du formulaire
					if ( f.elements[  param[ 'elem' ]   ] ){					// Si exist (evite d'arreter le process)
						var e = f.elements[  param[ 'elem' ]   ];			// Recup de l'element
						e.className = param[ 'class' ];						// Affectation de la class
					}
				}
		}
		if ( this._save_target_error_text != null ){
			var f = $( this._save_target_error_text );
			//var f = document.getElementById( this._save_target_error_text ); 	// Recup de la div (ou autre)
			f.innerHTML = '';
			this._save_target_error_text = null;
		}
	},
	
	multipleReceive_task: function(){
			param = this.pop_multiple();
			if ( param == null )
				JEvent.fireEvent( 'afterload' );
			else
				result = this.Traitement_Data( param );
			return result;
	},
	
	push_multiple: function( param ){
		//alert( autils.print_r(param ));
		if ( typeof(this.DataComMultiple) != 'object' || this.DataComMultiple == null || this.DataComMultiple.length <= 0 ) 
			this.DataComMultiple = new Array(); 
		this.DataComMultiple.push( param );
	},
	
	pop_multiple: function(){
		if ( typeof(this.DataComMultiple) != 'object' || this.DataComMultiple == null || this.DataComMultiple.length <= 0 )
			return null;
		param = this.DataComMultiple.shift();
		return param;
	},
	
	get_valide_multiple: function(){
		return (this.DataComMultiple.length > 0);
	},
	
	push_multiple_function: function( _function ){
		var param = new Array();
		param['datatype']			= 'function';
		param['loadresultfunction']	= _function;
		this.push_multiple( param );
	},
	
	records_multiple: function(){
			var _function = null;
			if (!this.DataCom['communication']) return;
			//
			if ( this.DataCom['communication']['datatype'] != 'multiple' ){
				_function = null;
				if ( this.DataCom['communication']['loadresultfunction'] != null ){
					_function = this.DataCom['communication']['loadresultfunction'];
					delete this.DataCom['communication']['loadresultfunction'];
				}
				this.push_multiple( this.DataCom['communication'] );
				if ( _function != null ){
					this.push_multiple_function( _function );
				}
			}			
			
			if ( this.function_DataLoad != null ){
				this.push_multiple_function( this.function_DataLoad );
				this.function_DataLoad			= null;
			}	
			
			if ( this.DataCom['communication']['datatype'] == 'multiple' ){
					for (var i in this.DataCom['communication']['multiple']){
						var _function = null;
						if ( this.DataCom['communication']['multiple'][i]['loadresultfunction'] != null ){
							_function = this.DataCom['communication']['multiple'][i]['loadresultfunction'];
							delete this.DataCom['communication']['multiple'][i]['loadresultfunction'];
						}
						this.push_multiple( this.DataCom['communication']['multiple'][i] );
						if ( _function != null ){
							this.push_multiple_function( _function );
						}
					}
					
			}
			delete this.DataCom['communication']['multiple'];
			delete this.DataCom['communication'];								
	},
	
	
	/*
	*		******************
	*		* Timer Function *
	*		******************
	*/
	timerGeneral_function: function(){
		if ( this.__modifScrollOnReceived == true ) autils.getDefaultScrollTop();
		if ( this.DataLoad_Ok == true ){
			this.DataLoad_Ok = false;
			//this.Hide_Load_Indic();
			if ( this._aindicatorEnable )
				aindicator.hide();
			clearInterval(this.timerGeneral);
			clearTimeout(this.timerSendData);
			clearTimeout(this.timerErreur);
			this.multipleReceive_task();
			if ( this.__modifScrollOnReceived == true ) autils.setDefaultScrollTop();
		}
	},
	
	timer_senddata: function(){
		clearTimeout(this.timerSendData);
		//timerGeneral = setInterval("timerGeneral_function()",100);
		this.timerSendData_obj.send(this.timerSendData_data);
	},
	
	timerTimeOut_function: function(message, debug_callfunction){
		clearInterval( this.timerGeneral );
		clearTimeout( this.timerTimeOut );
		this.Display_Load_Erreur( message, 0, this.time_delay );//alert
		this.Hide_Load_Erreur();
		/*
		if ( this._aindicatorEnable ){
			if (!message || message == '') message = this.translate( 'sterror._0003' ); //'Time Out...'
			aindicator.setTimerErreur( message, this.time_delay );
		}*/
	},
	
	
	/*
	*		**************************
	*		* ALL aIndicator Function *
	*		**************************
	*/
	
	Hide_Load_Erreur: function(){
		clearTimeout(this.timerTimeOut);
		clearTimeout(this.timerErreur);
		clearInterval(this.timerGeneral);
		if ( !this._aindicatorEnable ) return;
		aindicator.hideErreur();
	},

	Display_Load_Erreur: function( _message, _importance, time_delay ){
		if ( !_importance ) _importance = 0;
		if (!_message || _message == '') _message = this.translate( 'sterror._0003' ); //'Time Out...'
		if ( this._amessageEnable ) {
			amessage.set( _message, _importance )
			return;
		}
		if ( !this._aindicatorEnable ) {
			if ( !time_delay )
				aindicator.showErreur( _message, _importance );
			else
				aindicator.setTimerErreur( _message, time_delay, _importance );
			return;
		}
		alert(_message.replace('<br />', '\n'));
	},

	/*
	*		*******************
	*		* Function Commun *
	*		*******************
	*/
	
	eval_Text: function(txt_value, nodisperror){
		try {
			eval(txt_value);
		} catch(err) {
			if (nodisperror == true) return false;
			if(err.name == 'SyntaxError') this.Display_Load_Erreur( this.translate( 'sterror._0012' )+'<br />'+err );//'Expression incorrecte'
			else this.Display_Load_Erreur( this.translate( 'sterror._0013' )+'<br />'+err, 2 );//'evaluation impossible'
			return false;
		}
		return true;
	},
	
	createStringParam: function(Param,first){
		if ( typeof( Param ) != 'object' || Param == null  ) return '';
		var tmp = '';
		var k=0;
		for (var i in Param ){
			if (Param[i] != null && typeof(Param[i]) != 'function'/* && typeof(Param[i]) != 'object' */){
				if ( Arrayfind( i, autils.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;' + autils.replaceAndComByTild(Param[i]);
			k++;
		}
		return (Name + '=' +tmp);
	},
	
	pr: function(tab, t){
		return 	autils.print_r(tab, t);
	},
		
	getUrl: function(){
		if (this.DataCom['param']) 
			var data = this.DataCom['param'];
		else 
			var data = this.param_default_ini;
		var url = this.prepar_url();
		return url+'?'+data;
	},
	
	getBaseDoc: function(){
		return this.folder_base_doc;
	}
	
};
// Required for GZip AJAX loading
//window.ajaxcom = ajaxcom;
var AjaxCom = window.AjaxCom = ajaxcom;