var general_pageLoader;
var	general_sousMenuActif;
var	general_sousMenuTimeoutId;
var	general_horairesLoader;
var	general_nbPlacesLoader;

window.addEvent('load', general_finishLoading);

function general_finishLoading()
{
	general_resetPosition();
	window.onresize = general_resetPosition;
}

function general_resetPosition()
{
	var	page = $('page');
	var	backgroundGauche = $('backgroundGauche');
	var	backgroundDroite = $('backgroundDroite');
	var	sommaire = $('theSommaire');
	var	width;
	
	if (page)
	{
		width = $(document.body).getStyle('width').toInt() - page.getStyle('width').toInt();
		if (backgroundGauche)
			backgroundGauche.setStyle('width', Math.ceil(width / 2) + 'px');
		if (backgroundDroite)
			backgroundDroite.setStyle('width', Math.ceil(width / 2) + 'px');
		if (sommaire)
		{
			if (sommaire.getElementsByTagName('h3').length > 1)
			{
				sommaire.setStyle('display', 'block');
				sommaire.setStyle('right', Math.ceil(width / 2) + 'px');
			}
		}
	}
}

function general_loadPage(url)
{
	var	done;
	
	try
	{
		done = false;
		if (general_pageLoader == null)
		{
			general_pageLoader = new Request.HTML
			(
				{
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
					{
						var contenu;
						var	path;
						var	pos;
						var	i;

						contenu = document.getElementById('contenu');
						if (contenu && responseElements && (responseElements.length > 0))
						{
							for (i = 0; (i < responseElements.length) && (done == false); i++)
							{
								if (responseElements[i].id == 'contenu')
								{
									contenu.innerHTML = responseElements[i].innerHTML;
									done = true;
								}
							}
						}
						if (!done)
							window.location = url;
						else
						{
							pos = window.location.href.indexOf('#');
							if (pos >= 0)
								path = window.location.href.substr(0, pos);
							else
								path = window.location.href;
							window.location = path + '#';
							done = false;
						}
					},
					onFailure: function(xhr)
					{
						switch (xhr.status)
						{
						case 404:
							$('contenu').set('html', '<h5>La page que vous avez demandé n\'existe pas.</h5>');
							break;
						default:
							alert("Erreur " + xhr.status);
							if (!done)
								window.location = url;						
							break;
						}
					},
					onException: function(headerName, value)
					{
						alert("Exception : " + headerName + "\n" + value);
						if (!done)
							window.location = url;
					}
				}
			);
			window.location = url;
		}
		else
		{
			general_pageLoader.cancel();
		}
		//general_pageLoader.get(url);
		//window.location = url;
	}
	catch(e)
	{
		general_pageLoader = null;
		alert(e);
		window.location = url;
	}
	return false;
}

function general_showSubMenu(e, mode)
{
	var	evt = new Event(e || window.event);
	var	target;
	var	section;
	var	sousMenu;
	var	offsetParent;

	if (evt)
	{
		target = evt.target;
		if (target)
		{
			target = $(target);
			section = target.getParent();
			target.addEvent('mouseleave', general_startSubMenuTimer);
			if (section)
			{
				sousMenu = section.getElement('div');
				if (sousMenu && (sousMenu != general_sousMenuActif))
				{
					if (general_sousMenuActif)
					{
						general_sousMenuActif.setStyle('display', 'none');
						general_sousMenuActif.removeEvent('mouseleave', general_startSubMenuTimer);
					}
					general_sousMenuActif = sousMenu;
					general_sousMenuActif.setStyle('display', 'block');
					offsetParent = target.getOffsetParent();
					offsetParent = $(offsetParent);
					if (mode == 1)
					{
						general_sousMenuActif.setStyle('top', '30px');
						general_sousMenuActif.setStyle('left', target.getPosition().x - offsetParent.getPosition().x);
					}
					else
						general_sousMenuActif.setStyle('top', target.getPosition().y - offsetParent.getPosition().y /*- general_sousMenuActif.getSize().y / 3*/);
					general_sousMenuActif.addEvent('mouseleave', general_startSubMenuTimer);
					general_sousMenuActif.addEvent('mouseenter', general_cancelSubMenuTimer);
				}
				general_cancelSubMenuTimer();
			}
		}
	}
}

