////////////// Version RC 1.02 du 19042007 //////////////////
// Gabriel Baude : gabriel.b@famouslab.com
////////////////////////////////////////////////////////////
// Gestionnaire de chargement mode POST et GET xmlhttprequest
////////////////////////////////////////////////////////////


function ahah(url, target, funcname) {
	function ahahDone() {
	  if(req.readyState == 4){ 
	    if(req.status == 200){ 
		  if(!(target == undefined)){
		    document.getElementById(target).innerHTML = req.responseText;
		  }
	   	  if(!(funcname == undefined)){
		    eval(funcname+"(req.responseText);");
		  }
	    }else{
		  if(!(target == undefined)){
		    document.getElementById(target).innerHTML = "ahah error:\n"+req.statusText;
		  }
	      if(!(funcname == undefined)){
		    eval(funcname+"(req.responseText);");
		  }
	    }
	  }
	}

	if(!(target == undefined)){
	    document.getElementById(target).innerHTML = 'Chargement...';
	}
	if(window.XMLHttpRequest){
		var req = new XMLHttpRequest();
	}else if(window.ActiveXObject) {
		var req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(req){
		req.onreadystatechange = function() {
			ahahDone();
		};
		req.open("GET", url, true);
		req.send("");
	}  
}

function ahah_post(url,data, target, funcname) {
	function ahahDone() {
	  if(req.readyState == 4){ 
	    if(req.status == 200){ 
		  if(!(target == undefined)){
		    document.getElementById(target).innerHTML = req.responseText;
		  }
	   	  if(!(funcname == undefined)){
		    eval(funcname+"(req.responseText);");
		  }
	    }else{
		  if(!(target == undefined)){
		    document.getElementById(target).innerHTML = "ahah error:\n"+req.statusText;
		  }
	      if(!(funcname == undefined)){
		    eval(funcname+"(req.responseText);");
		  }
	    }
	  }
	}

	if(!(target == undefined)){
	    document.getElementById(target).innerHTML = 'Chargement...';
	}
	if(window.XMLHttpRequest){
		var req = new XMLHttpRequest();
	}else if(window.ActiveXObject) {
		var req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(req){
		req.onreadystatechange = function() {
			ahahDone();
		};
		req.open("POST", url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(data);
	}  
}


/////////////////////////////////////////////////
// Gestionnaire d'affichage et masquage par Class
/////////////////////////////////////////////////


function getStyleClass (className) {
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	
	return null;
}
function toggleClass(className) {
if (getStyleClass(className).style.display == 'block')
{getStyleClass(className).style.display = 'none';}
else {getStyleClass(className).style.display = 'block';}
return false;
}

// M?mo pour l'utilisation de cette class
/////////////////////////////////////////
//	Dans la CSS
//.court {
//display:block;}
//.long {
//display:none;}
//
//	Dans le HREF
//<a href="#" class="option" onclick="toggleClass('court');toggleClass('long');return false;">[+]Infos</a>
//
//	Dans le BODY
//	<span class="court">
//	Froid industriel et conditionnement d'air
//	</span>
//	<span class="long">Froid industriel et conditionnement d'air
//	<p>
//	Une formation sp?cialis?e dans le froid industriel et le conditionnement d'air.
//	</p>
//	</span>


/////////////////////////////////////////////////
// Gestionnaire d'?v?nement d'animation de calque
/////////////////////////////////////////////////


var timerlen = 5;
var AnimSlideTemps = 200;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // ne peux pas rendre visible un ?l?ment d?j? visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // ne peux pas rendre invisible un ?l?ment d?j? invisible

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > AnimSlideTemps)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / AnimSlideTemps * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}


function toggleSlide(objname){
  if(document.getElementById(objname).style.display == "none"){
    // le calque est masquer alors le rendre visible
    slidedown(objname);
  }else{
    // le calque est visible alors le masquer
    slideup(objname);
  }
}

// Mémo pour l'utilisation de cette class
/////////////////////////////////////////
// A venir


////////////////////////
