function isAgeUnder(minAge, dat)
{
	var today=new Date();
	
	var myDate= new Date();
	myDate.setFullYear(parseInt(dat.substr(6,4), 10)+parseInt(minAge, 10),parseInt(dat.substr(3,2), 10)-1, dat.substr(0,2));

	
	return (myDate>today);

};

// function isAgeUnder(minAge, dat) 
//{
//	actu=new Date();
//	if((actu.getMonth()+1)>=dat.substr(3,2))
//	{
//		if((actu.getMonth()+1)==dat.substr(3,2))
//		{
//			if(actu.getDate()>=dat.substr(0,2))
//			{
//				mois=(actu.getMonth()+1)-dat.substr(3,2);
//				ans=actu.getFullYear()-dat.substr(6,4);
//			}
//			else
//			{
//				mois=(12-dat.substr(3,2))+(actu.getMonth()+1);
//				ans=actu.getFullYear()-dat.substr(6,4)-1;
//			}
//		}
//		else
//		{
//			mois=(actu.getMonth()+1)-dat.substr(3,2);
//			ans=actu.getFullYear()-dat.substr(6,4);
//		}
//	}
//	else
//	{
//		mois=(12-dat.substr(3,2))+(actu.getMonth()+1);
//		ans=actu.getFullYear()-dat.substr(6,4)-1;
//	}
//	if(actu.getDate()>dat.substr(0,2))
//	{
//		jours=actu.getDate()-dat.substr(0,2);
//	}
//	else
//	{
//		jours=(30-dat.substr(0,2))+(actu.getDate());
//	}
//	while(jours>30)
//	{
//		jours-=30;
//		mois+=1;
//	}
//	while(mois>12)
//	{
//		mois-=12;
//		ans+=1;
//	}
//	
//	if(ans < minAge) return true;
//	else return false;
//
//}


function isAgeUnderDate(years, dat, dat2)
{
	var myDate= new Date();
	myDate.setFullYear(parseInt(dat.substr(6,4), 10)+parseInt(years, 10),parseInt(dat.substr(3,2), 10)-1, dat.substr(0,2));
	var myDate2= new Date();
	myDate2.setFullYear(dat2.substr(6,4),parseInt(dat2.substr(3,2), 10)-1, dat2.substr(0,2), 10);
	return (myDate>myDate2);

};




//function isAgeUnderDate(minAge, dat, dat2)
//{
//	actu=new Date(dat2.substr(6,4), parseInt(dat2.substr(3,2),10) - 1, dat2.substr(0,2));
//	
//	if((actu.getMonth()+1)>=dat.substr(3,2))
//	{
//		if((actu.getMonth()+1)==dat.substr(3,2))
//		{
//			if(actu.getDate()>=dat.substr(0,2))
//			{
//				mois=(actu.getMonth()+1)-dat.substr(3,2);
//				ans=actu.getFullYear()-dat.substr(6,4);
//			}
//			else
//			{
//				mois=(12-dat.substr(3,2))+(actu.getMonth()+1);
//				ans=actu.getFullYear()-dat.substr(6,4)-1;
//			}
//		}
//		else
//		{
//			mois=(actu.getMonth()+1)-dat.substr(3,2);
//			ans=actu.getFullYear()-dat.substr(6,4);
//		}
//	}
//	else
//	{
//		mois=(12-dat.substr(3,2))+(actu.getMonth()+1);
//		ans=actu.getFullYear()-dat.substr(6,4)-1;
//	}
//	if(actu.getDate()>dat.substr(0,2))
//	{
//		jours=actu.getDate()-dat.substr(0,2);
//	}
//	else
//	{
//		jours=(30-dat.substr(0,2))+(actu.getDate());
//	}
//	while(jours>30)
//	{
//		jours-=30;
//		mois+=1;
//	}
//	while(mois>12)
//	{
//		mois-=12;
//		ans+=1;
//	}
//	if(ans < minAge) return true;
//	else return false;
//
//}


function isset(varname) { return eval('typeof(' + varname + ') != "undefined"'); };

function getRadioValue(radioName)
{
	var radioControl = document.getElementsByName(radioName);
	for (i=0; i<radioControl.length ; i++)
	{
		if (radioControl[i].checked) 
		{
			return radioControl[i].value;
		}
	}
	return "";
};

function setRadioValue(radioName, value)
{
	var radioControl = document.getElementsByName(radioName);
	var found = 0;
	for (i=0; (i<radioControl.length) && (0 == found); i++)
	{
		if (radioControl[i].value == value) 
		{
			radioControl[i].checked = true;
			found = true;
		}
	}
};


function isDateSuperiorToday(value)
{

	var today = new Date();
	
	if(value.length == 10)
		var testdate = new Date(value.substr(6,4), parseInt(value.substr(3,2), 10) - 1	, value.substr(0, 2));
	else 
		return false;	
	
	
	
	if((testdate.getTime()-today.getTime())/(24*3600*1000) >= -1) return true;
	else return false;
	
};

