var MUSEUM_CALENDAR_PAGE = 'exhibits.aspx' ;
var PLANETARIUM_CALENDAR_PAGE = 'planetarium.aspx' ;
var CLASSES_CALENDAR_PAGE = 'learn-' ;
var MUSEUM_CALENDAR_CATEGORY_ID = 1 ;
var PLANETARIUM_CALENDAR_CATEGORY_ID = 2 ;
var CLASSES_CALENDAR_CATEGORY_ID = 3 ;

var calendarCategory = 0 ;
var datesInPlay = new Array() ;
var calendarEvents = new Array() ;
var retrievingDataFeed = false ;
var disallowRedirect = true ;

$( function() {
    var dte = new Date() ;
    if( $.query.get('date').length > 0 )
        dte = new Date( $.query.get('date') ) ;
        
    if( $.query.get('category') > 0 )
    {
        calendarCategory = parseInt( $.query.get('category') ) ;
        if( eval( document.getElementById( 'calendarEventCategory' ) ) )
            document.getElementById( 'calendarEventCategory' ).value = calendarCategory ;
    }
    
    if(     ( $.query.get('day').toString().toLowerCase().indexOf( 'true' ) >= 0 )
        &&  ( eval( document.getElementById( 'show_day' ) ) ) )
            document.getElementById( 'show_day' ).checked = true ;
    
    if( $('#datepicker').length > 0 )
    {
	    // Datepicker
	    $('#datepicker').datepicker( {
	        beforeShowDay: dayRendering,
	        onChangeMonthYear: monthAndYearSelected,
	        onHover: dayHoverOver,
	        onSelect: daySelected,
	        inline: true
	    } ) ;
        

        $('#datepicker').datepicker( 'setDate', $.datepicker.parseDate( 'yy-mm-dd', getYear( dte ) + '-' + ( dte.getMonth() + 1 ) + '-' + dte.getDate() ) ) ;
        refreshCalendar() ;
    }
    
    if( $.query.get('displayEvent') > 0 )
        displayEvent( $.query.get('displayEvent') ) ;
} ) ;

function getYear( date )
{
    if( date.getYear() < 1900 )
        return date.getYear() + 1900 ;
    return date.getYear() ;
}

function getCalendarCategory()
{
    if( location.href.toLowerCase().indexOf( MUSEUM_CALENDAR_PAGE.toLowerCase() ) >= 0 )
        calendarCategory = MUSEUM_CALENDAR_CATEGORY_ID ;
    else if( location.href.toLowerCase().indexOf( PLANETARIUM_CALENDAR_PAGE.toLowerCase() ) >= 0 )
        calendarCategory = PLANETARIUM_CALENDAR_CATEGORY_ID ;
    else if( location.href.toLowerCase().indexOf( CLASSES_CALENDAR_PAGE.toLowerCase() ) >= 0 )
        calendarCategory = CLASSES_CALENDAR_CATEGORY_ID ;
    return calendarCategory ;
}

function calendarEventCategorySelected( category )
{
    calendarCategory = category ;
    refreshCalendar() ;
}

function refreshCalendar()
{
    var date = $('#datepicker').datepicker( 'getDate' ) ;
    daySelected( ( date.getMonth() + 1 ) + "/" + date.getDate() + "/" + getYear( date ), date ) ;
    monthAndYearSelected( getYear( date ), date.getMonth() + 1, '', date.getDate() ) ;
}

function dayRendering( date )
{
    var output = [ false, '' ] ;
    for( var i = 0 ; i < datesInPlay.length ; ++i )
    {
        if( date.getDate() == datesInPlay[ i ] )
        {
	        output = [ true, 'dayHasEventOnIt' ] ;
	        break ;
	    }
    }
    
    if( date.getDate() == 1 )
        setTimeout( 'stylizeDays();', 0 ) ;
    
    return output ;
}

