var BACKSPACE = 8;

//--##############################Syntaxe pour les expressions régulières################--
//-----reg=new RegExp(String motif[, String type])


//-----Description
//-----Objet Expression régulière
//-----Le paramètre motif décrit le format de chaîne à trouver.
//-----Le paramètre type décrit le type d'expression régulière.
//-----Si type vaut "g", l'expression sera analysée globalement sur l'ensemble de la chaîne.
//-----Si type vaut "i", l'expression sera analysée indifféremment sur les majuscules ou les minuscules.
//-----type peut donc valoir "", "g", "i" ou "gi"

//-----Il existe deux syntaxes équivalentes pour créer une expression régulière :
//-----var reg=new RegExp("[0-9]+","g")
//-----var reg=/[0-9]+/g
//--#####################################################################################--


//--------*************************isInteger()*************************-------------//
function isInteger_old_and_stupid(chaine){

//-----####fonction servant à vérifier si la chaine ne contient que des chiffres####-----

var modele=/[0-9]/; //sert à vérifier si n° de compte est de type numérique
var nodigit=1;

for (var i=0; i < chaine.length; i++)
{
var chiffre=parseInt(chaine.charAt(i));
if(!(modele.test(chiffre)))
	{
	nodigit = 0;
	}
}
return nodigit;
}

function isInteger(chaine)
{ // could be done in one line with a regular expression
    var modele=/[0-9]/; //sert à vérifier si n° de compte est de type numérique
    for (i=0; i < chaine.length; i++)
    {
        if(!(modele.test(parseInt(chaine.charAt(i)))))
	    {
	        return 0;
	    }
    }
    return 1;
}


//--------*************************checkmail()*************************-------------//
function checkmail(email){

//-----####fonction servant à vérifier la validité d'une adresse e-mail####-----

//var model = /^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+/;
var model = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+_*@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/
var mailok = 1;

if(!model.test(email))
 {
 	mailok = 0;
 }

return mailok;
}


//--------*************************isDexiaAccount()*************************-------------//
function isDexiaAccount(account){

var modele_cpt_dexia=/^05|^06|^07|^08|^09|^624|^625|^638|^657|^672|^680|^682|^683|^775|^776|^777|^778|^779|^78|^79|^83|^55|^560|^562|^563|^564|^565|^566|^567|^568|^569/; //sert à vérifier s'il s'agit d'un compte Dexia ou Bacob
var dexiaOk =1;

if(!modele_cpt_dexia.test(account))
 {
 	dexiaOk = 0;
 }
return dexiaOk;
}


//--------*************************isDexiaPayAccount()*************************-------------//
function isDexiaPayAccount(account){

var modele_cpt_dexia=/^05|^06|^07|^09|^624|^625|^638|^657|^672|^680|^682|^683|^775|^776|^777|^778|^779|^78|^79|^55|^560|^562|^563|^564|^565|^566|^567|^568|^569/; //sert à vérifier s'il s'agit d'un compte Dexia ou Bacob
var dexiaOk =1;

if(!modele_cpt_dexia.test(account))
 {
 	dexiaOk = 0;
 }
return dexiaOk;
}


//--------*************************isRadioButtonChecked()*************************-------------//
function isRadioButtonChecked (nameForm,nameRdButton){isRadioButtonChecked1(nameRdButton);}
function isRadioButtonChecked1(nameRdButton)
{
    var lengthRdButton = document.getElementById(nameRdButton).length;

    for(var i=0; i < lengthRdButton; i++)
    {
	    if(document.getElementById(nameRdButton[i]).checked == true) { return 1; } // checked
    }
    return 0; // not checked
}

//--------*************************isRadioChecked()*************************-------------//

