var errfound=false;
var k_intOk=0;
var k_intLngInvalide=1;
var k_intSaisieOblg=2;
var k_intCarNonAutorise=3;
var k_intStructureEmailInvalide=4;
var k_intNumInvalide=5;
var k_intValNonNum=6;
var k_intStructureDateInvalide=7;
var k_intDateInvalide=8;
var k_intSelectionOblg=9;
var k_intQuestion=10;
var k_intDateType=12;
var k_intChampSeq=13;
var k_intChampPasSlash=14;
var k_intNonCoche=15;

var k_strlng_Fr="Fr";
var k_strlng_En="En";

function AffErr (CodeLangue,CodeErreur) {
	var g_strMesgErr;
	switch (CodeLangue) {
		case "Fr" :
			switch (CodeErreur) {
				case 1 :
					g_strMesgErr="La longueur de champ est invalide";
					break;
				case 2 :
					g_strMesgErr="La saisie de ce champ est obligatoire";
					break;
				case 3 :
					g_strMesgErr="Caractère(s) non autorisé(s)";
					break;
				case 4 :
					g_strMesgErr="Structure invalide (ex : j.dupondt@domain.fr)";
					break;
				case 5 :
					g_strMesgErr="Numéro invalide";
					break;
				case 6 :
					g_strMesgErr="Valeur non numérique";
					break;
				case 7 :
					g_strMesgErr="Structure invalide (ex : 01/01/1998)";
					break;
				case 8 :
					g_strMesgErr="Date invalide";
					break;
				case 9 :
					g_strMesgErr="Sélectionnez un élément dans la liste";
					break;			
				case 10 :
					g_strMesgErr="En êtes-vous sûr ?"
					break;							
				case 11 :
					g_strMesgErr="La date de debut ne peut être supérieure à la date de fin";
					break;
				case 12 :
					g_strMesgErr="Le filtre ne s'applique que sur un type de date";
					break;							
				case 13 :
					g_strMesgErr="Les champs doivent être saisis de manière séquentielle";
					break;
				case 14 : 
					g_strMesgErr="Le caractère '\\' est interdit";
					break;
				case 15 : 
					g_strMesgErr="Tous les boutons radios ne sont pas sélectionnés";
					break;					
				default :
					g_strMesgErr="Erreur Générale";
					break;
				}
			break;
		default :
			switch (CodeErreur) {
				case 1 :
					g_strMesgErr="Invalid length";
					break;
				case 2 :
					g_strMesgErr="data entry required";
					break;					
				case 3 :
					g_strMesgErr="characters forbidden";
					break;
				case 4 :
					g_strMesgErr="Invalid email structure (ex : j.dupont@domain.fr)";
					break;
				case 5 :
					g_strMesgErr="Invalid number";
					break;
				case 6 :
					g_strMesgErr="Numeric only";
					break;
				case 7 :
					g_strMesgErr="Invalid date structure (ex : 01/01/1998)";
					break;
				case 8 :
					g_strMesgErr="Invalide date";
					break;
				case 9 :
					g_strMesgErr="Select an element in the list";
					break;						
				case 10 :
					g_strMesgErr="Are you sure ?"
					break;
				case 11 :
					g_strMesgErr="The date of debut can not be superior to the date of the end";
					break;	
				case 12 :
					g_strMesgErr="The filter applies only to a type of date";
					break;							
				case 13 :
					g_strMesgErr="Fields must be seized in a sequential way";
					break;
				case 14 : 
					g_strMesgErr="Character ' \\ ' is forbidden";
					break;
				default :
					g_strMesgErr="General error";
					break;	
			}
			break;
	}
	return g_strMesgErr;
}
function ValidLength(a_strChaine, a_intLongueurSouhaitee) {
	if (a_strChaine.length != a_intLongueurSouhaitee)
		return k_intLngInvalide;
	
	return k_intOk;
}
function ValidLengthMinMax(a_strChaine, a_intLongueurMin, a_intLongueurMax) {
	if ((a_strChaine.length<a_intLongueurMin) || (a_strChaine.length>a_intLongueurMax))
		return k_intLngInvalide;
	return k_intOk;
}
function ValidLengthDiff(a_strChaine, a_intLongueurOne, a_intLongueurTwo) {
	if ((a_strChaine.length!=a_intLongueurOne) && (a_strChaine.length!=a_intLongueurTwo))
		return k_intLngInvalide;
	return k_intOk;
}
function ValidLenghtForBoth(a_strChaineOne,a_strChaineTwo)
{
	if ( (a_strChaineOne.length==0)&&(a_strChaineTwo==0) )
		return k_intSaisieOblg;
	
	if ((a_strChaineOne.length > 0)&&(a_strChaineTwo > 0))
		return k_intFiltreType;	
	return k_intOk;
}
function Valid(a_strChaine)
{
	if (a_strChaine.length==0)
		return k_intSaisieOblg;
	return k_intOk;
}
function ValidSelection (a_strListe)
{
	if (a_strListe.selectedIndex<=0)
		return k_intSelectionOblg;
	return k_intOk;
}
function ValidSelectionItem(a_strItemSelected,a_strItem)
{
	if ( a_strItemSelected[a_strItemSelected.selectedIndex].value==a_strItem)
		return k_intOk;
	return k_intNo;
}
function ValidSelectObligatoire (a_strListe)
{
	if (a_strListe.value=="False")
		return k_intSelectionImpossible;
	return k_intOk;
}
function ValidMinSelection (a_strListe)
{
	if (a_strListe.length<1)
		return k_intUnAttributMin;
	return k_intOk;
}
function ValidNum(a_strChaine) 
{
	if (a_strChaine.length>0) {
		for (var c=0;c<a_strChaine.length;c++) 
			if ((a_strChaine.charAt(c)<'0') || (a_strChaine.charAt(c)>'9'))
				return k_intValNonNum;
	}
	else
		return k_intSaisieOblg;
		
	return k_intOk;
}
function Error (a_element,a_strMessage,Check)
{
	if (errfound) return;
	window.alert (a_strMessage);
	if (Check==1) {
		a_element.select ();
		a_element.focus();
	}
	errfound=true;
}


