/***************************************
 *             calcanniv.js            *
 ***************************************
 * Birthday / BarMitzva/ Yahrzeit form *
 ***************************************
 * Requires: jdates.js                 *
 *           parasha.js                *
 *           parasha_loc.js            *
 *           anniversaires.js          *
 ***************************************
 * June 17, 2003 - Sivan 17, 5763      *
 *  v3.2                               *
 *                                     *
 * (c) Gabriel Zerbib,                 *
 *   gabriel@bumpt.net                 *
 *   http://www.bumpt.net              *
 *                                     *
 * It is strictly forbidden to use or  *
 * reproduce all or parts of this      *
 * program without author's explicit   *
 * permission.                         *
 * Commercial use of this program is   *
 * subject to purchase. Please contact *
 * the author.                         *
 ***************************************/

function initDatePicker()
{
	gdp.attach(document.getElementById('divGPicker'), document.getElementById('calendarButton1'), '/img/calendar-on.gif', stringHelpPicker, stringCancelPicker);
	gdp.onhoverdate = hover;
	gdp.oncancel = function () { hover(gdp.getDate()); };
	gdp.onchoosedate = function () { gdp.hide(); };
	gdp.onhelp = function () { window.open("helppicker.html", null, "width=400,height=450,toolbars=no,scrollbars=yes,resizable=yes").focus(); };
	hover(new GDate());

	gdpFunerals.attach(document.getElementById('divGFPicker'), document.getElementById('calendarButton2'), '/img/calendar-on.gif', stringHelpPicker, stringCancelPicker);
	gdpFunerals.onhoverdate = hoverFunerals;
	gdpFunerals.oncancel = function () { hover(gdpFunerals.getDate()); };
	gdpFunerals.onchoosedate = function () { gdpFunerals.hide(); };
	gdpFunerals.onhelp = function () {  };


}
function hover(date)
{
	document.getElementById('spanGDate').innerHTML = date;
}
function hoverFunerals(date)
{
	document.getElementById('spanGDateFunerals').innerHTML = date;
}


var eventType;

function OutputString(d, m, y)
{
	return String(d) + " " + m + " " + String(y);
}
function reDisplay()
{
	var form = document.formEvent;
	populateDatePicker(new GDate(form.selectDay.value, form.selectMonth.value, form.selectYear.value));
}
function chooseType()
{
	var type;
	if(document.formEvent.radioType[0].checked) type = 0;
	else if(document.formEvent.radioType[1].checked) type = 1;
	else if(document.formEvent.radioType[2].checked) type = 2;
	else return;

	eventType = type;
	var spanType = document.getElementById("spanType");
	spanType.innerHTML = document.formEvent.radioType[type].value;
	focusStep(1);
}
function chooseDate()
{
	gdpFunerals.date = new GDate(gdp.getDate());

	if(eventType == 1)
		displayResult();
	else
	{
		populateCommYear();
		focusStep(2);
  }
}
function chooseRite()
{
	if((document.formEvent.radioRite[0].checked || document.formEvent.radioRite[1].checked) == false)
		return;
	displayResult();
}
function populateCommYear(year)
{
	var form = document.formEvent;
	var select = form.selectCommYear;
	var i, start;
	year = parseInt(year);
	if( isNaN(year) )
	{
		var Y = (new HDate(gdp.getDate())).getYear();
		start = (new HDate()).getYear();
		if(start == Y)
			start += 1;
		start -= 10;
	}
	else
		start = year - 10;
	select.options[0] = new Option("  -", (year - 11) );
	for(i = 0; i <= 20; i++)
	{
		select.options[i + 1] = new Option((start + i) + " (" + (start + i - 3761) + " - " + (start + i - 3760) + ")", start + i);
	}
	select.options[22] = new Option("  +", (year + 11) );
	select.selectedIndex = 11;
}
function chooseCommYear()
{
	var form = document.formEvent;
	var g = gdp.getDate();
	var hdate = new HDate(g);
	if(form.checkboxSunset.checked) hdate.add(1);
	if((eventType == 2) && (form.selectCommYear.options[form.selectCommYear.selectedIndex].value == hdate.getYear() + 1))
	  focusStep(3);
	else if((eventType == 2) && (!hdate.isLeap()) && (HDate.isEmbolismic(form.selectCommYear.options[form.selectCommYear.selectedIndex].value)) && (hdate.getMonth() == HDate.ADAR))
		focusStep(4);
	else
		displayResult();
}