function isRadioChecked(RadioButtonListId)
{
    var i = 0;
    try 
     {      
        var  RadioButtonId;
//        alert("isRadioChecked: " + RadioButtonListId);
	    while (true) 
	    {       
		    RadioButton = document.getElementById(RadioButtonListId + "_" + i);            
//		    alert("isRadioChecked: " + RadioButtonListId + "_" + i);
		    if (RadioButton == null) 
		    {        
//		        alert("isRadioChecked: " + null);
			    return false;            // RadioButtonListId is not checked
		    }            
//		    alert("isRadioChecked: " + i + " " + RadioButton.checked);
		    if (RadioButton.checked) 
		    {                
			    return true;             // value of checked element index
		    }            
		    i++;        
	    }    
    }    
    catch (ex) 
    {
        return false; // something is wrong, dude
    }    
}

function isRadioCheckedAtIndex(RadioButtonListId, index)
{   // indexes are zero-based !

//    alert("isRadioCheckedAtIndex(" + RadioButtonListId + "," + index + ")");
    if (!RadioButtonListId) { return false }
//    alert(RadioButtonListId + "exists");
    try 
     {      
        var  RadioButtonId;
	    RadioButton = document.getElementById(RadioButtonListId + "_" + index);            
	    if (RadioButton == null) 
	    { 
//	        alert(RadioButtonListId + "is null");
	        return false; 
	    }       
//	    alert("isRadioCheckedAtIndex will return: " + RadioButton.checked);
		return RadioButton.checked;
    }    
    catch (ex) 
    {
//        alert("isRadioCheckedAtIndex: error catched");
        return false; // (never called)
    }    
}

//--------*************************valid_account()*************************-------------//
function valid_account(part1,checkdigit){

var goodAccount;


if((((part1%97)==checkdigit) && (part1 != '0000000000'))||(((part1%97)==0)&&(parseInt(checkdigit)==97)))
 {
	//Le n° de compte est correct
	goodAccount = 1;
 }
 else
 {
	 //Le n° de compte est erroné
	goodAccount = 0;
 }
 
return goodAccount;
}


//--------*************************chopzero()*************************-------------//
function chopzero(nbr){

var nombre=nbr;

if(nombre.indexOf('0') == 0)
 {
	nombre=nombre.substr(1,1);
 }

return nombre;
}


//--------*************************check_birthdate()*************************-------------//
function check_birthdate(day,month,year){

var minDay=1,maxDay=31,minMonth=1,maxMonth=12,returnValue=0;
	if(!isNaN(day) && !isNaN(month) && !isNaN(year) && day.length==2 && month.length==2 && year.length==4)
	{	myDay=Number(day);
		myMonth=Number(month);
		myYear=Number(year);
		if(myMonth==2)
		{	if(myYear%400==0) maxDay=29;
			else if(myYear%100==0) maxDay=28;
			else if(myYear%4==0) maxDay=29;
			else maxDay=28;
		}
		else
		{	if(myMonth==4 || myMonth==6 || myMonth==9 || myMonth==11)//avril, juin, septembre ou novembre => 30 jours max
			{	maxDay=30;	
			}
		}
		
		if(myDay<minDay || myDay > maxDay || myMonth<minMonth || myMonth>maxMonth)
		{	returnValue=0;
		}
		else
		{	returnValue=1
		}
		
		
	}
	
	return returnValue
}


//--------*************************fieldEmpty()*************************-------------//
function fieldEmpty ( nameForm, myTable )                       { return fieldEmpty3( myTable, 'textfieldempty', 'textfield'); }
function fieldEmpty2( nameForm, myTable, cssclass1, cssclass2 ) { fieldEmpty3( myTable, cssclass1, cssclass2 ); }
function fieldEmpty3( myTable )                                 { return fieldEmpty4( myTable, 'textfieldempty', 'textfield'); }
function fieldEmpty4( myTable, cssclass1, cssclass2 )
{
    var noinput = 1;
    try
    {
        for ( var i=0; i < myTable.length; i++ )
        {
            var formObject = document.getElementById(myTable[i]);
            if (formObject != null)
            {
                if ((formObject.value == ""))
                {
                    noinput = 0;
                }
                formObject.className = ((formObject.value == "")) ? cssclass1 : cssclass2;
            }
        }
    }
    catch (e) {  }
    return noinput;
}