function IsDate (a_strDate,a_strCodelangue) 
{
	var jour=0;
	var mois=0;
	var annee=0;
	var Dsiecle=0;
	var Fsiecle=0;
	var result=0;
	var arrondit=0;
	var DateCourante=new Date();
	var JourCourant=DateCourante.getDate();
	var MoisCourant=1+DateCourante.getMonth();
	var AnneeCourante=1900 + DateCourante.getYear();	
	for (var i = 0; (i<a_strDate.length); i++)
		if ( ((a_strDate.charAt(i)<"0") || (a_strDate.charAt(i)>"9")) && a_strDate.charAt(i)!="/")
			return k_intStructureDateInvalide;
			
	if ( (ValidLength(a_strDate,10)!=k_intOk) || (a_strDate.charAt(2)!='/') || (a_strDate.charAt(5)!='/'))
		return k_intStructureDateInvalide;
		
	switch (a_strCodelangue) {
		case "Fr" :
			jour=parseInt(a_strDate.substring(0,2),10);
			mois=parseInt(a_strDate.substring(3,5),10);
			break;
		default :
			mois=parseInt(a_strDate.substring(0,2),10);
			jour=parseInt(a_strDate.substring(3,5),10);
		break;
	}
	annee=parseInt(a_strDate.substring(6,10),10);
	if ( (jour<1) || (jour>31) || (mois<1) || (mois>12) )
		return k_intDateInvalide;
	if ( ( (mois==4) || (mois==6) || (mois==9) || (mois==11)) && (jour==31) )
		return k_intDateInvalide;
	if ( (mois==2) && (jour>29) )
		return k_intDateInvalide;
	if ( (mois==2) && (jour==29) ) {
		
		Dsiecle=parseInt(a_strDate.substring(6,8));
		Fsiecle=parseInt(a_strDate.substring(8,10));		
		if (Fsiecle==0)
			result=(Dsiecle/4);
		else
			result=(annee/4);
		arrondit = Math.round(result);
		if ( ((result-arrondit)!=0) && ((result-arrondit)!=1))
			return k_intDateInvalide;
	}
	return k_intOk;
}