function general_startSubMenuTimer(e)
{
	var	evt = new Event(e || window.event);
	
	if (evt)
	{
		target = evt.target;
		if (target)
		{
			target = $(target);
			target.removeEvent('mouseleave', general_startSubMenuTimer);
		}
	}
	general_cancelSubMenuTimer();
	general_sousMenuTimeoutId = general_hideSubMenu.delay(500);
}

function general_cancelSubMenuTimer()
{
	if (general_sousMenuTimeoutId)
		general_sousMenuTimeoutId = $clear(general_sousMenuTimeoutId);
}

function general_hideSubMenu(e)
{
	general_cancelSubMenuTimer();
	if (general_sousMenuActif)
	{
		general_sousMenuActif.setStyle('display', 'none');
		general_sousMenuActif.removeEvent('mouseleave', general_hideSubMenu);
		general_sousMenuActif = null;
	}
}

function general_trackDocument(url, titre)
{
	var	i;

	try
	{
		if (_gaq && _pageTrackers && url)
		{
			for (i = 0; i < _pageTrackers.length; i++)
			{
				if (_pageTrackers[i] != "")
					_gaq.push([_pageTrackers[i] + "._trackEvent", "Document", "Téléchargement", titre]);
				else
					_gaq.push(["_trackEvent", "Document", "Téléchargement", titre]);
			}
		}
	} catch(err) {}
}

function general_changeFiltreRessourceInscription() {
	var	ressource;
	var	horaire;
	var	url = 'getHoraires.php?lieu=';

	ressource = document.getElementById('lieu');
	horaire = document.getElementById('horaire');
	if (ressource && horaire)
	{
		horaire.innerHTML = '';
		if (parseInt(ressource.value) > 0)
		{
			if (general_nbPlacesLoader != null)
			{
				general_nbPlacesLoader.cancel();
				general_nbPlacesLoader = null;
			}
			if (general_horairesLoader != null)
			{
				general_horairesLoader.cancel();
				general_horairesLoader = null;
			}
			general_horairesLoader = new Request.HTML
			(
				{
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
					{
						horaire.parentNode.innerHTML = responseHTML;
						general_changeFiltreHoraireInscription();
					},
					onFailure: function(xhr)
					{
						switch (xhr.status)
						{
						default:
							alert("Erreur " + xhr.status);
							break;
						}
					},
					onException: function(headerName, value)
					{
						alert("Exception : " + headerName + "\n" + value);
					}
				}
			);
			general_horairesLoader.get(url + parseInt(ressource.value));
		}
	}
	else
		general_changeFiltreHoraireInscription();
}

function general_changeFiltreHoraireInscription() {
	var	formulaire;
	var	ressource;
	var	horaire;
	var	nb;
	var	action;
	var	url = 'getNbPlaces.php?formulaire=';
	
	formulaire = document.getElementById('formulaire');
	action = document.getElementById('action');
	nb = document.getElementById('nb');
	ressource = document.getElementById('lieu');
	horaire = document.getElementById('horaire');
	if (formulaire && nb)
	{
		url += parseInt(formulaire.value);
		if (parseInt(nb.value) > 0)
			url += "&nb=" + parseInt(nb.value);
		nb.innerHTML = '';
		if (general_nbPlacesLoader != null)
		{
			general_nbPlacesLoader.cancel();
			general_nbPlacesLoader = null;
		}
		general_nbPlacesLoader = new Request.HTML
		(
			{
				onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
				{
					nb.parentNode.innerHTML = responseHTML;
					if (action)
					{
						nb = document.getElementById('nb');
						if (nb && (parseInt(nb.value) < 0))
							action.disabled = true;
						else
							action.disabled = false;
					}
				},
				onFailure: function(xhr)
				{
					switch (xhr.status)
					{
					default:
						alert("Erreur " + xhr.status);
						break;
					}
				},
				onException: function(headerName, value)
				{
					alert("Exception : " + headerName + "\n" + value);
				}
			}
		);
		if (ressource && (parseInt(ressource.value) > 0))
			url += "&lieu=" + parseInt(ressource.value);
		if (horaire && (parseInt(horaire.value) > 0))
			url += "&horaire=" + parseInt(horaire.value);
		general_nbPlacesLoader.get(url);
	}
}

