// JavaScript Document


	// Fonctions gerant les options du calendrier ------------------------------------------------------------------------------------------------
	// -------------------------------------------------------------------------------------------------------------------------------------------
	
	/* Liste des fonctions : 
		function calendar_options(language:String, addressImg:String, selectionByWeek:String, formatDay:String[facultatif])		// Parametrage des options de la shadowbox
		function initializeCalendarLink(referenceCalendar:Object, language:String, listCalendar:Object, numberCalendar:Number)	// Initialisation des boutons avec l'icone "calendrier" en boucle
		function addCalendarLink(referenceCalendar:Object, texts:Object, idContainer:String, idTextfield:String, dateMin:String, dateMax:String, addressImgCalendar:String)	// Ajout du lien avec l'icone choisie
		function sendCalendar_inputValue(tag_textfield:Object, informationFromCalendar:Object)									// Reception de la valeur choisie dans le calendrier et integration dans le champ texte
	*/
	
	// Traductions par defaut (au cas ou le fichier de traduction seraient introuvables) pour le calendrier
			var calendarTranslateDefault				= new Object();
				// Liste des traductions pour les formats de date du calendrier
				calendarTranslateDefault.formatWeek		= "Week {WW}: {Start} - {End}";
				// Liste des traductions pour le calendrier
				calendarTranslateDefault.months			= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
				calendarTranslateDefault.abbrMonths		= ["Jan.", "Feb.", "March", "Apr.", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."];
				calendarTranslateDefault.days			= ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
				calendarTranslateDefault.abbrDays		= ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
				calendarTranslateDefault.abbrWeek		= "Week";
				calendarTranslateDefault.titleWeek		= "Week number";
				calendarTranslateDefault.week			= "Week";
				calendarTranslateDefault.textSelected	= "(selected)";
				calendarTranslateDefault.linkclose		= "Close";
				calendarTranslateDefault.altMonthPrev	= "Previous month.";
				calendarTranslateDefault.altYearPrev	= "Previous year.";
				calendarTranslateDefault.altMonthNext	= "Next month.";
				calendarTranslateDefault.altYearNext	= "Next year.";
				calendarTranslateDefault.titleMonthPrev	= "Display the previous month";
				calendarTranslateDefault.titleYearPrev	= "Display the previous year";
				calendarTranslateDefault.titleMonthNext	= "Display the next month";
				calendarTranslateDefault.titleYearNext	= "Display the next year";
				// Liste des traductions pour les boutons de gestion du calendrier
				calendarTranslateDefault.btnCalendar		= new Object();	
				calendarTranslateDefault.btnCalendar.alt	= "(open calendar)";
				calendarTranslateDefault.btnCalendar.title	= "Open calendar";
	
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
	
	// Fonction initialisant l'objet "Calendrier"
	function calendar_options(sLanguage, sAddressImg, sSelectionWeek, sFormatDay){
		var cCal			 		= new Calendar();
			// Objet de langue
			var oTrad;
			if(typeof(calendarTranslate) == "object") 	oTrad = calendarTranslate;
			if(!oTrad || typeof(oTrad) != "object") 	oTrad = calendarTranslateDefault;
			// Variables linguistiques
			cCal.months				= oTrad.months;
			cCal.abbrMonths			= oTrad.abbrMonths;
			cCal.days				= oTrad.days;
			cCal.abbrDays			= oTrad.abbrDays;
			cCal.abbrWeek			= oTrad.abbrWeek;
			cCal.titleWeek			= oTrad.titleWeek;
			cCal.week				= oTrad.week;
			cCal.textSelected		= oTrad.textSelected;
			cCal.linkclose			= oTrad.linkclose;
			cCal.altMonthPrev		= oTrad.altMonthPrev;
			cCal.altYearPrev		= oTrad.altYearPrev;
			cCal.altMonthNext		= oTrad.altMonthNext;
			cCal.altYearNext		= oTrad.altYearNext;
			cCal.titleMonthPrev		= oTrad.titleMonthPrev;
			cCal.titleYearPrev		= oTrad.titleYearPrev;
			cCal.titleMonthNext		= oTrad.titleMonthNext;
			cCal.titleYearNext		= oTrad.titleYearNext;
			// Formatage des dates a envoyer et recevoir
			cCal.format				= (typeof(sFormatDay) == "string" && sFormatDay.length > 0)? sFormatDay : oTrad.format;
			cCal.formatweek			= oTrad.formatWeek;
			// Adresse des fichiers images
			cCal.srcMonthPrev		= sAddressImg + "icon_navicalendar_prev_month.gif";
			cCal.srcYearPrev		= sAddressImg + "icon_navicalendar_prev_year.gif";
			cCal.srcMonthNext		= sAddressImg + "icon_navicalendar_next_month.gif";
			cCal.srcYearNext		= sAddressImg + "icon_navicalendar_next_year.gif";
			// Affichage du lundi comme premier jour
			cCal.mondayFirst 		= "yes";
			// Affichage du numero des semaines
			cCal.numberWeek			= "yes";
			// Mode d'affichage du calendrier
			cCal.mode				= "popup";
			// Autorisation de selection de semaine
			cCal.selectionweek		= sSelectionWeek;
			// Class CSS
			cCal.classMain			= "ep_calendar_popup";
			cCal.classShadow		= "ep_shadow";
			cCal.classCalendar		= "ep_container";
			cCal.classCalendarWeek	= "ep_containerweek";
			cCal.classMonth			= "ep_title";
			cCal.classLinksPrev		= "ep_links_prev";
			cCal.classLinksNext		= "ep_links_next";
			cCal.classClose			= "ep_footer";
			cCal.classTable			= "ep_body";
			cCal.classWeek			= "ep_week";
			cCal.classWeekEnd		= "ep_weekend";
			cCal.classSelected		= "ep_selected";
			cCal.classHover			= "ep_hover";
			cCal.classHidden		= "ep_hidden";
			// Marges utilisees pour les boutons de navigation
			cCal.marginLink			= 6;
			// Initialisation du calendrier
			cCal.init(cCal);
			// Renvoi de l'objet reference "calendrier"
			return(cCal);
	}
	
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
	
	// Fonction initialisation l'ajout en boucle des differents boutons ouvrant le calendrier
	function initializeCalendarLink(oRefCalendar, sLanguage, aListTypeLink, nLinks){
		// Verification de l'existance de la classe
		if(typeof(HtmlManager) != "undefined"){
			var Html 					= new HtmlManager();
			// Verification de l'existence du calendrier et des parametres transmis
			if(	oRefCalendar && typeof(oRefCalendar) == "object" && typeof(oRefCalendar.display) == "function" &&
				typeof(aListTypeLink) == "object" && aListTypeLink.length > 0 &&
				!isNaN(nLinks) && nLinks > 0){
				// Verification de la liste des donnees relatives aux liens
				for(var c in aListTypeLink){
					// Suppression des cellules non conformes
					//if(!aListTypeLink[c] || typeof(aListTypeLink[c]) != "object") aListTypeLink.splice(c, 1);
				}
				// Gestion des traductions
				var oTrad;
				if(typeof(calendarTranslate) == "object") 	oTrad = calendarTranslate;
				if(!oTrad || typeof(oTrad) != "object") 	oTrad = calendarTranslateDefault;
				if(oTrad && typeof(oTrad) == "object"){
					// Creation des liens en boucles
					for(var l=0; l<nLinks; l++){
						//for(var c in aListTypeLink){
							for(var c=0; c < aListTypeLink.length; c++){
								oObj			= aListTypeLink[c];
							// Identification du tag
							sId				= oObj.idTag + "" + l;
							sTarget			= oObj.target + "" + l;
							// Creation du bouton
							addCalendarLink(oRefCalendar, oTrad.btnCalendar, sId, sTarget, oObj.dateMin, oObj.dateMax, oObj.src);
						}
					}
				}
			}
		}
	}
	
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
	
	// Fonction ajoutant le bouton d'ouverture du calendrier en pop up
	function addCalendarLink(oRefCalendar, oText, sId, sTarget, sDateMin, sDateMax, sImg){
		// Verification de l'existance de la classe
		if(typeof(HtmlManager) != "undefined"){
			var Html 				= new HtmlManager();
			// Identification de la balise conteneur
			var oTag				= Html.getElement(sId);
			if(typeof(oTag) == "object"){
				// Creation des balises
				var oImg			= Html.createNode("img", 	{"alt":oText.alt, "src":oObj.src});
				var oA				= Html.createNode("a", 		{"title":oText.title, "href":"#"}, oImg);
				oTag.appendChild(oA);
				var oTarget 		= Html.getElement(sTarget);
				// Ajout de la fonction
				oA.onclick			= 	function(){
											var sDate			= "";
											if(oTarget && oTarget.value && oTarget.value.length > 0) sDate = oTarget.value;
											// Ouverture du calendrier
											oRefCalendar.display({"tag":oTag, "date":sDate, "dateMin":sDateMin, "dateMax":sDateMax, "fct":function(){sendCalendar_inputValue(oTarget, arguments)}});
											return(false);
										}
			}
		}
	}
	
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
	
	// Fonction envoyant la valeur de la date dans le champ texte
	function sendCalendar_inputValue(oTarget, oDate){
		// Identification du bloc dans lequel inserer le calendrier
		if(typeof(HtmlManager) != "undefined"){
			var Html 		= new HtmlManager();
			// Identification du champ texte
			if(oTarget){
				if(typeof(oDate) == "object" && oDate.length > 0 && typeof(oDate[0]) == "object"){
					// Fonction de convertion pour l'affichage des jours
					function generateDay(sF, nY, nM, nD){
						var aDate	= new Array();
						aDate[0] 	= String(nY);
						aDate[1] 	= String(nM);
						aDate[2] 	= String(nD);
						if(aDate[0].length == 1) aDate[0] 	= "0" + aDate[0];
						if(aDate[1].length == 1) aDate[1] 	= "0" + aDate[1];
						if(aDate[2].length == 1) aDate[2] 	= "0" + aDate[2];
						// Convertion de la date
						var aFormat	= String(sF).split("/");
						var aText		= new Array();
						switch("YYYY"){
							case aFormat[0]:	aText[0]	= aDate[0];	break;
							case aFormat[1]:	aText[1]	= aDate[0];	break;
							case aFormat[2]:	aText[2]	= aDate[0];	break;
						}
						switch("MM"){
							case aFormat[0]:	aText[0]	= aDate[1];	break;
							case aFormat[1]:	aText[1]	= aDate[1];	break;
							case aFormat[2]:	aText[2]	= aDate[1];	break;
						}
						switch("DD"){
							case aFormat[0]:	aText[0]	= aDate[2];	break;
							case aFormat[1]:	aText[1]	= aDate[2];	break;
							case aFormat[2]:	aText[2]	= aDate[2];	break;
						}
						// Renvoi du resultat
						return(aText[0] + "/" + aText[1] + "/" + aText[2]);
					}
					// Identification du type de donnee transmises : par jour ou par semaine
					if(oDate.length == 1 && !oDate[0].selectedweek){			// Par jour
						oTarget.value	= generateDay(oDate[0].formatday, oDate[0].year, oDate[0].month, oDate[0].day);
					}else if(oDate.length == 2 && oDate[0].selectedweek){		// Par semaine
						// Modification du format du numero de semaine
						if(String(oDate[0].week).length == 1) oDate[0].week 	= "0" + String(oDate[0].week);
						// Generation du texte a afficher : Ajout de la semaine
						var sText	= String(oDate[0].formatweek).replace(/{WW}/g, oDate[0].week);
						// Generation du texte a afficher : Ajout de la date de debut
							sText	= sText.replace(/{Start}/g, generateDay(oDate[0].formatday, oDate[0].year, oDate[0].month, oDate[0].day));
						// Generation du texte a afficher : Ajout de la date de fin
							sText	= sText.replace(/{End}/g, generateDay(oDate[1].formatday, oDate[1].year, oDate[1].month, oDate[1].day));
						// Envoi du resultat
						oTarget.value	= sText;
					}
				}
			}
		}
	}
