var mode_SVG = false;
var mode_VML = false;



//--------------------------------------------------------------------------------------------------------------------------------------------------
function detect_SVG_VML()
{
if(VMLSupporte())
	{mode_VML = true; return;}

if(SVGSupporte())
	{mode_SVG = true; return;}
}	

//--------------------------------------------------------------------------------------------------------------------------------------------------
//CONTROLE DU NAVIGATEUR   VML / SVG supportés ?

//Retourne true si le navigateur supporte VML, sinon, retourne false ;
// From Google (!)
function VMLSupporte()
{
vml_capable = (document.all && !(navigator.userAgent.indexOf("Opera")>=0)) ? true : false;
return vml_capable ;
}

//Retourne true si le navigateur supporte SVG, sinon, retourne false ;
function SVGSupporte()
{
svg_capable = document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#CoreAttribute", '1.1');
return svg_capable ;
}








//--------------------------------------------------------------------------------------------------------------------------------------------------
/*
* getSVGobject()
*
* recupere une reference sur un objet SVG quelque que soit sa provenance
* (embed ou "direct" dans le code)
*
* @param string svgId IDentifiant de l'objet (<EMBED>) SVG
* @return object objet representant le SVG
*/
function getSVGDoc(svgId)
{
// On descend dans l'arbre... a la recherche de la branche des EMBEDS
// et on retourne le SVGdocument qui correspond au svgId indique
if (document.embeds[svgId] != null)
	{
	//alert('embed !');
	return document.embeds[svgId].getSVGDocument();
	}
else
	{
	//alert('autre !');
	//alert(document.getElementById(svgId).getSVGDocument);
	return document.getElementById(svgId).getSVGDocument;
	}
}	

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Cible le document VML. (éqjuivalent de getSVGDoc)
function getVMLDoc(Id)
{
//return document.getElementById(Id).document ;
//alert(Id + "-->" + window.frames[Id].name);
return window.frames[Id].document;
}


// Cible le document VML à sa racine. (i.e. le groupe de niveau 0)
function getVMLRacine(Id)
{
return getVMLDoc(Id).getElementById("MAIN") ;
}



//--------------------------------------------------------------------------------------------------------------------------------------------------
/*
* getSVGelement()
*
* @param object SVGobj objet SVG a explorer
* @param string elementName nom de l'element SVG qu'on souhaite recuperer
* @return object objet representant l'element SVG
*/
function getSVGelement(svgObj,elementName)
{
if(mode_SVG)
	return svgObj.getElementById(elementName);
// else 
return getVMLMaillon(svgObj,elementName)
}

// Equivalent VML de la fct ci dessus : Cible le maillon/groupe dont l'id est placé en paramètre
// RA 17/03/08; même implémentation que le SVG
function getVMLMaillon(doc, elementName)
{
//return getSVGelement(doc, elementName) ; 
var ele;

ele = doc.getElementById(elementName);
// bug in IE and Opera 8.2 where getElementById returns wrong element
if (ele && (ele.attributes['id'] != elementName) && doc.all)
	{
	ele = null;
	// get all matching elements with this id
	eles = doc.all[elementName];
	if (eles)
		{
		// if more than 1, choose first with the correct id
		if (eles.length)
			{
			for (var i=0; i < eles.length; i++)
				{
				if (eles[i].attributes['id'] == elementName)
					{
					ele = eles[i];
					break;
					}
				}	
			}
		else
			ele = eles;
				
		}
	}
return(ele);
}				

//--------------------------------------------------------------------------------------------------------------------------------------------------
function getNodeList_SVGElement(svgObj, elementName)
{
var o, liste, N;

o = getSVGelement(svgObj,elementName);
if(!o)
	return(null);
liste = o.childNodes;
if(!liste)
	{
	//alert(elementName);
	return(new Array(o));
	}
N = liste.length;
if(!N)
	{
	//alert(elementName);
	return(new Array(o));
	}
return(liste);
}


// Equivalent VML de la fonction ci-dessus
function getNodeList_VMLElement(doc, elementName)
{
return(getNodeList_SVGElement(svgObj, elementName)); // nelle implémentation RA 17/03/08
}

