// JavaScript Document
// Javascript required for Events Page
// Phil Whitehurst
// Oct 2009


// Global Variables

var i = 0; 
var pageCount = 0;
var rows = new Object;
var eventDates = new Array();
var row_place = 2;

var tds =  new Array();


// Tabbed panel widget
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");

// Attached click event listners for all, jan, feb, mar filters etc.
Spry.$$("#all").addEventListener('click', function(e){ Events.filter(null) }, false);
Spry.$$("#jan").addEventListener('click', function(e){ FiltbyMonth('Jan') }, false);
Spry.$$("#feb").addEventListener('click', function(e){ FiltbyMonth('Feb') }, false);
Spry.$$("#mar").addEventListener('click', function(e){ FiltbyMonth('Mar') }, false);
Spry.$$("#apr").addEventListener('click', function(e){ FiltbyMonth('Apr') }, false);
Spry.$$("#may").addEventListener('click', function(e){ FiltbyMonth('May') }, false);
Spry.$$("#jun").addEventListener('click', function(e){ FiltbyMonth('Jun') }, false);
Spry.$$("#jul").addEventListener('click', function(e){ FiltbyMonth('Jul') }, false);
Spry.$$("#aug").addEventListener('click', function(e){ FiltbyMonth('Aug') }, false);
Spry.$$("#sep").addEventListener('click', function(e){ FiltbyMonth('Sep') }, false);
Spry.$$("#oct").addEventListener('click', function(e){ FiltbyMonth('Oct') }, false);
Spry.$$("#nov").addEventListener('click', function(e){ FiltbyMonth('Nov') }, false);
Spry.$$("#dec").addEventListener('click', function(e){ FiltbyMonth('Dec') }, false);
// Show this years or last years events 
Spry.$$("#show").addEventListener('click', function(e){ EventsList('show') }, false);
Spry.$$("#hide").addEventListener('click', function(e){ EventsList('hide') }, false);

// Activate collapsible panel once built

var myObserver1 = { onPostUpdate: function(notifier, data) {CollapsibleGroup();} };
Spry.Data.Region.addObserver("CollapseGroup", myObserver1);


function CollapsibleGroup()
{
	
	
	var CollapseGroup = new Spry.Widget.CollapsiblePanelGroup("CollapseGroup", { contentIsOpen: false });
	CollapseGroup.openPanel(2);
	
	// Show and hide all events details - click handlers
    Spry.$$("#dshow").addEventListener('click', function(e){CollapseGroup.openAllPanels()}, false);
    Spry.$$("#dhide").addEventListener('click', function(e){CollapseGroup.closeAllPanels()}, false);	
}

   
 
