﻿
// CONSTRUCTOR for the CalendarPopup Object
function CalendarPopup() {
	var c;
	if (arguments.length>0) {
		c = new PopupWindow(arguments[0]);
		}
	else {
		c = new PopupWindow();
		c.setSize(150,175);
		}
	c.offsetX = -152;
	c.offsetY = 25;
	c.autoHide();
	// Calendar-specific properties
	c.monthNames = new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
	c.monthAbbreviations = new Array("Jan","Féb","Mar","Avr","Mai","Jui","Jui","Aoû","Sep","Oct","Nov","Déc");
	c.dayHeaders = new Array("D","L","M","M","J","V","S");
	c.returnFunction = "CP_tmpReturnFunction";
	c.returnMonthFunction = "CP_tmpReturnMonthFunction";
	c.returnQuarterFunction = "CP_tmpReturnQuarterFunction";
	c.returnYearFunction = "CP_tmpReturnYearFunction";
	c.weekStartDay = 1;
	c.isShowYearNavigation = false;
	c.displayType = "date";
	c.disabledWeekDays = new Object();
	c.disabledDatesExpression = "";
	c.yearSelectStartOffset = 2;
	c.currentDate = null;
//	c.todayText="Aujourd'hui";
	c.todayText="";
	c.cssPrefix="";
	c.isShowNavigationDropdowns=false;
	c.isShowYearNavigationInput=false;
  c.AffDateDebut1 = null ;
  
  c.FormName     = null ;  
  c.CHP_affDeb1  = null ;
  c.CHP_affDeb2  = null ;
  c.CHP_affDeb3  = null ;
  c.CHP_affDeb4  = null ;
  c.CHP_dateDeb1 = null ;
  c.CHP_dateDeb2 = null ;
  c.CHP_dateDeb3 = null ;
  c.CHP_dateDeb4 = null ;
  c.CHP_affFin4  = null ;
  c.CHP_dateFin4 = null ;
  c.CHP_affPar1  = null ;
  c.CHP_datePar1 = null ;
  c.CHP_affInsc  = null ;
  c.CHP_dateInsc = null ;
  
	window.CP_calendarObject = null;
	window.CP_targetInput = null;
	window.CP_dateFormat = "dd/MM/yyyy";
//	window.CP_dateFormat = "MM/dd/yyyy";
	// Method mappings
  c.setChampsDestination = setChampsDestination;
	c.copyMonthNamesToWindow = CP_copyMonthNamesToWindow;
	c.setReturnFunction = CP_setReturnFunction;
	c.setReturnMonthFunction = CP_setReturnMonthFunction;
	c.setReturnQuarterFunction = CP_setReturnQuarterFunction;
	c.setReturnYearFunction = CP_setReturnYearFunction;
	c.setMonthNames = CP_setMonthNames;
	c.setMonthAbbreviations = CP_setMonthAbbreviations;
	c.setDayHeaders = CP_setDayHeaders;
	c.setWeekStartDay = CP_setWeekStartDay;
	c.setDisplayType = CP_setDisplayType;
	c.setDisabledWeekDays = CP_setDisabledWeekDays;
	c.addDisabledDates = CP_addDisabledDates;
	c.addBankHolyday = CP_addBankHolyday;
	c.setYearSelectStartOffset = CP_setYearSelectStartOffset;
	c.setTodayText = CP_setTodayText;
	c.showYearNavigation = CP_showYearNavigation;
	c.showCalendar = CP_showCalendar;
	c.hideCalendar = CP_hideCalendar;
	c.getStyles = getCalendarStyles;
	c.refreshCalendar = CP_refreshCalendar;
	c.getCalendar = CP_getCalendar;
	c.select = CP_select;
	c.setCssPrefix = CP_setCssPrefix;
	c.showNavigationDropdowns = CP_showNavigationDropdowns;
	c.showYearNavigationInput = CP_showYearNavigationInput;
	c.copyMonthNamesToWindow();
	// Return the object
	return c;
	}

// Attribue les champs de destination des dates choisies
function setChampsDestination(FormName, // Nom du formulaire
                              CHP_affDeb1,CHP_affDeb2,CHP_affDeb3,CHP_affDeb4,     // Noms des champs d'affichage
                              CHP_dateDeb1,CHP_dateDeb2,CHP_dateDeb3,CHP_dateDeb4, // Noms des champs de stockage des dates
                              CHP_affFin4,CHP_dateFin4,CHP_affPar1,CHP_datePar1,CHP_affInsc,CHP_dateInsc) // Champs divers
{
  this.FormName     = FormName ;  
  this.CHP_affDeb1  = CHP_affDeb1 ;
  this.CHP_affDeb2  = CHP_affDeb2 ;
  this.CHP_affDeb3  = CHP_affDeb3 ;
  this.CHP_affDeb4  = CHP_affDeb4 ;
  this.CHP_dateDeb1 = CHP_dateDeb1 ;
  this.CHP_dateDeb2 = CHP_dateDeb2 ;
  this.CHP_dateDeb3 = CHP_dateDeb3 ;
  this.CHP_dateDeb4 = CHP_dateDeb4 ;
  this.CHP_affFin4  = CHP_affFin4 ;
  this.CHP_dateFin4 = CHP_dateFin4 ;
  this.CHP_affPar1  = CHP_affPar1 ;
  this.CHP_datePar1 = CHP_datePar1 ;
  this.CHP_affInsc  = CHP_affInsc ;
  this.CHP_dateInsc = CHP_dateInsc ;
  
}

