function hasParameter(uri, name)
{
	re = new RegExp("[\?\&]" + name + "=");
	return (uri.search(re) != -1);
}

function addParameter(uri, name, value)
{	
	re = new RegExp("[\?]");	
	if (uri.search(re) != -1) {uri2 = uri + "&";}
	else {uri2 = uri + "?";}	
	uri2 = uri2 + name + "=" + value;
	return uri2;
}

function replaceParameter(uri, name, value)
{	
	if (hasParameter(uri, name)) {	
		re = new RegExp("([\?\&])" + name + "=([^\&]*)(.*)$","");
		uri2 = uri.replace(re, "$1" + name + "=" + value + "$3");			
	} else {
		uri2 = addParameter(uri, name, value);
	}
	return uri2;
}

function deleteParameter(uri, name)
{
	re = new RegExp("([\&])" + name + "=([^\&]*)");
	uri = uri.replace(re, "");
	re = new RegExp("([\?])" + name + "=([^\&]*)");
	uri = uri.replace(re, "$1");
	re = new RegExp("[\?][\&]");
	uri = uri.replace(re, "?");	
	re = new RegExp("[\?]$");
	uri = uri.replace(re, "");	
	return uri;
}

function getURL(page, content, params)
{
	uri = URI;
	
	if (page > "") {
		uri = replaceParameter(uri, "page", page);
		if (content > "") {
			uri = replaceParameter(uri, "portlet", content);
		} else {
			uri = deleteParameter(uri, "portlet");
		}		
	} else {
		if (content > "") {
			if (hasParameter(uri, "page")) {
				uri = replaceParameter(uri, "portlet", content);
			} else {
				uri = replaceParameter(uri, "page", content);
			}
		}
	}
	
	return (uri + params);
}

function goToPage(page, content, params)
{	
	window.location = getURL(page, content, params);
}

function goToPopup(name, page, content, params, width, height, left, top, options)
{		
	if (options == '') 
	{
		options = "toolbar=no,location=no,directories=no,status=no,";
		options += "menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,";
	}	
	if (left > '') options += "left=" + left + ",";
	if (top > '') options += "top=" + top + ",";
	options += "width=" + width + ",height=" + height;
	if (name == '') name = "atlantal";
	
	window.open(getURL(page, content, params), name, options);
}

function popup(link)
{
	var options = "toolbar=no,location=no,directories=no,status=no,";
	options += "menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,";
	options += "width=600,height=450";
	
	window.open(link, "test", options);
}


function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


/* ==============================================*/
/** SCRIPT Divers pour les vérifications des champs de formulaires **/
/** Xavier Arnaudin 18 11 2003 15:14 **/
/* ==============================================*/
//=== VARIABLES GLOBALES ===
var reWhiteSpace = /^\s+$/;
var reDigit = /^\d$/;
var reInteger = /^\d+$/;
var reSignedInteger = /^(\+|\-)?\d+$/;
var reFloat = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
var reSignedFloat = /^(((\+|\-)?\d+(\.\d*)?)|((\+|\-)?(\d*\.)?\d+))$/;
var reLetter = /^[a-zA-Z]$/;
var reAlphabetic = /^[a-zA-Z]+$/;
var reLetterOrDigit = /^([a-zA-Z]|\d)$/;
var reAlphanumeric = /^[a-zA-Z0-9]+$/;
var reEmail = /^([\w-]+\.)*[\w-]+\@([\w-]+\.)+[a-zA-Z]{2,3}$/;
var reZipCode = /^\d{5}$/;
var reDep = /^((\d\d)|(2A)|(2B)|(97[1-6]))$/;
var reDate = /^(\d{2}\/){2}\d{4}$/

//=== CHAINES NULLES OU BLANCHES ===
function isEmpty(sIn){return ((sIn == null) || (sIn.length == 0));}
function estVide(sIn){return isEmpty(sIn);}

