/*
 * File Name : agenda.js
 * Created by Softage
 * http://www.softage.be
 */


var agenda_SPECIAL_DAYS;
var agenda_tot_special_days;
var agenda_currentYear;

var agenda_currentId=0;
var agenda_currentDate="";
var agenda_logged=false;

/* 
 * Init gui + CALENDAR
 */
function init_app_agenda(){

	agenda_isLogged();
	agenda_getAllDays();
	strHtml="<table cellspacing='10' ><tr height='435' width='774' >"
    			+ "<td width='491' valign='top' ><div id='div_events'></div></td>"	
    			+ "<td width='227' valign='top'>"
			+ "<div id='calendar_container'></div>";
	if (agenda_logged==true)strHtml+="<br><center><img src='images/add2.png' style='cursor:pointer' onClick=\"agenda_edit('INSERT')\"></center>";
	strHtml+="</td></tr></table>";
	$('main').innerHTML=strHtml;
	 Calendar.setup(
    	{
      		flat         : "calendar_container", // ID of the parent element
      		flatCallback : dateChanged,           // our callback function
		dateStatusFunc: dateStatusHandler
    	});
	agenda_getNextEventDate();

}


function dateChanged(calendar) {
    if (calendar.dateClicked) 
    {

      	var y = calendar.date.getFullYear();
      	var m = calendar.date.getMonth()+1;     // integer, 0..11
      	var d = calendar.date.getDate();      // integer, 1..31
		agenda_currentDate=y + "-" + m + "-" + d;
     	agenda_getAll(y + "-" + m + "-" + d);
    }
    else agenda_getAllDays();
};



function dateIsSpecial(year, month, day) 
{
    if(!agenda_SPECIAL_DAYS)return false;
    if(!agenda_SPECIAL_DAYS[year])return false;
    month=month+1;
    if (month<10)month="0" + month;
    var m = agenda_SPECIAL_DAYS[year][month];
    if (!m)return false;
    for (var i in m){ if (m[i] == day) {return true;}}
    return false;
}
function dateStatusHandler(date, y, m, d) {
    if (dateIsSpecial(y, m, d)) return "special";
    else return false;
}


function agenda_getAll(eventDate)
{
		var url = 'bridge/bridge_agenda.php';
		var pars = 'action=getAllAtDate&day=' + eventDate;
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: agenda_getAll_resp });
}
	
function agenda_getAll_resp(originalRequest)
{
	
	var response = JSON.parse(originalRequest.responseText);
	if (response.Type=="Data")
	{
		var tabDate=response.Value[0].day.split("-");
		aYear=tabDate[0];
		aMonth=tabDate[1];
		aDay=tabDate[2];
		var htmlTxt="<table id='agenda_entry_table' width='100%'>";
		htmlTxt+="<tr ><td height='25px' class='cellheader' ><b><font size='2'><center><font class='stdTitle' color='#FF0099'>Agenda du " + aDay + "/" + aMonth + "/" + aYear + "</font></center></font></b></td></tr>";
		htmlTxt+="<tr><td height='20px'></td></tr>";
		for (var i=0;i<response.Size;i++) 
		{      
			htmlTxt+="<tr id='agenda_entry_title_" + response.Value[i].id  + "'><td><font class='boldTitle' id='agenda_title_value_" + response.Value[i].id + "'>" + stripslashes(response.Value[i].title) + "</font>";
			if (agenda_logged==true)htmlTxt+="</font>&nbsp;&nbsp;<img id='agenda_edit_" + response.Value[i].id + "' src='images/edit.gif' width='16px' height='16px' style='cursor:pointer' onClick=\"agenda_edit('UPDATE','" + response.Value[i].id + "')\">&nbsp;&nbsp;<img id='agenda_delete_" + response.Value[i].id + "' src='images/delete16.png' style='cursor:pointer' onClick=\"agenda_remove('" + response.Value[i].id + "')\">";
			htmlTxt+="</td><tr id='agenda_entry_description_" + response.Value[i].id
			+ "'><td colspan=2><font class='stdText'><div id='agenda_description_value_" + response.Value[i].id + "'>"+ stripslashes(response.Value[i].description)
			+ "</div></font></td></tr><tr ><td height='10px'><hr id='agenda_entry_line_" + response.Value[i].id + "'></td></tr>";
		}
		htmlTxt+="</table>";
		$('div_events').innerHTML=htmlTxt;
	}
	else if (response.Type=="Info")
	{
		$('div_events').innerHTML="<center><font class='boldTitle'>Aucun &eacute;v&egrave;nement</font></center>";
	}	
}

function agenda_getAllDays(year)
{
		var url = 'bridge/bridge_agenda.php';
		var pars = 'action=getAllDays&year=' + year;
		var myAjax = new Ajax.Request( url, { method: 'post',asynchronous:false, parameters: pars, onComplete: agenda_getAllDays_resp });
}
	
