//AJAX by AC/RC
//to detect if browser understands AJAX
var isAjax = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
	isAjax = new XMLHttpRequest();
} 
else if (window.ActiveXObject) { // IE
	try {
	    isAjax = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
	        isAjax = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
}

//appel pour retour HTML: makeRequest("URL?params", "ID_du_DIV_cible");
//appel pour retour XML: makeRequest("URL?params", "ID_du_DIV_cible", "XML");
function makeRequest(obj,container, hurleBis, loadW, typ) {
	//affichage loading ////revoir INNERHTML
	if(obj != "")	hurle = obj.href;
	else hurle = hurleBis;
	document.getElementById(container).innerHTML = '<div align="center" class="inline ml_10"><img src="/images/common/ajax_load.gif" height="'+loadW+'" width="'+loadW+'" /></div>';
	
	var http_request = false;
	if (window.XMLHttpRequest) 
		{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
			{
		    if (typ == "XML") http_request.overrideMimeType('text/xml, charset=iso-8859-1');
			}
			} 
	else if (window.ActiveXObject)
		{ // IE
		try {
		    http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
		catch (e) 
			{
		    try 
				{
		        http_request = new ActiveXObject("Microsoft.XMLHTTP");
		    	} 
			catch (e) {}
			}
		}
	
	if (!http_request) 
		{
		alert('Abandon :( Impossible de créer une instance XMLHTTP');
		return false;
		}
	http_request.onreadystatechange = function() 
		{
		
		//alert("onreadystatechange(), http_request.readyState = " + http_request.readyState);
		if (http_request.readyState == 4) 
			{
			//alert("http_request.readyState = " + http_request.readyState)
			//http_request.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=iso-8859-1"); 
			if (typ == "XML")
				{
				
				parseContents(http_request, container);
				}
			else 
				{
				afficheContents(http_request, container); 
				}
			}	
		}
	
	http_request.open('GET', hurle, true);
	http_request.send(null);	
	/**/
	}
	
function afficheContents(http_request, div) {
	//if (http_request.readyState == 4) {
		//alert("http_request.status = " + http_request.status);
		if (http_request.status == 200) 
			{
			document.getElementById(div).innerHTML = http_request.responseText;
			document.getElementById(div).style.display = "block";
			} 
		else 
			{
			alert('Un problème est survenu avec la requête.');
			/*document.getElementById(div).style.display = "block";
			document.getElementById(div).innerHTML = http_request.responseText;*/
			}
	//}
}
function affichDetail(hurle,cible)
	{
	if(isAjax)
		{
		if(cible==undefined || cible==''){cible="detail_popin"}
		document.getElementById(cible).style.display="block";
		posX=mouse_x;
		posY=mouse_y;
		if(posY == 0)
			{
			posX = (document.documentElement.scrollLeft)+150;
			posY = (document.documentElement.scrollTop)+300;
			}
		else
			{
			if(posX>390) posX=390;
			//alert("mouse_x = " + mouse_x + " && posX = " + posX);
			//alert("mouse_y = " + mouse_y + " && posY = " + posY);
			var posY_Window=window.outerHeight;
			var high=(posY-posY_Window);
			if(high>600){posY=(posY_Window+500);}
			}
		
		document.getElementById(cible).style.left = posX+"px";
		document.getElementById(cible).style.top = (posY-150)+"px";
		makeRequest(hurle,cible);
		return false;
		}
	}
//FIN AJAX
//addevent
function addEvent(obj, evType, fn){ 
	if (obj.addEventListener)
		{ 
		obj.addEventListener(evType, fn, false); 
		return true; 
		}
	else if (obj.attachEvent)
		{ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
		}
	else 
		{ 
		//alert("Handler could not be added");
		return false; 
		} 
	}
function removeEvent(obj, evType, fn){
	if (obj.removeEventListener){
		obj.removeEventListener(evType, fn, false);
		return true;
	}
	else if (obj.detachEvent){
		var r = obj.detachEvent("on"+evType, fn);
		return r;
	}
	else {
		//alert("Handler could not be removed");
		return false; 
	}
}
//execution du window.onload se fait dans l'ordre inverse de déclaration pour IE...!
//addEvent(window, "load", init2);
//fin addEvent
var ns4=(document.layers);var ie4=(document.all&&!document.getElementById);var ie5=(document.all&&document.getElementById);var ns6=(!document.all&&document.getElementById);var mac=(navigator.appVersion.indexOf("Mac")>=0)?1:0;var dom=(document.getElementById)?1:0;var ie=(ie4||ie5)?1:0
function layer(lyr){if(ns4){obj=document.layers[lyr]}else if(ie4){obj=document.all[lyr].style}else if(dom){obj=document.getElementById(lyr).style}return obj;}
function left(lyr){if(!ns4&&!mac){obj=parseInt(layer(lyr).left.substring(0,layer(lyr).left.indexOf("p")));}else if(dom&&mac&&!ie){obj=parseInt(layer(lyr).left.substring(0,layer(lyr).left.indexOf("p")));}else{obj=parseInt(layer(lyr).left);}return obj}
function pot(lyr){if(!ns4&&!mac)obj=parseInt(layer(lyr).top.substring(0,layer(lyr).top.indexOf("p")));else if(dom&&mac&&!ie)obj=parseInt(layer(lyr).top.substring(0,layer(lyr).top.indexOf("p")));else{obj=parseInt(layer(lyr).top)}return obj;}
function showHide(lyr,what){layer(lyr).visibility=what;}
function setDisplay(lyr,what){layer(lyr).display=what;}
function posLeft(lyr,x){layer(lyr).left=x;}
function posTop(lyr,y){layer(lyr).top=y;}
function setWidth(DivId,w){layer(DivId).width=w;}
function setHeight(DivId,h){layer(DivId).height=h;}
function setZ(lyr,z){layer(lyr).zIndex=z;}
function setClip(DivId,MyClip){if(!ns4){layer(DivId).clip="rect("+MyClip[0]+"px "+MyClip[1]+"px "+MyClip[2]+"px "+MyClip[3]+"px)";}else{document.layers[DivId].clip.top=MyClip[0];document.layers[DivId].clip.right=MyClip[1];document.layers[DivId].clip.bottom=MyClip[2];document.layers[DivId].clip.left=MyClip[3];}}
function getHeight(DivId){if((ie5&&!mac)||ns6)return(document.getElementById(DivId).offsetHeight);else if(ie4)return(document.all[DivId].clientHeight);else if(ns4)return(document.layers[DivId].document.height);else if(ie5&&mac)return(document.all[DivId].offsetHeight);else return(document.getElementById(DivId).offsetHeight);}
function getWidth(DivId){if((ie5&&!mac)||ns6)return(document.getElementById(DivId).offsetWidth);else if(ie4)return(document.all[DivId].clientWidth);else if(ns4)return(document.layers[DivId].document.width);else if(ie5&&mac)return(document.all[DivId].offsetWidth);else return(document.getElementById(DivId).offsetWidth);}
function aleft(MyObject){if(dom||ie4){if(MyObject.offsetParent){return(MyObject.offsetLeft+aleft(MyObject.offsetParent));}else{return(MyObject.offsetLeft);}}if(ns4){return(MyObject.x);}}
function atop(MyObject){if(dom||ie4){if(MyObject.offsetParent){return(MyObject.offsetTop+atop(MyObject.offsetParent));}else{return(MyObject.offsetTop);}}if(ns4){return(MyObject.y);}}
function setToAnchor(AnchorName,lyr){var MyAnchor;if(dom){MyAnchor=document.getElementById(AnchorName);}else if(ie4){MyAnchor=document.all[AnchorName];}else if(ns4){MyAnchor=document.anchors[AnchorName];}if(arguments.length==2){posLeft(lyr,aleft(MyAnchor));posTop(lyr,atop(MyAnchor));}else{if(arguments[2]=="x"){posLeft(lyr,aleft(MyAnchor));}else{posTop(lyr,atop(MyAnchor));}}}
var mouse_x=0
var mouse_y=0
function positionSouris(evt){
	//alert("positionSouris");
	if( !evt ) evt=window.event;
	mouse_x=evt.clientX+(document.documentElement.scrollLeft || document.body.scrollLeft);
	mouse_y=evt.clientY+(document.documentElement.scrollTop || document.body.scrollTop);
	}
addEvent(window, "load", initMouse);
function initMouse(){
	//alert("initMouse");
	//document.onmousemove=positionSouris;
	addEvent(document, "mousemove", positionSouris);
	}
/***** DISPLAY MANAGEMENT *****/
//generic fonction to display or not an element
function displayElement(elmt, disp){
	document.getElementById(elmt).style.display=disp;
	}

/***** POPIN *****/
function affichDiapo(act)
	{
	var diapoActiv = parseInt(document.getElementById("numDiapo").innerHTML);
	if(act == "prev")
		{
		diapoCible = diapoActiv - 1;
		//verification existence photo precedente
		if(document.getElementById("diapo_"+diapoCible))
			{
			document.getElementById("diapo_"+diapoActiv).className = "diapobox off";//cache la précédente
			document.getElementById("diapo_"+diapoCible).className = "diapobox on";//montre la nouvelle
			var prevDiapo = diapoCible - 1;
			if(!document.getElementById("diapo_"+prevDiapo))
				{
				//on inactive le lien
				document.getElementById("diapoPrev").innerHTML = "&laquo; Photo pr&eacute;c&eacute;dente";
				}
			document.getElementById("diapoNext").innerHTML = '<a href="javascript:affichDiapo(\'next\');" title="Voir la photo suivante" class="">Photo suivante &raquo;</a>';
			}
		}
	else
		{
		diapoCible = diapoActiv + 1;
		//verification existence photo suivante
		if(document.getElementById("diapo_"+diapoCible))
			{
			document.getElementById("diapo_"+diapoActiv).className = "diapobox off";//cache la précédente
			document.getElementById("diapo_"+diapoCible).className = "diapobox on";//montre la nouvelle
			var nextDiapo = diapoCible + 1;
			if(!document.getElementById("diapo_"+nextDiapo))
				{
				//on inactive le lien
				document.getElementById("diapoNext").innerHTML = "Photo suivante &raquo;";
				}
			document.getElementById("diapoPrev").innerHTML = '<a href="javascript:affichDiapo(\'prev\');" title="Pas de photo précédente" class="">&laquo; Photo pr&eacute;c&eacute;dente</a>';
			}
		}
	document.getElementById("numDiapo").innerHTML = diapoCible;
	}

function navPopin(obj,div)
	{
	var idLink = obj.id;
	var linkContent = obj.href;
	if(idLink == "undefined" || idLink == "") idLink = "linkFiche";
	document.getElementById("linkFiche").className = "";
	document.getElementById("linkExc").className = "";
	document.getElementById("linkRegion").className = "";
	document.getElementById("linkDiapo").className = "";
	document.getElementById(idLink).className = "active";
	makeRequest(obj,div);
        //autofitframe('contentFRM', div);
	return false;
	}

//Gestion de l'affichage des selects quand popin visible //
fDomOffset = function( oObj, sProp )
	{
	 var iVal = 0;
	 while (oObj && oObj.tagName != 'BODY') 
	 	{
		eval('iVal += oObj.' + sProp + ';');
		oObj = oObj.offsetParent;
 		}
	return iVal;
	}
	
fSwapSelect = function( sId ) 
	{ 
	oObj = document.getElementById(sId); 
	Top_Element  = fDomOffset(oObj, 'offsetTop'); 
	Left_Element  = fDomOffset(oObj, 'offsetLeft'); 
	Largeur_Element  = oObj.offsetWidth; 
	Hauteur_Element  = oObj.offsetHeight; 
	oSelects = document.getElementsByTagName('SELECT'); 
	
	if (oSelects.length > 0) 
		{ 
  		for (i = 0; i < oSelects.length; i++) 
			{ 
			oSlt = oSelects[i]; 
			Top_Select = fDomOffset(oSlt, 'offsetTop'); 
			Left_Select = fDomOffset(oSlt, 'offsetLeft'); 
			Largeur_Select = oSlt.offsetWidth; 
			Hauteur_Select = oSlt.offsetHeight; 
   			isLeft = false; 
   			if ((Left_Element > (Left_Select - Largeur_Element)) && (Left_Element < (Left_Select + Largeur_Select))) 
				{ 
    			isLeft = true; 
   				} 
   			isTop = false; 
   			if ((Top_Element > (Top_Select - Hauteur_Element)) && (Top_Element < (Top_Select + Hauteur_Select))) 
				{ 
    			isTop = true; 
   				} 
   			if (isLeft && isTop) 
				{ 
				sVis = (oObj.style.visibility == 'hidden') ? 'visible' : 'hidden'; 
    			if (oSlt.style.visibility != sVis) {oSlt.style.visibility = sVis;} 
   				} 
			else 
				{ 
    			if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';} 
   				} 
  			} 
 		} 
	} 

function autofitframe(id, div){
parent.document.getElementById(id).style.height="650px";

/*
if (!window.opera && !document.mimeType && document.all && document.getElementById){
parent.document.getElementById(id).style.height=document.getElementById(div).offsetHeight+"px";
alert(document.getElementById(div).offsetHeight);
//alert(document.getElementById(id));
}
else if(document.getElementById) {
 //alert(document.getElementById(div).scrollHeight+"px");
 //var height = document.getElementById(div);

 //alert(document.getElementById(div).scrollHeight+"px");

 parent.document.getElementById(id).style.height=document.getElementById(div).scrollHeight+"px";
 //alert(parent.document.getElementById(id).style.height);
}
*/
}


function autofitIframe(id){
if (!window.opera && !document.mimeType && document.all && document.getElementById){
parent.document.getElementById(id).style.height=this.document.body.offsetHeight+"px";
}
else if(document.getElementById) {
 var height = parseInt(this.document.body.scrollHeight)+20;
 parent.document.getElementById(id).style.height=height+"px";
}
}

function setInnerHTML(divContent, HTML) {
      divContent.innerHTML=HTML; 
      var All=divContent.getElementsByTagName("*");
      for (var i=0; i<All.length; i++) {
        All[i].id=All[i].getAttribute("id")
        All[i].name=All[i].getAttribute("name")
        All[i].className=All[i].getAttribute("class")
      }
      var AllScripts=divContent.getElementsByTagName("script")
      for (var i=0; i<AllScripts.length; i++) {
         var s=AllScripts[i];
         if (s.src && s.src!="") {
            // Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
            eval(getFileContent(s.src))
         }
         else {
            eval(s.innerHTML)
         }
      }
    }

function getFileContent(url) {
       var Xhr=GetXmlHttpRequest();
       Xhr.open("GET",url,false);
       Xhr.send(null);
       return Xhr.responseText;
    }

 // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
    var pickRecentProgID = function (idList){
	    // found progID flag
        var bFound = false;
        for(var i=0; i < idList.length && !bFound; i++){
            try{
                var oDoc = new ActiveXObject(idList[i]);
                o2Store = idList[i];
                bFound = true;
            }catch (objException){
                // trap; try next progID
            };
        };
        if (!bFound)
		    throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
        idList = null;
        return o2Store;
    }
 
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null
    var GetXmlHttpRequest=function () {
	    if (window.XMLHttpRequest) {
		    return new XMLHttpRequest()
	    }
	    else if (window.ActiveXObject) {
		    if (!GetXmlHttpRequest_AXO) {
			    GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
		    }
		    return new ActiveXObject(GetXmlHttpRequest_AXO)
	    }
	    return false;
    }

function innerHTMLJS(obj,content)
{
  /* Copyleft by GourouLubrik 2006 */
  if(typeof(obj) != 'object' && typeof(content) != 'string') return;
  obj.innerHTML = content;
  
  var scripts = obj.getElementsByTagName('script');
  if(scripts == false) return true; // no node script == no problem !
  for (var i=0;i<scripts.length;i++)
  {
    var scriptclone = document.createElement('script');
    if(scripts[i].attributes.length > 0) /* boucle de copie des attributs du script dans le nouveau node */
    {
      for (var j in scripts[i].attributes)
      {
        if(typeof(scripts[i].attributes[j]) != 'undefined'
         && typeof(scripts[i].attributes[j].nodeName) != 'undefined' /* IE needs it */
         && scripts[i].attributes[j].nodeValue != null
         && scripts[i].attributes[j].nodeValue != '' /* IE needs it ou il copie des nodes vides */) 
        {
          scriptclone.setAttribute(scripts[i].attributes[j].nodeName,scripts[i].attributes[j].nodeValue);
        }
      }
    }
    scriptclone.text = scripts[i].text; // on copie le corp du script
     /* 
         la j'ai pas compris, si je ne return pas sous opera ici : le javascript s'execute 2 fois - 
         mais la : le script s'execute mais n'est pas a ce moment la placé entre les balises scripts !
         et si je return juste après le innerHTML, le script n'est pas executé... ---o(<    
     */
    if (navigator.userAgent.indexOf("Opera")>0) { return; }
    /* on force le remplacement du node par dom, qui a pour effet de forcer le parsing du javascript */
    scripts[i].parentNode.replaceChild(scriptclone,scripts[i]); 
  }
  return true;
}
function switchImage(imgName, imgSrc) 
{
  if (document.images)
  {
    if (imgSrc != "none")
    {
      document.images[imgName].src = imgSrc;
    }
  }
}
