<?php
session_start(); 
// lien d'accès borne: /admin/auth.php?ref=borne&MAT=M006567&IDA=RAPEE00501_HZNnwBs&APP_ID=BORNE_AA
if(!isset($_SESSION['auth']) || !in_array("view_calendar",$_SESSION['permissions'])) {
	header("location:../index.php");
}
if(!in_array("view_calendar",$_SESSION['permissions']) && !in_array("edit_agence_calendar",$_SESSION['permissions'])) {
	header("location:../dashboard.php");
}
/*
if(!isset($_SESSION['id_conseiller'])) {
	header("location:../dashboard.php");
}*/
require_once("../../inc/confNetisse.php");
$editCalendar = in_array("edit_calendar",$_SESSION['permissions']);
$q = "SELECT nom_agence FROM ca_agences WHERE id_agence =". intval($_SESSION["agence"]);
$r = excuteQuery($q);
		if (!$r['status']) 
		        wts_die (var_dump($r['stmt']->errorInfo()));
// print "<pre>"; print_r($_SESSION);
$nom_agence = "";
if($r && $r['stmt']->rowCount()>0){
	$nom_agence = $r['stmt']->fetchObject();
	$nom_agence = $nom_agence->nom_agence;
}
?> 
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title><?php echo $PROJECT_TITLE;?> : GESTION DES MOBILITES</title>
	<link href='fullcalendar.css' rel='stylesheet' />
	<link rel="stylesheet" href="../css/font-awesome.min.css" />
	<link rel="stylesheet" type="text/css" href="../css/cadif.css" />
	<link rel="stylesheet" type="text/css" href="../css/dashboard.css" />
	<link href='fullcalendar.print.css' rel='stylesheet' media='print' />
    <link type="text/css" rel='stylesheet' href="jquery.qtip.min.css" />
	<link rel="stylesheet" href="jquery-ui.css" />
	
	<script type="text/javascript" src="lib/11/jquery.min.js"></script>
	<script type="text/javascript" src='lib/moment.min.js'></script>
	<script type="text/javascript" src='lib/jquery-ui.custom.min.js'></script>
	<script type="text/javascript" src='fullcalendar.min.js'></script>
    <script type="text/javascript" src="jquery.qtip.min.js"></script>
	<script type="text/javascript" src='mobilite.js'></script>
	<script type="text/javascript" src='lang-all.js'></script>
	<script src="lib/bootstrap.min.js"></script>
	<script src="lib/jquery-ui.min.js"></script>
	<script src="lib/bootstrap-modal.min.js"></script>
	
	<script>

		$(document).ready(function() {
			
			setInterval(refreshCalendar, 60000);
			if ( !Date.prototype.toISOString ) {         
				(function() {         
					function pad(number) {
						var r = String(number);
						if ( r.length === 1 ) {
							r = '0' + r;
						}
						return r;
					}      
					Date.prototype.toISOString = function() {
						return this.getUTCFullYear()
							+ '-' + pad( this.getUTCMonth() + 1 )
							+ '-' + pad( this.getUTCDate() )
							+ 'T' + pad( this.getUTCHours() )
							+ ':' + pad( this.getUTCMinutes() )
							+ ':' + pad( this.getUTCSeconds() )
							+ '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )
							+ 'Z';
					};       
				}() );
			}
			// GET CRS
			//<?php if($editCalendar){?>getCRs();<?php } ?>
			
			var currentLangCode = 'fr';
			
			
			/* initialize the external events
			-----------------------------------------------------------------*/

			$('#external-events .fc-event').each(function() {

				// store data so the calendar knows to render an event upon drop
				$(this).data('event', {
					title: $.trim($(this).text()), // use the element's text as the event title
					stick: true // maintain when user navigates (see docs on the renderEvent method)
				});
				<?php if($editCalendar){?>
				// make the event draggable using jQuery UI
				$(this).draggable({
					zIndex: 999,
					revert: true,      // will cause the event to go back to its
					revertDuration: 0  //  original position after the drag
				});
				<?php } ?>
			});


			/* initialize the calendar
			-----------------------------------------------------------------*/

			$('#calendar').fullCalendar({
				header: {
					left: 'prev,next today',
					center: 'title',
					right: 'month,agendaWeek,agendaDay'
				},
				lang: currentLangCode,
				//weekNumbers: true,
				selectable: true,
				selectHelper: true,
				select: function(start, end, allDay) {
					$('#calendar').fullCalendar('unselect');
				},				
				<?php if($editCalendar){?> 
				editable: true,
				droppable: true, 
				<?php }?>
				//weekends: false,
				eventLimit: true,
				events: {
					url: 'getEventsDA.php',
					data : function() { 
                              return {
                                  agencies : $('#calendar_filter').val() ,
                               };
					},					
					error: function() {
						$('#script-warning').show();
					}
				},	/*
				eventSources: [
						'getEventsDA.php'
				],		*/	 	
				<?php if($editCalendar){?>
				eventDrop: function(event, delta, revertFunc, jsEvent, ui, view) {				
					var checkDay = new Date(event.start.format());
					var events = $('#calendar').fullCalendar('clientEvents');	
					var duplicate = false;
					var startDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 8, 0, 0).toISOString();
					var endDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 21, 0, 0).toISOString();
					for(var i=0;i<events.length - 1;i++){
						var startEvent = moment(events[i].start).hours(8).toISOString();
						var endEvent = moment(events[i].start).hours(20).toISOString();
						var target = jsEvent.toElement || jsEvent.relatedTarget || jsEvent.target;
						if((target.id == events[i].matricule) && 
							((startEvent >= startDate && startEvent <= endDate) || (endEvent >= startDate && endEvent <= endDate))
						  ){
							duplicate = events[i];
							break;
						}
					}			
					
					var today = new Date();
					if(duplicate){
						alert('Attention ce créneau est déjà occupé.');


						revertFunc();
					}
					else{
						if (checkDay.getDay() == 0 || checkDay.toISOString().slice(0, 10) < today.toISOString().slice(0, 10)) {
							alert('Déplacement impossible!');
							revertFunc();
						}
						else{						

							updateEvent(event);
						}
					}
				},
				eventResize: function (event, dayDelta, minuteDelta) {
					updateEvent(event);
				},
				<?php }?>
				eventClick: function(event, jsEvent, view) {		/*		
					$("#startTime").html(moment(event.start).format('LLLL'));
					if(event.end === "" || event.end === undefined || event.end === null){
						$("#endTime").html('Fin de la journée');
					}
					else{
						$("#endTime").html(moment(event.end).format('LLLL'));
					}						
					$("#eventInfo").html(event.nom);
					$("#eventLink").click(function(){
						choix = confirm("Voulez-vous supprimer cet évènement?"); 
						if (choix) {
							$("#eventContent").dialog("close");
							deleteEvent(event);
						} 
						else {
							$("#eventContent").dialog("close");
						}
					});
					$("#eventContent").dialog({ modal: true, title: event.title, width:350});*/
					 var date= new Date(event.start);
					$('#calendar').fullCalendar( 'changeView', 'agendaDay' ); 
					$('#calendar').fullCalendar('gotoDate', event.start);
				},
				loading: function(bool) {
					if (bool) $('#loading').show();
					else $('#loading').hide();
				},
				<?php if($editCalendar){?>
				drop: function(date, jsEvent, ui) {
					//TO DO : EnD TiMe			
					var checkDay = new Date(date.format());
					var events = $('#calendar').fullCalendar('clientEvents');	
					var duplicate = false;
					var startDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 8, 0, 0).toISOString();
					var endDate = new Date(checkDay.getFullYear(), checkDay.getMonth(), checkDay.getDate(), 21, 0, 0).toISOString();
					for(var i=0;i<events.length - 1;i++){
						var startEvent = moment(events[i].start).hours(8).toISOString();
						var endEvent = moment(events[i].start).hours(20).toISOString();
						var target = jsEvent.toElement || jsEvent.relatedTarget || jsEvent.target;
						if((target.id == events[i].matricule) && 
							((startEvent >= startDate && startEvent <= endDate) || (endEvent >= startDate && endEvent <= endDate))
						  ){
							duplicate = events[i];
							break;
						}
					}			
					

					var today = new Date();
					if(duplicate){
						alert('Attention ce créneau est déjà occupé.');


						refreshCalendar(date.id);
					}
					else{
						if (checkDay.getDay() == 0 || checkDay.toISOString().slice(0, 10) < today.toISOString().slice(0, 10)){
							alert('Déplacement impossible!');
							refreshCalendar(date.id);


						}
						else{
							if ($('#drop-remove').is(':checked')) {
								$(this).remove();
							}
							var element = $(this)[0];
							addEvent(date, element);
						} 
					}
				},	
				<?php }?>
				eventRender: function(event, element) {
					if(event.id_conseiller){
						var id_conseiller = event.id_conseiller;
						var nb = id_conseiller.length;
						//Construire une couleur pour chaque conseiller
						var color = '#5'+id_conseiller.substring(1,6)+'c9ed';
						color = color.substring(0, 7);
						element.css('background-color', color);
						element.css('border-color', color);
					}
					else{
						element.css('background-color', '#ccc');
						element.css('border-color', '#ccc');
					}		
					
					var endTime = startTime = '';
					if(event.end === "" || event.end === undefined || event.end === null){
						endTime = 'Fin de la journée';
					}
					else{
						endTime = moment(event.end).format('LLLL');
					}	
					if(event.allDay){						
						startTime = moment(event.start).hours(8).format('LLLL') ;
					}
					else{
						startTime = moment(event.start).format('LLLL') ;
					}
					element.qtip({
						content : {text:'<b>Conseiller:</b> '+event.nom  + '<br/><b>Agence:</b> '+event.nom_agence + '<br/><b>Début:</b> ' + startTime + '<br/><b>Fin:</b> ' + endTime},
						position: {
							adjust: { screen: true },
							corner: { target: 'bottomMiddle', tooltip: 'topLeft' } 
						},
						show: {
							solo: true, effect: { type: 'slide' }, effect: function () {
								$(this).fadeTo(200, 0.8);
							}
						},
						hide: { when: 'mouseout', fixed: true },
						style: {
							tip: true, // Give it a speech bubble tip
							border: {
								width: 2,
								radius: 5,
								color: '#474968'
								},
							title: {
								color: '#fff',
								background: '#9193c4'
							},
						}
					});
					
					element.bind('dblclick', function() {
					   choix = confirm("Voulez-vous supprimer cette afffectation?"); 
						if (choix) {
							deleteEvent(event);
						} 
						else {
						}
					});
				},
				dayRender: function(date, cell){
					var today = new Date();
					if (date.toISOString().slice(0, 10) < today.toISOString().slice(0, 10)){
						$(cell).addClass('disabled');
					}
				}
			});
			//Filter agences
			$('#agence-search-filter').keyup(function(){
			   var valThis = $(this).val();
				$('#listeConseillers>li').each(function(){
				 var text = $(this).text().toLowerCase();
					(text.indexOf(valThis.toLowerCase()) != -1) ? $(this).show() : $(this).hide();         
			   });
			});
		});
		function formatFCDate(date){
			var dateObj = new Date(date)
			var dateIntNTZ = dateObj.getTime();// - dateObj.getTimezoneOffset() * 60 * 1000;
			var dateObjNTZ = new Date(dateIntNTZ);
			var dateISOString = dateObjNTZ.toISOString();	
			var formattedDate = dateISOString.slice(0, 10) + " " + dateISOString.slice(11, 19);
			return formattedDate;
		}
		<?php if($editCalendar){?>
		function addEvent(date, element){	
			var tempDate = new Date(date); 		
			var MorningtempDate = new Date(date); 		
			var MorningdateEvent = MorningtempDate.setHours(9);	
			var dateEvent = formatFCDate(MorningdateEvent);	
			var allDay = 1; 
			var currentView = $('#calendar').fullCalendar('getView').type;
			switch(currentView){
				case 'month':
					var addHours = tempDate.setHours(21);		
					addHours = tempDate.setMinutes(0);		
					addHours = tempDate.setSeconds(0);		
					allDay = 1; 
					break;
				case 'agendaWeek':
					var addHours = tempDate.setHours(tempDate.getHours()+2);
					allDay = 0; 
					break;
				case 'agendaDay':
					var addHours = tempDate.setHours(tempDate.getHours()+2);
					allDay = 0; 
					break;
					
			}	
			var endEvent = formatFCDate(addHours); 
			var event_data = "";
			event_data += "&id_agence=<?php print $_SESSION['agence'];?>";
			event_data += "&id_conseiller=" + element.id;
			event_data += "&title=<?php print $nom_agence;?>";// $("#"+element.id).data('agence');
			event_data += "&start=" + dateEvent;
			event_data += "&end=" + endEvent;
			event_data += "&allDay=" + allDay;
			// console.log(event_data);
			// console.log($("#"+element.id).data('agence'));
			 
			$.ajax({
				type: 'POST',
				url: 'addEventDA.php',
				data: event_data,
				success: function(response){
					// console.log(response);
					refreshCalendar();
				}
			});
		}
		function updateEvent(event){
			var event_data = "";
			if(event.allDay){
				var temp = new Date(event.start);
				temp = temp.setHours(9);
				var start_date = formatFCDate(temp);//event.start.format();				
			}
			else{
				var start_date = formatFCDate(event.start);//event.start.format();		
			}
			
			
			var end_date = event.end ? formatFCDate(event.end) : '';	
			// console.log(event.end);
			var allDay = event.allDay;
			/*switch($('#calendar').fullCalendar('getView').type){
				case 'agendaWeek':
					allDay = 0; 
					break;
				case 'agendaDay':
					allDay = 0; 
					break;
					
			}	*/
			if(event.allDay) allDay = 1; else allDay = 0;
			event_data += "&id_event=" + event.id_event;
			event_data += "&id_agence=" + event.id_agence;
			event_data += "&id_conseiller=" + event.id_conseiller;
			event_data += "&title=<?php print $nom_agence;?>";
			event_data += "&start=" + start_date;
			event_data += "&end=" + end_date;
			event_data += "&allDay=" + allDay;		
			event_data += "&view=" + $('#calendar').fullCalendar('getView').type;				
			// console.log(event_data);	
			$.ajax({
				type: 'POST',
				url: 'updateEventDA.php',
				data: event_data,
				success: function(response){
					// console.log(response);
					refreshCalendar();
				}
			});
		}
		function deleteEvent(event){
			$.ajax({
				type: "POST",
				url: "deleteEvent.php",
				data: "&id_event=" + event.id_event,
				success: function(response){
					// console.log('response');
					refreshCalendar(event.id_event);
				}
			});
		}
		function refreshCalendar(id){
			if(id === "" || id === undefined || id === null){
				$('#calendar').fullCalendar('removeEvents',id);
			}
			else{
				// $('#calendar').fullCalendar('removeEvents');
			}
			
			
			if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
				location.reload();
			}
			else{
				$('#calendar').fullCalendar('refetchEvents');
			}
			
			
		}
		<?php } ?>
	</script>
