function goBack() {
    this.window.history.go(-1);
}

function advSearchFocus(obj) {
    if (obj.value == "Keyword...") {
        obj.value = "";
    }
}

function advSearchSendForm(obj) {
    advSearchFocus(obj.searchString);
    obj.submit();
}

function fncallback(day, days) {
    //alert('day:'+day);
}

var events = [];
var eventIndex = [];

function createIndex() {
    for (var i = 0; i < events.length; i++) {
        var startDate = events[i].startDate;
        var endDate = events[i].endDate;

        //array to hold dates in the range
        var datesRange = new Array();
        datesRange = createDateRangeArray(startDate, endDate)

        //add to eventIndex if not already present
        for (j = 0; j < datesRange.length; j++) {
            var id = datesRange[j];

            //alert(id);
            if (!eventIndex[id]) {
                eventIndex[id] = new Array();
            }
            eventIndex[id].push(events[i]);
        }
    }
}

function createDateRangeArray(startDate, endDate) {
    aryRange = new Array();

    //Set endDate as StartDate if empty
    if (endDate == '') {
        endDate = startDate;
    }

    iStart = new Date(startDate.substr(0, 4), startDate.substr(5, 2) - 1, startDate.substr(8, 2));
    iEnd = new Date(endDate.substr(0, 4), endDate.substr(5, 2) - 1, endDate.substr(8, 2));

    while (iStart <= iEnd) {
        aryRange.push(iStart);
        iStart = new Date(iStart - -24 * 60 * 60 * 1000); // add 24 hours
    }
    return aryRange;
}

function eventInDay(day) {
    //Get calendar date
    var calDay = 'd' + day.getFullYear() + '' + formatNum(day.getMonth() + 1) + '' + formatNum(day.getDate());

    if (eventIndex[day]) {
        return true;
    }
    return false;
}

function mouseEvents(eventObj, day, days) {
    if (eventObj.type == 'mouseover') {
        var evt;
        if (eventObj.target.id == eventObj.target.parentNode.id + '_e') {
            // eventObj is the popup div
            evt = $('#' + eventObj.target.id);
        }
        else if (eventObj.target.className == "day") {
            var id = eventObj.target.id + '_e';
            evt = $('#' + id);
            if (evt.length == 0) {
                var dayEvents = eventIndex[day];

                $('#' + eventObj.target.id).append('<div id="' + id + '" class="eventPopup" ></div>');
                evt = $('#' + id);
                //evt.append('<ul></ul>');
                for (var i = 0; i < dayEvents.length; i++) {
                    //create popup 
                    evt.append('<div><p> - <a href="/goto/events/?contentId=' + dayEvents[i].contentId + '">' + dayEvents[i].title + ' ' + dayEvents[i].eventtime + '</a></p></div>');
                }
                //handle mouseover and mouseout event 'id' is refering to the popup
                addHoverHide(eventObj.target.id, id);
            }
        }

        if (evt) {
            $('.eventPopup').hide();
            evt.show();
        }
    }
    return true;
}

function addHoverHide(linkClass, layerId) {
    var t;
    //mouseover
    $("#" + linkClass).hover(
        function() { clearTimeout(t); },
        function() { t = setTimeout(function() { $("#" + layerId).hide() }, 500); }
    );

    //mouseout
    $("#" + layerId).hover(
        function() { clearTimeout(t); },
        function() { t = setTimeout(function() { $("#" + layerId).hide() }, 500); }
    );
}

function formatNum(num) {
    var mynum = num * 1;
    var retVal = mynum < 10 ? '0' : '';
    return (retVal + mynum)
}


$(document).ready(
	function() {
	    $(".displayTooltip").tooltip(
			{
			    track: true,
			    delay: 0,
			    showURL: false,
			    opacity: 0.85,
			    showBody: " - ",
			    fade: 250
			}
		);

	    $('#cal').jCal({
	        day: new Date(),
	        days: 0,
	        showMonths: 1,
	        monthSelect: true,
	        dayOffset: 1, //start week on Monday
	        dow: ['M', 'T', 'W', 'T', 'F', 'S', 'S'], //to reflect dayOffset 
	        dCheck: eventInDay,
	        callback: fncallback,
	        mouseevent: mouseEvents
	    });
	}
);
