function a(pbAsync, psMethod, psTarget, psParams)
{
	var xCom = new xJAX();
	if(psTarget)	xCom.setTarget(psTarget);
	if(psParams)	xCom.setParam(psParams);
	xCom.send(pbAsync, psMethod);
}

function load_Gallery()
{
	var box = {};
	window.addEvent('domready', function(){
		box = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true});
	});	
}


function sleep(millis)
{
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); }
	while(curDate-date < millis);
} 


    /** Rechage le menu du jeu **/
	function reloadMenu() {
		
		var xCom = new xJAX();
		xCom.setTarget('m=display&sa=aff_menu');
		xCom.send(true, 'POST');
	}
	
	
	/***
	 * Classe xJAX
	 * @constructor
	 */
	function xJAX() {
		
		// Initialisations
	    this.httpRequest	= null;
	    this.sTarget		= '';
	    this.sParams		= '';
	    this._init();
	    $("rep_form").style.display = 'none';
	    //$("submenu").style.display = 'none';
        $("rep_form").innerHTML = '';
        $('submenu').innerHTML = '';
	    
	    if (!this.httpRequest) {
	        alert('ERR_UPDATENAV');
	        return false;
	    }
	}
	
	
	/**
	 * Envoie la requete AJAX
	 * @param pbAsync	Boolean (true: AJAX, false: SJAX)
	 * @param psMethod	String	(GET ou POST)
	 * @return
	 */
	xJAX.prototype.send	= function(pbAsync, psMethod) {
		
		// Si Asynchrone
    	var viewMessage = 0;
		if (pbAsync)
			this.httpRequest.onreadystatechange = function() 
			{
				
				
				//alert('async');
			
				if (this.readyState == 4 && this.status == 200) {

					var xmlDocument = this.responseXML;
			        if (window.ActiveXObject) {
						xmlDocument = new ActiveXObject("Microsoft.XMLDOM");
						xmlDocument.async	= "false";
						xmlDocument.loadXML(this.responseText);
			        }
			        
			        if (xmlDocument != null) {

						// Traitement Google Analityc
						var aGA = xmlDocument.getElementsByTagName('GA');
				    	for (var i=0; i<aGA.length; i++)
				    	{
				    		//if(!pageTracker)
				    		//	var pageTracker = _gat._getTracker("UA-12567403-1");
				    		//pageTracker._trackPageview(aGA[i].firstChild.nodeValue);
				    	}

				    	// Traitement des divisions à mettre à jour
				    	var updateDivs = xmlDocument.getElementsByTagName('update');
				    	for (var i=0; i<updateDivs.length; i++) {
				    		
				    		// Initialisations
				    		var sTargetDiv	= updateDivs[i].getAttribute('target');
				    		var sValue		= updateDivs[i].firstChild.nodeValue;
				    		
				    		// Affectation de l'attribut 'innerHTML'
				        	document.getElementById(sTargetDiv).innerHTML = sValue;
				    	}

				    	// Traitement des tooltips a mettre a jour
				    	var aToolTips = xmlDocument.getElementsByTagName('tooltip');
				    	for (var i=0; i<aToolTips.length; i++) {
				    		
				    		// Initialisations
				    		var sTargetNode	= aToolTips[i].getAttribute('target');
				    		var sValue		= aToolTips[i].firstChild.nodeValue;

				    		// Affectation de l'attribut 'title'
				        	document.getElementById(sTargetNode).title = sValue;
				    	}
				    	
				    	// Messages via alert();
				    	var aErrors = xmlDocument.getElementsByTagName('error');
				    	for (var i=0; i<aErrors.length; i++) {
				    		alert(aErrors[i].firstChild.nodeValue);
				    	}
				    	
				    	// Message via div
				    	var aMessage = xmlDocument.getElementsByTagName('message');
				    	for (var i=0; i<aMessage.length; i++)
				    	{
				    		viewMessage = 1;
				    		document.getElementById('message').innerHTML = aErrors[i].firstChild.nodeValue;
				    	}

				    	// Style
				    	var aStyle = xmlDocument.getElementsByTagName('style');
				    	for (var i=0; i<aStyle.length; i++) {
				    		
				    		// Initialisations
				    		var sTargetDiv	= aStyle[i].getAttribute('target');
				    		var sCSSType	= aStyle[i].getAttribute('type');
				    		var sValue		= aStyle[i].firstChild.nodeValue;

				    		// Modifications du style
				    		if($(sTargetDiv))
		    				{
					    		if (sCSSType == 'width')	{ document.getElementById(sTargetDiv).style.width	= sValue; 	continue; } 
					    		if (sCSSType == 'display')	{ document.getElementById(sTargetDiv).style.display	= sValue;	continue; }
					    	}
				    	}
				    	
				    	// Redirection
				    	var aRedirections = xmlDocument.getElementsByTagName('redirect');
				    	if (aRedirections.length > 0) {
				    		location.href = aRedirections[0].getAttribute('target');
				    	}
				    	
				    	// variable
				    	var aVar = xmlDocument.getElementsByTagName('variable');
				    	for (var i=0; i<aVar.length; i++)
				    	{
				    		// Initialisations
				    		var sTargetDiv	= aVar[i].getAttribute('target');
				    		var sType		= aVar[i].getAttribute('type');
				    		var sValue		= aVar[i].firstChild.data;
				    		
				    		// Affectations
				    		if(sType == 'display' && $(sTargetDiv))
				    		{
				    			$(sTargetDiv).innerHTML = sValue;	
				    		}
				    		else if(sType == 'js')
				    		{
				    			eval(sValue);	
				    		}
				    		else if(sType == 'incjs')
				    		{
				    			incFile_js('incajax.php',sValue); 
				    		}
				    		else if(sType == 'alert')
				    		{
				    			alert(sValue);
				    		}
				    		else if(sType == 'empty_input')
				    		{
	
		    					if($(sTargetDiv))
					    			$(sTargetDiv).value = '';
				    		}
				    	}
			        }
				}
				
			};
			

		
		if (psMethod == 'GET') {
			this.httpRequest.open('GET', 'ajax.php?'+ this.sTarget +'&'+ this.sParams, pbAsync);
		    this.httpRequest.send(null);
		}
		else if (psMethod == 'POST') {
			this.httpRequest.open('POST', 'ajax.php?'+ this.sTarget, pbAsync);
		    this.httpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
			this.httpRequest.send(this.sParams);
		}

	    // Si Synchrone
    	var viewMessage = 0;
		if (!pbAsync) 
		{

				//alert('sync');
			
			var xmlDocument = this.httpRequest.responseXML;
	        if (window.ActiveXObject) {
				xmlDocument = new ActiveXObject("Microsoft.XMLDOM");
				xmlDocument.async	= "false";
				xmlDocument.loadXML(this.httpRequest.responseText);
	        }
	        
	        if (xmlDocument != null) {
	        	
	        	// Traitement Google Analityc
				var aGA = xmlDocument.getElementsByTagName('GA');
		    	for (var i=0; i<aGA.length; i++)
		    	{
		    		//if(!pageTracker)
		    		//	var pageTracker = _gat._getTracker("UA-12567403-1");
		    		//pageTracker._trackPageview(aGA[i].firstChild.nodeValue);
		    	}
		    	
		    	// Traitement des divisions à mettre à jour
		    	var updateDivs = xmlDocument.getElementsByTagName('update');
		    	for (var i=0; i<updateDivs.length; i++) {
		    		
		    		// Initialisations
		    		var sTargetDiv	= updateDivs[i].getAttribute('target');
		    		var sValue		= updateDivs[i].firstChild.nodeValue;
		    		
		    		// Affectation de l'attribut 'innerHTML'
		        	document.getElementById(sTargetDiv).innerHTML = sValue;
		    	}

		    	// Traitement des tooltips a mettre a jour
		    	var aToolTips = xmlDocument.getElementsByTagName('tooltip');
		    	for (var i=0; i<aToolTips.length; i++) {
		    		
		    		// Initialisations
		    		var sTargetNode	= aToolTips[i].getAttribute('target');
		    		var sValue		= aToolTips[i].firstChild.nodeValue;

		    		// Affectation de l'attribut 'title'
		        	document.getElementById(sTargetNode).title = sValue;
		    	}

		    	// Erreurs eventuelles
		    	var aErrors = xmlDocument.getElementsByTagName('error');
		    	for (var i=0; i<aErrors.length; i++) {
		    		alert(aErrors[i].firstChild.nodeValue);
		    	}

		    	
		    	// Message via div
		    	var aMessage = xmlDocument.getElementsByTagName('message');
		    	for (var i=0; i<aMessage.length; i++)
		    	{
			    	viewMessage = 1;
		    		document.getElementById('message').innerHTML = aMessage[i].firstChild.nodeValue;
		    	}

		    	// Style
		    	var aStyle = xmlDocument.getElementsByTagName('style');
		    	for (var i=0; i<aStyle.length; i++) {
		    		
		    		// Initialisations
		    		var sTargetDiv	= aStyle[i].getAttribute('target');
		    		var sCSSType	= aStyle[i].getAttribute('type');
		    		var sValue		= aStyle[i].firstChild.nodeValue;

		    		// Modifications du style
		    		if($(sTargetDiv))
		    		{
			    		if (sCSSType == 'width')	{ document.getElementById(sTargetDiv).style.width	= sValue; 	continue; } 
			    		if (sCSSType == 'display')	{ document.getElementById(sTargetDiv).style.display	= sValue;	continue; }
			    	}
		    	}

		    	// Redirection
		    	var aRedirections = xmlDocument.getElementsByTagName('redirect');
		    	if (aRedirections.length > 0) {
		    		location.href = aRedirections[0].getAttribute('target');
		    	}
		    	// variable
		    	var aVar = xmlDocument.getElementsByTagName('variable');
		    	for (var i=0; i<aVar.length; i++)
		    	{
		    		// Initialisations
		    		var sTargetDiv	= aVar[i].getAttribute('target');
		    		var sType		= aVar[i].getAttribute('type');
		    		var sValue		= aVar[i].firstChild.data;
		    		
		    		// Affectations
		    		if(sType == 'display' && $(sTargetDiv))
		    		{
		    			$(sTargetDiv).innerHTML = sValue;	
		    		}
		    		else if(sType == 'js')
		    		{
		    			eval(sValue);	
		    		}
		    		else if(sType == 'incjs')
		    		{
		    			incFile_js('incajax.php',sValue); 
		    		}
		    		else if(sType == 'alert')
		    		{
		    			alert(sValue);
		    		}
		    		else if(sType == 'empty_input')
		    		{
    					if($(sTargetDiv))
			    			$(sTargetDiv).value = '';
		    		}
		    	}
	        }
	        
		}

        
        if(viewMessage == 1)
        {
        	// IE
        	if (navigator.appName == "Microsoft Internet Explorer")
        	{
        		//alert(document.documentElement.scrollTop+' <> '+window.innerHeight+' <> '+document.body.clientHeight)
        		movetop 	= document.documentElement.scrollTop + 300;
        		moveleft 	= document.documentElement.scrollLeft + document.body.clientWidth/2 - 150;
        	}
        	// Autre
        	else
        	{
        		//alert(window.pageYOffset+ ' '+ document.body.clientHeight);
        		movetop 	= window.pageYOffset + window.innerHeight/2 - 100;
        		moveleft 	= window.pageXOffset + window.innerWidth/2 - 150;
        	}
        	
        	
        	
			
        	//alert('move top '+movetop+' move left '+ moveleft+ ' message '+$('message').innerHTML);
        	
			$("cadre_message").style.top = movetop + 'px';
			$("cadre_message").style.left = moveleft + 'px' ;
			

			$('cadre_message').className = 'view';
			
        }
			window.scrollTo(0, 0);
	};

	xJAX.prototype.setTarget	= function(psTarget) 	{ this.sTarget = psTarget;	};
	xJAX.prototype.setParam		= function(psParam)		{ this.sParams = psParam;	};
	
	
	/**
	 * Initialise la requete AJAX
	 * @return XMLHttpRequest
	 */
	xJAX.prototype._init	= function() 
	{

        if (window.XMLHttpRequest) { // Mozilla, Safari, Chromium, Opera...
            this.httpRequest = new XMLHttpRequest();
            if (this.httpRequest.overrideMimeType) 
            {
            	this.httpRequest.overrideMimeType('text/xml');
            	/*
				if(xh == 0)	
					this.httpRequest.overrideMimeType('text/xml');
				else
					this.httpRequest.overrideMimeType("text/html");
				*/
            }
        }
        else if (window.ActiveXObject) { // IE
            try {
            	this.httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
            //	this.httpRequest.overrideMimeType('text/xml');
            }
            catch (e) {
                try {
                	this.httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {
                	;
                }
            }
        }
    };
    
    
