var _isMozilla = (navigator.product == 'Gecko') ? 1 : 0;						// Mozilla ou IE
var _d = document;
var _otooltip = '';											// id de la derniere tooltip ouverte
var _rnode = '';											// noeud racine (pour IE)

var divs_loaded = new Array();								// Contient le nom des Divs déjà chargés par xmlconnect
var sh ;											
var DefaultHeight = new Array();
var timer = null;
var div;
var move = 'show';


function $(elementid)
{
	return document.getElementById(elementid) ;

}



function SwitchBGIMG(bg1, bg2, TagID)
{
	var d = $(TagID);
	
	if (d.style.background == 'transparent url(' + bg1 + ') no-repeat scroll 0pt 50%')
		d.style.background = 'transparent url(' + bg2 + ') no-repeat scroll 0pt 50%' ;
	else
		d.style.background = 'transparent url(' + bg1 + ') no-repeat scroll 0pt 50%' ;
		
}

// Ouvre / referme un div.
function OpenDiv(div, BordParam)
{
	var d = $(div);
	// Si le div est déjà ouvert, fermons-le
	if (divs_loaded[div] && divs_loaded[div] == 'open')
	{
		d.style.border = '0';
		d.style.height='0px';
		d.style.overflow='hidden';
		divs_loaded[div] = 'close';
	}
	
	// Si le div n'est pas ouvert, ouverture
	else
	{
		if (BordParam) {
			d.style.border = BordParam;
		}
		divs_loaded[div] = 'open';
		d.style.height='auto';
	}
	
	
}

// Affiche la commande permettant le dl du pack cliqué
function XdccDownload(bot, file, pack)
{
	var div = $('XdccCommand');
	div.style.display = 'block' ;
	div.value = '/msg ' + bot + ' xdcc send #' + pack ;
	
}


// Afficher calque ( une autre )
function look(id)
{
	var show = $(id).style ;
	show.display = show.display == 'inline' ? "none" : "inline" ;
}



// Ouvrir popup
function ImgPopup(imageFile, width, height, title){

	var html = '<html><head><title>' + title + ' - Cliquez pour fermer <\/title></head><body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onclick="javascript:window.close()"><img src="' + imageFile + '" alt="Cliquez pour fermer" style="cursor:pointer;" /><\/body></html>';
	var popup = window.open(imageFile, '_blank', 'width=' + width+ ', height=' + height + ', status=no');
	popup.document.write(html);
	popup.focus();
}





// Connexion "ajax" à une page "page", envoie des données "content" en POST, et affiche les infos dans l'élément "div".
function XmlConnect(page, content, div, append, loader, nocache)
{
	// Pour ne charger le contenu qu'une seule fois
	if (nocache != null)
	{
		if (divs_loaded[div])
		{
			return false;
		}
	}
		
	
	var xhr_object = null; 			// Déclaration de la var objet..
	 
	// Instance de l'objet : pour FF ou IE
	if(window.XMLHttpRequest) // Firefox 
	   xhr_object = new XMLHttpRequest(); 
	else if(window.ActiveXObject) // Internet Explorer 
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   return; 
	} 
	 
	
	xhr_object.open("POST", page, true); 				// Préparation de la requête : mode de transmission, url, mode synchrone / asynchrone
	
	if (div != null)
		var divcontent = $(div).innerHTML;	// On sauvegarde le contenu originel du div
	
	
	
	xhr_object.onreadystatechange = function() 
	{ 
		if (div != null)
		{
			if(xhr_object.readyState == 4) 
			{
				if ( append == 'after')			// Contenu placé après
					$(div).innerHTML = divcontent + xhr_object.responseText;
				else if(append == 'before')		// Contenu placé avant
					$(div).innerHTML = xhr_object.responseText + divcontent ;
				else							// Contenu remplacé	
					$(div).innerHTML = xhr_object.responseText ;
			}
			else
			{
				// On affiche le loader ?
				if (loader == 'true' )
				{
					
					if(xhr_object.readyState == 1 || xhr_object.readyState == 2 || xhr_object.readyState == 3) 
						$(div).innerHTML = "<br /><div align='center'><img src='public/skins/default/images/ajax-loader.gif' alt='Chargement' /></div><br />";
				}
			}
		}
	} 

	if ( typeof(content) == 'undefined')
		xhr_object.send(null); 
	else
	{
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

		xhr_object.send(content); 
	}
	 
 }
 
 