function agenda_getAllDays_resp(originalRequest)
{
	var response = JSON.parse(originalRequest.responseText);
	agenda_SPECIAL_DAYS=response.Value;
}

function agenda_isLogged()
{
		var url = 'bridge/bridge_user.php';
		var pars = 'action=isLogged';
		var myAjax = new Ajax.Request( url, { method: 'post',asynchronous:false, parameters: pars, onComplete: agenda_isLogged_resp });
}
	
function agenda_isLogged_resp(originalRequest)
{
	var test=false;
	var response = JSON.parse(originalRequest.responseText);
	if (response.Type=="Success"){
		agenda_logged=true;	
	}
	else {
		$('admin_logout').innerHTML="";	
		agenda_logged=false;
	}
	return test;
	
}
function agenda_getOne(id)
{
		agenda_currentId=id;
		var url = 'bridge/bridge_agenda.php';
		var pars = 'action=getOne&id=' + id;
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: agenda_getOne_resp });
}
	
function agenda_getOne_resp(originalRequest)
{
	var response = JSON.parse(originalRequest.responseText);
	if (response.Type=="Object"){
		ob=response.Value;
		$('agenda_edit_title').value=stripslashes(ob['Title']);
		$('agenda_edit_description').value=stripslashes(ob['Description']);
		$('agenda_edit_date').value=ob['Day'];
		$('agenda_edit_id').value=ob['Id'];

		agenda_currentDate=ob['Day'];
	}
	else win2("Une erreur s'est produite");
	
}

function agenda_insert()
{
		var day=encodeURI($('agenda_edit_date').value);
		var title=encodeURI($('agenda_edit_title').value);
		var description=encodeURIComponent(FCKeditorAPI.GetInstance('agenda_edit_description').GetXHTML());
		var url = 'bridge/bridge_agenda.php';
		var pars = 'action=insert&day=' + day + '&title=' + title + '&description=' + description;
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: agenda_insert_resp });
		
}
	
function agenda_insert_resp(originalRequest)
{
	var response = JSON.parse(originalRequest.responseText);
	if (response.Type=="Object"){
		ob=response.Value;
		var cDate=agenda_currentDate.split("-");
		var cYear=cDate[0];
		var cMonth=cDate[1];
		if ((cMonth<10)&& (cMonth.toString.size==1)) cMonth='0' + cMonth;
		var cDay=cDate[2];
		if ((cDay<10)&& (cDay.toString.size==1))  cDay='0' + cDay;
		if ((cYear + '-' + cMonth + '-' + cDay )==$('agenda_edit_date').value)
		{
			var tabDate=ob.Day.split("-");
			var aYear=tabDate[0];
			var aMonth=tabDate[1];
			var aDay=tabDate[2];
			var htmlTxt="";
			if (!document.getElementById('agenda_entry_table'))  // Il n'y a encore aucune entée pour cette date
			{
			htmlTxt+="<table id='agenda_entry_table' width='100%'>";
			htmlTxt+="<tr ><td height='25px' class='cellheader'><b><font size='2'><center><font class='stdTitle'>Agenda du " + aDay + "/" + aMonth + "/" + aYear + "</font></center></font></b></td></tr><tr><td height='20px'></td></tr>";

			}
			htmlTxt+="<tr id='agenda_entry_title_" + ob.Id  + "'><td><font class='boldTitle' id='agenda_title_value_" + ob.Id  + "'>" + stripslashes(ob.Title) +
				"</font>&nbsp;&nbsp;<img id='agenda_edit_" + ob.Id + "' src='images/edit.gif' width='16px' height='16px'"+ 
				"style='cursor:pointer' onClick=\"agenda_edit('UPDATE',"+ ob.Id  +")\">&nbsp;&nbsp;<img id='agenda_delete_" + ob.Id  + 
				"'src='images/delete16.png' style='cursor:pointer' onClick='agenda_remove("+ ob.Id  +")'>"+
				"</td><tr id='agenda_entry_description_" + ob.Id   + "'><td colspan=2><font class='stdText'><div id='agenda_description_value_" +
				 ob.Id  + "'>"+ stripslashes(ob.Description) + "</div></font></td></tr><tr ><td height='10px'><hr id='agenda_entry_line_" + 
				ob.Id + "'></td></tr>" ;	
			if (!$('agenda_entry_table')) {
				htmlTxt+="</table>";
				$('div_events').innerHTML=htmlTxt;
			}
			else new Insertion.Bottom('agenda_entry_table', htmlTxt);
		}
		//else win2("Dates différentes");	
		Element.show('calendar_container');
		Windows.closeAll();
	}
	else win2("Une erreur s'est produite");
	
}

function agenda_update()
{
		var id=$('agenda_edit_id').value;
		var day=encodeURI($('agenda_edit_date').value);
		var title=encodeURI($('agenda_edit_title').value);
		var description=encodeURIComponent(FCKeditorAPI.GetInstance('agenda_edit_description').GetXHTML())
		var url = 'bridge/bridge_agenda.php';
		var pars = 'action=update&id=' + id + '&day=' + day + '&title=' + title + '&description=' + description;
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: agenda_update_resp });
}
	