function ValidEmail (a_strEmail) {
	var FindCar;
	var PtrStrOrigine;
	var g_intPositionAt=0;
	var g_intPositionLastAt=0;
	var g_intPositionLastPoint=0;
	var g_strCarAutorise="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@.-_";
	
	if (a_strEmail.length < 5 )
		return k_intLngInvalide;
	for (FindCar=0, ptrStrOrigine = 0; (ptrStrOrigine < a_strEmail.length) && (FindCar!=-1) ;ptrStrOrigine++)
		FindCar=g_strCarAutorise.indexOf(a_strEmail.charAt(ptrStrOrigine));
	if (FindCar==-1)
		return k_intCarNonAutorise;
	g_intPositionAt = a_strEmail.indexOf("@");
	g_intPositionLastAt = a_strEmail.lastIndexOf("@");
	if ( (g_intPositionAt==-1) || (g_intPositionLastAt!=g_intPositionAt) || (g_intPositionAt<2) )
		return k_intStructureEmailInvalide;

	g_intPositionLastPoint = a_strEmail.lastIndexOf(".");
	if ( (g_intPositionLastPoint==-1) || ((a_strEmail.length - g_intPositionLastPoint)>4))
		return k_intStructureEmailInvalide;

	if (g_intPositionLastPoint<g_intPositionAt+2)
		return k_intStructureEmailInvalide;
	
	return k_intOk;
}


function display_day(strLangue,strType)
{
	var date=new Date();
	var monthName;
	var dayName;
	var arDate;
	if (strLangue==k_strlng_Fr)
	{
		dayName=new Array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
		switch (strType)
		{
			case 'full' :
				monthName= new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai','Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
				document.write(dayName[date.getDay()] + " " + date.getDate() + " " + monthName[date.getMonth()] + " " + date.getFullYear());
				break;
			case 'medium' :
				document.write(dayName[date.getDay()] + " " + date.getDate() + "/" + (date.getMonth()+1) + "/" + date.getFullYear());
				break;
		}
	}
	else
	{
	    dayName=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
		switch (strType)
		{
			case 'full' :
				monthName= new Array('January', 'February', 'March', 'April', 'May', 'June','July', 'August', 'September', 'October', 'November', 'December');
				arDate = new Array("0th","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th","11th","12th","13th","14th","15th","16th","17th","18th","19th","20th","21st","22nd","23rd","24th","25th","26th","27th","28th","29th","30th","31st");
				document.write(dayName[date.getDay()] + ", " + monthName[date.getMonth()] + " " + arDate[date.getDate()] + ", " + date.getFullYear());
				break;
			case 'medium' :
				document.write(dayName[date.getDay()] + " " + (date.getMonth()+1) + "/" +  date.getDate() + "/" + date.getFullYear());
				break;
		}

	}
}

function servicepopup(strUrl,strId)
{
	newwin=window.open(strUrl,strId,"toolbar=yes,menubar=no,location=no,scrollbars=yes,resizable=yes,directories=no,width=750,height=500");
}		 

function popup(strUrl,strId)
{
	newwin=window.open(strUrl,strId,"toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,directories=no,width=650,height=400");
}		 


// Ultimate client-side JavaScript client sniff. Version 4.01
// based upon: Ultimate client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001.  Permission granted to reuse and distribute.
// Revised 17 May 99 to add is.nav5up and is.ie5up (see below).
// Revised 21 Nov 00 to add is.gecko and is.ie5_5 Also Changed is.nav5 and is.nav5up to is.nav6 and is.nav6up
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4, 
//                      correct Opera 5 detection
//                      add support for winME and win2k
//                      synch with browser-type-oo.js
//                      add is.aol5, is.aol6
// Revised 26 Mar 01 to correct Opera detection
// Revised 02 Oct 01 to add IE6 detection
// Revised 08 Oct 02 by Tim Dobbelaere (http://tim.dobbelaere.com)
//                   to add WinXP (is.winxp), Windows.NET (is.windotnet)
//                      correct Mozilla & Netscape browser/engine distiction <<< use engine detection!
//                      Mozilla engine: is.moz, is.moz2, is.moz2up, is.moz3, is.moz3up, is.moz4, is.moz4up, is.moz5, is.moz5up
//                      Mozilla browser: is.mozilla, is.mozilla1
//                      correct is.nav6 and is.nav6up, add is.nav7, is.aol7, is.aol8, is.opera6, is.opera6up
//                      add is.macos, is.macos8, is.macos9, is.macosx
// Revised 10 Oct 02 to add win2k detecion in Opera
// Revised 05 Apr 04 to add win2k3 (is.win2k3, obsolete: is.windotnet), .NET CLR (is.dotnet)

