
var PageURL='';
var StartOfWeek=0;
var ViewType='week';
var today=new Date();
var curDate=new Date();
var calMonth=curDate.getMonth()+1; var calYear=getYear(curDate);

var MonthNames = Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December')
var DayLabels = Array('S','M', 'T', 'W', 'TH', 'F', 'S');
var DMS = 1000*60*60*24;

function initCalendar() { 
  today=new Date(today); 
  writeCalendar();
}


function changeState() { ViewType='loc'; goLink(); }
function changeCat() { ViewType='cat'; goLink(); }
function getCat() { return(document.forms.calendarForm.eventtype.value);  }
function getLoc() { return(document.forms.calendarForm.state.value);  }

function setCal(ds,cm,cy) { curDate=new Date(ds); if (ViewType=='month'){cm=curDate.getMonth()+1; cy=getYear(curDate);}  calMonth=cm; calYear=cy; }
function bumpMonth(n) { var t=calYear*12 + calMonth + n; calMonth=((t-1) % 12) + 1; calYear=(t-calMonth)/12; }
function moveMonth(n) { bumpMonth(n); writeCalendar(); }
function moveYear(n) { calYear+=n; writeCalendar(); }
function selectDate(d) { goLink(d); }
function selectMonth(m) { var a=m.split('/'); calMonth=a[0]; calYear=a[1]; goLink(a[0]+'/1/'+a[1]); }

function selectView(v) { ViewType=v; goLink(); }
function goLink(d) { if (d==null) d=getMDY(curDate); window.location=PageURL + '?v='+ViewType+'&d='+d+'&cm='+calMonth+'/'+calYear + ((ViewType=='cat')?('&c='+getCat()):'') + ((ViewType=='loc')?('&l='+getLoc()):''); }


function writeCalendar() {

  build='';  
  if (ViewType=='week') { var build = buildCalendar(); }
  if (ViewType=='month') { var build=buildMonths(); }

  var span=document.getElementById("calendarnav");
  span.innerHTML = build;
  //alert(span);
  //alert(build);
}

function buildCalendar(plus) {
if (plus) bumpMonth(plus);
var y=calYear; var m=calMonth;
if (plus) bumpMonth(0-plus);

var mn=MonthNames[m-1];

var fdom = new Date(m+'/1/'+y);
var fwdom = ((fdom.getDay()-StartOfWeek) + 7) % 7;
var sd = 1-fwdom;
var dim = getDaysInMonth(fdom);
var cdt = curDate.getTime();
var tdt = today.getTime();

var build=''
+ '<table border="0" cellpadding="0" cellspacing="0">'
+ '<tr>'
+ ((plus)?'':'<td bgcolor="#CCCCCC"><div onmousedown="moveMonth(-1)"><img src="/i/calendar/calarrowl.gif" width="15" height="15" alt=""/></div></td>')
+ '<td colspan="'+((plus)?7:5)+'" width="100%" class="monthlabel"><nobr>'+mn+' '+y+'</nobr></td>'
+ ((plus)?'':'<td bgcolor="#CCCCCC" align="right"><div onclick="moveMonth(1);"><img src="/i/calendar/calarrowr.gif" width="15" height="15" border="0" alt=""/></div></td>')
+ '</tr>'


build+='<tr>';
for (k=0; k<7; k++) { build+='<td class="daylabel">'+DayLabels[(k+StartOfWeek)%7]+'</td>'; }
build+='</tr>';


wc=0;
for (j=sd; j<=dim; j+=7) { wc++;
  
  var sw = new Date(m+'/'+ ((j>1)?j:1) +'/'+y);
  var swd = (sw.getDay()-StartOfWeek+7)%7;
  
  var swt = sw.getTime() - (swd*DMS);
  var ewt = swt + (7*DMS);
  var isWeek = ((cdt>=swt)&&(cdt<ewt));
  // isWeek = 0;

  build += '<tr id="weekrow'+wc+'">';
  for (k=0; k<7; k++) {
    var n=j+k; var nok=(((n)>0)&&(n<=(dim)))?(j+k):'';
    d=getDate(m,n,y);
    isDay=(cdt==d.getTime());
    isToday=(tdt==d.getTime());
    var isOn = (isWeek||isDay)?1:0;
    var highlight = (isOn && (nok || (plus&&(n>15)) || ((!plus)&&(n<15))))
    build += '<td'+((isToday)?' id="curday"':'')+' class="day'+((isOn)?'on':'')+'" onclick="'+((isOn)?'//':'')+'selectDate(\''+getMDY(d)+'\')">'+((nok)? n:'')+'</td>';
  }
  build += '</tr>';

}

build += '</table>'
return(build);

}


function buildMonths() {

  var y=calYear; var m=calMonth;
  var cmy = (curDate.getMonth()+1)+'/'+getYear(curDate);

  var today=new Date();
  var sm=today.getMonth()+1;
  var sy=getYear(today);

  var build=''
  // + '<table border="0" cellpadding="0" cellspacing="0">'
  // + '<tr>'
  // + '<td bgcolor="#CCCCCC"><div onmousedown="moveYear(-1)"><img src="/i/calendar/calarrowl.gif" width="15" height="15" alt=""/></div></td>'
  // + '<td width="100%" class="monthlabel"><nobr>'+y+'</nobr></td>'
  // + '<td bgcolor="#CCCCCC" align="right"><div onclick="moveYear(1);"><img src="/i/calendar/calarrowr.gif" width="15" height="15" border="0" alt=""/></div></td>'
  // + '</tr><tr><td height="4"></td></tr></table>'

  
  for (k=0; k<12; k++) {
    var dmy=(sm)+'/'+sy; var isOn=(dmy==cmy);
    build+='<div class="monthbtn'+((isOn)?'on':'')+'" onclick="'+((isOn)?'//':'')+'selectMonth(\''+dmy+'\')">'+MonthNames[sm-1]+' '+sy+'</div>';
    sm++; if (sm>12) { sm-=12; sy++; }
  }
  
  return(build);

}

function getYear(d) { var y=d.getYear(); if (y<1000) y+=1900; return(y); }

function hoverDate(d,n) {  }

function getDaysInMonth(d) { var md=Array(31,28,31,30,31,30,31,31,30,31,30,31); if ((getYear(d) % 4)==0) md[1]=29; return(md[d.getMonth()]); }
function getDate(m,d,y) { return(new Date((new Date(m+'/1/'+y)).getTime()+((d-1)*DMS))); }
function getMDY(d) { return((d.getMonth()+1)+'/'+d.getDate()+'/'+getYear(d)); }
function addDays(d,n) { var t=d.getTime()+(n*DMS); return(new Date(t)); }

function calSearch() {
  var F=document.forms.calendarForm;
  var Q=F.q.value;
  window.location=PageURL + '?v=search&q='+Q;
}
