function abDateTime_handleSelect( type, args, obj )
{
    var dates = args[0];
    var date  = dates[0];
    var year  = date[0],
        month = date[1],
        day   = date[2];

    var objIDArray = obj.id.split( '_' );
    var id         = objIDArray[4];
    var datatype   = objIDArray[1];
    var base       = objIDArray[0];
    var prefix     = base + '_' + datatype;

    var selectYear = document.getElementById( prefix + '_date_year_' + id );
    for ( i = 0; i < selectYear.options.length; ++i )
    {
        if ( selectYear.options[i].value == year )
        {
            selectYear.selectedIndex = i;
            break;
        }
    }

    var selectMonth = document.getElementById( prefix + '_date_month_' + id );
    for ( i = 0; i < selectMonth.options.length; ++i )
    {
        if ( selectMonth.options[i].value == month )
        {
            selectMonth.selectedIndex = i;
            break;
        }
    }

    var selectDay = document.getElementById( prefix + '_date_day_' + id );
    for ( i = 0; i < selectDay.options.length; ++i )
    {
        if ( selectDay.options[i].value == day )
        {
            selectDay.selectedIndex = i;
            break;
        }
    }


    var set_time = true;

    try
    {
        var indexHour   = document.getElementById( prefix + '_time_hour_'   + id ).selectedIndex;
        var indexMinute = document.getElementById( prefix + '_time_minute_' + id ).selectedIndex;
        var indexSecond = document.getElementById( prefix + '_time_second_' + id ).selectedIndex;
        set_time = !( indexHour != 0 || indexMinute != 0 || indexSecond != 0 )
    }
    catch ( abDateTimeVerifyError ) {}

    if ( set_time === true )
    {
        try
        {
            var currentDate = new Date();
            var selectYear = document.getElementById( prefix + '_time_hour_' + id );
            for ( i = 0; i < selectYear.options.length; ++i )
            {
                if ( selectYear.options[i].value == currentDate.getHours() )
                {
                    selectYear.selectedIndex = i;
                    break;
                }
            }

            var selectMonth = document.getElementById( prefix + '_time_minute_' + id );
            for ( i = 0; i < selectMonth.options.length; ++i )
            {
                if ( selectMonth.options[i].value == currentDate.getMinutes() )
                {
                    selectMonth.selectedIndex = i;
                    break;
                }
            }

            var selectDay = document.getElementById( prefix + '_time_second_' + id );
            for ( i = 0; i < selectDay.options.length; ++i )
            {
                if ( selectDay.options[i].value == currentDate.getSeconds() )
                {
                    selectDay.selectedIndex = i;
                    break;
                }
            }

        }
        catch ( abDateTimeSelectError ) {}
    }

    window['calendar'+id].hide();
}

function abDateTime_showCalendar( base, id, datatype )
{
    var prefix         = base + '_' + datatype;
    var calIconID      = prefix + '_calendar_image_' + id;
    var calContainerID = prefix + '_calendar_div_' + id;
    var calContainer   = document.getElementById( calContainerID );
    var window_id      = 'calendar' + id;
    var selectedDate   = false;
    var pageDate       = false;

    try
    {
        var selectionObject = document.getElementById( prefix + '_date_year_' + id );
        var selectedYear    = selectionObject.options[ selectionObject.selectedIndex ].value;
        selectionObject     = document.getElementById( prefix + '_date_month_' + id );
        var selectedMonth   = selectionObject.options[ selectionObject.selectedIndex ].value;
        selectionObject     = document.getElementById( prefix + '_date_day_' + id );
        var selectedDay     = selectionObject.options[ selectionObject.selectedIndex ].value;
        if ( selectedMonth != '' && selectedDay != '' && selectedYear != '' )
        {
            selectedDate = selectedMonth + '/' + selectedDay + '/' + selectedYear;
            pageDate     = selectedMonth + '/' + selectedYear;
        }
    }
    catch ( abDateTimeShowError ) {};

    calContainer.style.position   = 'absolute';
    calContainer.style.display    = 'inline';
    calContainer.style.marginTop  = '-40px';
    calContainer.style.marginLeft = '10px';

    window[window_id] = new YAHOO.widget.Calendar( calIconID, calContainerID, { close: true,
                                                                                selected: selectedDate,
                                                                                pagedate: pageDate,
                                                                                navigator: true,
                                                                                LOCALE_WEEKDAYS: "medium"
                                                                              }
                                                 );
    window[window_id].cfg.setProperty( "selected", selectedDate, false );
    window[window_id].render();
    window[window_id].selectEvent.subscribe( abDateTime_handleSelect, window[window_id], true );
}
