
// -------------------- � fonctions sur les popups --------------------
// Centrer la popup
function centerPopup(idPopup) {
	if (idPopup == undefined) {
		idPopup = 'popup';
	}
	
	//var haut = getWindowHeight();
	//var scroll = getScrollPosition();
	
	$(idPopup).top = '0px';
	$(idPopup).left = '0px';
	var top = ((screen.availHeight - $(idPopup).getHeight()) / 3) ;
	var Left = ((1000 - $(idPopup).getWidth()) / 2) ;
	
	$(idPopup).style.marginTop = top + 'px';
	$(idPopup).style.marginLeft = Left + 'px';
}


var PopupDrageableHandle ;
function StartDragPopupHeader() {
	if (!(typeof( window[PopupDrageableHandle] ) != "undefined")) {
		PopupDrageableHandle = new Draggable('popup', {handle:"cadreTitrePopupSearch"});
	}
}

// fermer proprement la popup
function closePopup() {
	
	window.setTimeout('centerPopup("popup");', 500);
	
	$('popup').innetHTML = '';
	hideShowPopupDiv('popup', 'hide');
	
	$('fond_gris_popup').hide();
	delete(PopupDrageableHandle);
	
	document.onkeypress = null;
}

// fermer proprement la popup
function closeConfirmBox() {
	
	
	$('divMsg').innetHTML = '';
	hideShowPopupDiv('divMsg', 'hide');
	
	$('fond_gris_popup').hide();
	
	document.onkeypress = null;
}

function showPopupSearch(parameters)
{
	doRequestAndXmlResponse('recherche', 'showPopup', parameters);
}

/**
* Cache la popup sur touche echap
*/
function EchapSurPopup(e) {
	// pour compatibilit� 				IE					FF
	var touche = (window.event) ? window.event.keyCode :  e.keyCode ;
	if (touche == 27) {
		if ($('popup').style.display == 'block') { 
			closePopup();
		}
	}
}

// -------------------- affiche la popup et remplis son contenu avec l'url  --------------------
var oldUrlPopup='';
function showPopupWithAjax(URL) {
	// vide la contenu si URL diff�rente (+- PB de r�manance)
	if (URL != oldUrlPopup) {
		$('popup').innerHTML = '';
	}
	oldUrlPopup = URL;
	//alert(url_site+fc_name+URL);
	new Ajax.Updater('popup', url_site+fc_name+URL, {asynchronous:true, evalScripts:true, method: 'get', 
		onComplete:function(request, json)
		{
			centerPopup('popup');
			hideShowPopupDiv('popup', 'show');
		},
		onSuccess:function(request,json)
		{
			treatAjaxResponse(request.responseXML);
		}
		});
	// pour touche echap
	document.onkeypress = EchapSurPopup;
	
	return false;
}

// -------------------- Loading Box --------------------
 function display_loading_ajax(texte)
{
	display_divmsg('loading',texte);
}