// everything you always wanted to know about your javascript client
// but were afraid to ask ... "Is" is the constructor function for "is" object,
// which has properties indicating:
// (1) browser vendor:
//     is.nav, is.ie, is.opera, is.hotjava, is.webtv, is.tvnavigator, is.aoltv
// (2) browser version number:
//     is.major (integer indicating major version number: 2, 3, 4 ...)
//     is.minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) mozilla engine generation
//     is.moz2, is.moz2up, is.moz3, is.moz3up, is.moz4, is.moz4up, is.moz5, is.moz5up, is.gecko
// (4) browser vendor and major version number
//     is.nav2, is.nav3, is.nav4, is.nav4up, is.nav6, is.nav6up, is.nav7, is.nav7up
//     is.mozilla1
//     is.ie3, is.ie4, is.ie4up, is.ie5, is.ie5up, is.ie5_5, is.ie5_5up, is.ie6, is.ie6up, is.ie7, is.ie7up,
//     is.hotjava3, is.hotjava3up, is.opera2, is.opera3, is.opera4, is.opera5, is.opera5up, is.opera6, is.opera6up
//     is.aol3, is.aol4, is.aol5, is.aol6, is.aol7, is.aol8
// (5) javascript version number:
//     is.js (float indicating full javascript version number: 1, 1.1, 1.2 ...)
// (6) os platform and version:
//     is.win, is.win16, is.win32, is.win31, is.win95, is.winnt, is.win98, is.winme, is.win2k, is.winxp, is.win2k3
//     is.os2
//     is.mac, is.mac68k, is.macppc
//     is.unix
//     is.sun, is.sun4, is.sun5, is.suni86
//     is.irix, is.irix5, is.irix6
//     is.hpux, is.hpux9, is.hpux10
//     is.aix, is.aix1, is.aix2, is.aix3, is.aix4
//     is.linux, is.sco, is.unixware, is.mpras, is.reliant
//     is.dec, is.sinix, is.freebsd, is.bsd
//     is.vms
//
// see http://www.it97.de/javascript/js_tutorial/bstat/navobj.html and
// http://www.it97.de/javascript/js_tutorial/bstat/browseraol.html
// for detailed lists of useragent strings.
//
// note: you don't want your nav4 or ie4 code to "turn off" or
// stop working when nav5 and ie5 (or later) are released, so
// in conditional code forks, use is.nav4up ("Nav4 or greater")
// and is.ie4up ("IE4 or greater") instead of is.nav4 or is.ie4
// to check version in code which you want to work on future
// versions.