//--------*************************isCheckBoxChecked*************************-------------//
function isCheckBoxChecked ( nameForm, myTable ) { isCheckBoxChecked2( myTable ); }
function isCheckBoxChecked2( myTable )
{
    var aCheckBox;
    for(var i=0; i < myTable.length; i++)
    {
        aCheckBox = document.getElementById(myTable[i]);
        if ((aCheckBox) && (aCheckBox.checked))
        {
            return 1;
        }
    }
    return 0;
}

//--------*************************disableFields()*************************-------------//
function disableFields ( nameForm,fieldName,myTableFields) { disableFields2( fieldName,myTableFields); }
function disableFields2( fieldName,myTableFields)
{

    for(var i=0; i < myTableFields.length; i++)
    {
        field = eval('document.' + nameForm + '.' + myTableFields[i]);
        //---Si c'est une selectbox, on la repositionne sur le premier élément------
        if( field.type == 'select-one' )
        {
            field.options[0].selected = true;
        }

        if(fieldName == myTableFields[i])
        {
            document.getElementById(fieldName).disabled = false;  
        }
        else
        {
            field.disabled = true;
        }
    }
}


//--------*************************checkAccount()*************************-------------//
function checkAccount(acc){

var validAccount;

//retirer les caractères d'espace,/ et -
//-------------------------------------------------------
var account=acc;
account = account.replace(/-/g,"");
account = account.replace(/\//g,"");
account = account.replace(/ /g,"");

var partie1 = account.substr(0,10);
var checkdigit = account.substr(10,2);

if(account.length > 12)
 {
	//Le n° de compte dépasse les 12 chiffres
	validAccount = 0;
}
else if (!isInteger(account))
 {
	  //le n° de compte n'est pas composé que de chiffres
	  validAccount = 0;
 }
else if (!isDexiaAccount(account))
 {
	  //le compte n est pas un compte Dexia
	  validAccount = 0;
 }
else if (!valid_account(partie1,checkdigit))
 {
	  //Le résultat du modulo 97 est erroné
	  validAccount = 0;
 }
else
 {
  	validAccount = 1;
 }

return (validAccount);
}

//--------*************************checkAllAccount()*************************-------------//
function checkAllAccount(acc){

var validAccount;

//retirer les caractères d'espace,/ et -
//-------------------------------------------------------
var account=acc;
account = account.replace(/-/g,"");
account = account.replace(/\//g,"");
account = account.replace(/ /g,"");

var partie1 = account.substr(0,10);
var checkdigit = account.substr(10,2);

if(account.length > 12)
 {
	//Le n° de compte dépasse les 12 chiffres
	validAccount = 0;
}
else if (!isInteger(account))
 {
	  //le n° de compte n'est pas composé que de chiffres
	  validAccount = 0;
 }
else if (!valid_account(partie1,checkdigit))
 {
	  //Le résultat du modulo 97 est erroné
	  validAccount = 0;
 }
else
 {
  	validAccount = 1;
 }

return (validAccount);
}

//--------*************************checkPayAccount()*************************-------------//
function checkPayAccount(acc){

var validAccount;

//retirer les caractères d'espace,/ et -
//-------------------------------------------------------
var account=acc;
account = account.replace(/-/g,"");
account = account.replace(/\//g,"");
account = account.replace(/ /g,"");

var partie1 = account.substr(0,10);
var checkdigit = account.substr(10,2);

if(account.length > 12)
 {
	//Le n° de compte dépasse les 12 chiffres
	validAccount = 0;
}
else if (!isInteger(account))
 {
	  //le n° de compte n'est pas composé que de chiffres
	  validAccount = 0;
 }
else if (!isDexiaPayAccount(account))
 {
	  //le compte n est pas un compte Dexia
	  validAccount = 0;
 }
else if (!valid_account(partie1,checkdigit))
 {
	  //Le résultat du modulo 97 est erroné
	  validAccount = 0;
 }
else
 {
  	validAccount = 1;
 }

return (validAccount);
}

//--------*************************formatAccount*************************-------------//
function formatAccount( nameForm, nameField, val, event)
{
    formatAccount2( nameField, val, event);
}

function formatAccount2( nameField, val, event)
{
    if ((event != null) && (event.keyCode == BACKSPACE))
    {
        return;
    }

    accountField = document.getElementById(nameField);

    if(val.length == 3)
    {
        accountField.value =  val + "-";
    }
    if((val.length == 11) && (val.indexOf("-",0) == 3))
    {
        accountField.value =  val + "-";
    }
    if((val.length == 12) && (val.indexOf("-",0) < 0))
    {
        var partie1 = val.substr(0,3);
        var partie2 = val.substr(3,7);
        var partie3 = val.substr(10,2);
        accountField.value =  partie1 + "-" + partie2 + "-" + partie3;
    }
    if(val.indexOf("--",0) > 0)
    {
        accountField.value =  val.replace(/--/g,"-");
    }
}

//--------*************************getQuerystring()*************************-------------//
function getQuerystring(){

var requete = window.location.search.substr(1);

if (requete.length > 0){

	if(navigator.appName != 'Netscape')
	{
	var modele=/%26/;
	requete=requete.replace(modele,"&");
	}


	var pairevaleurs = requete.split(/\&/);

	var chainereq= new Array();

	for(var i = 0; i < pairevaleurs.length; i++)
	{
		chainereq[i]=new Array(1);
		temp = pairevaleurs[i].split(/=/);
		chainereq[i][0]=temp[0];
		chainereq[i][1]=temp[1];
	}
}

return chainereq;
}
//--------*************

//--------*************************getUrlParams()*************************-------------//
function getUrlParams()
{
   var idx = document.URL.indexOf('?');
   var params = new Array();
   if (idx != -1)
   {
      // fix url for malformed uri's
      var fixedurl = document.URL.substring(idx+1, document.URL.length).replace(/amp;/g,"");
      var pairs = fixedurl.split('&');

      for (var i=0; i<pairs.length; i++)
      {
         nameVal = pairs[i].split('=');
         params[nameVal[0]] = nameVal[1];
      }
	  
   }
   return params;
}
//--------*************


//************************************* compareDates ************************************

/*

Valeurs d'entrée :
-------------------

2 dates au format JJ-MM-AAAA

Valeurs de retour :
--------------------

0 => Les dates sont identiques
1 => date 1 est supérieure à date 2
2 => date 2 est supérieure à date 1

*/

function compareDates(date1,date2)
{	date1_tab=date1.split("-");
	date2_tab=date2.split("-");

	jour1=parseInt(date1_tab[0]*1);
	mois1=parseInt(date1_tab[1]*1);
	annee1=parseInt(date1_tab[2]*1);

	jour2=parseInt(date2_tab[0]*1);
	mois2=parseInt(date2_tab[1]*1);
	annee2=parseInt(date2_tab[2]*1);
	
	if(date1==date2) returnValue=0;
	else
	{	if(annee1==annee2)
		{	if(mois1==mois2)
			{	if(jour1>jour2)
				{	returnValue=1; //date 1 > date 2
				}
				else
				{	returnValue=2;
				}

			}
			else
			{	if(mois1>mois2)
				{	returnValue=1;
				}
				else
				{	returnValue=2;
				}
			}

		}
		else
		{	if(annee1 > annee2)
			{	returnValue=1;
			}
			else
			{	returnValue=2;
			}
		}
	}
	return returnValue;
}


//function goodDates

function goodDates(language){

var OK=1;
var chaine;
var longueur;
var date_first="";
var date_last="";
var sameDates="",wrongDates="";
var prefixe="";
var asp20Prefix = "ctl00_ItemContent_";
if(document.getElementById('beginDay') == null)
{	
	prefixe = "DataFund1_";
}

prefixe = asp20Prefix + prefixe;

var in1=document.getElementById(prefixe+'beginDay').value;
var in2=document.getElementById(prefixe+'beginMonth').value;
var in3=document.getElementById(prefixe+'beginYear').value;
var out1=document.getElementById(prefixe+'endDay').value;
var out2=document.getElementById(prefixe+'endMonth').value;
var out3=document.getElementById(prefixe+'endYear').value;

if(language=="FR")
{	sameDates="Les dates introduites sont identiques !";
	wrongDates="Les dates introduites sont incorrectes !";
}
else
{	sameDates="De ingevoerde datums zijn identiek!";
	wrongDates="De ingevoerde datums zijn ongeldig!";
}




for(var i=1;i<=3;i++)
{
 chaine=eval("in" + i);
 longueur=2;

 if(i==3){longueur=4;}

 if (isNaN(eval("in" + i)) || (chaine.length != longueur)){OK=0}

 date_first=date_first+chaine;
}

for(var i=1;i<=3;i++)
{
 chaine=eval("out" + i);
 longueur=2;

 if(i==3){longueur=4;}

 if (isNaN(eval("out" + i)) || (chaine.length != longueur)){OK=0}

 date_last=date_last+chaine;
}

if(check_birthdate(in1,in2,in3) == 0 || check_birthdate(out1,out2,out3) == 0 || compareDates(in1+"-"+in2+"-"+in3,out1+"-"+out2+"-"+out3)==1) OK=0;

if (date_first == date_last){OK}

if (OK == 0){
	alert(wrongDates);
	return false;
	}
	else if (date_first == date_last){
	alert(sameDates);
	return false;
	}
	else{
	return true;
	}
}


//--------*************************checkChannelName()*************************-------------//
function checkChannelName(nameChan){

var modele = /[A-Za-z0-9\.-_()]/
var channelNameOk = 1;
var validCharacter = 1;

for (var i=0; i < nameChan.length; i++)
{
 if(!(modele.test(nameChan.charAt(i))))
  {
   validCharacter = 0;
  }
}

if(nameChan.length > 100)
 {
  channelNameOk = 0;
 }
else if(nameChan.indexOf("..") >= 0)
 {
   channelNameOk = 0;
 }
else if(nameChan.substr(nameChan.length-1,1) == ".")
 {
   channelNameOk = 0;
 }
else
 {
   channelNameOk = validCharacter;
 }

return channelNameOk;
}

//--------********************************************************************-------------//

//--------*************************formatDate*************************-------------//
function formatDate(nameForm,nameField,val)
{
    formatDate2(nameField, val);
}


function formatDate2(nameField, val)
{
    dateField = document.getElementById(nameField);
    if(val.length == 2) { dateField.value =  val + "/"; }
    if((val.length == 5) && (val.indexOf("/",0) == 2)) { dateField.value =  val + "/"; }
    if((val.length == 8) && (val.indexOf("/",0) < 0)) { dateField.value =  val.substr(0,2) + "/" + val.substr(2,2) + "/" + val.substr(4,4); }
    if(val.indexOf("//",0) > 0) { dateField.value =  val.replace(/\/\//g,"/"); }
}
//--------******************************************************************-------------//
//--------****************************EnhanceTimedBlocks********************-------------//
var TimedBlocksDone = false;
var TimedBlock = null;
var TimedBlockClientDate = null;
var TimedBlockIsWeekDay = false;
var TimedBlockIsSaturday = false;
var TimedBlockIsSunday = false;

var TIMEDIFFERENCETOUTC = 2; // Our timezone is GMT+2

var TIMEDSTARTWEEKDAYS = 1;
var TIMEDENDWEEKDAYS = 2;
var TIMEDSTARTSATURDAYS = 3;
var TIMEDENDSATURDAYS = 4;

function TimedBlocksInitialize()
{
    TimedBlockClientDate = new Date();
    
    TimedBlockIsSaturday = (TimedBlockClientDate.getDay() == 6);
    TimedBlockIsSunday = (TimedBlockClientDate.getDay() == 0);
    TimedBlockIsWeekDay = (!TimedBlockIsSunday && !TimedBlockIsSaturday);
    
    TimedBlocks = new Array();
    TimedBlocks[0] = TimedBlocksCreate('timer_call_me_now', 11,00, 22,00, 13,00, 17,00 );
}

function TimedBlocksCreate(timerid,
    timerstarthourweek, timerstartminutesweek, timerendhourweek, timerendminutesweek,
    timerstarthoursaturday, timerstartminutessaturday, timerendhoursaturday, timerendminutessaturday)
{
    // our times are in GMT the init function will set them to be minus 2
    startweekday = new Date(TimedBlockClientDate);
    endweekday = new Date(TimedBlockClientDate);
    startsaturday = new Date(TimedBlockClientDate);
    endsaturday = new Date(TimedBlockClientDate);
    
    startweekday.setUTCHours(timerstarthourweek-TIMEDIFFERENCETOUTC, timerstartminutesweek, 0);
    endweekday.setUTCHours(timerendhourweek-TIMEDIFFERENCETOUTC, timerendminutesweek, 0);
    startsaturday.setUTCHours(timerstarthoursaturday-TIMEDIFFERENCETOUTC, timerstartminutessaturday, 0);
    endsaturday.setUTCHours(timerendhoursaturday-TIMEDIFFERENCETOUTC, timerendminutessaturday, 0);
    
    return [timerid,startweekday,endweekday,startsaturday,endsaturday];
}
function TimedBlockSetActive(timedTargetObject, timedBlock)
{
    showme = false;
    showme = showme || (TimedBlockIsWeekDay && ((timedBlock[TIMEDSTARTWEEKDAYS] < TimedBlockClientDate) && (TimedBlockClientDate < timedBlock[TIMEDENDWEEKDAYS])));
    showme = showme || (TimedBlockIsSaturday && ((timedBlock[TIMEDSTARTSATURDAYS] < TimedBlockClientDate) && (TimedBlockClientDate < timedBlock[TIMEDENDSATURDAYS])));
    timedTargetObject.style.display = showme ? 'block' : 'none';
}
function TimedBlocksExecute()
{
    if (!TimedBlocksDone)
    {    
        TimedBlocksDone = true;
        return; // not needed ...
        try
        {
            var timedTargetObjects = document.getElementsByTagName('code');
            
            if (timedTargetObjects != null)
            {
                TimedBlocksInitialize();
            
                for (i=0; i < timedTargetObjects.length; i++)
                {
                    for (j=0; j < TimedBlocks.length; j++)
                    {
                        if (timedTargetObjects[i].className.indexOf(TimedBlocks[j][0])>-1)
                        {
                            TimedBlockSetActive(timedTargetObjects[i], TimedBlocks[j]);
                            continue;
                        }
                    }
                }
            }
        }
        catch(e)
        {
        alert(e);
        }
    }
}
//--------******************************************************************-------------//

var __originalOnLoad = null;

if (window.onload != null)
{
   __originalOnLoad = window.onload;
}

window.onload = function()
{
    try
    {
        if (__originalOnLoad != null)
        {
           __originalOnLoad();
        }

        // OnLoadFixForTextBoxAgency: not compatible IWS !!
        targetObject = document.getElementById('txtBoxAgency');
        if (targetObject != null)
        {
            targetObject.onfocus = function(){ targetObject.blur(); };
        }
    }
    catch(e)
    {
    }
}