function general_valideInscription(bloquant, ressourceLibelle) {
	var	nom;
	var	prenom;
	var	societe;
	var	mail;
	var	telephone;
	var	ressource;
	var	horaire;
	var	nb;
	var valide = true;
	var message = "";
	var reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}$/;

	nom = document.getElementById('nom');
	prenom = document.getElementById('prenom');
	societe = document.getElementById('societe');
	mail = document.getElementById('mail');
	telephone = document.getElementById('telephone');
	ressource = document.getElementById('lieu');
	horaire = document.getElementById('horaire');
	nb = document.getElementById('nb');
	if (nom)
	{
		if (nom.value == "")
		{
			message += "Vous devez indiquer votre nom.\n";
			nom.className = 'invalide';
			valide = false;
		}
		else
			nom.className = 'valide';
	}
	if (prenom)
	{
		if (prenom.value == "")
		{
			message += "Vous devez indiquer votre prénom.\n";
			prenom.className = 'invalide';
			valide = false;
		}
		else
			prenom.className = 'valide';
	}
	if (societe)
	{
		if (societe.value == "")
			societe.className = '';
		else
			societe.className = 'valide';
	}
	if (mail)
	{
		if (mail.value == "")
		{
			message += "Vous devez indiquer votre adresse mail.\n";
			mail.className = 'invalide';
			valide = false;
		}
		else
		{
			if (reg.exec(mail.value) != null)
				mail.className = 'valide';
			else
			{
				message += "Vous devez indiquer une adresse mail valide.\n";
				mail.className = 'invalide';
				valide = false;
			}
		}
	}
	if (telephone)
	{
		if (telephone.value == "")
			telephone.className = '';
		else
			telephone.className = 'valide';
	}
	if (ressource && (parseInt(ressource.value) <= 0))
	{
		message += "Vous n'avez pas indiqué de " + ressourceLibelle + ".\n";
		valide = false;
	}
	if (nb && (parseInt(nb.value) < 0))
	{
		message += "Il n'y a plus de place disponible.\n";
		valide = false;
	}
	if (!valide)
	{
		if (bloquant)
			alert(message);
		return false;
	}
	return true;
}

function general_switchCarte(anchor, over)
{
	if (anchor)
	{
		if (over)
			anchor.src = "images/ComComMEF.png";
		else
			anchor.src = "images/CommunesMEF3.png";
	}
}

function general_switchSmartListe(listeId)
{
	var liste = document.getElementById(listeId);
	
	if (liste)
	{
		if (liste.className == 'smartListeDocuments')
			liste.className = 'smartListeDocumentsOpened';
		else
			liste.className = 'smartListeDocuments';
	}
}

 function general_changeFiltre(id)
 {
	var	url = '/articles';

	if (id != '')
		url += '?' + parseInt(id);
	window.location = url;
}

function general_trackQuestionnaire(titre)
{
	var	i;

	try
	{
		if (_gaq && _pageTrackers && titre)
		{
			for (i = 0; i < _pageTrackers.length; i++)
			{
				if (_pageTrackers[i] != "")
					_gaq.push([_pageTrackers[i] + "._trackEvent", "Questionnaire", "Réponse", titre]);
				else
					_gaq.push(["_trackEvent", "Questionnaire", "Réponse", titre]);
			}
		}
	} catch(err) {}
}