function isWhiteSpace(sIn){return (isEmpty(sIn) || reWhiteSpace.test(sIn));}
function estNulOuEspace(sIn){return isWhiteSpace(sIn);}

//=== NOMBRES ENTIERS ===
function isDigit(sIn){return reDigit.test(sIn);}
function estChiffre(sIn){return isDigit(sIn);}

function isInteger(sIn){return reInteger.test(sIn);}
function estEntier(sIn){return isInteger(sIn);}

function isSignedInteger(sIn){return reSignedInteger.test(sIn);}
function estEntierSigne(sIn){return isSignedInteger(sIn);}

function isIntegerInRange(sIn, i_Min, i_Max){
    var iNum, iMin, iMax;
    var bOkMin, bOkMax;

    bOkMin = true;
    bOkMax = true;
    if(isSignedInteger(sIn)){
        iNum = parseInt(sIn, 10);
        if(i_Min!=""){
            iMin = parseInt(i_Min, 10);
            bOkMin = (iNum>=iMin);
            }
        if(i_Max!=""){
            iMax = parseInt(i_Max, 10);
            bOkMax = (iNum<=iMax)
            }
        return (bOkMin && bOkMax);
        }
    else{return false;}
    }
function estEntierBorne(sIn, i_Min, i_Max){return isIntegerInRange(sIn, i_Min, i_Max);}

//=== NOMBRES REELS ===
function isFloat(sIn){return reFloat.test(sIn);}
function estFlottant(sIn){return isFloat(sIn);}

function isSignedFloat(sIn){return reSignedFloat.test(sIn);}
function estFlottantSigne(sIn){return isSignedFloat(sIn);}

function isFloatInRange(sIn, f_Min, f_Max){
    var fNum, fMin, fMax;
    var bOkMin, bOkMax;

    bOkMin = true;
    bOkMax = true;
    if(isSignedFloat(sIn)){
        fNum = parseFloat(sIn);
        if(f_Min!=""){
            fMin = parseFloat(f_Min);
            bOkMin = (fNum>=fMin);
            }
        if(f_Max!=""){
            fMax = parseFloat(f_Max);
            bOkMax = (fNum<=fMax)
            }
        return (bOkMin && bOkMax);
        }
    else{return false;}
    }
function estFlottantBorne(sIn, f_Min, f_Max){return isFloatInRange(sIn, f_Min, f_Max);}

function isFloatFormatted(sIn, iTotal, iFrac){
    if(isSignedFloat(sIn)){}
    else{return false;}
    }
function estFlottantFormate(sIn, iTotal, iFrac){return isFloatFormatted(sIn, iTotal, iFrac);}

//=== CHAINES ALPHABETIQUES ===
function isLetter(sIn){return reLetter.test(sIn);}
function estLettre(sIn){return isLetter(sIn);}

function isAlpha(sIn){return reAlphabetic.test(sIn);}
function estAlpha(sIn){return isAlpha(sIn);}

//=== CHAINES ALPHANUMERIQUES  ===
function isLetterOrDigit(sIn){return reLetterOrDigit.test(sIn);}
function estLettreOuChiffre(sIn){return isLetterOrDigit(sIn);}

function isAlphaNum(sIn){return reAlphanumeric.test(sIn);}
function estAlphaNum(sIn){return isAlphaNum(sIn);}

//=== CODES POSTAUX ET DEPARTEMENTS ===
function isZipCode(sIn){return ((reZipCode.test(sIn)) && (sIn.substring(0,2)!="00"));}
function estCodePostal(sIn){return isZipCode(sIn);}

function isDepartement(sIn){
    if (reDep.test(sIn)){
        if(isInteger(sIn) && (sIn.length==2) && !(isIntegerInRange(sIn,1,95))){return false;}
        else{return true;}
        }
    else{return false}
    }
function estDepartement(sIn){return isDepartement(sIn);}

//=== E-MAIL ===
function isEmail(sIn){return reEmail.test(sIn);}
function estEmail(sIn){return isEmail(sIn);}

