

//allEvents = {};

eventsByDate = {}
var thisYear = new Date().getFullYear();
for (var i=0; i< 25; i++)
{
    eventsByDate[  (thisYear - 5) + i ] = [];
    for (var j=0; j<12; j++)
    {
        eventsByDate[  (thisYear - 5) + i ][j] = [];
    }
}

function getCalData(year, month, gotoToday)
{
    if (month > 12)
    {
        month = month - 12;
        year++;
    }
    if (month < 1)
    {
        month = 12 + month;
        year--;
    }
    var myURL = 'getEvents.php?year=' + year + '&month=' + month;
    $.get(myURL, function(data) {
        populateLocalCalendar(data);
        if (gotoToday)
            pickDate();
    });
}

function populateLocalCalendar(data)
{
    daData = data;
    now = (+ (new Date()) ) /1000;
    yesterday = now - 24*60*60;
    //yesterday = now - 6*24*60*60;  // FIXME:  change me back...
    nextMonth = now + 30*24*60*60;
    var nextEID=0;
    var jsDate;
    var year;
    var month; //counting from zero
    var dayOfMonth; // counting from zero
    // takes the json data from the server and fills up our local data
    // structures
    for (var i=0; i < data.length; i++)
    {
        // if (data.eid exists)
        allEvents[data[i].eid] = data[i];
        jsDate = new Date(data[i].timestamp*1000);
        year = jsDate.getFullYear();
        month = jsDate.getMonth();  // counting from zero
        dayOfMonth = jsDate.getDate() - 1; // counting from zero
        if (!eventsByDate[year][month][dayOfMonth])
        {
            eventsByDate[year][month][dayOfMonth] = [];
        }
        //if (eventsByDate[year][month][dayOfMonth].indexOf( Number(data[i].eid)) < 0)
        if ($.inArray( Number(data[i].eid), eventsByDate[year][month][dayOfMonth]) < 0)
        {
            eventsByDate[year][month][dayOfMonth].push(Number(data[i].eid));
        }
        populateHighlights(yesterday, nextMonth, data[i], jsDate);
        nextEID = getNextEvent();
        if (nextEID)
        {
            setFrontAd(nextEID);
        }
    }
}

enDays = [ 'Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat' ];
jaDays = [ '日', '月', '火', '水', '木', '金', '土'];
enMonths = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
enOrds = [ 'st', 'nd', 'rd', 'th'];

function formatEnShortDate (jsDate)
{
    var dateStr = '';
    dateStr += enDays[jsDate.getDay()];
    dateStr += ', ';
    dateStr += enMonths[jsDate.getMonth()];
    dateStr += ' ' + jsDate.getDate();
    dateStr += enOrds[ Math.min(3, jsDate.getDate() - 1) ];
    return dateStr;
}

function formatJaShortDate (jsDate)
{
    var dateStr = '';
    dateStr += (jsDate.getMonth() + 1) + '月 ';
    dateStr += jsDate.getDate() + '日 ';
    dateStr += ' (' + jaDays[jsDate.getDay()] + ')';
    return dateStr;
}

function populateHighlights(yesterday, nextMonth, oneEvent, oneEventDate)
{
    if (oneEvent.categories == null) return;
    if (!oneEvent.categories) return;

    var allCategories = {a:"ArtComedy", m:"Music", b:"PCCBusiness", f:"FoodEvents"};
    if ((yesterday < oneEvent.timestamp) && (nextMonth > oneEvent.timestamp))
    {
        for (oneCategory in allCategories)
        {
            if ($.inArray(oneCategory, oneEvent.categories) > -1)
            {
                if (language != 'en')
                {
                    var toInsert = '<li>';
                    toInsert += formatJaShortDate(oneEventDate);
                    toInsert += ' - ';
                    toInsert += oneEvent.titleJA;
                    toInsert += '</li>';
                }
                else
                {
                    var toInsert = '<li>';
                    toInsert += formatEnShortDate(oneEventDate);
                    toInsert += ' - ';
                    toInsert += oneEvent.title;
                    toInsert += '</li>';
                }
                var selector = '#' + allCategories[oneCategory] + ' .rightBigPane ol';
                $(selector)[0].innerHTML += toInsert;
            }
        }
    }
}