/*
type = type de popup (success, error, warning, loading)
texte = texte associ� a la popup
*/
function display_divmsg(type, texte)
{

	//element conteneur
	var elt = $('divMsg');
	
	//on vide l'element conteneur
	killAllChildren(elt);
	
	//div du titre
	var titre = document.createElement('div');
	titre.className = 'cadre-titre hand';
	titre.id = 'divMsg_bar';

	//div du message
	var msg = document.createElement('div');
	
	//div du content
	var content = document.createElement('div');
	content.className = 'cadre-content center';

	//bouton ok
	var ok = document.createElement('a');
	ok.href = '#';
	ok.className = 'button';
	ok.appendChild(document.createTextNode('OK'));
	if(type == 'errorPopup') // Si on est d�j� en popup on vire pas le fond gris !!!
	{
		ok.onclick = function() { elt.hide();return false; };
	}
	else
	{
		ok.onclick = function() { elt.hide(); $('fond_gris_popup').hide();return false };
	}
	//mise en forme selon le type
	if (type == 'success') {
		//classes du divMsg
		elt.className = 'cadre popup';
		//contenu du titre
		titre.appendChild(document.createTextNode('Message d\'information'));
		//classe de la div du message
		msg.className = 'success';
		//message
		//msg.appendChild(document.createTextNode(texte));
		msg.innerHTML = texte;
		
		//construction
		elt.appendChild(titre);
		elt.appendChild(msg);
		elt.appendChild(content);
		content.appendChild(ok);
		
	} else if (type=='error' || type=='errorPopup') {
		//classes du divMsg
		elt.className = 'cadre popup';
		//contenu du titre
		titre.appendChild(document.createTextNode('Message d\'erreur'));
		//classe de la div du message
		msg.className = 'error';
		//message
		msg.innerHTML = texte;

		//construction
		elt.appendChild(titre);
		elt.appendChild(msg);
		elt.appendChild(content);
		content.appendChild(ok);
	} else if (type=='warning') {
		//classes du divMsg
		elt.className = 'cadre popup';
		//contenu du titre
		titre.appendChild(document.createTextNode('Message d\'avertissement'));
		//classe de la div du message
		msg.className = 'warning';
		//message
		//msg.appendChild(document.createTextNode(texte));
		msg.innerHTML = texte;
		
		//construction
		elt.appendChild(titre);
		elt.appendChild(msg);
		elt.appendChild(content);
		content.appendChild(ok);
	
	} else if (type=='loading') {
		//classes du divMsg
		elt.className = 'cadre popup loading';
		//message
		if (texte == '') {
			texte = 'Chargement en cours...'; 
		}
		//content.appendChild(document.createTextNode(texte));
		content.innerHTML = texte;
		content.id = 'MsgLoading';
		
		//construction
		elt.appendChild(content);
	} else if (type == 'compteur') {
		//classes du divMsg
		elt.className = 'cadre popup loadingLight';
		//message
		texte = 'Chargement en cours : 0%'; 
		content.innerHTML = texte;
		content.id = 'MsgLoading';
		
		//construction
		elt.appendChild(content);
		window.setTimeout('StartCompteur();', 1000);
		
	}
	//affichage
	elt.show();
	if(type != 'loading') {
		$('fond_gris_popup').show();
		new Draggable('divMsg', {handle:"divMsg_bar"});
	}
	centerPopup('divMsg');
}

/*
Compteur
*/
var compteur = null;
function StartCompteur() {
	compteur = new Ajax.PeriodicalUpdater('MsgLoading',
										  'http://sf.timothee.santevet.lan/ajax/getCounter',
										  {frequency: 2,
										   decay: 1,
										   asynchronous:true,
										   evalScripts:true});
}

function ClearCompteur() {
	compteur.stop();
	hideDiv('divMsg');
	hideDiv('fond_gris_popup');
}


/**
Si la r�sponse � la question text est oui l'url sera affich�e dans destDiv
Sinon la confirm_box disparait
*/
function confirm_box_updater(text, destDiv, url) {
	url = url_site+fc_name+url;
	onclick_confirm = "new Ajax.Updater('"+destDiv+"', '"+url+"', {asynchronous:true, evalScripts:true});"; 
	confirm_box(text, '', onclick_confirm);
	return false;
}

/**
meme chose que ci-dessus mais avec la m�thode doRequestAndXmlResponse
*/
function confirm_box_request(question, module, action, params) {
	var onclick_confirm = "doRequestAndXmlResponse('"+module+"', '"+action+"', '"+params+"')";
	confirm_box(question, true, onclick_confirm);
	return false;
}

