/*Calendrier en popup  www.phassler.com 15/03/2002*/
var DaysList;
var MonthsList;
var MonthLength = new Array("Mois_longueur_vide",31,29,31,30,31,30,31,31,30,31,30,31);
/* Definition des style du calendrier */
/* Couleur */
var defaultColor = 'white';
var fieldColor = '';
var contour_tableau='#80ADD6';
var fond_tableau='#abd514'; /* #FEF4D9 */
var fond_semaine='#ffffff';
var fond_jour='#ffffff';
var lettre_semaine='#084194';
var lettre_jours='#084194';
var lettre_moisan='#084194';
var jours_selectionne='red';
/*var jours_selectionne='#F28E00';*/
var jours_actif='#0071A3';
var jours_actif_for='#FFFFFF';
var jours_contours='#80ADD6';
var lettre_button='#084194';
var font_family=' font-family: Verdana, Arial, Helvetica, sans-serif;'


// Taille de la fenetre
if (navigator.userAgent.indexOf("MSIE") >= 0){   
    
    maxX = document.body.scrollLeft + document.body.clientWidth; 
	maxY = document.body.scrollTop  + document.body.clientHeight ;
    
  }else{
    // AVOIR pour le scroll
    maxX = window.innerWidth;
	maxY = window.innerHeight;
}
var xp=0;
var yp=0;

var calflag=0;
var calchamp; /* nom du champ date a modifie dans la page */
var calskn = null;
var calskn1 = null;
var calcontent = "";
var calHTML = "";
var FirstDay = 0;
var CalToday = null;
var CalDay = null;
var CalYear= null;
var CalMonth = null;

var startDay=null;
var startYear=null;
var startMonth=null;

var flagDiv = 0;
/* Ecriture des DIV */
function writeDivs(){
	var oDiv=document.createElement("DIV");
	oDiv.id='caleck1';
	oDiv.onmouseout = 'kill()';
	oDiv.style.position="absolute";
	oDiv.style.zIndex=99;
	oDiv.style.visibility="hidden";
	document.body.appendChild(oDiv);
	var oDiv2=document.createElement("DIV");
	oDiv2.id='caleck';
	oDiv2.style.position="absolute";
	oDiv2.style.zIndex=100;
	oDiv2.style.visibility="hidden";
	document.body.appendChild(oDiv2);
	
	/**var calhtml = "<DIV onmouseout=\"kill();\" id=caleck1 style=\"position:absolute;z-index:99;visibility:hidden;top:0px;left:0px;width:"+maxX+";height:"+maxY+";\")";
	calhtml += "<TABLE width=100% height=100% border=0><TR><TD></TD></TR></TABLE>";
	calhtml += "</DIV>";
	calhtml += "<DIV id=caleck style=\"position:absolute;z-index:100;VISIBILITY:hidden\"></DIV>";
	document.write(calhtml);
	**/
	flagDiv = 1;
	calskn = oDiv2.style;
	calskn1 = oDiv.style;
	calcontent = "";
	calHTML = "";
	FirstDay = 0;
	CalToday = new Date();
	CalDay = CalToday.getDate();
	CalYear = CalToday.getFullYear();
	CalMonth = CalToday.getMonth() + 1;
	
}

if (navigator.userAgent.indexOf("MSIE") >= 0){
   var calxpos = "event.x"; 
   var calypos = "event.y";
} else {
   var calxpos = "e.pageX";
   var calypos = "e.pageY";
}
document.onmousemove = mouseMove;
/* Function principale appellee par la page HTML*/
/* Parametre : calchamp = le champ date a mettre jour */
/* Parametre : callangue = la langue */
var Startdate = null;

var StartdateField;
var enddateField;