//=== NUMEROS DE TELEPHONE ===
function isPhoneNumber(sIn, sDelim){
    var rePhoneNumber;

    rePhoneNumber = new RegExp("^(\\d\\d"+ sDelim + "){4}(\\d\\d)$");
    return rePhoneNumber.test(sIn);
    }
function estNumeroTelephone(sIn, sDelim){return isPhoneNumber(sIn, sDelim);}

//=== DATES  ===
function isDay(sIn){return isIntegerInRange(sIn, 1, 31);}
function estJour(sIn){return isDay(sIn);}

function isMonth(sIn){return isIntegerInRange(sIn, 1, 12);}
function estMois(sIn){return isMonth(sIn);}

function isYear(sIn){return (isInteger(sIn) && ((sIn.length==2) || (sIn.length==4)))}
function estAnnee(sIn){return isYear(sIn);}

function isDate(sIn){
    var bOK;
    var i, iDay, iMonth, iYear;

    if(reDate.test(sIn)){
        bOK = true;
        // test élémentaires
        iDay    = sIn.substring(0,2);
        iMonth  = sIn.substring(3,5);
        iYear   = sIn.substring(6,10);
        if(!isDay(iDay)) bOK = false;
        if(!isMonth(iMonth)) bOK = false;
        if(!isYear(iYear)) bOK = false;

        // Les mois 30 jours
        if(iMonth==4 || iMonth==6 || iMonth==9 || iMonth==11){if(iDay==31) bOK=false;}

        // Le mois de fevrier et son 29eme jour !
        if (iMonth==2){
            if(iDay>29) bOK=false;
            if(iDay==29){
                if( (iYear%4)==0 && ((iYear%100)!=0 || (iYear%400)==0) ) {bOK = true;}
                else{bOK = false;}
                }
            }
        return bOK;
        }
    else{return false;}
    }
function estDate(sIn){return isDate(sIn);}

function isDateInRange(sIn, d_Min, d_Max){
    var iIn, iMin, iMax;
    var bOkMin, bOkMax;

    bOkMin = true;
    bOkMax = true;
    if(isDate(sIn)){
        iIn = Date.parse(sIn);
        if(d_Min!=""){
            iMin = Date.parse(d_Min);
            bOkMin = (iIn>=iMin);
            }
        if(d_Max!=""){
            iMax = Date.parse(d_Max);
            bOkMax = (iIn<=iMax)
            }
        return (bOkMin && bOkMax);
        }
    else{return false;}
    }
function estDateBornee(sIn, dMin, dMax){return isDateInRange(sIn, dMin, dMax);}

//=== HEURES-MINUTES-SECONDES ===
function isHourMinute(sIn, sDelim){
    var reHourMinute;
    var iHour, iMinute;

    reHourMinute = new RegExp("^\\d\\d"+ sDelim + "\\d\\d$");
    if(reHourMinute.test(sIn)){
        iHour = sIn.substring(0,2);
        iMinute = sIn.substring(3,5);
        return(isIntegerInRange(iHour,0,23) && isIntegerInRange(iMinute,0,59));
        }
    else{return false;}
    }
function estHeureMinute(sIn, sDelim){return isHourMinute(sIn, sDelim);}

function isHourMinuteSecond(sIn, sDelim){
    var reHourMinuteSecond;
    var iHour, iMinute, iSecond;

    reHourMinuteSecond = new RegExp("^\\d\\d"+ sDelim + "\\d\\d" + sDelim + "\\d\\d$");
    if(reHourMinuteSecond.test(sIn)){
        iHour = sIn.substring(0,2);
        iMinute = sIn.substring(3,5);
        iSecond = sIn.substring(6,8);
        return(isIntegerInRange(iHour,0,24) && isIntegerInRange(iMinute,0,59)&& isIntegerInRange(iSecond,0,59));
        }
    else{return false;}
    }
function estHeureMinuteSeconde(sIn){return isHourMinuteSecond(sIn);}
//=========================================================================================//