//popup similaire a confirm()
function confirm_box(question, close, onclick_confirm, onclick_sap) 
{
	//element conteneur
	var div_content = $('divMsg');

	//on vide l'element conteneur
	killAllChildren(div_content);
	
	//attribut onmouseover de tout les boutons
	var fct_onmouseover = function() { PopupDrageableHandle.destroy(); }
	
	//attribut onmouseout de tout les boutons
	var fct_onmouseout = function() { StartDragPopupHeader(); }
	
	//attribut onclick du bouton 'non'
	var fct_onclick_sap = function() {
		delete(PopupDrageableHandle);
		$(div_content).hide();
		killAllChildren(div_content);
		$('fond_gris_popup').hide();
		if(onclick_sap) {
			eval(onclick_sap);
		}
	}
	
	//attribut onclick du bouton 'oui'
	var fct_onclick_confirm = function() {
		delete(PopupDrageableHandle);
		$(div_content).hide();
		killAllChildren(div_content);
		$('fond_gris_popup').hide();
		eval(onclick_confirm);
	}
	
	div_content.className = "cadre popup";
	
	var cadre_titre = document.createElement("div");
	cadre_titre.className = 'cadre-titre hand';
	cadre_titre.id = 'divMsg_bar';
	
	PopupDrageableHandle = new Draggable('divMsg', {handle:"divMsg_bar"});
	
	if(close) {
		var close_tag = document.createElement('img');
		close_tag.className = 'popup_close';
		close_tag.alt = 'fermer la fenetre';
		close_tag.src = url_site+'images/icons/fermer2.png';
		close_tag.onclick = function() {
			delete(PopupDrageableHandle);
			$(div_content).hide();
			killAllChildren(div_content);
			$('fond_gris_popup').hide();
		}
		close_tag.onmouseout = fct_onmouseout;
		close_tag.onmouseover = fct_onmouseover;
		cadre_titre.appendChild(close_tag);
	}
	cadre_titre.appendChild(document.createTextNode('Demande de confirmation : '));

	var sous_cadre = document.createElement('div');
	sous_cadre.className = 'sous-cadre';
	
	var sous_cadre_titre = document.createElement('div');
	sous_cadre_titre.className = 'popup_text_content';
	sous_cadre_titre.innerHTML = question;
	
	var content = document.createElement('div');
	content.className = 'cadre-content center';
	
	//ancre pour confirmer
	var a_confirm = document.createElement("a");
	a_confirm.className = "button";
	a_confirm.onclick = fct_onclick_confirm;
	a_confirm.onmouseout = fct_onmouseout;
	a_confirm.onmouseover = fct_onmouseover;
	var a_confirm_text = document.createTextNode("oui");
	a_confirm.appendChild(a_confirm_text);
	
	//ancre pour infirmer
	var a_sap = document.createElement("a");
	a_sap.className = "button";
	a_sap.onclick = fct_onclick_sap;
	a_sap.onmouseout = fct_onmouseout;
	a_sap.onmouseover = fct_onmouseover;
	var a_sap_text = document.createTextNode("non");
	a_sap.appendChild(a_sap_text);
	
	div_content.appendChild(cadre_titre);
	div_content.appendChild(sous_cadre);
	
	sous_cadre.appendChild(sous_cadre_titre);
	sous_cadre.appendChild(content);
	
	content.appendChild(a_confirm);
	content.appendChild(document.createTextNode(' '));
	content.appendChild(a_sap);

	//affichage d'une div pour bloquer l'acces au reste de la page
	$('fond_gris_popup').show();
	div_content.show();
	
	$('divMsg').top = '0px';
	$('divMsg').left = '0px';
	var top = ((screen.availHeight - $('divMsg').getHeight()) / 3) ;
	var Left = ((screen.availWidth - $('divMsg').getWidth()) / 3) ;
	$('divMsg').style.marginTop = top + 'px';
	$('divMsg').style.marginLeft = Left + 'px';
	
	
}

/* Affiche ou cache une div de popup */
function hideShowPopupDiv(nomDiv,action,changeBackGroundToo)
{
	var bgElem,divElem
	
	//----------------------
    // Debut nouvelle methode		    
    //----------------------
	if( document.getElementById ) // this is the way the standards work
	{
    	divElem = document.getElementById(nomDiv);
    	bgElem =  document.getElementById('fond_gris_popup');
	}
	else if( document.all ) // this is the way old msie versions work
	{
    	divElem = document.all[nomDiv];
    	bgElem = document.all['fond_gris_popup'];
	}
	else if( document.layers ) // this is the way nn4 works
    {
    	divElem = document.layers[nomDiv];
    	bgElem = document.layers['fond_gris_popup'];
    }
    //----------------------
    // Fin nouvelle methode	
    //----------------------
    
	
	// On rend le parametetre optionnel si pas de pr�ision, on la passe� faux
	// Ce parametre permet de masquer ou d'afficher egalement le fond de lapopup, qui masque la page
	if (typeof changeBackGroundToo == "undefined")
	{
	    changeBackGroundToo = "false";
  	}
	
	if (action == 'show')
	{
		divElem.style.display = "block";
		bgElem.style.display = "block";
	}
	else if (action == "hide")
	{
		if(changeBackGroundToo == "true") { bgElem.style.display = "none"; }
		divElem.style.display = "none";
	}	
}