function ClientConfig ()
{   // convert all characters to lowercase to simplify testing

    var agt=navigator.userAgent.toLowerCase();
	

    // *** browser version ***
    // note: On IE5, these return 4, so use is.ie5up to detect IE5
    // or is.ie6up to detect IE6.

    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);

    // note: opera and webtv spoof navigator.  we do strict client detection.
    // if you want to allow spoofing, take out the tests for opera and webtv.
    this.moz     = ((agt.indexOf('mozilla') != -1) && (agt.indexOf('spoofer')==-1)
                   && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                 && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
    this.moz2    = (this.moz && (this.major == 2));
    this.moz3    = (this.moz && (this.major == 3));
    this.moz4    = (this.moz && (this.major == 4));
    this.moz4up  = (this.moz && (this.major >= 4));
    this.moz5    = (this.moz && (this.major == 5));
    this.moz5up  = (this.moz && (this.major >= 5));
    this.gecko   = (agt.indexOf('gecko') != -1);

    this.nav2    = this.moz2;
    this.nav3    = this.moz3;
    this.nav4    = this.moz4;
    this.nav4up  = (this.nav4 || ((this.major >= 4) && (agt.indexOf("netscape") != -1)));
    this.nav     = (this.nav2 || this.nav3 || this.nav4);
    this.nav6    = (this.moz && (this.major == 5) && (agt.indexOf("netscape6/6") != -1));
    this.nav6up  = (this.moz && (this.major >= 5) && (agt.indexOf("netscape") != -1));
    this.nav7    = (this.moz && (this.major == 5) && (agt.indexOf("netscape/7") != -1));
    this.nav7up  = (this.nav6up && !this.nav6);
    this.navonly = (this.nav && ((agt.indexOf(";nav") != -1) || (agt.indexOf("; nav") != -1)) );

    this.mozilla  = (this.moz && this.gecko);
    this.mozilla1 = (this.moz && this.gecko && (agt.indexOf("rv:1") != -1));

    this.ie      = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    this.ie3     = (this.ie && (this.major < 4));
    this.ie4     = (this.ie && (this.major == 4) && (agt.indexOf("msie 4") != -1) );
    this.ie4up   = (this.ie && (this.major >= 4));
    this.ie5     = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0") != -1) );
    this.ie5_5   = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.5") != -1));
    this.ie5up   = (this.ie && !this.ie3 && !this.ie4);
    this.ie5_5up = (this.ie && !this.ie3 && !this.ie4 && !this.ie5);
    this.ie6     = (this.ie && (this.major == 4) && (agt.indexOf("msie 6.") != -1) );
    this.ie6up   = (this.ie && !this.ie3 && !this.ie4 && !this.ie5 && !this.ie5_5);
    this.ie7     = (this.ie && (this.major == 4) && (agt.indexOf("msie 7.") != -1) );
    this.ie7up   = (this.ie && !this.ie3 && !this.ie4 && !this.ie5 && !this.ie5_5 && !this.ie6);

    this.msn    = (this.ie4up && (agt.indexOf("msn") != -1));
    this.msn2_5 = (this.msn && (agt.indexOf("msn 2.5") != -1));
    this.msn2_6 = (this.msn && (agt.indexOf("msn 2.6") != -1));

    this.aol      = (agt.indexOf("aol") != -1);
    this.aol3     = (this.aol && this.ie3);
    this.aol4ie3  = (this.aol && this.ie3);
    this.aol4ie4  = (this.aol && this.ie4);
    this.aol4     = (this.aol4ie3 || this.aol4ie4);
    this.aol5     = (agt.indexOf("aol 5") != -1);
    this.aol6     = (agt.indexOf("aol 6") != -1);
    this.aol7     = ((agt.indexOf("aol 7") != -1) || agt.indexOf("aol/7") != -1);
    this.aol8     = ((agt.indexOf("aol 8") != -1) || agt.indexOf("aol/8") != -1);

    this.opera = (agt.indexOf("opera") != -1);
    this.opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
    this.opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
    this.opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
    this.opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
    this.opera5up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4);
    this.opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1);
    this.opera6up = (this.opera6 || this.opera5up);

    this.webtv = (agt.indexOf("webtv") != -1); 

    this.TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1)); 
    this.AOLTV = this.TVNavigator;

    this.hotjava = (agt.indexOf("hotjava") != -1);
    this.hotjava3 = (this.hotjava && (this.major == 3));
    this.hotjava3up = (this.hotjava && (this.major >= 3));

    // *** JAVASCRIPT VERSION CHECK ***
    if (this.nav2 || this.ie3) this.js = 1.0;
    else if (this.nav3) this.js = 1.1;
    else if (this.opera5up) this.js = 1.3;
    else if (this.opera) this.js = 1.1;
    else if ((this.nav4 && (this.minor <= 4.05)) || this.ie4) this.js = 1.2;
    else if ((this.nav4 && (this.minor > 4.05)) || this.ie5) this.js = 1.3;
    else if (this.hotjava3up) this.js = 1.4;
    else if (this.nav6 || this.gecko) this.js = 1.5;
    // NOTE: In the future, update this code when newer versions of JS
    // are released. For now, we try to provide some upward compatibility
    // so that future versions of Nav and IE will show they are at
    // *least* JS 1.x capable. Always check for JS version compatibility
    // with > or >=.
    else if (this.nav6up) this.js = 1.5;
    // note ie5up on mac is 1.4
    else if (this.ie5up) this.js = 1.3

    // HACK: no idea for other browsers; always check for JS version with > or >=
    else this.js = 0.0;

    // *** PLATFORM ***
    this.win   = ( (agt.indexOf("win") != -1) || (agt.indexOf("16bit") != -1) );
    // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
    //        Win32, so you can't distinguish between Win95 and WinNT.
    this.win95 = ((agt.indexOf("win95") != -1) || (agt.indexOf("windows 95") != -1));

    // is this a 16 bit compiled version?
    this.win16 = ((agt.indexOf("win16") != -1) || 
               (agt.indexOf("16bit") != -1) || (agt.indexOf("windows 3.1") != -1) || 
               (agt.indexOf("windows 16-bit") != -1) );  

    this.win31 = ((agt.indexOf("windows 3.1") != -1) || (agt.indexOf("win16") != -1) ||
                    (agt.indexOf("windows 16-bit") != -1));

    // NOTE: Reliable detection of Win98 may not be possible. It appears that:
    //       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
    //       - On Mercury client, the 32-bit version will return "Win98", but
    //         the 16-bit version running on Win98 will still return "Win95".
    this.win98 = ((agt.indexOf("win98") != -1) || (agt.indexOf("windows 98") != -1));
    this.winnt = ((agt.indexOf("winnt") != -1) || (agt.indexOf("windows nt") != -1));
    this.win32 = (this.win95 || this.winnt || this.win98 || 
                    ((this.major >= 4) && (navigator.platform == "Win32")) ||
                    (agt.indexOf("win32") != -1) || (agt.indexOf("32bit") != -1));

    this.winme = ((agt.indexOf("win 9x 4.90") != -1));
    this.win2k = ((agt.indexOf("windows nt 5.0") != -1) || (agt.indexOf("windows 2000") != -1));
    this.winxp = ((agt.indexOf("windows nt 5.1") != -1) || (agt.indexOf("windows xp") != -1));
    this.win2k3 = ((agt.indexOf("windows nt 5.2")!= -1) || (agt.indexOf("windows 2003") != -1));
    // obsolete: Windows.NET was renamed to Windows 2003
    this.windotnet = this.win2k3;

    this.dotnet = ((agt.indexOf(".net clr") != -1));

    this.os2   = ((agt.indexOf("os/2") != -1) || 
                    (navigator.appVersion.indexOf("OS/2") != -1) ||   
                    (agt.indexOf("ibm-webexplorer") != -1));

    this.mac    = (agt.indexOf("mac") != -1);
    // hack ie5 js version for mac
    if (this.mac && this.ie5up) this.js = 1.4;
    this.mac68k = (this.mac && ((agt.indexOf("68k") != -1) || 
                               (agt.indexOf("68000") != -1)));
    this.macppc = (this.mac && ((agt.indexOf("ppc") != -1) || 
                                (agt.indexOf("powerpc") != -1)));
    // macos detection not a real science, too little info in ua
    this.macos  = (this.mac && ((agt.indexOf("mac os") != -1) ||
                                (agt.indexOf("macos") != -1) ||
                                this.ie));
    this.macos8 = (this.macos && ((agt.indexOf("os 8") != -1) ||
                                  (agt.indexOf("os8") != -1)));
    // ie5.13 reports as ie5.12 on os x
    this.macos9 = ((this.mac && (this.ie5 && (agt.indexOf("msie 5.13") != -1))) ||
                   (this.macos && ((agt.indexOf("os 9") != -1) ||
                                   (agt.indexOf("os9") != -1))));
    this.macosx = (this.macos && ((agt.indexOf("os x") != -1) ||
                                  (agt.indexOf("osx") != -1)));

    this.sun   = (agt.indexOf("sunos") != -1);
    this.sun4  = (agt.indexOf("sunos 4") != -1);
    this.sun5  = (agt.indexOf("sunos 5") != -1);
    this.suni86= (this.sun && (agt.indexOf("i86") != -1));
    this.irix  = (agt.indexOf("irix") != -1);    // SGI
    this.irix5 = (agt.indexOf("irix 5") != -1);
    this.irix6 = ((agt.indexOf("irix 6") != -1) || (agt.indexOf("irix6") != -1));
    this.hpux  = (agt.indexOf("hp-ux") != -1);
    this.hpux9 = (this.hpux && (agt.indexOf("09.") != -1));
    this.hpux10= (this.hpux && (agt.indexOf("10.") != -1));
    this.aix   = (agt.indexOf("aix") != -1);      // IBM
    this.aix1  = (agt.indexOf("aix 1") != -1);    
    this.aix2  = (agt.indexOf("aix 2") != -1);    
    this.aix3  = (agt.indexOf("aix 3") != -1);    
    this.aix4  = (agt.indexOf("aix 4") != -1);    
    this.linux = (agt.indexOf("inux") != -1);
    this.sco   = (agt.indexOf("sco") != -1) || (agt.indexOf("unix_sv") != -1);
    this.unixware = (agt.indexOf("unix_system_v") != -1); 
    this.mpras    = (agt.indexOf("ncr") != -1); 
    this.reliant  = (agt.indexOf("reliantunix") != -1);
    this.dec   = ((agt.indexOf("dec") != -1) || (agt.indexOf("osf1") != -1) || 
                  (agt.indexOf("dec_alpha") != -1) || (agt.indexOf("alphaserver") != -1) || 
                  (agt.indexOf("ultrix") != -1) || (agt.indexOf("alphastation") != -1)); 
    this.sinix = (agt.indexOf("sinix") != -1);
    this.freebsd = (agt.indexOf("freebsd") != -1);
    this.bsd = (agt.indexOf("bsd") != -1);
    // hack macos if not linux or bsd
    this.macos = (this.macos || (!this.linux && !this.bsd));
    this.unix  = ((agt.indexOf("x11") != -1) || this.sun || this.irix || this.hpux || 
                 this.sco ||this.unixware || this.mpras || this.reliant || 
                 this.dec || this.sinix || this.aix || this.linux || this.bsd || this.freebsd);

    this.vms   = ((agt.indexOf("vax") != -1) || (agt.indexOf("openvms") != -1));
}