function chooseDateFunerals()
{
	var form = document.formEvent;
	var g = gdp.getDate();
	var hdate = new HDate(g);
	if(form.checkboxSunset.checked) hdate.add(1);

	if((eventType == 2) && (!hdate.isLeap()) && (HDate.isEmbolismic(form.selectCommYear.options[form.selectCommYear.selectedIndex].value)) && (hdate.getMonth() == HDate.ADAR))
		focusStep(4);
	else
		displayResult();
}

var hdateResult = null;
function displayResult()
{
	if(document.getElementById("divNotifRegistered") != null)
	{
		document.getElementById("divNotifRegistered").style.display = "none";
		if( (eventType == 0) || (eventType == 2) )
			document.getElementById("divRegisterNotif").style.display = "block";
		else
			document.getElementById("divRegisterNotif").style.display = "none";
	}

	var form = document.formEvent;
	hdateResult = new HDate(gdp.getDate());
	if(form.checkboxSunset.checked) hdateResult.add(1);
	
	var h;
	var Y = form.selectCommYear.value;

	switch(eventType)
	{
	case 0: h = Birthday(hdateResult, Y); break;
	case 1: h = Birthday(hdateResult, hdateResult.getYear() + 13); break;
	case 2: h = Yahrzeit(hdateResult, Y, form.radioRite[0].checked); break;
	default: return;
	}


	document.getElementById("spanCelebDateAnniv").style.display = "none";
	document.getElementById("spanCelebDateBM").style.display = "none";
	document.getElementById("spanCelebYZ").style.display = "none";
	document.getElementById("spanCelebYZ1st").style.display = "none";

	switch(eventType)
	{
	  case 0: document.getElementById("spanCelebDateAnniv").style.display = "block"; break;
	  case 1: document.getElementById("spanCelebDateBM").style.display = "block"; break;
	  case 2: document.getElementById("spanCelebYZ").style.display = "block"; break;
	}

	var g = new GDate(h);
	var spanComm = document.getElementById("spanComm");
	var s = (g.getDay() + " " + g.MonthName() + " " + g.getYear());
	spanComm.innerHTML = s;
	var spanHebrewComm = document.getElementById("spanHebrewComm");
	spanHebrewComm.innerHTML = HebrewNumberToString(h.getDay()) + " " + HebrewMonthToString(h.getMonth()) + " " + HebrewNumberToString(h.getYear() / 1000, true) + "-" + HebrewNumberToString(h.getYear() % 1000);

	var spanParasha = document.getElementById("spanParasha");
	if(eventType == 1)
	{
		var s = displayParasha(h);
		if(s == "")
			s = "attention, jour de fête";
		spanParasha.innerHTML = s;
		document.getElementById("spanParashaContainer").style.display = "block";
	}
	else
	{
		spanParasha.innerHTML = "";
		document.getElementById("spanParashaContainer").style.display = "none";
	}

	if(eventType == 2)
	{
	  if(Y == hdateResult.getYear() + 1)
	  {
	    var hYZ1st = new HDate(gdpFunerals.getDate());
	    var i;
			for(i = 1; i <= 11; ++i) hYZ1st.nextMonth();
			var gYZ1st = new GDate(hYZ1st);
	    var sYZ1st = (gYZ1st.getDay() + " " + gYZ1st.MonthName() + " " + gYZ1st.getYear());
	    document.getElementById("spanCommYZ1st").innerHTML = sYZ1st;

	    document.getElementById("spanCelebYZ1st").style.display = "block";
		}
	}

	focusStep(5, '=&gt;');
}
function resetForm()
{
	var notifEmail = document.forms["formEvent"].notifEmail.value;
	var notifName = document.forms["formEvent"].notifName.value;

	document.formEvent.reset();

	document.forms["formEvent"].notifEmail.value = notifEmail;
	document.forms["formEvent"].notifName.value = notifName;

	bRegisteringEvent = false;
	focusStep(0);
}
function focusStep(n, s)
{
	var i;
	var div;
	var countVisibles = 0;
	var tableForm = document.getElementById("tableForm");
	for(i = 0; i < n; i++)
	{
		tableForm.rows[i].style.backgroundColor = "white";
		if(tableForm.rows[i].style.visibility == "visible")
			countVisibles ++;
		else
		{
			tableForm.rows[i].style.height = "2px";
		}
		div = document.getElementById("divNext" + i);
		if(div) { div.style.visibility = "hidden"; }
	}
	for(i = (n + 1); i < tableForm.rows.length; i++)
	{
		tableForm.rows[i].style.visibility = "hidden";
		tableForm.rows[i].style.display = "none";
		tableForm.rows[i].style.backgroundColor = "white";
		div = document.getElementById("divNext" + i);
		if(div) { div.style.visibility = "hidden"; }
	}
	tableForm.rows[n].style.backgroundColor = "#F6EC94";
	tableForm.rows[n].cells[0].innerHTML = "<B>" + (s != null ? s : (countVisibles + 1)) + "</B>";
	tableForm.rows[n].style.visibility = "visible";
	tableForm.rows[n].style.display = "block";
	var div = document.getElementById("divNext" + n);
	if(div) { div.style.visibility = "visible"; }
	for(i = 0; i < document.formEvent.elements.length; i++)
		if(document.formEvent.elements[i].parentElement == tableForm.rows[n].cells[1])
		{
			document.formEvent.elements[i].focus();
			break;
		}
}