function formatTime(eventTime)
{
//    return eventTime.toTimeString().replace(/:.. GMT.*$/, '');
    var hour = eventTime.getHours();
    var minute = eventTime.getMinutes();
    if (hour > 12) {
        hour -= 12;
        m = "pm";
    }
    else {
        m = "am";
    }
    if (minute < 10) {
        minute = "0" + minute;
    }
    return hour + ":" + minute + " " + m;
}

//daDate = '';
function pickDate(data)
{
    if (!data) data = new Date();
    var year = data.getFullYear();
    var month = data.getMonth();;  //counting from zero
    var dayOfMonth = data.getDate() - 1;  //counting from zero
    var dayOfWeek = data.getDay();

    var eventIds = eventsByDate[year][month][dayOfMonth];
    var eventTime;
    var eventTimeString;


    //var dayLang = dayOfWeek + language;
    var fullString = "";

    if (language == "ja")
    {
        switch (dayOfWeek)
        {
          case 0:
            fullString = "<h2>ブランチ: 12-3:30pm (ラストオーダー 3:00pm)<br>ブランチイベント受付中</h2><br>";
            break;
          case 1:
            fullString = "<h3> 月曜日はお休みです </h3>";
            break;
          case 3:
            fullString = "<h2>ランチ: 12-3pm (ラストオーダー 2:30pm)<br>ランチイベント受付中</h2><br>";
          case 4:
            fullString = "<h2>ランチ: 12-3pm (ラストオーダー 2:30pm)<br>ランチイベント受付中</h2><br>";
          case 5:
            fullString = "<h2>ランチ: 12-3pm (ラストオーダー 2:30pm)<br>ランチイベント受付中</h2><br>";
          default:
            fullString += "<h3>~ ドアは午後5時から開きます ~</h3><br/>";
        }
    }
    else
    {
        switch (dayOfWeek)
        {
          case 1:
            fullString = "<h3> Closed on Mondays </h3>";
            break;
          case 0:
            fullString = "<h2>Brunch: 12-3:30pm (order til 3:00pm)<br>Available for event bookings.</h2><br>";
          case 3:
            fullString = "<h2>Lunch: 12-3pm (order til 2:30pm)<br>Available for event bookings.</h2><br>";
          case 4:
            fullString = "<h2>Lunch: 12-3pm (order til 2:30pm)<br>Available for event bookings.</h2><br>";
          case 5:
            fullString = "<h2>Lunch: 12-3pm (order til 2:30pm)<br>Available for event bookings.</h2><br>";
          default:
            fullString += "<h3>~ Doors open at 5pm ~</h3><br/>";
        }
    }


    // We are closed on Monday:  
/*    if (dayOfWeek != 1) {
        if (language == "ja")
            var fullString = "<h3>~ ドアは午後5時から開きます ~</h3><br/>";
        else
            var fullString = "<h3>~ Doors open at 5pm ~</h3><br/>";
    } else {
        if (language == "ja")
            var fullString = "<h3> 月曜日はお休みです </h3>";
        else
            var fullString = "<h3> Closed on Mondays </h3>";
    }*/
    if (eventIds && eventIds.length)
    {
        for (var i=0; i<eventIds.length; i++)
        {
            if (language == "ja")
            {
                var title = allEvents[ eventIds[i] ].titleJA;
                var subtitle = allEvents[ eventIds[i] ].subtitleJA;
                var description = allEvents[ eventIds[i] ].descriptionJA;
            }
            else
            {
                var title = allEvents[ eventIds[i] ].title;
                var subtitle = allEvents[ eventIds[i] ].subtitle;
                var description = allEvents[ eventIds[i] ].description;
            }
//            eventTime = new Date(allEvents[eventIds[i]].timestamp * 1000);
//            eventTimeString = formatTime(eventTime);
            fullString += '<span class="eid">(eid: ' + eventIds[i] + ")</span>";
            if (title) {
                //fullString += "<h4>" + eventTimeString + ' - ' + title + "</h4>\n";
                fullString += "<h4>" + title + "</h4>\n";
            }
            if (subtitle)
                fullString += '<span class="subtitle">' + subtitle + "</span><br>\n";
            if (description)
                fullString += '<span class="eventDesc">' + description + "</span>\n";
            fullString += "<br/><br/>\n";
        }
    }
    
    $('#eventDetails').html(fullString);
}