<!--
//*********************************************************
// Fonction qui gère un window.open avec un focus
// Auteur : GBD
// Date de modification : 15/10/2004
//********************************************************* 
function MM_openBrWindow(theURL,winName,features) { //v2.0
  var w;
  w=window.open(theURL,winName,features);
  w.focus();
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
// this function gets the cookie, if it exists
function Get_Cookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && 
	( name != document.cookie.substring( 0, name.length ) ) )
	{
	return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}
function Set_Cookie( name, value, expires, path, domain, secure ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	
	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
	( ( path ) ? ";path=" + path : "" ) + 
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
	( ( path ) ? ";path=" + path : "") +
	( ( domain ) ? ";domain=" + domain : "" ) +
	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function findInPage(str) {
	var txt, i, found;
	if (str == "") { return false; }
	if (NS4) {
		if (!win.find(str)) {
			while(win.find(str, false, true)) {
				n++;
			}
		} else {
			n++;
		}
		if (n == 0) { alert(str + " n\'a pas été trouvé sur la page."); }
	}
	if (IE4) {
		txt = win.parent.contenu.document.body.createTextRange();
		for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
			txt.moveStart("character", 1);
			txt.moveEnd("textedit");
		}
		if (found) {
			txt.moveStart("character", -1);
			txt.findText(str);
			txt.select();
			txt.scrollIntoView();
			n++;
		} else {
			if (n > 0) {
				n = 0;
				findInPage(str);
			} else {
 				alert(str + " n\'a pas été trouvé sur la page.");
			}
		}
	}
	return false;
}