function displayParasha(h)
{
	var s = "";
	var a = h.getParasha(false);
	if(a == "")
	{
		if(h.getDayOfWeek() != HDate.SHABBAT)
		{
			h.add(HDate.SHABBAT - h.getDayOfWeek());
			a = h.getParasha(false);
		}
	}
	for(i in a)
	{
		if( s != "")
			s += " - ";
		s += ((a[i] + "") != "" ? JDate.parshiot[ a[i] ] : "");
	}
	return s;
}

var bRegisteringEvent = false;
function registerEvent()
{
	if(bRegisteringEvent)
		return;

	bRegisteringEvent = true;
	var AMP = "&";
	var notifAshkenaz = (document.forms["formEvent"].radioRite[0].checked ? 1 : 0);
	var notifEmail = document.forms["formEvent"].notifEmail.value;
	var notifName = document.forms["formEvent"].notifName.value;
	var notifTitle = document.forms["formEvent"].notifTitle.value;

	SLOG.Ajax.getJS("/recordNotif.do", 
		{
			email: notifEmail,
			name: notifName,
			title: notifTitle,
			date: hdateResult.getYear() + "-" + hdateResult.getMonth() + "-" + hdateResult.getDay(),
			yz: (eventType == 2 ? 1 : 0),
			ashkenaz: notifAshkenaz
		},
		callbackRegisterNotif
	);
}
function callbackRegisterNotif(params, response) {
	if(response.result == "MISSING_INFO") {
		callbackRegisterNotifError();
	}
	else if(response.result == "INVALID_EMAIL") {
		callbackRegisterNotifInvalidEmail();
	}
	else if(response.result == "ERROR") {
		callbackRegisterNotifTechError();
	}
	else if(response.result == "OK") {
		document.getElementById("divRegisterNotif").style.display = "none";
		document.getElementById("divNotifRegistered").style.display = "block";
	}
	bRegisteringEvent = false;
}
function callbackRegisterNotifError()
{
	alert("Tous les champs sont obligatoires.");
}
function callbackRegisterNotifInvalidEmail() {
	alert("L'adresse email est invalide. Merci de la vérifier avant de ressayer.");
}
function callbackRegisterNotifTechError() {
	alert("Une erreur technique est survenue pendant l'envoi de l'email. Merci de ressayer ultérieurement.");
}