</head>
<?php
$nb = 0;
if($editCalendar){
		$DATA = "<ul id='listeConseillers'>";
		$query = "SELECT cons.id_agent matricule,cons.nom,cons.prenom, cons.id_conseiller, a.nom_agence FROM ca_conseillers cons LEFT JOIN ca_agences a ON a.id_agence = cons.id_agence WHERE cons.supp=0 and cons.pro=1 GROUP BY cons.id_agent";
		$results = excuteQuery($query);
		while($o = $results['stmt']->fetchObject()) {
			$nomAgence = $o->nom_agence;
			$id_conseiller = $o->matricule;
			$nomConseiller = $o->nom . " " . $o->prenom;
			$DATA .= "<li class='fc-event' data-agence='".$nomAgence."' id='".$id_conseiller."'>".$nomConseiller."</li>";	
			$nb++;
		}
		$DATA .= "</ul>";
}
/* LOAD MORE STUFF */ /*
if($nb>10){
	$DATA .= '<div id="loadMore">Afficher plus</div><div id="showLess">Afficher moins</div>';
}
*/
?>

<input type="hidden" id="calendar_filter" value="-1"/>
<div id="globalLong">

	<div id="home">
		<div id="logo"><a href="../dashboard.php"><img src="../img/logo.png" border="0"/></a></div>
		<div id="username">
			<b><?php echo isset($_SESSION["nom"]) ? $_SESSION["nom"] : $_SESSION["matricule"];?></b> &nbsp; | &nbsp; <a href="../close.php" class="link" title="Fermer et clore votre session">D&#233;connexion</a>
			<br/>
		</div>	
	</div>
	<div id='wrap'>
		<?php if($editCalendar){?>
		<div id='external-events'>
			<h4>Liste des conseillers</h4>
			<input type="text" name="filter" id="agence-search-filter" size="18" placeholder="Filtrer les conseillers..." />
			<?php echo $DATA; ?>
			<p>
				<input type='checkbox' id='drop-remove' />
				<label for='drop-remove'>Enlever après dépôt</label>
			</p>
		</div>
		<div id="populated-selects"></div>
		<?php } ?>
		<div id='script-warning'>
			Problème de chargement de données.
		</div>
		<!--<button type="button" onclick="refreshCalendar();">Refresh</button>-->
		<div class="main-content">		
			<div id="title">
				Gestion des mobilités <?php if($editCalendar){?> de l'agence <span class="agcTitle"><?php echo $nom_agence; ?></span><?php } ?>
			</div>
			<div id='calendar' <?php if(!$editCalendar){ print " style='width:100%'";}?>></div>
		</div>
		<!--<input type="button" value="Sauvegarder mes disponibilités" onclick="saveCalendrier();" />-->
		
		<div style='clear:both'></div>

	</div>
</div>
<div id="eventContent" title="Event Details" style="display:none;text-align:left;">
	<table>
	<tr><td><strong>Début: </strong></td><td><span id="startTime"></span></td></tr>
    <tr><td><strong>Fin: </strong></td><td><span id="endTime"></span></td></tr>
    <tr><td><strong>Conseiller: </strong></td><td><span id="eventInfo"></span></td></tr>
	</table>
    <?php if($editCalendar){?><p><strong><a id="eventLink" class="formNav" href="javascript:">Supprimer</a></strong></p><?php } ?>
</div>
<?php include '../footer.php';?>
</html>