function findInPageLocal(str) {

	var txt, i, found;
	if (str == "") { return false; }
	if (NS4) {
		if (!win.find(str)) {
			while(win.find(str, false, true)) {
				n++;
			}
		} else {
			n++;
		}
		if (n == 0) { alert(str + " n\'a pas été trouvé sur la page."); }
	}
	if (IE4) {
		txt = win.document.body.createTextRange();
		for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
			txt.moveStart("character", 1);
			txt.moveEnd("textedit");
		}
		if (found) {
			txt.moveStart("character", -1);
			txt.findText(str);
			txt.select();
			txt.scrollIntoView();
			n++;
		} else {
			if (n > 0) {
				n = 0;
				findInPage(str);
			} else {
 				alert(str + " n\'a pas été trouvé sur la page.");
			}
		}
	}
	return false;
}
function fragmentString(string,size){
var output=new Array();
	if(!size){return output};
	if(string.length<=size){
		output.length++;output[0]=string;
		return output;};
var pieces=((string.length%size))?
	parseInt((string.length/size)+1):(string.length/size);
	var grabPoint=-size;
	var correctSize=0;
	for(var i=0;i < pieces;i++){
	correctSize+=((grabPoint+size)>(string.length+1))?
	(string.length):size;
	grabPoint+=size;
	output[(++output.length)-1]=string.substring(grabPoint,correctSize);
	}
	return output;
} 
//-->

