
lng = "";
var wordCalendar;
var eventTitleIndex;
var urlIndex;
var descriptionIndex;
var familyTitleIndex;
function checkLang(lag) {	
	lng = lag;
	if (lng == "en") {
		eventTitleIndex = 14;		
		descriptionIndex = 15;
		urlIndex = 16;
		familyTitleIndex = 17;
		familyTitleIndexUrl = 18;
		//Predefine data
		wordCalendar = "Calendar";
		wordMonth = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "January");
		iwordMonth = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "January");
		wordDay = new Array("S", "M", "T", "W", "T", "F", "S");
		iwordDay = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	} else {
		eventTitleIndex = 6;		
		descriptionIndex = 7;
		urlIndex = 9;
		familyTitleIndex = 11;
		familyTitleIndexUrl = 12;
		//Predefine data
		wordCalendar = "Calendrier";
		wordMonth = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "January");
		iwordMonth = new Array("Janvier", "F&eacute;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre", "Novembre", "D&eacute;cembre", "Janvier");
		wordDay = new Array("D", "L", "M", "M", "J", "V", "S");
		iwordDay = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
	}
}

// First comes special customization pointers and flags
mywrap = false;  
// place month and year on separate lines
breakchr = "&nbsp;&nbsp;";
if (mywrap) {
	breakchr = "<br/>";
}
evtClassName = "evtDay";
//tracks classnames for special events
evtFlag = false; 
//switch to stop at first special event found for date
thisDate = 1;
// Tracks current date being written in calendar
today = new Date();
// Date object to store current date
todaysDay = today.getDay() + 1;
// Stores current day number 1-7
todaysDate = today.getDate();
// Stores current numeric date within month
todaysMonth = today.getUTCMonth() + 1;
// Stores current month 1-12
todaysYear = today.getFullYear();
// Stores current year
monthNum = todaysMonth;
// Tracks current month being displayed
yearNum = todaysYear;
// Tracks current year being displayed
firstDate = new Date(String(monthNum) + "/1/" + String(yearNum));
// Object Storing the first day of the current month
firstDay = firstDate.getUTCDay();
// Tracks the day number 1-7 of first day of current month
lastDate = new Date(String(monthNum + 1) + "/0/" + String(yearNum));
// Tracks the last date of the current month
numbDays = 0;
calendarString = "";
eastermonth = 0;
easterday = 0;
highlightday = 0;
highlightmonth = 0;
highlightyear = 0;
//Using cookie to store stateday
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
  }
return ""
}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+";"+"path=/;"+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