// Temporary default functions to be called when items clicked, so no error is thrown
function CP_tmpReturnFunction(y,m,d) {
 
    if (window.CP_targetInput!=null) {
        var dt = new Date(y,m-1,d,0,0,0);
        if (window.CP_calendarObject!=null) { window.CP_calendarObject.copyMonthNamesToWindow(); }

        // on construit le chemin des champs remplis
        zone = document.forms[this.FormName].elements[window.CP_targetInput.id];
        var exp = new RegExp("Date","g") ;
        zoneAff = document.forms[this.FormName].elements[window.CP_targetInput.id.replace(exp,"AffDate")];

		if (y==0 && m == 0 && d== 0 )
		{              
            window.CP_targetInput.value = '';
            
            zoneAff.value = '' ;
            zone.value = '' ;
            
            affEcranControle(zone);
            nombrePixelDate(zoneAff) ;
            
            // Si l'on vide le champ deb4, on vide aussi fin4
            if ( window.CP_targetInput.id == this.CHP_dateDeb4 ) {
                document.forms[this.FormName].elements[this.CHP_affFin4].value = '';
                document.forms[this.FormName].elements[this.CHP_dateFin4].value = '';
                affEcranControle(document.forms[this.FormName].elements[this.CHP_dateFin4]);
                nombrePixelDate(document.forms[this.FormName].elements[this.CHP_affFin4]) ;
            } 
                  
            if ( window.CP_targetInput.id == this.CHP_dateInsc ) {
                document.getElementById('CONT_AffDateInscription').innerHTML = '';
            } 

		}
		else
		{
		    
            zone.value = formatDate(dt,window.CP_dateFormat);
            zoneAff.value = formatDate(new Date(getDateFromFormat( zone.value,'dd/MM/yyyy')),'EE d MMM yyyy' );
            affEcranControle(zone);
            nombrePixelDate(zoneAff) ;
            
            // Si l'on renseigne un date en sÃ©rie, on vide la pÃ©riode
            if ( window.CP_targetInput.id == this.CHP_dateDeb1 || window.CP_targetInput.id == this.CHP_dateDeb2 || window.CP_targetInput.id == this.CHP_dateDeb3 ) {
            
                document.forms[this.FormName].elements[this.CHP_affDeb4].value = '';
                document.forms[this.FormName].elements[this.CHP_dateDeb4].value = '';
                document.forms[this.FormName].elements[this.CHP_affFin4].value = '';
                document.forms[this.FormName].elements[this.CHP_dateFin4].value = '';
                nombrePixelDate(document.forms[this.FormName].elements[this.CHP_affDeb4]) ;
                nombrePixelDate(document.forms[this.FormName].elements[this.CHP_affFin4]) ;
            }
            
            // Si l'on rensigne la pÃ©riode, on vide l'intervalle
            if ( window.CP_targetInput.id == this.CHP_dateDeb4 ) {
            
                document.forms[this.FormName].elements[this.CHP_dateDeb1].value = '';
                document.forms[this.FormName].elements[this.CHP_dateDeb2].value = '';
                document.forms[this.FormName].elements[this.CHP_dateDeb3].value = '';
                document.forms[this.FormName].elements[this.CHP_affDeb1].value  = '';
                document.forms[this.FormName].elements[this.CHP_affDeb2].value  = '';
                document.forms[this.FormName].elements[this.CHP_affDeb3].value  = '';
                nombrePixelDate(document.forms[this.FormName].elements[this.CHP_affDeb1]) ;
                nombrePixelDate(document.forms[this.FormName].elements[this.CHP_affDeb2]) ;
                nombrePixelDate(document.forms[this.FormName].elements[this.CHP_affDeb3]) ;
            }
        }
        //alert("Champ : -"+zone.value+"-\nAffichage : -"+zoneAff.value+"-") ;
    }else {
	    alert('Use setReturnFunction() to define which function will get the clicked results!'); 
	}
}
// Simple method to interface popup calendar with a text-entry box
function CP_select(inputobj, linkname, format) {

	var selectedDate=(arguments.length>3)?arguments[3]:null;
	if (!window.getDateFromFormat) {
		alert("calendar.select: To use this method you must also include 'date.js' for date formatting");
		return;
		}
	if (this.displayType!="date"&&this.displayType!="week-end") {
		alert("calendar.select: This function can only be used with displayType 'date' or 'week-end'");
		return;
		}
	if (inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea") { 
		alert("calendar.select: Input object passed is not a valid form input object"); 
		window.CP_targetInput=null;
		return;
		}
	if (inputobj.disabled) { return; } // Can't use calendar input on disabled form input!
  
	window.CP_targetInput = inputobj;
	window.CP_calendarObject = this;
	this.currentDate=null;
	var time=0;
	if (selectedDate!=null) {
		time = getDateFromFormat(selectedDate,format)
		}
	else if (inputobj.value!="") {
		time = getDateFromFormat(inputobj.value,format);
		}
	if (selectedDate!=null || inputobj.value!="") {
		if (time==0) { this.currentDate=null; }
		else { this.currentDate=new Date(time); }
		}
	window.CP_dateFormat = format;
	this.showCalendar(linkname);

	}