﻿/*
 * Show a calendar
 * => Works if (and only if) calendar.js + calendar-[lang].js has been loaded
 *
 * @param	obj			The object where to display calendar (id or object itself)
 * @param	date		The date used to initialize calendar (or null to use obj.value)
 *
 */
var _calendar = null;
var _calendarDateTimeId = null;
var _calendarCallback = null;
function onCalendar_Close()
{
	_calendar.hide();
	if (_calendarCallback)
	    calendarCallback(null);
}

function onCalendar_Selection(calendar, date)
{
	calendar.sel.value = date;
	// DateTime mode ?
	if (_calendarDateTimeId)
	    updateCalendarDateTime(_calendarDateTimeId);
	_calendar.hide();
	
	if (_calendarCallback)
	    calendarCallback(date);
}

function showCalendar(idOrObject, date, callback, calendarDateTimeId)
{
	// Get selection objet (usually an input box)
	var obj = null;
	if (typeof idOrObject == "string")
		obj = document.getElementById(idOrObject);
	else
		obj = idOrObject;

	if (_calendar != null)
	{
		// we already have one created, so just update it
		_calendar.hide();
	}
	else
	{
	    // Remember datetime id (for "datetime" mode only)
	    _calendarDateTimeId = calendarDateTimeId;
	    
	    // Remember callback
		if (callback)
			_calendarCallback = callback;

		// first-time call, create the calendar
		_calendar = new Calendar(true, null, onCalendar_Selection, onCalendar_Close);
		_calendar.setRange(1970, 2070);
		_calendar.create();
	}
	if (date)
		_calendar.parseDate(date);
	else
		_calendar.parseDate(obj.value);

	_calendar.sel = obj;
	_calendar.showAtElement(obj);

	return false;
}

/*
 * Update a calendar picked-up value when it's in "datetime" mode
 * (i.e. with hour,minute,seconds fields)
 */
function updateCalendarDateTime(id)
{
    var date = $(id + '_date');
    var time = $(id + '_time');
    var datetime = $(id);
    if (datetime)
    {
        if (date)
        {
            datetime.value = date.value + ' ';
            if (time)
                datetime.value += time.value;
            else
                datetime.value += '00:00:00';
        }
        else
        {
            if (time)
                datetime.value = time.value;
        }
    }
}

function showDateControls(value)
    {
        if (value == 1)
        {
            $('Date1').value = $('Date2').value = '';
			new Element.show('1date');
			new Element.hide('2date');
        }
        else
        {
            $('Date').value = '';
			new Element.hide('1date');
			new Element.show('2date');
        }
    }
    