function stylizeDays()
{
    var withEvents = $( '.dayHasEventOnIt' ) ;
    for( var i = 0 ; i < withEvents.length ; ++i )
        withEvents[ i ].childNodes[ 0 ].className = 'dayHasEventOnItInner' ;
}

function dayHoverOver( value, date )
{
    for( var i = 0 ; i < datesInPlay.length ; ++i )
    {
        if( date.getDate() == datesInPlay[ i ] )
        {
            $( '#dateHoverOverArea' ).text( teaserTitles[ i ] ) ;
            return  ;
        }
    }
    $( '#dateHoverOverArea' ).text( '' ) ;
}

function monthAndYearSelected( year, month, notUsed, day )
{
    if( retrievingDataFeed )
        return ;
    retrievingDataFeed = true ;
    
    datesInPlay = new Array() ;
    
    $.ajax( {
       type: "GET",
       url: "EventsDataFeed.aspx",
       data: "year=" + year + "&month=" + month + "&category=" + getCalendarCategory(),
       dataType: "script",
       success: function( msg )
        {
            var dte = new Date() ;
            var useday = ( day == null ) ? dte.getDate() : day ;
            $('#datepicker').datepicker( 'setDate', $.datepicker.parseDate( 'yy-mm-dd',
                year + '-' + month + '-' + useday ) ) ;
            retrievingDataFeed = false ;
        }
     } ) ;
}

function daySelected( value, date )
{
    if(     ( ! disallowRedirect )
        &&  ( location.href.toLowerCase().indexOf( 'newsevents.aspx' ) < 0 ) )
        location.href = 'NewsEvents.aspx?day=true&week=false&date=' + value + '&category=' + getCalendarCategory() ;
    
    disallowRedirect = false ;
    
    var day = eval( document.getElementById( 'show_day' ) ) ? document.getElementById( 'show_day' ).checked : true ;
    var week = eval( document.getElementById( 'show_week' ) ) ? document.getElementById( 'show_week' ).checked : false ;
    
    $.ajax( {
       type: "GET",
       url: "EventsContents.aspx",
       data: "date=" + value
            + "&day=" + day
            + "&week=" + week
            + "&category=" + calendarCategory,
       cache: false,
       success: function( msg )
        {
            if(     eval( document.getElementById( '_eventDetails' ) )
                &&  eval( document.getElementById( '_eventContents' ) ) )
            {
                if( document.getElementById( '_eventDetails' ).style.display == 'block' )
                    scrollBackUp() ;
                document.getElementById( '_eventDetails' ).style.display = 'none' ;
                document.getElementById( '_eventContents' ).style.display = 'block' ;
                document.getElementById( '_eventContents' ).innerHTML = msg ;
            }
        }
     } ) ;
}

function displayEvent( eventID, forDate )
{
    $.ajax( {
       type: "GET",
       url: "EventsDetail.aspx",
       data: "EventID=" + eventID
            + "&ForDate=" + forDate,
       cache: false,
       success: function( msg )
        {
            if(     eval( document.getElementById( '_eventDetails' ) )
                &&  eval( document.getElementById( '_eventContents' ) ) )
            {
                scrollBackUp() ;
                document.getElementById( '_eventContents' ).style.display = 'none' ;
                document.getElementById( '_eventDetails' ).style.display = 'block' ;
                document.getElementById( '_eventDetails' ).innerHTML = msg ;
            }
        }
     } ) ;
}

function backToEvents()
{
    if(     eval( document.getElementById( '_eventDetails' ) )
        &&  eval( document.getElementById( '_eventContents' ) ) )
    {
        scrollBackUp() ;
        document.getElementById( '_eventDetails' ).style.display = 'none' ;
        document.getElementById( '_eventContents' ).style.display = 'block' ;
    }
}

function scrollBackUp()
{
    if( f_scrollTop() > 244 )
        $.scrollTo( { top: '244px', left: '+=0px' }, 400 ) ;
}

function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	) ;
}

function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0 ;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel ;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result ;
}
