// JavaScript Document

function popUp(url, w, h, scrollbar, nom, wind)
{
	var rxp = new RegExp("^(http://)?([^/]*/)*([^/\\?]+)(\\?.*)?$", "gi");
	if(!nom)
	{
		if (rxp.test(url))
			nom = RegExp.$3;
		else
			nom = '_blank';
	}
	nom = nom.replace(/[.-]/g,'_');
	if (!w) w = 600;
	if (!h)	h = 350;
	if (!wind) wind = window;
	if(!scrollbar) scrollbar = 'yes';
	//alert(url + "," +  '"' + nom + '"' + "," + '"' + 'width=' + w + ', height=' + h + ', scrollbars=' +scrollbar+ ', toolbar=no, menubar=no, resizable=yes' + '"');
	wind.open(url, nom, 'width=' + w + ', height=' + h + ', scrollbars=' +scrollbar+ ', toolbar=no, menubar=no, resizable=yes').focus();
	//return true;
}


function popUpPartition(url)
{
	var h,w, scrollbar, nom, wind;
	w = 600;
	h = 600;
	scrollbar = "no";
	nom = "";
	wind = window;
	popUp(url, w, h, scrollbar, nom, wind);
}

// Vérifier le bon format une adresse email
function CheckMail(obj)
{
	obj.value=trim(obj.value.toLowerCase());
	return ( (obj.value.match(/^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z]+)*\.[a-z]{2,4}$/g) ));
}

//---------------------------------------------------------------------------------------------------------
// Trim les caractères à dtroite et à gauche de la chaine
//---------------------------------------------------------------------------------------------------------
function trim(v){
	return ltrim(rtrim(v));
}

function rtrim(v)
{
	var result = '';
	var rxp = new RegExp("^(.*\\S)(\\s|\xA0)*$", "gi");
	if (rxp.test(v)) result = RegExp.$1;
	return result; 
}

function ltrim(v)
{
	var result = '';
	var rxp = new RegExp("^(\\s|\xA0)*(\\S.*)$", "gi");
	if (rxp.test(v)) result = RegExp.$2;
	return result; 
}
//---------------------------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------------------
/**
 * Forcer le focus sur un objet... Contourne un problème avec certains navigateurs qui foirent un changement de focus
 *
 * @param 	Objet	obj	Objet sur lequel on doit activer le focus
 * @return	void.
 */
//---------------------------------------------------------------------------------------------------------
function ForceFocus(obj)
{/*
	if(isIE)
	{
    	window.toFocus = obj;
		if(obj.type && ((obj.type == 'text') || (obj.type == 'textarea')))
		   setTimeout('window.toFocus.focus(); window.toFocus.select();', 1);
		else
			setTimeout('window.toFocus.focus();', 1);
	}
	else*/
		obj.focus();
}
//---------------------------------------------------------------------------------------------------------

// Vérifier un entier compris entre deux bornes
// Si besoin clipper la valeur. Si pas numérique, forcer à zéro.
function CheckInteger(obj, needed)
{
	var o,v,n,s,ok;
	if (!needed) needed=false;

	if (needed && !obj.value)
	{
		ForceFocus(obj);
		return false;
	}

	if (obj.value)
	{
		ok = false;
		o = obj.value;
		v = o.replace(/[^0-9+-]+/g,"");
		if (v.match(/([+-]?)([0-9]+)/g))
		{
			ok = true;
			s = RegExp.$1;
			n = RegExp.$2;
			v = (s == '-' ? -1 : +1) * n;
			/*if (minV)
				if (v<minV) v = minV;
			if (maxV)
				if (v>maxV) v = maxV;*/
		}
		obj.value = v;
		obj.select();
	}
	else
		ok = true;
		
	return ok;
}


// Vérifier un nombre décimal, et le convertir au format français = "nnn,mmm"
// Si pas numérique, le forcer à zéro
function CheckDecimal(obj, nbDec, needed)
{
	var o,v,n,d,s,ok;
	if (!nbDec)	nbDec = 2;
	if (!needed) needed=false;

	if (needed && !obj.value)
	{
		ForceFocus(obj);
		return false;
	}

	if (obj.value)
	{
		ok = false;
		o = obj.value.replace(/[^0-9.,]+/g,"");
		if (o.match(/([+-]?)(\d+)[,.]?(\d*)/g))
		{
			ok = true;
			s = RegExp.$1;
			n = RegExp.$2;
			d = RegExp.$3;
			v = (s == '-' ? -1 : +1) * (n + '.' + d);
			v = v.toFixed(nbDec).replace(/\./, ',');
		}
		if (o!=v)
		{
			obj.value = v;
			obj.select();
		}
	}
	else
		ok = true;
	return ok;
}

// Vérifier un format téléphonique, ie numérique uniquement.
// Si format=true, alors séparer en bloc de 2 chiffres
function CheckTel(obj,format,needed)
{
	var v,rxp;
	if (obj.value)
	{
		v=obj.value.replace(/[^0-9]+/g,"");
		if (format) v=v.replace(/(\d{2})/g,".$1").substr(1);
		obj.value=v;
	}
	if (needed && !obj.value)
	{
		//alert("Vous devez saisir correctement le numéro!");
		ForceFocus(obj);
		return false;
	}
	return true;
}

function analyseString(obj, type, isReq)
{
	var strClean = trim(obj.value);
	var isOk = false;
	obj.value=strClean;
	// Si le champs est requis mais vide on sort.
	if( (isReq==1) && (strClean=="") )	
		isOk = false;
	else
	{	
		
		switch(type)
		{
			case "int" :
			
				isOk = ( isNaN(strClean) &&  (strClean!="") && (CheckInteger(obj, (isReq==1) )));
			break;
			case "str" :
				//strClean = obj.value.replace(/[^0-9A-Za-z().,?! ]+/g,"");
				//obj.value=strClean;
				isOk = true;
			break;
			case "dec" :
				
				isOk =  CheckDecimal(obj, 2, (isReq==1));
			break;
			case "tel" :
				isOk =  CheckTel(obj,false ,isReq);
			break;
			case "mail" :
				isOk =  CheckMail(obj);
			break;			
		}
	}
	
	return isOk;
}

function valueOfselectedGrpRadio(arrayOfRadio)
{
	for(var index=0; index<arrayOfRadio.length; index++)
	{	obj = arrayOfRadio[index];
		if(obj.type == "radio")
			if(obj.checked) return obj.value;
	}
	return -1;
}

