/*!
**************************************************************************
* author e-Obs Technologies
* par Prestataire : e-Obs Technologies
* par Type : Produit
* date 16/11/2009 - FDX
* brief Description : Scripts généraux
* version e-Obs 1.0
**************************************************************************
*/

function PSR_imprimer () 
{
	var PSR_f1 = null;
	var PSR_content = document.getElementById('PSR_print').innerHTML;
	var PSR_title = document.getElementsByTagName('title')[0].innerText;
	if (PSR_f1) {if(!PSR_f1.closed) PSR_f1.close();}
	PSR_f1 = window.open ('',"PSR_f1", "height=500,width=600,menubar=yes,scrollbars=yes,resizable=yes,,left=10,top=10");
	PSR_f1.document.open();
	PSR_f1.document.write("<html><head><title>" + PSR_title + "</title><link rel='stylesheet' type='text/css' href='"+REP_PROJET+"/CSS/print_general.css' /></head><body bgcolor='#ffffff'>"+PSR_content+"</body></html>");
	PSR_f1.document.close();
	PSR_f1.document.getElementById('PSR_print').style.visibility='hidden';
	PSR_f1.focus();
}


function sup_file(id_to_sup)
{
	document.getElementById(id_to_sup).value='demande_suppression';
	alert('Votre demande de suppression sera prise en compte à la validation du formulaire');
}

function chargerPage(entree)
{
    if (entree == "logout.php")  if (!confirm("Souhaitez-vous vraiment quitter l'application ?")) return ;
	chargerPageUseraction(entree,'');
}

function chargerPageUseraction(entree,methode)
{
	document.formGeneral.useraction.value = methode;
    with(document.formGeneral)
    {
        action = entree;
        submit();
    }
}
	
function chargerPageUseractionKey(entree, methode, id_demande, id_page)
{
	document.formGeneral.key.value = id_demande;
	document.formGeneral.useraction.value = methode;
	document.formGeneral.pk_page.value = id_page;
	with(document.formGeneral)
	{
		action = entree;
		submit();
	}
}

function compare_dates(datedeb, datefin)
{
	var regex = /^([0-9]{2})-([0-9]{2})-([0-9]{4})$/;
	var tabdeb = regex.exec(datedeb);
	var tabfin = regex.exec(datefin);

	ddeb = new Date(tabdeb[3], tabdeb[2]-1, tabdeb[1]);
	dfin = new Date(tabfin[3], tabfin[2]-1, tabfin[1]);
	timedeb = ddeb.getTime();
	timefin = dfin.getTime();
	if (timedeb <= timefin) return true;
	else return false;
}

function compare_heures(heuredeb, heurefin)
{
	var regex = /^([0-9]{1,2}):([0-9]{1,2})$/;
	var tabdeb = regex.exec(heuredeb); 
	var tabfin = regex.exec(heurefin);
	if(tabdeb[1]<10) tabdeb[1] = 0+tabdeb[1];
	if(tabfin[1]<10) tabfin[1] = 0+tabfin[1];
	if(tabdeb[1] > tabfin[1]) return false;
	else if(tabdeb[1]==tabfin[1])
	{	
		if(tabdeb[2]>tabfin[2]) return false;
		else return true;
	}
	else return true;
}

// Fonction pour cocher ou décocher un ensemble de checkbox dans le formulaire passé en paramètre
function checkAll(form, champs, valeur)
{
	for (i = 0; i < form.elements.length; i++)
	{
		if(form.elements[i].name == champs) form.elements[i].checked = valeur;
	}
}

// Fonction de vérification qu'un checkbox au moins est coché dans le form passe en parametres
function verifCheckForm(form, champs)
{
	var ok = false;
	var i = 0;
	while (i < form.elements.length && ok == false) 
	{
		if(form.elements[i].name == champs && form.elements[i].checked == 1) ok = true;
		i++;
	}
	return ok;
}