function XmlConnect2(page, content)
{

	var xhr_object = null; 			// Déclaration de la var objet..
	 
	// Instance de l'objet : pour FF ou IE
	if(window.XMLHttpRequest) // Firefox 
	   xhr_object = new XMLHttpRequest(); 
	else if(window.ActiveXObject) // Internet Explorer 
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   return; 
	} 
	 
	xhr_object.open("POST", page, true); // Préparation de la requête : mode de transmission, url, mode synchrone / asynchrone
	
	xhr_object.onreadystatechange = function() 
	{ 
		if(xhr_object.readyState == 4) 
		{
			eval(xhr_object.responseText) ;
			//$('debug').innerHTML = xhr_object.responseText;

		}
			
	} 
	if ( typeof(content) == 'undefined')
		xhr_object.send(null); 
	else
	{
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
		xhr_object.send(content); 
	}
 
 }
 

// Redirige vers la page "page" au bout de "temps" secondes 
function redirect(page, temps) 
{
	setTimeout('window.location=page', temps) 
}




/*
 * Credit:
 *   If you're nice, you'll leave this bit:
 *  
 *   Class by Stickman -- http://www.the-stickman.com
 *      with thanks to:
 *      [for Safari fixes]
 *         Luis Torrefranca -- http://www.law.pitt.edu
 *         and
 *         Shawn Parker & John Pennypacker -- http://www.fuzzycoconut.com
 *      [for duplicate name bug]
 *         'neal'
 */
function MultiSelector( list_target, max, button ){

	// Where to write the list
	this.list_target = list_target;
	// How many elements?
	this.count = 0;
	// How many elements?
	this.id = 0;
	// Is there a maximum?
	if( max ){
		this.max = max;
	} else {
		this.max = -1;
	};
	
	/**
	 * Add a new  input element
	 */
	this.addElement = function( element ){

		// Make sure it's a file input element
		if( element.tagName == 'INPUT' && element.type == 'hidden' )
		{
			// Element name -- what number am I?
			element.name = 'newdlrlz_' + this.id++;

			// Add reference to this object
			element.multi_selector = this;
			
			// On attribue la bonne valeur au champ caché
			button.onclick = function(){ 
			
			element.value=$('type_dl').value + '||' + $('rlz_dl_nom').value  + '||' + $('rlz_dl_url').value + '||' + $('type_dl').options[$('type_dl').selectedIndex].innerHTML;
			}
			
			// On rajoute le dl
			button.onblur = function(){
			
				// On prépare un nouveau champ masqué
				var new_element = document.createElement( 'input' );
				new_element.type = 'hidden';

				// Affichage du nouvel élément
				list_target.appendChild( new_element, element );
				
				// Apply 'update' to element
				element.multi_selector.addElement( new_element );

				// Update list
				element.multi_selector.addListRow( element );

				// Hide this: we can't use display:none because Safari doesn't like it
				//element.style.position = 'absolute';
				//element.style.left = '-1000px';
				
			};
			// If we've reached maximum number, disable input element
			if( this.max != -1 && this.count >= this.max ){
				element.disabled = true;
			};

			// File element counter
			this.count++;
			// Most recent element
			this.current_element = element;
			
			
		} else {
			// This can only be applied to file input elements!
			alert( 'Error: not a file input element' );
		};

	};

	/**
	 * Add a new row to the list of files
	 */
	this.addListRow = function( element ){

		// Row div
		var new_row = document.createElement( 'li' );

		// Delete button
		var new_row_button = document.createElement( 'input' );
		new_row_button.type = 'button';
		new_row_button.value = 'Supprimer';

		// References
		new_row.element = element;

		// Delete function
		new_row_button.onclick= function(){

			// Remove element from form
			this.parentNode.element.parentNode.removeChild( this.parentNode.element );

			// Remove this row from the list
			this.parentNode.parentNode.removeChild( this.parentNode );

			// Decrement counter
			this.parentNode.element.multi_selector.count--;

			// Re-enable input element (if it's disabled)
			this.parentNode.element.multi_selector.current_element.disabled = false;

			// Appease Safari
			//    without it Safari wants to reload the browser window
			//    which nixes your already queued uploads
			return false;
		};

		// Affichage du lien tout beau tout propre
		link = element.value.split('||');
		new_row.innerHTML = link[3] + '<br /><a href="' + link[2] + '" target="_blank">' + link[1] + '</a> - ';
		$('com1').value = $('com1').value + '&' + element.name + '=' + element.value;

		// Ajout d'un bouton
		new_row.appendChild( new_row_button );

		// On l'ajoute à la liste
		this.list_target.appendChild( new_row );
		
	};

};


