// JavaScript - event calendar functions

// Activate the widget (based on the jQueryUI datepicker, heavily modified
function initCal2() {
	$(".calendar-widget").datepicker({ 
		minDate: "0m" , maxDate: "+6m",
		onChangeMonthYear: myChangeMonthYear
	});
	initMonthTips(gToday.getMonth(),gToday.getFullYear()); //loads events
};

addEvent(window, 'load', initCal2);

// Activate the BT tooltip plugin
function initCaltip(yy,mm,dd,n) {
  $('#caltip'+dd).bt({
      positions: ['left'],
      contentSelector: "$('.event"+yy+"-"+mm+"-"+dd+"-"+n+"')", /*hidden div*/
      trigger: 'click',
      width: 248,
	  closeWhenOthersOpen: true,
	  clickAnywhereToClose: false, 
      spikeLength: 14,
      spikeGirth: 14,
      padding: 0,
      cornerRadius: 6,
      fill: '#FFF',
      strokeStyle: '#80b5b9',
      strokeWidth: 1
    });
};

// Activate dates for a given month
function initMonthTips(mm,yy) {
	var dd; var n=0; var yyear = yy.toString();
	$('#dyndata0').html(""); // keep only 1 month at a time
	$('#dyndata1').html(""); 
	//alert("debug: initializing calendar for "+(mm+1)+"/"+yy);
	if (mm == gToday.getMonth()) {
		for (dd=gToday.getDate();dd<=31;dd++) {
		    if ( evtarray[yyear][mm][dd].length > 0) {
			    initEventPane0(yyear,mm,dd,n,evtarray[yyear][mm][dd].length);
			    $('#caltip'+dd).addClass("target"); // needed by BT
			    //ui-datepicker-unselectable - set by default, so to make clickable:
			    $('#caltip'+dd).parent().removeClass("ui-datepicker-unselectable");
			    if (n==0) initCaltip(yyear,mm,dd,n); // init popup (only once per date)
			}
		}
	} else {
		for (dd=1;dd<=31;dd++) {
		    if ( evtarray[yyear][mm][dd].length > 0) {
			    initEventPane0(yyear,mm,dd,n,evtarray[yyear][mm][dd].length);
			    $('#caltip'+dd).addClass("target"); // needed by BT
			    //ui-datepicker-unselectable - set by default, so to make clickable:
			    $('#caltip'+dd).parent().removeClass("ui-datepicker-unselectable");
			    if (n==0) initCaltip(yyear,mm,dd,n); // init popup (only once per date)
			}
		}
	}
};

// Dynamically write hidden data divs for popups
function initEventPane0(yy,mm,dd,n,nlen){
	n=0; // this for the first pane only, run "once a month"
	var yyear = yy.toString();
	if ( evtarray[yyear][mm][dd].length < 1) return;
	var evtid = "event"+yyear+"-"+mm+"-"+dd+"-";
	var popstring = evtarray[yyear][mm][dd][n].pophtml;
	var linkstring = evtarray[yyear][mm][dd][n].linkhtml;
	
	var divxhtml = '<div class="example '+evtid+n+'"><div class="hider"><a href="javascript:void(closeTip('+dd+'));" class="tooltip close"><img src="/sites/Emerson/resources/images/close-grey.gif" alt="close" /></a><div style="clear:both"></div>';
	divxhtml += '<div class="popContent">'+popstring+'</div>';
	divxhtml += '<div class="subcolumns pagination"><div class="c50l">'+linkstring+'</div><div class="c50r right"><table><tr><td><img src="/sites/Emerson/resources/images/nav/';
	if (n==0) divxhtml += 'pagination-inactive-l.gif" alt="" />';
	else divxhtml += 'pagination-l.gif" alt="&lt;" class="prev_event" onclick="updateEventPane(\''+evtid+n+'\',\''+evtid+(n-1)+'\')" />';
	divxhtml += '</td><td valign="middle">&nbsp;&nbsp;<strong>'+(n+1)+'</strong> of '+nlen+'&nbsp;&nbsp;</td><td><img src="/sites/Emerson/resources/images/nav/';
	if (n == (nlen-1)) divxhtml += 'pagination-inactive-r.gif" alt="" />';
	else divxhtml += 'pagination-r.gif" alt="&gt;" class="next_event" onclick="updateEventPane(\''+evtid+n+'\',\''+evtid+(n+1)+'\')" />';
	divxhtml += '</td></tr></table></div><div style="clear:both"></div></div></div></div>';
	$('#dyndata0').append(divxhtml);
};