// Exécution méthode AJAX
var AJAX_DEFAULT_MESSAGE = '<span style="vertical-align: center;"><img src="'+REP_PRODUIT+'/Script/ajax-loader.gif"/><span>';
var AJAX_VOID_MESSAGE = 'void';

	function appelAjax(form, action, tpl, id_item, fct_callback, message)
	{
		var xhr = null;
		if(window.XMLHttpRequest) // Firefox et autres
		{
			xhr = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) // Internet Explorer
		{
			try
			{
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		else // XMLHttpRequest non supporté par le navigateur
		{
			alert("Votre navigateur ne prend pas en charge cette fonctionalité");
			xhr = false;
		}
		if(!message) message = AJAX_DEFAULT_MESSAGE;
		else if(message == AJAX_VOID_MESSAGE) message = '';
		xhr.onreadystatechange = function()
		{
			if(xhr.readyState == 4)
			{
				if(id_item !== null) 
				{
					id_item.innerHTML = xhr.responseText;
				}
				try
				{
					fct_callback();
				}
				catch(e)
				{
				}
			}
			else if(id_item && message != '')
			{
				id_item.innerHTML = message;
			}
		}
		var vars = "";
		var inputs = form.getElementsByTagName('input');
		var textareas = form.getElementsByTagName('textarea');
		var file = form.getElementsByTagName('file');
		var selects = form.getElementsByTagName('select');
		for(var i = 0; i < inputs.length; i++)
		{
			if(inputs[i].type == 'radio' || inputs[i].type == 'checkbox')
			{
				if(inputs[i].checked)
				{
					vars += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) + "&";
				}
			}
			else vars += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) + "&";
		}
		for(i = 0; i < textareas.length; i++)
		{
			if (textareas[i].className == 'mceEditor') textareas[i].value = tinyMCE.getContent(textareas[i].name);
			vars += textareas[i].name + "=" + encodeURIComponent(textareas[i].value) + "&";
		}
		for(i = 0; i < selects.length; i++)
		{
			if(selects[i].options.length > 0)
			{
				vars += selects[i].name + "=" + encodeURIComponent(selects[i].options[selects[i].selectedIndex].value) + "&";
			}
		}
		vars += "tpl_sortie=" + tpl;
		xhr.open("POST", action, true);
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
		xhr.send(vars);
	}

	function traitementAjax(form, action, fct_callback)
	{
		var vars = "";
		var inputs = form.getElementsByTagName('input');
		var textareas = form.getElementsByTagName('textarea');
		var file = form.getElementsByTagName('file');
		var selects = form.getElementsByTagName('select');
		for(var i = 0; i < inputs.length; i++)
		{
			if(inputs[i].type == 'radio' || inputs[i].type == 'checkbox')
			{
				if(inputs[i].checked)
				{
					vars += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) + "&";
				}
			}
			else 
			{
				vars += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) + "&";
			}
		}
		for(var i = 0; i < textareas.length; i++)
		{
// Insérer récupération code pour CK Editor
		}
		for(i = 0; i < selects.length; i++)
		{
			if (!selects[i].multiple) vars += selects[i].name + "=" + encodeURIComponent(selects[i].options[selects[i].selectedIndex].value) + "&";
		}
		var xhr = null;
		if(window.XMLHttpRequest) // Firefox et autres
		{
			xhr = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) // Internet Explorer
		{
			try
			{
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		else // XMLHttpRequest non supporté par le navigateur
		{
			alert("Votre navigateur ne prend pas en charge cette fonctionalité");
			xhr = false;
		}
		xhr.onreadystatechange = function()
		{
			if(xhr.readyState == 4)
			{
				if (fct_callback != '')
				{
					try
					{
						fct_callback(xhr.responseText);
					}
					catch(e)
					{
						alert(e);
					}
				}
			}
		}
		xhr.open("POST", action, true);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
		xhr.send(vars);
	}
	
	function getPosition(element)
	{
	    var left = 0;
	    var top = 0;
	    /*On récupère l'élément*/
	    var e = document.getElementById(element);
	    /*Tant que l'on a un élément parent*/
	    while (e.offsetParent != undefined && e.offsetParent != null)
	    {
	        /*On ajoute la position de l'élément parent*/
	        left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
	        top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
	        e = e.offsetParent;
	    }
	    return new Array(left,top);
	}
	
	function DeplacerOptionListbox(l1,l2) 
	{
		if (l1.options.selectedIndex>=0) 
		{
			o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
			l2.options[l2.options.length]=o;
			l1.options[l1.options.selectedIndex]=null;
		}
		else
		{
			alert("Aucune activité sélectionnée");
		}
	}
	
/******** LANCEMENTS ESPACES COLLABORATIFS ************/
				
	function goToDocumentEspaceDirect(id_document, id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
			key.value = id_document;
		}
		chargerPageUseraction("clb_espace_bibliotheque.php", "afficher_document_bibliotheque");
	}
			
	function goToMessageEspaceDirect(id_message, id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
			key.value = id_message;
		}
		chargerPageUseraction("clb_espace_messagerie.php", "afficher_message");
	}
			
	function goToMessageMurEspaceDirect(id_message, id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
			key.value = id_message;
		}
		chargerPageUseraction("clb_espace_accueil.php", "afficher_message_direct");
	}
	
	function goToEspace(id_page)
	{
		var valueOfSelect = document.getElementById('id_select_espace').value;
		if (valueOfSelect != '-99')
		{
			tab_value = valueOfSelect.split("|");
			if (tab_value[1] == 'afficherAccueilEspace') afficherAccueilEspace(tab_value[0], id_page);
			else if (tab_value[1] == 'afficherBibliothequeEspace') afficherBibliothequeEspace(tab_value[0], id_page);
			else if (tab_value[1] == 'afficherAnnuaireEspace') afficherAnnuaireEspace(tab_value[0], id_page);
			else if (tab_value[1] == 'afficherEspaceClient') afficherEspaceClient(tab_value[0], id_page);
		}
		else alert("Veuillez sélectionner un espace");
	}
	
	function afficherAccueilEspace(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_accueil.php", "afficher_espace_accueil");
	}

	function afficherBibliothequeEspace(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_bibliotheque.php", "afficher_espace_bibliotheque");
	}
	
	function afficherMessagerieEspace(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_messagerie.php", "afficher_messagerie");
	}
	
	function afficherAgendaEspace(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_agenda.php", "afficher_planning_agenda");
	}
	
	function afficherInscriptionEspace(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_inscription.php", "afficher_liste_inscription");
	}
	
	function afficherAnnuaireEspace(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_annuaire.php", "afficher_espace_annuaire");
	}
	
	function afficherEspaceClient(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_client.php", "afficher_espace_client");
	}
	
	function afficherEspaceStatistique(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_espace_statistique.php", "afficher_espace_statistique");
	}

	function afficherEspaceEmargement(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_emargement_even.php", "afficher_fiche");
	}
	
	function afficherEspaceMembres(id_espace, id_page)
	{
		with(document.formGeneral)
		{
			pk_espace.value = id_espace;
			pk_page.value = id_page;
		}
		chargerPageUseraction("clb_gestion_membres.php", "lister_membres");
	}
	
	function goToOffresEmploi(id_offre, id_page)
	{
		with(document.formGeneral)
		{
			key.value = id_offre;
			pk_page.value = id_page;
		}
		chargerPageUseraction("epl_gestion_offre_emploi.php", "afficher_offre_directe");
	}
	
	function goToAnnuaire(id_structure, id_page)
	{
		with(document.formGeneral)
		{
			key.value = id_structure;
			pk_page.value = id_page;
		}
		chargerPageUseraction("annuaire_structure.php", "afficher_annuaire_direct");
	}
	
	function goToFicheMetier(id_fiche_metier, id_page)
	{
		with(document.formGeneral)
		{
			key.value = id_fiche_metier;
			pk_page.value = id_page;
		}
		chargerPageUseraction("epl_gestion_fiche_metier.php", "afficher_fiche_metier_direct");
	}	
	
	function initGeneralJS()
	{
	// Coloration ligne table
		$('table.table tr:nth-child(even)').addClass('ligne_paire');
		$('table.table tr:nth-child(odd)').addClass('ligne_impaire');	
	// Coloration ligne table class formulaire
		$('table.table_formulaire tr:nth-child(even)').addClass('ligne_form_paire');
		$('table.table_formulaire tr:nth-child(odd)').addClass('ligne_form_impaire');	
	// Initialisation colorPicker
		initColorPicker();
	}
	
	function initColorPicker()
	{
		var matchClass = new RegExp('(^|\\s)(color)\\s*(\\{[^}]*\\})?', 'i');
		var e = document.getElementsByTagName('input');
		for(var i=0; i<e.length; i+=1) {
			var m;
			if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
				var prop = {};
				if(m[3]) {
					try {
						eval('prop='+m[3]);
					} catch(eInvalidProp) {}
				}
				R = HexToR("#"+e[i].value);
				G = HexToG("#"+e[i].value);
				B = HexToB("#"+e[i].value);
				lum = (0.2125 * R) + (0.7154 * G) + (0.0721 * B);
				if (lum < 30)
				{
					$("#"+e[i].id).css('color', '#FFFFFF');
				}
				else
				{
					$("#"+e[i].id).css('color', '#000000');
				}
				$("#"+e[i].id).css('backgroundColor', '#' + e[i].value);
				$("#"+e[i].id).ColorPicker({
					color: e[i].value,
					onShow: function (colpkr) {
						$(colpkr).fadeIn(500);
						return false;
					},
					onHide: function (colpkr) {
						$(colpkr).fadeOut(500);
						return false;
					},
					onSubmit: function(hsb, hex, rgb, el) {
						$(el).val(hex);
						R = HexToR("#"+hex);
						G = HexToG("#"+hex);
						B = HexToB("#"+hex);
						lum = (0.2125 * R) + (0.7154 * G) + (0.0721 * B);
						if (lum < 30)
						{
							$(el).css('color', '#FFFFFF');
						}
						else
						{
							$(el).css('color', '#000000');
						}
						$(el).css('backgroundColor', '#' + hex);
						$(el).ColorPickerHide();
					}
				})
				.bind('keyup', function(){
					$(this).ColorPickerSetColor(this.value);
				});
			}
		}
	}
	
	function HexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
	function HexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
	function HexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
	function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}

	function getColor(background_color)// le # doit être dans cette couleur
	{
		R = HexToR(background_color);
		G = HexToG(background_color);
		B = HexToB(background_color);
		lum = (0.2125 * R) + (0.7154 * G) + (0.0721 * B);
		if (lum < 30)
		{
			return '#FFFFFF';
		}
		else
		{
			return '#000000';
		}
	}