function agenda_update_resp(originalRequest)
{
	var response = JSON.parse(originalRequest.responseText);
	if (response.Type=="Success"){
		if (agenda_currentDate==$('agenda_edit_date').value)
		{
			$('agenda_title_value_' + agenda_currentId).innerHTML=$('agenda_edit_title').value;
			$('agenda_description_value_' + agenda_currentId).innerHTML=FCKeditorAPI.GetInstance('agenda_edit_description').GetXHTML();	
		}
		else
		{
			Effect.Fade('agenda_entry_description_' + agenda_currentId ); 
			Effect.Fade('agenda_entry_title_' + agenda_currentId ); 
			if($('agenda_entry_line_' + agenda_currentId))Effect.Fade('agenda_entry_line_' + agenda_currentId);	
		}	
		Windows.closeAll();
		Element.show('calendar_container');
	}
	else win2("Une erreur s'est produite");
	
}


function agenda_remove(id)
{
	Dialog.confirm("Voulez vous vraiment effacer cette entr&eacute;e ?", 
               {width:300, height:75, okLabel: "Oui", 
		className:"darkX",
               buttonClass: "myButtonClass",
               id: "dialogYesCancel",
               cancel:function(win){debug("cancel confirm panel")},
               ok:function(){	
			agenda_currentId=id;
			var url = 'bridge/bridge_agenda.php';
			var pars = 'action=remove&id=' + id;
			var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: agenda_remove_resp });
			return true;
			}
			
              });

}
	
function agenda_remove_resp(originalRequest)
{

	var test=false;
	var response = JSON.parse(originalRequest.responseText);
	if (response.Type=="Success"){
		Effect.Fade('agenda_entry_description_' + agenda_currentId ); 
		Effect.Fade('agenda_entry_title_' + agenda_currentId ); 
		Effect.Fade('agenda_entry_line_' + agenda_currentId);	
	}
	else win2("Une erreur s'est produite");

	
}


function agenda_edit(mode,id)
{
	
	Element.hide('calendar_container');
	var form_agenda="";
	form_agenda+= "<br>"
				+ "<table width='90%' height='95%' style='margin-left:20px'>"
				+ "<tr width='100%' height='35px' valign='top'>"
					+ "<td >Date</td><td><input type='hidden' id='agenda_edit_id'/><input type='text' id='agenda_edit_date'/></td>"
				+ "</tr>"
				+ "<tr width='100%' height='35px' valign='top'>"
					+ "<td >Titre</td><td><input type='text' id='agenda_edit_title' width='300px'/></td>"
				+ "</tr>"
				+ "<tr width='100%' valign='top'><td colspan='2'>D&eacute;scription</td></tr>"
				+ "<tr><td colspan='2' valign='top'><textarea id='agenda_edit_description' name='agenda_edit_description' height='300px' rows='80' cols='80'></textarea></td></tr>";
				form_agenda+= "<tr width='100%' height='35px' valign='center'><td width='50%' ><center><input type='button' value='Envoyer'";
				if (mode=="UPDATE") form_agenda+= "onClick='agenda_update()'";
				else if (mode=="INSERT") form_agenda+= "onClick='agenda_insert()'";
				form_agenda+= "/></center></td><td width='50%' ><center><input type='button' value='Annuler' onclick=\"Windows.closeAll(); Element.show('calendar_container');\"/></center></td></tr>"
				+ "</table>";

	Dialog.info(form_agenda,{className: "darkX",  width: 650, height: 360,showProgress: false});
	var oFCKeditor = new FCKeditor( 'agenda_edit_description' ) ;
	oFCKeditor.BasePath	= sBasePath ;
	oFCKeditor.ToolbarSet = "Basic";
	oFCKeditor.ReplaceTextarea();
    	Calendar.setup({
        	inputField     :    "agenda_edit_date",   // id of the input field
        	ifFormat       :    "%Y-%m-%d",       // format of the input field
        	showsTime      :    true,
        	timeFormat     :    "24"
		
    	});
		
	if (mode=="UPDATE")agenda_getOne(id);

}


function agenda_getNextEventDate()
{
		var url = 'bridge/bridge_agenda.php';
		var pars = 'action=getNextEventDate';
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, onComplete: agenda_getNextEventDate_resp });
}
	
function agenda_getNextEventDate_resp(originalRequest)
{

	var test=false;
	var response = originalRequest.responseText;
	if (response!="NULL"){
		agenda_currentDate=response;
		agenda_getAll(response);
	}
	else 
	{
		agenda_currentDate=response;
		$('div_events').innerHTML="<font class='boldTitle'><center>Aucun &eacute;v&eacute;nement dans les prochains jours</center></font>";
	}
	
	
}