// this one for panes 2 thru N, run on click of a day
function initEventPanes(yy,mm,dd,n,nlen){
	if (n==0) return; // use initEventPane0 instead
	var yyear = yy.toString();
	if ( evtarray[yyear][mm][dd].length < 1) return;
	var evtid = "event"+yyear+"-"+mm+"-"+dd+"-";
	var popstring = evtarray[yyear][mm][dd][n].pophtml;
	var linkstring = evtarray[yyear][mm][dd][n].linkhtml;
	
	var divxhtml = '<div class="example '+evtid+n+' pain"><div class="nohider"><a href="javascript:void(closeTip('+dd+'));" class="tooltip close"><img src="/sites/Emerson/resources/images/close-grey.gif" alt="close" /></a><div style="clear:both"></div>';
	divxhtml += '<div class="popContent">'+popstring+'</div>';
	divxhtml += '<div class="subcolumns pagination"><div class="c50l">'+linkstring+'</div><div class="c50r right"><table><tr><td><img src="/sites/Emerson/resources/images/nav/';
	if (n==0) divxhtml += 'pagination-inactive-l.gif" alt="" />';
	else divxhtml += 'pagination-l.gif" alt="&lt;" class="prev_event" onclick="updateEventPane(\''+evtid+n+'\',\''+evtid+(n-1)+'\')" />';
	divxhtml += '</td><td valign="middle">&nbsp;&nbsp;<strong>'+(n+1)+'</strong> of '+nlen+'&nbsp;&nbsp;</td><td><img src="/sites/Emerson/resources/images/nav/';
	if (n == (nlen-1)) divxhtml += 'pagination-inactive-r.gif" alt="" />';
	else divxhtml += 'pagination-r.gif" alt="&gt;" class="next_event" onclick="updateEventPane(\''+evtid+n+'\',\''+evtid+(n+1)+'\')" />';
	divxhtml += '</td></tr></table></div><div style="clear:both"></div></div></div></div>';
	$('#dyndata1').append(divxhtml);
};

// When the calendar month changes, need to reload things
var clkday=0; // track last day clicked
function beforeChangeMonthYear(){
	if (clkday>0) closeTip(clkday); // close popup
	clkday=0;
};
function myChangeMonthYear(year, month, inst) { 
	initMonthTips(month-1, year); //load new month
};

function closeTip(n) {
	$('#caltip'+n).btOff();
	clkday=0;
	$('.hider').show();
};

function _myDoClick(year, month, day){
	$('.hider').show();
	$('#dyndata1').html("");
	clkday = day; //track last day clicked
	var nlen = evtarray[year.toString()][month-1][day].length;
	for (n=1;n<nlen;n++){
		initEventPanes(year,month-1,day,n,nlen);
	}
	$('.bt-wrapper .hider').show();
};

function updateEventPane(odiv,ndiv){
	odiv = "."+odiv; ndiv = "."+ndiv; // selectors
	if ( !($(ndiv).length) ) return;
	
	// load/show the "new" div (ndiv), then hide the "old" div (odiv)
	if (ndiv.charAt(odiv.length-1) == "0" && odiv.charAt(ndiv.length-2) == "-") {
		$(ndiv+' .hider').show(); //original (first) div is a special case
	} else {
		$(ndiv).show(); // try first
		$('.bt-content').prepend( $(ndiv) );
	}
	if (odiv.charAt(odiv.length-1) == "0" && odiv.charAt(odiv.length-2) == "-") {
		$(odiv+' .hider').hide(); // hides inner content of first div
	} else {
		$(odiv).hide(); 
	}
};

