﻿function recupposition(objet)
{
	//Retourne la position du coin supérieur gauche d'un objet sur la page dans un tableau [0]=top [1]=left
	var positionparent, position;
	position=new Array(objet.offsetTop,objet.offsetLeft);
	if(objet.offsetParent)
	{
		positionparent=recupposition(objet.offsetParent);
		position[0]+=positionparent[0];
		position[1]+=positionparent[1];
	}
	return position;
}

function questcequiestcoche(bouton)
{
	//Renvoie la valeur du bouton radio coché
	for(i=0;i<bouton.length;i++)
	{
		if(bouton[i].checked==true)
			return bouton[i].value;
	}
}

function verifdate(ladate)
{
	//Vérifie qu'une date est correcte (améliorable)
	ladatetab=ladate.split("/");
	if(isNaN(ladatetab[0]) || isNaN(ladatetab[1]) || isNaN(ladatetab[2]))
		return false;
	else
	{
		if(ladatetab[0]>31)
			return false;
		if(ladatetab[1]>12)
			return false;
		annee=ladatetab[2];		//Obligatoire sinon .length marche pas
		if(annee.length!=4)
			return false;
		return true;
	}
}

function verifheure(lheure)
{
	//Vérifie qu'une heure est correcte (améliorable)
	lheuretab=lheure.split(":");
	if(isNaN(lheuretab[0]) || isNaN(lheuretab[1]))
		return false;
	else
	{
		if(lheuretab[0]>23)
			return false;
		if(lheuretab[1]>59)
			return false;
		return true;
	}
}

function verifemail(lemail)
{
	//On regarde qu'il y a un @ et un seul @
	lemailtab=lemail.split("@");
	if(lemailtab[0] && lemailtab[1] && !lemailtab[2])
	{
		//On regarde qu'il y a un point après le @
		domainetab=lemailtab[1].split(".");
		if(domainetab[0] && domainetab[1])
		{
			//Pour les sous-domaines... (on doit mettre le [n] dans une cariable a aprt sinon length marche pas...)
			lepays=domainetab[2]?domainetab[2]:domainetab[1];
			if(lepays.length > 4 || lepays.length < 2)
				return false;
			else
				return true;
		}
		else
			return false;
	}
	else
		return false;
}

function verifsite(lesite)
{
	//On regarde qu'il y a au moins 1 point dans l'URL (pas fiable à 100% mais mieux que rien...)
	lesitetab=lesite.split(".");
	if(lesitetab.length>1)
		return true;
	else
		return false;
}

function aide(objet, visible, message, position)
{
	//Affiche un bulle d'aide contenant le message message à la position position
	if(visible)
	{
		objet.innerHTML=message;
		objet.style.visibility="visible";
		objet.style.top=position[0]+"px";
		objet.style.left=(position[1]+20)+"px";
	}
	else
		objet.style.visibility="hidden";
}

function suppr_html(contenu)
{
	//On vire les balises html...
	reg=new RegExp("<.[^<>]*>", "gi");
	return contenu.replace(reg, '');
}

function remplcarspecword(contenu)
{
	//On vire les caractères spéciaux de Word...
	reg=new RegExp("’", "gi");
	contenu=contenu.replace(reg,"'");
	reg=new RegExp("‘", "gi");
	contenu=contenu.replace(reg,"'");
	reg=new RegExp("»", "gi");
	contenu=contenu.replace(reg,'"');
	reg=new RegExp("«", "gi");
	contenu=contenu.replace(reg,'"');
	reg=new RegExp("“", "gi");
	contenu=contenu.replace(reg,'"');
	reg=new RegExp("”", "gi");
	contenu=contenu.replace(reg,'"');
	reg=new RegExp("…", "gi");
	contenu=contenu.replace(reg,"...");
	reg=new RegExp("–", "gi");
	contenu=contenu.replace(reg,"-");
	reg=new RegExp("�", "gi");
	contenu=contenu.replace(reg,"");
	reg=new RegExp("€", "gi");
	contenu=contenu.replace(reg," euro(s)");
	reg=new RegExp("&", "gi");
	contenu=contenu.replace(reg," and ");
	reg=new RegExp("•", "gi");
	contenu=contenu.replace(reg,":");
	reg=new RegExp("œ", "gi");
	contenu=contenu.replace(reg,"oe");
	return contenu;
}

function tropdemajuscules(contenu)
{
	//Cette fonction vérifie que le mec n'a pas été encoder en majuscules...
	//On va comparer le nombre de majuscules a la longueur
	var long, reg, result, nbmaj;
	long=contenu.length;
	reg=new RegExp("[A-Z]", "g");
	if(result=contenu.match(reg))
		nbmaj=result.length;
	else
		nbmaj=0;
	//Si il y a plus de 66% de majuscule, on refuse :)
	if(nbmaj/long>0.3)
		return true;
	else
		return false;
}

function mise_en_forme(mef, champ)
{
	//Cette fonction ajoute des balises HTML devant et derrière un texte sélectionné afin de le mettre en forme
	//mef : la balise (strong, em, ...)
	//champ : l'objet de formulaire dans lequel se trouve le texte sélectionné
	var debut, fin;
						
	if(document.selection)
	{
		//C'est IE
		// The current selection
		var range = document.selection.createRange();
		// We'll use this as a 'dummy'
		var stored_range = range.duplicate();
		// Select all text
		try
		{
			//qqch est sélectionné
			stored_range.moveToElementText( champ );
			// Now move 'dummy' end point to end point of original range
			stored_range.setEndPoint( 'EndToEnd', range );
			// Now we can calculate start and end points
			debut = stored_range.text.length - range.text.length;
			fin = debut + range.text.length;
		}
		catch(e)
		{
			//rien n'est sélectionné
			debut=0;
			fin=0;
		}
	}
	else
	{
		debut=champ.selectionStart;
		fin=champ.selectionEnd;
	}
						
	if(debut!=fin)
	{
		var avant=champ.value.substr(0,debut);
		var selection=champ.value.substr(debut,fin-debut);
		var apres=champ.value.substr(fin,champ.value.length);
		
		champ.value=avant;
		champ.value+="<"+mef+">";
		champ.value+=selection;
		champ.value+="</"+mef+">";								
		champ.value+=apres;
	}
	else
		alert("Rien n'est sélectionné");
}