function isDateInferiorToday(value)
{
	var today = new Date();
	
	if(value.length == 10)
		var testdate = new Date(value.substr(6,4), parseInt(value.substr(3,2), 10) - 1	, value.substr(0, 2));
	else 
		return false;

    if((testdate.getTime()-today.getTime()) <= 0) return true;
	else return false;
};


// --------------------------------------------------------------------------------------------------
// function isRibValid()
// calcul/v�rification de la validit� d'un RIB/RIP (Relev� d'Identit� Bancaire/Postale)
// accepte 3 ou 4 arguments
// - 3 arguments : code banque (num�rique)
// code guichet (num�rique)
// num�ro de compte (alpha)
// La fonction retourne alors la cl� RIB Calcul�e
// - 4 arguments : Cl� RIB en plus (num�rique)
// La fonction retourne alors un booleen indiquant si le RIB est valide
//
// Attention : la validit� des arguments (code bqe num�rique, num�ro de compte � 11 caract�res, etc ...) n'est pas contr�l�e par la fonction.
// --------------------------------------------------------------------------------------------------
function isRIBvalid()
{
   if (isRIBvalid.arguments.length>=3)
       {
       var bqe=isRIBvalid.arguments[0];
       var gui=isRIBvalid.arguments[1];
       var cpt=isRIBvalid.arguments[2].toUpperCase();
       var tab= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
       var tab1="123456789123456789234567890123456789".split("");
       while (cpt.match(/\D/) != null)
           cpt=cpt.replace(/\D/, tab1[tab.indexOf(cpt.match(/\D/))]);
       var cp=parseInt (cpt, 10);
       
       a=bqe%97;
       a=a*100000+parseInt(gui, 10);
       a=a%97;
       a=a*Math.pow(10, 11) + cp;
       a=a%97;
       a=a*100;
       a=a%97;
       a=97-a;
       if (isRIBvalid.arguments.length>3)
           return isRIBvalid.arguments[3]==a;
       else
           return a;
       }
   else
       {
       return false;
       }
};

function getEmailRegexp()
{
	var userRE = "^([0-9a-zA-Z]+[-._+&'])*[0-9a-zA-Z]+";
	var hostRE = "([0-9a-zA-Z]([-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?\\.)+";

	// Infrastructure top-level domain - only one at present
	var infraRE = "arpa";

	// Generic top-level domains RE.
	var genericRE = 
		"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|xxx|jobs|mobi|post";
	
	// Country Code top-level domains RE
	var ccRE = 
		"ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|" +
		"bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|" +
		"ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|" +
		"hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|" +
		"lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|" +
		"mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|" +
		"ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sk|sl|sm|sn|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|" +
		"to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";

	// Build top-level domain RE
	var a = [];
	a.push(infraRE);
	a.push(genericRE);
	a.push(ccRE);

	// Build e-mail RE
	var mailRE = userRE + "@" + hostRE;
	if (a.length > 0) {
		mailRE += "(" + a.join("|") + ")";
	}
	return mailRE;
};

function getUrlRegex()
{
	return "^(http:\/\/|https:\/\/){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$";
};

function buildCall(params)
{
	var call = String(params[0])+"(";
	for(i = 1; i < params.length-1; i++)
	{
		call += "\""+params[i]+"\"";
	}
	if (params.length > 1)
	{
		call += "\""+String(params[params.length-1])+"\"";
	}
	call += ");";
	
	return call;
};

//# do something better
function callFunction(funcStr)
{
	if (funcStr.length > 0)
	{
		setTimeout(funcStr+"();",0);
	}
};

// Valable pour un appel, sans params
// Attention, inclure le JS avec la fonction � appeler en dernier
function js_include_once_wait(params)
{
	// Lance les demandes d'inclusion
	var i = 0;
	for (i=0; i< params.files.length; i++)
	{
		js_include_once(params.files[i]);
	}

	var funcTest = "";
	if (params.funcTest != null)
	{
		funcTest = params.funcTest;
	}
	else
	{
		funcTest = params.func;
	}

	// Si le fichier final n'est pas encore l�,
	// on reprogramme la demande pour plus tard
	if (!isset(funcTest))
	{
		var call = "js_include_once_wait( ";
		call += " { func:\""+params.func+"\" ,";
		if (params.funcTest != null)
		{
			call += " funcTest:\""+params.funcTest+"\" ,";
		}
		call += " files: [";
		for (i=0; i< params.files.length-1; i++)
		{
			call += "\""+params.files[i]+"\",";
		}
		call += "\""+params.files[params.files.length-1]+"\"";
		call += " ] } );";
		setTimeout(call,100*params.files.length);
	}
	else // sinon on effectue l'appel
	{
		callFunction(params.func);
	}
};


function bindPopup(id, largeur, hauteur) {
	$("."+id).click(function() {
		var width = largeur;
		var height = hauteur;
		$("<div />")
    		.dialog({
        		position: "top",
        		width: width,
        		height: height,
        		title: $(this).text(),
    			modal: true,
    			dialogClass: "smoothness",
    			close: function() {
    				$(this).remove();
    			},
    			open: function() {
    				$("#ui-datepicker-div").css("z-index",
    				$(this).closest(".ui-dialog").css("z-index")+1);
    			}
    		})
    		.block()
    		.load(this.href);
		return false;
	});
};