// BeginWebWidget YUI_Calendar: yuicalendar1 


  YAHOO.namespace("cal");

  YAHOO.cal.init = function() {
    
    YAHOO.cal.yuicalendar1 = new YAHOO.widget.CalendarGroup("yuicalendar1","yuical1group", {PAGES:12,START_WEEKDAY:1});  
    // The following event subscribers demonstrate how to handle
    // YUI Calendar events, specifically when a date cell is 
    // selected and when it is unselected.
    //
    // See: http://developer.yahoo.com/yui/calendar/ for more 
    // information on the YUI Calendar's configurations and 
    // events.
    //
    // The YUI Calendar API cheatsheet can be found at:
    // http://yuiblog.com/assets/pdf/cheatsheets/calendar.pdf
    //
    //--- begin event subscribers ---//
    //YAHOO.cal.yuicalendar1.selectEvent.subscribe(selectHandler, yuicalendar1, true);
    //YAHOO.cal.yuicalendar1.deselectEvent.subscribe(deselectHandler, yuicalendar1, true);
	
    //--- end event subscribers ---//
	// Calendar starts on a Monday
	YAHOO.cal.yuicalendar1.cfg.setProperty("start_weekday", "1");
    //YAHOO.cal.yuicalendar1.addRenderer("YAHOO.cal.yuicalendar1.today", YAHOO.cal.yuicalendar1.renderCellStyleHighlight1);
	 		
   	//YAHOO.cal.yuicalendar1.render();
	
  }
  
    YAHOO.cal.init();
  function renderHandler()
  {
	 // put code here
  }
  
  function addTipFast(c)
  {
	  // reference to calendar
	  
	  var calDate = new Date();
	  var cal = YAHOO.cal.yuicalendar1.pages[c];
	  var calID = cal.id;
	  var calDates = cal.cellDates
	  var selector = 'table#' + calID + ' td[class~="calcell"]'
	  // return array reference to table cells that make up calendar
	     tds = Spry.$$(selector);
	  // Search for match on event table
	    for (var r=0;r<calDates.length;r++)
	  {
		  tYear = calDates[r][0];
		  tMonth = calDates[r][1];
		  if (tMonth == 0)
		  {
			  tMonth = 12;}
			else
			{
				tMonth = tMonth - 1;
			}
		  tDate = calDates[r][2];
		  
		  calDate.setFullYear(tYear,tMonth,tDate);
		  
		  nDate = todayFormat(calDate);
		  
		  
		  if (eventDates[nDate] > -1)
		  {
			  toolid = 't' + eventDates[nDate];
		      
			  
			  var myele = new Array;		  
			  myele[0] = tds[r];
			 			  
			  var t = new Spry.Widget.Tooltip(toolid,myele,{offsetY:25});
		  }
		  
	  }
	  	  
	 
  }
	
 	
  function pad(v){
	return (v<10?"0"+v:v);
}

  function deselectHandler(event, data) {
  // The JavaScript function subscribed to yuicalendar1.  It is called when
  // a selected date cell is unselected.
  };    
    
   

// EndWebWidget YUI_Calendar: yuicalendar1 

var myObserver2 = new Object;
myObserver2.onPostUpdate = function(notify, data)
{	
	
	
	// Get Spry Data into rows variable
	rows = Events.getData();
	
	// Yahoo YUI stuff
	YAHOO.cal.yuicalendar1.removeRenderers();
	
	for (var i = 2; i < rows.length; i++)
	{
		// Convert in date format range that yui calendar recognises
		var s = new Date(rows[i]["StartDate"]); 
		s = s.getMonth() + 1 + '/' + s.getDate() + '/' + s.getFullYear();
		var e = new Date(rows[i]["EndDate"]); 
		e = e.getMonth() + 1 + '/' + e.getDate() + '/' + e.getFullYear();
		var cald = s + '-' + e;
		// Add highlight to range of cells				
		
		YAHOO.cal.yuicalendar1.addRenderer(cald, YAHOO.cal.yuicalendar1.renderCellStyleHighlight1);
	  	// Now add tool tips
		
		
	}
	
	// now render
	
	YAHOO.cal.yuicalendar1.render();
	// Now attach Spry tooltips
	// Build array of contiguous dates based on HMC events
	
	// Now cycle through HMC events   
	 eventDates = [];
	 
	 for (var r=2;r<rows.length;r++)
	  {
		  startDate = new Date(rows[r]["StartDate"]);
		  endDate = new Date(rows[r]["EndDate"]);
		  
		  	  
		  while (startDate <= endDate)
		  {
			  startDatestr = todayFormat(startDate);
		  	  eventDates[startDatestr] = r;
			  startDate.setDate(startDate.getDate() + 1);
		  }
		
	  }
	  
	  
	   for (var c=0;c<=11;c++)
		   {
		     
			 addTipFast(c);
			 			 			 
			}
		
		// add page event observer
	YAHOO.cal.yuicalendar1.changePageEvent.subscribe(pageHandler, yuicalendar1, true);	 
}

function pageHandler()
{
	pageCount += 1;
	if (pageCount === 12)
	{
		for (var c=0;c<=11;c++)
		   {
		     
			 addTipFast(c);
			 			 			 
			}
		pageCount = 0;	
	}
}


Spry.Data.Region.addObserver("tooltips", myObserver2);

//Events.addObserver(myObserver);