//Une fonction pour tester la présence du DOM
function fnTestDom()
{
	if(!document.getElementById || !document.getElementsByTagName)
		return false
	else
		return true
}

//Le addEvent, pour ne pas écraser les anciens evenements
function addEvent(obj, evType, fn, useCapture)
{
  if (obj.addEventListener)
  {
    obj.addEventListener(evType, fn, useCapture);
    return true;
  }
  else if (obj.attachEvent)
  {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  }
  else
	return false;
}

//Lit le tableau global (sic!) pour récupérer le nombre d'établissement par type de table
function fnLoadMapData()
{

	if (!aMapData)
		return false;
	else
	{
		var sRegion = new String();	sRegion = getSelectedRegion();	//La région sélectionnée
		var aChecked = new Array(); aChecked = getCheckboxValue();	//Les checkbox cochées
		var sIterator = new String();				//Itérateur pour les boucles for...in
		var sIdChecked = new String();				//Idem pour le tableau aChecked
		var iCount = new Number(); iCount = 0;		//Le nombre d'établissements correspondants à la recherche

		if (sRegion == '')	//Pas de region indiquée
		{
			for (sIterator in aMapData)
			{
				for (sIdChecked in aChecked)
				{
					iCount= parseInt(iCount) + parseInt(aMapData[sIterator][aChecked[sIdChecked]]);
				}
			}
		}
		else if(!sRegion.isNaN)	//Région précisé
		{
			for (sIdChecked in aChecked)
			{
				iCount= parseInt(iCount) + parseInt(aMapData[sRegion][aChecked[sIdChecked]]);
			}
		}
		else	//Probléme pour récupérer sRegion
			return false;
		return(iCount);
	}
}


function fnDisplayData()
{
/*	var iCount = new Number(); iCount = fnLoadMapData();
	var oContainer = document.getElementById('rechercheTypeTable');
	
	if (!oContainer || iCount.isNaN);
	else
	{
		var oInfoSpan = new Object(); oInfoSpan = document.getElementById('infoSpan');
	
		if (oInfoSpan)
			oInfoSpan.innerHTML = iCount + ' établissements';
	
		else
		{
			oInfoSpan = document.createElement('span');
			with (oInfoSpan)
			{
				innerHTML = iCount + ' établissements';
				id = 'infoSpan';
			}
			oContainer.appendChild(oInfoSpan)
		}
	}
*/
}
//Récupére la valeur du select pour la région ou le pays
function getSelectedRegion()
{

	var oSelectRegion = document.getElementById('zoneid');	//Le select de la région
	var sRegion = new String();
	
	if (!oSelectRegion)
		return false;
	else
	{
			sRegion = oSelectRegion.options[oSelectRegion.selectedIndex].value;
			if(sRegion)
			{
				sRegion = sRegion.replace('pays-','');
				sRegion = sRegion.replace('region-','');
				return sRegion;
			}
			else
				return '';
	}
}

//Renvoi un array des type de table sélectionné
function getCheckboxValue()
{
	var aCheckboxID = new Array('TE','GT','BT','BBT');	//Tableau contenant les id des checkbox
	var aChecked = new Array();		//Tableau contenant les id des checkbox cochées
	var sIterator = new String();
	var oCheckbox;
	
	for (sIterator in aCheckboxID)
	{
		oCheckbox = document.getElementById(aCheckboxID[sIterator]);
		if (!oCheckbox)
			return false;
		else if (oCheckbox.checked)
		{
			aChecked.push(aCheckboxID[sIterator]);
		}
	}
	return aChecked;
}

//Lit la carte pour stocker les données dans un tableau
function fnStoreMapData()
{
	var aLiParents = $('#map li');	//Tableau des li parents de celle contenants le nombre de tables remarquables
	if (!aLiParents)
		return false;

	var aInfoMap = new Array();	//Tableau contenant les infos de la carte triée par région et type de table
	var aInfoDiv = new Array();	//Tableau intermediaire pour stocker les div contentant les infos de la carte
	var sName = new String();	//Chaine contenant le name des input ---> Region
	var sClass = new String();	//Chaine contenant la classe des div pour récupérer le type de table
	var reg = new RegExp("[^0-9]",'gi');	//RegExp pour ne recuperer que les chiffres
	var iI = new Number();	//Variable pour les boucles
	var iY = new Number();	//Variable pour les boucles

	for (iI=0; iI< aLiParents.length ; iI++)
	{
		sName = aLiParents[iI].getElementsByTagName('input')[0].name;
		sName = sName.substring(parseInt(sName.indexOf('[') + 1), sName.indexOf(']'))
		aInfoMap[sName] = new Array();	//Première dimension, par region

		aInfoDiv = aLiParents[iI].getElementsByTagName('div')[0].getElementsByTagName('div');

		for (iY=0; iY< aInfoDiv.length ; iY++)
		{
			sClass = aInfoDiv[iY].className.replace('carte', '');			
			aInfoMap[sName][sClass] = aInfoDiv[iY].innerHTML.replace(reg,'');	//Deuxieme dimension, par type de table
		}
	}
	return aInfoMap;
}

//Initialise les checkbox type tables
function fnCheckBox()
{
	var oContainer = document.getElementById('rechercheTypeTable')
	if (!oContainer)
		return
	var aInputs = oContainer.getElementsByTagName('input');
	var aCheckbox = new Array();

	//On récupére tous les checkbox
	for (iI=0 ; iI < aInputs.length ; iI++)
	{
		if (aInputs[iI].getAttribute('type') == 'checkbox')
			aCheckbox.push(aInputs[iI])
	}
	
	for (iI=0 ; iI < aCheckbox.length ; iI++)
	{
		aCheckbox[iI].onclick = fnDisplayData;
	}
}

//Init du select pour les régions
function fnSelect()
{
	var oSelectRegion = document.getElementById('zoneid');	//Le select de la région
	if (!oSelectRegion)
		return;
	else
		oSelectRegion.onchange = fnDisplayData;
}

//Initialisation globale
function fnInit()
{
	aMapData = fnStoreMapData();
	fnCheckBox();
	fnSelect();
}

//Tableau global pour stocker les données de la carte
var aMapData = new Array();

//On teste la présence du DOM, on garde l'info en variable globale
var bDOM = new Boolean()
bDOM = fnTestDom()

//On ne fais l'initialisation qu'en cas de présence du DOM
if (bDOM)
	//On utilise addEvent pour se réserver la possibilité d'ajouter d'autres tartines de scripts
	addEvent(window, 'load', fnInit, false)