var numberString = "0123456789";
function isNumber(num){
	for(var i=0; i<num.length; i++){
		if(numberString.indexOf(num.charAt(i)) == -1)
			return false;
	}
	return true;
}
function checkValidUrl(day, month, year){
	
	if((day != null) && (day != '')){
		if(day.length > 2){			
			return false;
		}else if(day>31 || day < 1){			
			return false;
		}else if(!isNumber(day)){			
			return false;
		}
	} 
	if((month != null) && (month != '')){				
		if(month.length > 2){			
			return false;
		}else if(month>12 || month < 1){			
			return false;
		}else if(!isNumber(month)){
			return false;			
		}
	} 
	if((year != null) && (year != '')){				
		if(year.length != 4){			
			return false;
		}else if(year > 9999 || year < 1900){			
			return false;
		}else if(!isNumber(year)){
			return false;
		}
	}
	return true;
}
function checkUrl(){
	var day, month, year;
	if (getURLParam("mois") || getURLParam("year") || getURLParam("day")) {
		day = getURLParam("day");
		month = getURLParam("mois");
		year = getURLParam("year");
		year = year.replace(/#/, "");
	}		
	if (!checkValidUrl(day,month,year)){			
		window.location.href = "/utilitaires/error." + lng + ".html";
	}
	
}
function changedate(buttonpressed) {
	var day, month, year;	
	flag = window.location.href;	
	if (buttonpressed == "return") {
		if (getURLParam("mois") || getURLParam("year") || getURLParam("day")) {
			day = getURLParam("day");
			month = getURLParam("mois");
			year = getURLParam("year");
			year = year.replace(/#/, "");
		}		
		if (!checkValidUrl(day,month,year)){			
			window.location.href = "/utilitaires/error." + lng + ".html";
		}else{
			if (day && month && year) {
				highlightday = day;
				highlightmonth = month;
				highlightyear = year;
				monthNum = month;
				yearNum = year;
				keepstay = 0;
			} else {
				if (month && year) {
					monthNum = month;
					yearNum = year;
					highlightmonth = monthNum;
					highlightyear = yearNum;				
					highlightday = (monthNum == todaysMonth?todaysDate:0);
				} else if(flag.indexOf("/index") != -1){// get current day for index page								
					monthNum = todaysMonth;
					yearNum = todaysYear;
					highlightday = todaysDate;
					highlightmonth = monthNum;
					highlightyear = yearNum;
				}else{
					if (getCookie('highlightday')!=0 && getCookie('highlightday')!=""){
						highlightday = getCookie('highlightday');					
					}
					if (getCookie('highlightmonth')!=0 && getCookie('highlightmonth')!=""){
						highlightmonth= getCookie('highlightmonth');
						monthNum = highlightmonth;
					}
					if (getCookie('highlightyear')!=0 && getCookie('highlightyear')!=""){
						highlightyear = getCookie('highlightyear');
						yearNum = highlightyear;
					}									
				}
			}
		}
		if (monthNum === 0) {
			monthNum = 12;
			yearNum--;
		} else {
			if (monthNum == 13) {
				monthNum = 1;
				yearNum++;
			}
		}
		dstring = wordMonth[monthNum] + " 0," + yearNum;
		lastDate = new Date(dstring);
		numbDays = lastDate.getDate();
		firstDate = new Date(String(monthNum) + "/1/" + String(yearNum));
		firstDay = firstDate.getDay() + 1;	
		createCalendar();		
		//write value to cookie
		
		setCookie('highlightday',highlightday,1);	
		setCookie('highlightmonth',monthNum,1);
		setCookie('highlightyear',yearNum,1);		
		return;
	}
}
//get value of Url parameter
function getURLParam(strParamName) {
	var strReturn = "";
	var strHref = window.location.href;
	if (strHref.indexOf("?") > -1) {
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		for (var iParam = 0; iParam < aQueryString.length; iParam++) {
			if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return unescape(strReturn);
}
/************* easter **************/
function easter(year) {
	/* feed in the year it returns the month and day of Easter
   	using two GLOBAL variables:eastermonth and easterday */
	a = year % 19;
	b = Math.floor(year / 100);
	c = year % 100;
	d = Math.floor(b / 4);
	e = b % 4;
	f = Math.floor((b + 8) / 25);
	g = Math.floor((b - f + 1) / 3);
	h = (19 * a + b - d - g + 15) % 30;
	i = Math.floor(c / 4);
	j = c % 4;
	k = (32 + 2 * e + 2 * i - h - j) % 7;
	m = Math.floor((a + 11 * h + 22 * k) / 451);
	month = Math.floor((h + k - 7 * m + 114) / 31);
	day = ((h + k - 7 * m + 114) % 31) + 1;
	eastermonth = month;
	easterday = day;
}
/************* createCalendar **************/
function createCalendar() {
	calendarString = "";
	daycounter = 0;
	calendarString += "<table><tr><td>&nbsp;</td>";
	calendarString += "<td class=\"dateline\" colspan=\"4\" align=\"center\"><a href=\"/recherche/calendriermensuel." + lng + ".html?mois=" + monthNum + "&year=" + yearNum + "\">" + iwordMonth[monthNum - 1] + breakchr + yearNum + "</a></td>";
	calendarString += "<td  colspan=\"2\">" + "<img src='/images/20i/monthpickerhide.PNG' class=\"calendarImage\" onClick=\"displayDatePicker(this);\"> </img></td>";
	calendarString += "</tr></table><table><tr>";
	for (idx = 0; idx <= 6; idx++) {
		calendarString += "<td class=\"dofw\">" + wordDay[idx] + "</td>";
	}
	calendarString += "</tr>";
	thisDate = 1;
	for (idx = 1; idx <= 6; idx++) { //week number		
		calendarString += "<tr>";
		for (x = 1; x <= 7; x++) { //day of week number
			daycounter = (thisDate - firstDay) + 1;
			thisDate++;
			if ((daycounter > numbDays) || (daycounter < 1)) {
				if (daycounter > numbDays) {
				} else {
					calendarString += "<td class=\"nulDay\">&nbsp;</td>";
				}
			} else {
				if (((daycounter < todaysDate) && (monthNum <= todaysMonth) && (yearNum <= todaysYear)) || ((monthNum < todaysMonth) && (yearNum <= todaysYear)) || (yearNum < todaysYear)) {
					calendarString += "<td class=\"nulDay\">" + daycounter + "</td>";
				} else {
					if ((highlightday == daycounter) && (highlightmonth == monthNum) && (highlightyear == yearNum)) {
						if (checkevents(daycounter, monthNum, yearNum, idx, x)) {
							calendarString += "<td class=\"evtDay curDay\">" + "<a class=\"white\" href=\"/recherche/calendrier3jours." + lng + ".html?day=" + daycounter + "&mois=" + monthNum + "&year=" + yearNum + "#\"" + " onMouseOver=\"showevents(" + daycounter + "," + monthNum + "," + yearNum + "," + i + "," + x + ",this)\">" + daycounter + "</a></td>";
						} else {
							calendarString += "<td class=\"curDay\">" + daycounter + "</a></td>";
						}
					} else {
						if (checkevents(daycounter, monthNum, yearNum, idx, x) || ((todaysDay == x) && (todaysDate == daycounter) && (todaysMonth == monthNum))) {
							if ((todaysDay == x) && (todaysDate == daycounter) && (todaysMonth == monthNum)) {
								if ((highlightday == 0) && (highlightmonth == 0) && (highlightyear == 0)) {
									calendarString += "<td class=\"curDay\">" + daycounter + "</td>";
								} else {
									if (checkevents(daycounter, monthNum, yearNum, idx, x)) {										
										calendarString += "<td id=\"classtooltip\" class=\"evtDay " + evtClassName + "\">" + "<a class=\"white\" href=\"/recherche/calendrier3jours." + lng + ".html?day=" + daycounter + "&mois=" + monthNum + "&year=" + yearNum + "#\"" + " onMouseOver=\"showevents(" + daycounter + "," + monthNum + "," + yearNum + "," + i + "," + x + ",this)\">" + daycounter + "</a></td>";
									} else {
										calendarString += "<td class=\"regDay\">" + daycounter + "</td>";
									}
								}
							} else {
								calendarString += "<td id=\"classtooltip\" class=\"evtDay " + evtClassName + "\">" + "<a class=\"white\" href=\"/recherche/calendrier3jours." + lng + ".html?day=" + daycounter + "&mois=" + monthNum + "&year=" + yearNum + "#\"" + " onMouseOver=\"showevents(" + daycounter + "," + monthNum + "," + yearNum + "," + i + "," + x + ",this)\">" + daycounter + "</a></td>";
							}
						} else {
							calendarString += "<td class=\"regDay\">" + daycounter + "</td>";
						}
					}
				}
			}
		}
		calendarString += "</tr>";
	}
	calendarString += "</table>";
	//Add Div Tag to implement month picker
	calendarString += createDropDownMonth();
	calendarString += "</table>";
	object = document.getElementById("calendar");
	object.innerHTML = calendarString;
	thisDate = 1;
}
function createDropDownMonth(){
	var monthPicker = "<div style=\"display: none; border-top:2px solid #b8056d; border-bottom:0px; border-left:0px; border-right:0px; padding:0px 3px; background-color:#dedede\" id=\"datepicker\"><table class=\"dpTable\" style=\"background-color:#fff;\" cols=\"1\">";
	var month = todaysMonth;
	var year = todaysYear;
	for (i = 1; i <= 15; i++) {		
		target = "";
		monthPicker += "<tr onmouseover='mouseOver(this)' onmouseout='mouseOut(this)' onclick='ChooseMonth(this,"+month+","+year+")'><td style=\"font-size:11px;font-family:Arial;\">" + iwordMonth[month - 1] + breakchr + year + "</td></tr>";
		month ++;
		if(month > 12){
			month = 1;
			year++;
		}
	}
	monthPicker += "<\/div>"	
	return monthPicker;
	
}
function mouseOver(which){
	//which.bgColor='#ffcc80';	
	which.style.color='#b8056d';
}
function mouseOut(which){
	//which.bgColor='#ece9d8';
	which.style.color='#000';
}
function ChooseMonth(which,month,year){	
	target = "/recherche/calendriermensuel." + lng + ".html?mois=" + month + "&year=" + year + "#";	
	document.location=target;
}
//Update calendar
function updateMonth(month) {
	monthNum = month;
	dstring = wordMonth[monthNum] + " 0," + yearNum;
	lastDate = new Date(dstring);
	numbDays = lastDate.getDate();
	firstDate = new Date(String(monthNum) + "/1/" + String(yearNum));
	firstDay = firstDate.getDay() + 1;
	createCalendar();
}
/************* checkevents **************/
function checkevents(day, month, year, week, dayofweek) {
	numevents = 0;
	floater = 0;
	evtClassName = "evtDay";
	evtFlag = false;
	for (i = 0; i < events.length; i++) {
		if ((events[i][2] == day) && (events[i][1] == month) && (events[i][3] == year)) {
			numevents++;
			setClass(i);
		}
	}
	if (numevents === 0) {
		return false;
	} else {
		return true;
	}
}
/************* showevents **************/
function showevents(day, month, year, week, dayofweek, me1) {
	theevent = "";
	floater = 0;
	count = 0;
	for (i = 0; i < events.length; i++) {				
		//process any One Time events happening on the matching month,day,year:
		if ((events[i][2] == day) && (events[i][1] == month) && (events[i][3] == year)) {
			flag = 0;
			for (j = i + 1; j < events.length; j++) { // check for existing event on the same day.
				if ((events[j][2] == day) && (events[j][1] == month) && (events[j][3] == year) && (events[j][10] == events[i][10])) {
					//flag = 1;
				}
			}
			if (flag == 0) {
				count++;
				if (count <= 5) {
					dspEvent(day, month, year);
				} else {
					if (count == 6) {
						theevent += "<table width=\"60px\">";
						theevent += "<td style=\"text-align: left;\">";
						theevent += "<span class=\"tittle\">" + "<a class=\"white\" href=\"/recherche/calendrier3jours." + lng + ".html?day=" + day + "&mois=" + monthNum + "&year=" + yearNum + "#\"\">...+</a>" + "</span>";
						theevent += "</td></table>";
					}
				}
			}
		}
	}
	if (me1 != null && theevent != "") {
		toolTip(theevent, me1);
	}
}
/************* dspEvent **************/
function dspEvent(day, month, year) {
	theevent += "<table><tr>";
	theevent += "<td align=\"left\" style=\"line-height:10px;\">";
	theevent += "<a href=\"/pda-evenement/" + events[i][8] + "/" + events[i][familyTitleIndexUrl] + "." + lng + ".html" + "\" class=\"titleTooltip\">" + events[i][familyTitleIndex] + " - " + events[i][5] + "</a>";
	//theevent+= events[i][7] + '<br/>';
	theevent += "</td></tr></table>";
}
function inRange(d, m) { // tests if display date is inside range interval
	//start and end must be entered in mmdd or mm format [blank assumes worst case]
	srange = events[i][4] + "0000";
	srange = srange.substring(0, 4);
	erange = events[i][5] + "9999";
	erange = erange.substring(0, 4);
	dday = d.toString();
	if (dday.length < 2) {
		dday = "0" + dday;
	}
	dmon = m.toString();
	if (dmon.length < 2) {
		dmon = "0" + dmon;
	}
	ddate = dmon + dday;
	if (ddate < srange) {
		return false;
	}
	if (ddate > erange) {
		return false;
	}
	return true;
}
function setClass(i2) {
	if ((events[i2].length >= 9) && (evtFlag === false)) {
		evtClassName = events[i2][8];
		evtFlag = true;
	}
}
//Tooltip Begin
var tooltipTime = [];
var tooltipItem = "toolTipBox";
var tooltipWait = 250;
var theObj = "";
var theObjTooltip = "";
/***************toolTip(text,me)*************/
function toolTip(text, me) {
	theObj = me;	
	theObj.onmousemove = updatePos;
	theObjTooltip = document.getElementById("toolTipBox");				
	if (theObjTooltip != "null") {					
		theObjTooltip.onmouseover = new Function("tooltipShow('toolTipBox');");
		theObjTooltip.onmouseout = new Function("tooltipBlur('toolTipBox');");								
		theObjTooltip.innerHTML = text;		
		loadTooltip();
		window.onscroll = updatePos;
	}	
}
function loadTooltip(){
	var ev = arguments[0] ? arguments[0] : window.event;	
	var parent = theObj;	
	var x = theObj.offsetLeft;//ev.clientX;//
	var y = theObj.offsetTop + theObj.offsetHeight;	
	theObjTooltip = document.getElementById("toolTipBox");		
	while (parent.offsetParent) {
		parent = parent.offsetParent;
		x+=parent.offsetLeft;
		y+=parent.offsetTop ;
	}	
	if(x>0 && y>0){
		theObjTooltip.style.left = x + "px";
		theObjTooltip.style.top = y + "px";
		theObjTooltip.style.display = "block";		
	}
	tooltipClear('toolTipBox');
	theObj.onmouseout = new Function("tooltipBlur('toolTipBox');");	
}

/***************updatePos*************/
function updatePos() {		
	var ev = arguments[0] ? arguments[0] : window.event;	
	var parent = theObj;	
	var x = theObj.offsetLeft;//ev.clientX;//
	var y = theObj.offsetTop + theObj.offsetHeight;	
	theObjTooltip = document.getElementById("toolTipBox");		
	while (parent.offsetParent) {
		parent = parent.offsetParent;
		x+=parent.offsetLeft;
		y+=parent.offsetTop ;
	}	
	theObjTooltip.style.left = x + "px";
	theObjTooltip.style.top = y + "px";
	
	tooltipClear('toolTipBox');
	theObj.onmouseout = new Function("tooltipBlur('toolTipBox');");	
}
/***************tooltipShow(id)*************/
function tooltipShow(id) {
	if (document.getElementById(id).style.display != "none") {
		if (tooltipItem != id) {
			tooltipHide(tooltipItem);
		} else {
			tooltipClear(tooltipItem);
		}
	}
	document.getElementById(id).style.display = "block";
}
/***************tooltipHide(id)*************/
function tooltipHide(id) {
	tooltipClear(id);
	document.getElementById(id).style.display = "none";
}
/***************tooltipBlur(id)*************/
function tooltipBlur(id) {		
	tooltipTime[id] = setTimeout("tooltipHide('" + id + "');", tooltipWait);
}
function tooltipOver(id) {		
	tooltipTime[id] = setTimeout("tooltipShow('" + id + "');", 10);
}
/***************tooltipClear(id)*************/
function tooltipClear(id) {
	if (tooltipTime[id]) {
		clearTimeout(tooltipTime[id]);
		tooltipTime[id] = null;
	}
}

//Picker for month
var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
function displayDatePicker(displayBelowThisObject, dtFormat, dtSep) {
	//currentCtl.src=imagePath + "timepicker2.gif"; 
	var x = displayBelowThisObject.offsetLeft;
	var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight;
	// deal with elements inside tables and such
	var parent = displayBelowThisObject;
	while (parent.offsetParent) {
		parent = parent.offsetParent;
		x += parent.offsetLeft;
		y += parent.offsetTop;
	}
	x = x - 155;
	drawDatePicker(displayBelowThisObject, x, y);
}
function drawDatePicker(img, x, y) {
	if (!document.getElementById(datePickerDivID)) {
		var newNode = document.createElement("div");
		newNode.setAttribute("id", datePickerDivID);
		newNode.setAttribute("class", "dpDiv");
		newNode.setAttribute("style", "visibility: hidden;");
		document.body.appendChild(newNode);
	}
	// move the datepicker div to the proper x,y coordinate and toggle the visiblity
	var pickerDiv = document.getElementById(datePickerDivID);
	pickerDiv.style.position = "absolute";
	pickerDiv.style.left = x + "px";
	pickerDiv.style.top = y + "px";
	pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
	if (pickerDiv.style.visibility == "visible") {
		img.src = "/images/20i/monthpickeropen.PNG";
	} else {
		img.src = "/images/20i/monthpickerhide.PNG";
	}
	pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
	pickerDiv.style.zIndex = 10000;
}