// Fonction de creation de la tooltip
function tooltip( e )
{
	// recuperation du noeud racine du document HTML ( pour IE )
	if ( _rnode == '' )
		_rnode = ( !_d.documentElement.clientWidth ? _d.body : _d.documentElement );	
	
	// infos de position
	var sx = ( _isMozilla && pageXOffset ? pageXOffset : _rnode.scrollLeft );
	var sy = ( _isMozilla && pageYOffset ? pageYOffset : _rnode.scrollTop );
	var x = ( _isMozilla && e.pageX ? e.pageX : e.clientX + sx );
	var y  = ( _isMozilla && e.pageY ? e.pageY : e.clientY + sy );
	
	// Objet sous la souris
	var el = ( _isMozilla ? e.target : e.srcElement );
	
	if (  !el.tagName )										// noeud #text	
		el = el.parentNode;
		
		if (el.tagName == 'IMG')							// Pour que ça marche aussi avec les images
			el = el.parentNode;
			
			
	if ( el.className == 'tooltip' && el.id )			// cas ou l'on est dans un lien permettant d'afficher une tooltip
	{
		
		// tooltip en cours
		var tooltip = _d.getElementById( el.id.substring( el.id.lastIndexOf('#') + 1 ) ).style;
		
		if ( tooltip != _otooltip )							// cas ou l'ancienne tooltip est pas la meme que la nouvelle
		{
			
			_otooltip.display = 'none';
			_otooltip = tooltip;
			// el.onclick = function() { return ( false ); }	// desactivation du clic sur le lien
		}
		
		// affichage de la tooltip
		with ( tooltip )
		{
			
			display = 'block';
			left = x + 'px';
			top = y + 20 + 'px';
			position = 'absolute';
		}
	}
	else
	{
		// fermeture automatique de la tooltip
		_otooltip.display = 'none';
		_otooltip = '';
	
	}
}

// Pour creation du tooltip a chaque mouvement de la souris.
_d.onmousemove = tooltip;



/**********************************
Copyright (c): Yves Dahan, 08/2003
e-mail: ygda.free.fr

Utilisation libre pour tout usage
sous réserve du maintien de la
présente mention de copyright.
***********************************/
function ScrollDiv(id){
if(this==window)
	return new ScrollDiv(id); //ScrollDiv() called as a Function
	
  var elt=$(id);
  var w=elt.offsetWidth;
  var s=elt.parentNode.offsetWidth;
  
	if(!w || !s || s>w){
		this.scroll=Function(""); return;}
		
	var divStyle=elt.style;
	var offset=0;
	var maxOffset=s-w;
	var timer=null;
	var self=this;
 
	this.scroll= function(dir,speed)
	{
		var coef=1, S=speed;
		while(S--)coef*=2;
		if (timer)window.clearTimeout(timer);
		switch (dir)
		{
			case 's': //stop
				break;
			case 'l': //left
				if(offset>maxOffset)
				{
					offset-=coef;
					divStyle.left=Math.min(offset,0)+"px";
					timer=window.setTimeout(function(){self.scroll('l',speed)},25)
				}
				break;
			case 'r': //right
				if(0>offset)
				{
					offset+=coef;
					divStyle.left=Math.max(offset,maxOffset)+"px";
					timer=window.setTimeout(function(){self.scroll('r',speed)},25)
				}
		}
	}
}


// Pour l'agenda
function openWin(id)
{
w = window.open('Mirage-Evenement-id='+id,'event'+id,'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=430,height=250');
}


function GetElementsWithClassName(elementName,className) {
    var allElements = document.getElementsByTagName(elementName);
    var elemColl = new Array();
    for (var i = 0; i< allElements.length; i++)
	{
		if (allElements[i].className == className) 
		{
			elemColl[elemColl.length] = allElements[i];
		}
    }
	
    return elemColl;
}