function pop(lechamp,callangue,e,StartdateF,enddateF){
	if (flagDiv == 0 ) {
		writeDivs();		
	}
	StartdateField = null ;
	enddateField = null ;
	startDay=null;
	startYear=null;
	startMonth=null;

	if (StartdateF.length > 0) {
		// date must be after Startdate, get Startdate val
		StartdateField = StartdateF;
		Startdate =  document.getElementById(StartdateF).value;
		if (Startdate.length > 0 ) {
			setStartDayMonthYear(Startdate) ;
		}
		else {
			alert("vous devez d\'abord choisir une date de debut.");
			document.getElementById(lechamp).value = '';
			return(0);
		}
	}
	else{
		if ( enddateF.length > 0 ) {
			enddateField=enddateF;
		}	
	}
	
	//La premiere fois le champ fieldColor n a pas de valeur
	//if (fieldColor == '') {
	   fieldColor = lechamp;
	//}
	setFieldColor(fieldColor, defaultColor);
	getFieldColor(lechamp);
	fieldColor = lechamp;
	/* Liste des jours et mois dans la langue demandee francais par defaut */
	if (callangue == 'en'){
	  DaysList = new Array("Jour_Vide", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su");
	  MonthsList = new Array("Mois_Vide", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	} else {
	  DaysList = new Array("Jour_Vide", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
	  MonthsList = new Array("Mois_Vide", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
	}
    calchamp = lechamp;
    try{
    	var ladate = document.getElementById(calchamp).value;
    	if (ladate.length == 10){
			if (ladate.substring(0,1) == 0)
		        	CalDay = ladate.substring(1,2);
			else
			        CalDay = ladate.substring(0,2);
	
			if (ladate.substring(3,4) == 0)
		        	CalMonth = ladate.substring(4,5);
			else
	        		CalMonth = ladate.substring(3,5);
	
		        CalYear = ladate.substr(6,4);
		 }else{
	        	CalDay = CalDay;
	        	CalMonth = CalMonth;
	        	CalYear = CalYear;
		 }
    } catch(exception) {
        CalDay = CalDay;
        CalMonth = CalMonth;
        CalYear = CalYear;
    }        
	//    var x = eval(calxpos);
	//    var y = eval(calypos)+document.body.scrollTop;    
	var x=xp;
	var y=yp;    
   // calskn.left = maxX - 150;
   calskn.left = eval(calxpos)+10;
   calskn.top = eval(calypos)+10;
   /* if ((y+140) > maxY)
    	calskn.top  = y-120;
    else
    	calskn.top  = y-12;
	*/
    CalAffiche();
    calskn1.visibility = "visible";
    calskn.visibility = "visible";
}
/* Mouvement de la souris */
function mouseMove(e) {
        // AVOIR pour le scroll
	xp = eval(calxpos);
	if (navigator.userAgent.indexOf("MSIE") >= 0){
        if(navigator.userAgent.indexOf("6")>=0){
            yp=400;
        }else{
            yp = eval(calypos)+document.body.scrollTop;
        }
	}else{
		yp = eval(calypos);
    }
}
/* Teste une annee pour determiner si elle est bissextile ou pas*/
function CalBissextile(yy){
   	if (((yy % 4 == 0) && (yy % 100 != 0)) || (yy % 400 == 0)){ return 29; }
      	else { return 28; }
}
/* Retour de la date selectionnee */
function CalSelecteur(obj){
	calvaleur = document.getElementById("caltd"+obj).value;
	if (calvaleur > 0) {
		if (calvaleur < 10 )
		 	retjrs = "0"+calvaleur;
		else
		 	retjrs = calvaleur;	
		if (document.getElementById('Month').value.length < 2)
		 	retmoi = "0"+document.getElementById('Month').value;
		else
			retmoi = document.getElementById('Month').value;	
		document.getElementById(calchamp).value=retjrs + "/" + retmoi + "/" + document.getElementById('Year').value;
		setFieldColor(fieldColor, defaultColor);
	    //getEvt("UP")
		kill();	    
	}
}
function getFieldColor (field) {
 var color  = document.getElementById(field).style.backgroundColor;
 if (color != '') {
   defaultColor = color;
 }
}
function setFieldColor(field, color) {
	document.getElementById(field).style.backgroundColor =  color;
}
/* Produit le code HTML qui formera le calendrier */
function CalAffiche(){
  /* Recherche si l'annee est bissextile */
  if (CalMonth == 2)
  	MonthLength[2] = CalBissextile(CalYear);

  calHTML = "<TABLE border=0 class=calTable1 cellspacing=0 cellspading=0><TR><TD >";
  calHTML += "<TABLE border=0 class=calTable2 ><TR><TD valign=CENTER>";
  calHTML += "<input type=hidden id=Month value="+CalMonth+">";
  calHTML += "<input class=calAction type=text size=10 id=MonthLib style=\"text-align:center;cursor:'default'\" value="+MonthsList[CalMonth]+" READONLY>";
  calHTML += "<input type=\"button\" value=\"<\" class=calButton onmouseover=\"style.cursor='hand'\" onClick=\"Change(0)\">";
  calHTML += "<input type=\"button\" value=\">\" class=calButton onmouseover=\"style.cursor='hand'\" onClick=\"Change(1)\">";
  calHTML += "<input class=calAction type=text id=Year size=5 style=\"text-align:center;cursor:'default'\" value="+CalYear+" READONLY >";
  calHTML += "<input type=\"button\" value=\"<\" class=calButton onmouseover=\"style.cursor='hand'\" onClick=\"ChangeY(0)\">";
  calHTML += "<input type=\"button\" value=\">\" class=calButton onmouseover=\"style.cursor='hand'\" onClick=\"ChangeY(1)\">";
  calHTML += "<input type=\"button\" value=\"X\" class=calClose onmouseover=\"style.cursor='hand'\" onClick=\"KillAndReset()\"></CENTER></TD></TR>";

  calHTML += "<TR><TD bgcolor="+fond_tableau+">";
  calHTML += "<CENTER><table cellspacing=0 cellpadding=0 border=0 style='border:0.5pt solid "+contour_tableau+"; border-collapse:collapse'>";
  calHTML += "<tr align=center>";

  for (s=1; s<8; s++)
	calHTML += "<td class=calcolHeader width=23 style=\"cursor:'default'\">" + DaysList[s] + "</td>";
  calHTML += "</tr>";
  a = 0;
  b = 1;

  // Calcul du premier jour du mois
  var caldefjour = CalDefDateDay(CalYear,CalMonth,1);
  for (i=(1-caldefjour); i<MonthLength[CalMonth]; i++){
	calHTML += "<tr id=\"calTR"+(a+1)+"\" align=center>";
	for (j=1; j<8; j++){
		calHTML += "<td width=23 class=calAction onClick=\"CalSelecteur("+b+")\">";
		if ((i+j) <= 0) {
			calHTML += "<input class=calTdAction size=1 type=text id=\"caltd"+b+"\" style=\"border-color:"+fond_tableau+";background:'';cursor:'default'\" value=\"\" READONLY onmouseover=\"mousesur("+b+")\" onmouseout=\"mousepassur("+b+")\">";
		}else if ((i+j) > MonthLength[CalMonth]) {
			calHTML += "<input class=calTdAction size=1 type=text id=\"caltd"+b+"\" style=\"border-color:"+fond_tableau+";background:'';cursor:'default'\" value=\"\" READONLY onmouseover=\"mousesur("+b+")\" onmouseout=\"mousepassur("+b+")\">";
		} else {  
			if ((startMonth && startMonth == CalMonth) 
				&& (startYear &&  startYear == CalYear)
				&& (startday && (i+j) < startday )
				){
			calHTML += "<input class=calTdAction style=\"color: "+fond_tableau+";background:'';cursor:'default'\" size=1 type=text id=\"caltd"+b+"\" value='' READONLY  >";
			}
			else
			{
				if ((i+j) == CalDay )
			 	 calHTML += "<input class=calTdAction style=\"color: "+jours_actif_for+";background:"+jours_actif+";cursor:'hand'\" size=1 type=text id=\"caltd"+b+"\" value="+(i+j)+" READONLY onmouseover=\"mousesur("+b+")\" onmouseout=\"mousepassur("+b+")\">";
				else
				  calHTML += "<input class=calTdAction style=\"color: "+lettre_jours+";background:'';cursor:'hand'\" size=1 type=text id=\"caltd"+b+"\" value="+(i+j)+" READONLY onmouseover=\"mousesur("+b+")\" onmouseout=\"mousepassur("+b+")\">";
		
		}	}
	  calHTML += "</TD>";
	  b++;
        }
	calHTML += "</tr>";
	a++;
	i = i + 6;
  }
  for (aa=a+1;aa<=6;aa++){
	calHTML += "<tr id=\"calTR"+aa+"\" align=center style=\"display:none\">";
	for (j=1; j<8; j++){
		calHTML += "<td class=calAction onClick=\"CalSelecteur("+b+")\">";
		calHTML += "<input class=calTdAction size=1 type=text id=\"caltd"+b+"\" value=\"\" READONLY onmouseover=\"mousesur("+b+")\" onmouseout=\"mousepassur("+b+")\"></td>";
	  b++;
        }
	calHTML += "</tr>";
   
   }
  calHTML += "</table>";
  calHTML += "</TD></TR></TABLE>";
  calHTML += "</TD></TR></TABLE>";
    document.getElementById("caleck").innerHTML = calHTML;
}
function KillAndReset(){
	document.getElementById(fieldColor).value='';
	if (enddateField) {
		document.getElementById(enddateField).value='';
		startDay=null;
		startYear=null;
		startMonth=null;
	}
	kill() ;
}

function kill() {
	calskn.visibility = "hidden";
	calskn1.visibility = "hidden";
    setFieldColor(fieldColor, defaultColor);	
}

function Change(typ){
	var moi=document.getElementById('Month').value;
	var an=document.getElementById('Year').value;
	if (typ == 1){
		if ( moi == 12){
			an++;
			CalMonth =1;
			CalYear=an;
		}else{
			moi++;
			CalMonth = moi;
		}
	}else{
		if ( moi == 1){
			if (!startYear  || startYear < an ){
				an--;
				CalYear=an; 
			}	
			CalMonth =12;			
		}else{
			if (!startYear  || startYear < an ){
				moi--;
				CalMonth = moi; 
			}
			else if (startYear  && startYear == an) {
				if (!startMonth  || startMonth < moi ){
					moi--;
					CalMonth = moi;
				}
			} 
		}
	}
CalAffiche2();
}

function ChangeY(typ){
	var an=document.getElementById('Year').value;
	if (typ == 1){
		an++;
		CalYear=an;
	}else{
		if (!startYear  || startYear < an ){
			an--;
			CalYear=an;
			if (startYear  && startYear == an ){
				//verifier mois
				if (startMonth  && startMonth > CalMonth ){
					CalMonth = startMonth;
				}
			}
		}
	}
CalAffiche2();
}

/* Renvoie le numero du jour de la semaine correspondant a la date requise */
function CalDefDateDay(yy,mm,dd){
	return Math.floor((CalDate2Days(yy,mm,dd)-2) % 7) + 1;
}

/* Transforme la date en nb de jours theoriques */
function CalDate2Days(yy,mm,dd){
	if (mm > 2){
		var bis = Math.floor(yy/4) - Math.floor(yy/100) + Math.floor(yy/400);
		var zy = Math.floor(yy * 365 + bis);
		var zm = (mm-1) * 31 - Math.floor(mm * 0.4 + 2.3);
		return (zy + zm + dd);
	}else{
    		var bis = Math.floor((yy-1)/4) - Math.floor((yy-1)/100) + Math.floor((yy-1)/400);
		var zy = Math.floor(yy * 365 + bis);
		return (zy + (mm-1) * 31 + dd);
	}
}


function mousesur(lid){
	if (document.getElementById("caltd"+lid).value != "" ){
	  document.getElementById("caltd"+lid).style.background = jours_selectionne;
   	  document.getElementById("caltd"+lid).style.color = 'white';
 	  document.getElementById("caltd"+lid).style.borderColor= jours_contours;
	}else{
	  document.getElementById("caltd"+lid).style.background='';
 	  document.getElementById("caltd"+lid).style.borderColor=fond_tableau;
	}
}
function mousepassur(lid){
	if (document.getElementById("caltd"+lid).value == CalDay ){
		document.getElementById("caltd"+lid).style.background=jours_actif;
		document.getElementById("caltd"+lid).style.color=jours_actif_for;
	}else if (document.getElementById("caltd"+lid).value != "" ){
		document.getElementById("caltd"+lid).style.background=fond_jour;
		document.getElementById("caltd"+lid).style.color=lettre_jours;
		document.getElementById("caltd"+lid).style.borderColor=jours_contours;
	}else{
		document.getElementById("caltd"+lid).style.background=fond_jour;
		document.getElementById("caltd"+lid).style.borderColor=fond_tableau;
	 }
}

/* Produit le code HTML qui formera le calendrier */
function CalAffiche2(){
  if (CalMonth == 2)
  	MonthLength[2] = CalBissextile(CalYear);

  document.getElementById("Month").value=CalMonth;
  document.getElementById("MonthLib").value=MonthsList[CalMonth];
  document.getElementById("Year").value=CalYear;

  if (CalDay > MonthLength[CalMonth])
  	CalDay = MonthLength[CalMonth];
  a = 0;
  b = 1;
  // Calcul du premier jour du mois
  caldefjour = CalDefDateDay(CalYear,CalMonth,1);
  for (i=(1-caldefjour); i<MonthLength[CalMonth]; i++){
	for (j=1; j<8; j++){
		if ((i+j) <= 0){
		   document.getElementById("caltd"+b).style.borderColor=fond_tableau;
		   document.getElementById("caltd"+b).value="";
		   document.getElementById("caltd"+b).style.background=fond_jour;
		   document.getElementById("caltd"+b).style.cursor='default';
		} else if ((i+j) > MonthLength[CalMonth]){
		   document.getElementById("caltd"+b).style.borderColor=fond_tableau;
		   document.getElementById("caltd"+b).value="";
		   document.getElementById("caltd"+b).style.background=fond_jour;
		   document.getElementById("caltd"+b).style.cursor='default';
		}else{			  
			if ((startMonth && startMonth == CalMonth) 
				&& (startYear &&  startYear == CalYear)
				&& (startday && (i+j) < startday )
				){
				document.getElementById("caltd"+b).style.borderColor= fond_tableau;
		   		document.getElementById("caltd"+b).value="";
		   		document.getElementById("caltd"+b).style.cursor='hand';
		   		document.getElementById("caltd"+b).style.background=fond_jour;				
			}
			else 
			{
 	  		 	document.getElementById("caltd"+b).style.borderColor= jours_contours;
		   		document.getElementById("caltd"+b).value=(i+j);
		   		document.getElementById("caltd"+b).style.cursor='hand';
		   		document.getElementById("caltd"+b).style.background=fond_jour;
			}
      if ((i+j) == CalDay ){
         document.getElementById("caltd"+b).style.background=jours_actif;
         document.getElementById("caltd"+b).style.color=jours_actif_for;
      }else{
         document.getElementById("caltd"+b).style.background=fond_jour;
         document.getElementById("caltd"+b).style.color=lettre_jours;
      }
		}

    b++;
	}
	a++;
	i = i + 6;
  }
  if ( b > 29)
    document.getElementById("calTR5").style.display='';
  else
  	document.getElementById("calTR5").style.display='none';

  if ( b > 36)
  	document.getElementById("calTR6").style.display='';
  else
  	document.getElementById("calTR6").style.display='none';

  for (i=b;i<=42;i++){
 	document.getElementById("caltd"+i).style.background=fond_tableau;
	document.getElementById("caltd"+i).value="";
  }
}

function setStartDayMonthYear(datein) {
	 startday = datein.substring(0,2);
	 if (startday.substring(0,1) == 0 )
	 		startday=startday.substring(1,2);
	 startday = parseInt(startday);
	 startMonth = parseInt(datein.substring(3,5));
	 startYear = parseInt(datein.substring(6,10));
}