// This file contains java script for the Church Hall calendar.

//"stkchurchnorth,St.&nbsp;Keverne Church North Side,D.J.S.,,jpg,3",
var skch_pageName="churchhall/calendar";
var calendar_bpd=new Array(
"roskillyscafe,Roskilly&#096;s Cafe,D.J.S.,,jpg,3",
"porthoustock,View of Porthoustock,D.J.S.,,jpg,3",
"stkchurchnorth,St.&nbsp;Keverne Church from the Churchyard,D.J.S.,,jpg,3",
"oldboat,New use for Old Boat,D.J.S.,,jpg,3",
"rosenithon2,Rosenithon looking east,D.J.S.,,jpg,3",
"waterwheel,Water Wheel at the Lower Ponds,D.J.S.,,jpg,3",
"godrevy,Godrevy Beach&#044; Rosenithon,D.J.S.,,jpg,3",
"trevalsoe1,Cottage at Trevalsoe,D.J.S.,,jpg,3",
"tregaminion,Farm at Tregaminion,D.J.S.,,jpg,3",
"porthallowbeach,Boats on Porthallow Beach,D.J.S.,,jpg,3",
"coverack,North Corner&#044; Coverack,D.J.S.,,jpg,3",
"playingfield,St.&nbsp;Keverne Playing Fields,D.J.S.,,jpg,3",
"");

var skch_basedate=946684800000;

var skch_monthNames=new Array(
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December");

var skch_dayNames=new Array(
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat");

var skch_minyear=2007;
var skch_maxyear=2020;
var skch_monthnum=-1;
var skch_yearnum=-1;
var skch_selectedday=0;

var skch_calendarWindow=null;

var skch_datename="skch_datecookie";

function skch_ResetCalendar()
{
  djs_setCookie( skch_datename, "-1 -1 -1 -1");
  skch_monthnum=skch_yearnum=-1;
  skch_selectedday=0;
}

function skch_InitMonth()
{
  var skch_brdate=new Date;
  skch_brdate.setDate( 1);
  var skch_cookiestr=djs_getCookie( skch_datename);
  skch_monthnum=skch_yearnum=-1;
  if( skch_cookiestr!=null)
  {
    var tmpdate=skch_cookiestr.split( ' ');
    var ynum=tmpdate[0].valueOf(),
        mnum=tmpdate[1].valueOf();

    if( ynum>=0 && mnum>=0)
    {
      skch_brdate.setYear( ynum);
      skch_brdate.setMonth( mnum);
    }
  }

  skch_monthnum=skch_brdate.getMonth();
  skch_yearnum=skch_brdate.getFullYear();
  skch_monthintstr=djs_PadIntStr( skch_monthnum);
  skch_selectedday=0;
  return true;
}

function skch_ShowMonthYear()
{
  document.write( skch_monthNames[skch_monthnum] + ' - ' + skch_yearnum.toString());
  return true;
}

function skch_ShowMonthMenu()
{
  var minddf=skch_startdate.split( '/'),
      maxddf=skch_enddate.split( '/');
  var minyear=minddf[2].valueOf(),
      maxyear=maxddf[2].valueOf();
  var prevyear=skch_yearnum-1,
      nextyear=skch_yearnum+1;
  document.writeln( '<li>');
  if( prevyear>=minyear)
  {
    document.write( '<a href="javascript:skch_StepYear( -1);">---- ' + prevyear + '</a>');
  }
  else
  {
    document.write( '---------------');
  }
  document.write( '</li>');
  for( j=0; j<12; j++)
  {
    document.writeln( '<li>');
    if( j==skch_monthnum)
    {
      document.write( skch_monthNames[j]);
    }
    else
    {
      document.write( '<a href="javascript:skch_GotoMonth(' + j + ');">' + skch_monthNames[j] + '</a>');
    }
    document.write( '</li>');
  }
  document.writeln( '<li>');
  if( nextyear<=maxyear)
  {
    document.write( '<a href="javascript:skch_StepYear( 1);">---- ' + nextyear + '</a>');
  }
  else
  {
    document.write( '---------------');
  }
  document.write( '</li>');
  return true;
}

function skch_ShowPicture()
{
  var pictelems=calendar_bpd[skch_monthnum].split(',');
  skch_pictName=pictelems[0];
  skch_caption=pictelems[1];
  if( skch_pictName=="")
  {
    skch_pictName="stkchurch";
    skch_caption="St.&nbsp;Keverne Church";
  }
  iname=pictdir + '/' + skch_pictName + '.jpg';
  djs_LinkImage( iname, skch_caption, 'javascript:djs_ShowBigPicture(' + skch_monthnum + ');');
  return true;
}

function skch_OpenCalendar()
{
  var postxt=",width=1000,height=700";
  if( screen)
  {
    var ww=1000,
        hh=700;
    if( screen.width<ww) ww=screen.width-20;
    if( screen.height<hh) hh=screen.height-55;
    var xpos=(screen.width-ww)/2-5,
        ypos=(screen.height-hh)/2-25;
    postxt=",width="+ww+",height="+hh+",left="+xpos+",top="+ypos;
  }

  skch_calendarWindow=window.open( "./calendar.html", "calWin", "scrollbars=yes,status=yes,resizable=yes"+postxt);
}

function skch_CloseCalendar()
{
  if( skch_calendarWindow!=null && !skch_calendarWindow.closed)
  {
    skch_calendarWindow.close();
  }
}

function skch_GotoMonth( mnum)
{
  skch_monthnum=mnum;
  djs_setCookie( skch_datename, skch_yearnum + " " + djs_PadIntStr( skch_monthnum) + " 0 -1");
  window.location="./calendar.html";
  return true;
}

function skch_StepYear( step)
{
  ynum=skch_yearnum+step;
  mnum=skch_monthnum;
  if( ynum>=skch_minyear && ynum<=skch_maxyear)
  {
    skch_yearnum=ynum;
    if( step<0)
    {
      mnum=11;
    }
    else
    {
      mnum=0;
    }
  }
  skch_GotoMonth( mnum);
  return true;
}

function skch_FindEntry( enbase, ds, de)
{
  var entryno=-1,
      ll=skch_diaryentries.length-1;
  if( enbase>=0)
  {
    for( k=enbase; entryno<0 && k<ll; k++)
    {
      var dd=parseInt(skch_diaryentries[k].substring( 0,8),10);
      if( dd>=de)
      {
        ll=0;
      }
      else if( dd>=ds)
      {
        entryno=k;
      }
    }
  }
  return entryno;
}

function skch_DrawCalendarEntry( eno, ds, de, mode)
{
  var en=0,
      ecnt=0,
      pnum=0,
      fcnt=0,
      minfcnt=0;
  while( en>=0)
  {
    var fields=skch_diaryentries[eno+en].split(',');
    var dd=parseInt( fields[0], 10);
    if( dd>=de)
    {
      en=-1;
    }
    else
    {
      var st=dd-ds;
          bmde=parseInt( fields[2], 10);
      pnum=Math.floor( st/360)-1;
      if( pnum<0) pnum=0;
      if( pnum>2) pnum=2;
      fcnt=pnum-ecnt;
      if( fcnt<minfcnt) fcnt=minfcnt
      for( j=0; j<fcnt; j++)
      {
        document.write( '<br>');
      }
      ecnt=pnum;
      minfcnt=1;

      if( bmde)
      {
        document.write( "<span class='calprov'>");
      }
      if( mode==4)
      {
        var et=st+parseInt( fields[1], 10);
        document.write( djs_PadIntStr(st/60) + ':' + djs_PadIntStr(st%60) + ' ');
        document.write( djs_PadIntStr(et/60) + ':' + djs_PadIntStr(et%60) + ' ');
      }
      document.write( fields[mode]);
      if( bmde)
      {
        document.write( '</span>');
      }
      en++;
    }
  }
}

function skch_DrawCalendarDay( mbase, enbase, moday, wdn, weekend)
{
  var de=mbase+(moday*1440);
  var ds=de-1440,
      entryno=skch_FindEntry( enbase, ds, de);
  var tmpstr='calworkday';
  if( weekend) tmpstr='calwendday';
  document.write( "<td class='" + tmpstr + "'>");
  document.write( "<span class='calwday'>" + skch_dayNames[wdn] + "</span><br>" + "<span class='calmday'>" + moday + "</span>");
  document.write( '</td>');
  document.write( "<td class='calentry'>");
  if( entryno>=0)
  {
    skch_DrawCalendarEntry( entryno, ds, de, 3);
  }
  document.write( '</td>');
  document.write( "<td class='caltime'>");
  if( entryno>=0)
  {
    skch_DrawCalendarEntry( entryno, ds, de, 4);
  }
  document.write( '</td>');
  return true;
}

function skch_DrawCalendarRow( mbase, enbase, wkday, moday)
{
  var wdn=wkday%7;
  var weekend=( wdn==0 || wdn==6);
  if( weekend)
  {
    document.write( "<tr class='calwendrow'>");
  }
  else
  {
    document.write( "<tr>");
  }
  skch_DrawCalendarDay( mbase, enbase, moday, wdn, weekend);
  document.write( '</tr>');
  return true;
}

function skch_DrawCalendar()
{
  var skch_brdate=new Date;
  skch_brdate.setUTCDate(1);
  skch_brdate.setUTCHours(0);
  skch_brdate.setUTCMinutes(0);
  skch_brdate.setUTCSeconds(0);
  skch_brdate.setUTCMilliseconds(0);
  skch_brdate.setUTCFullYear(skch_yearnum);
  skch_brdate.setUTCMonth(skch_monthnum);

  var mbase=(skch_brdate.valueOf()-skch_basedate)/60000,
      wkday=skch_brdate.getDay();
      dinm=djs_DaysInMonth( skch_monthnum, skch_yearnum);
  var enbase=skch_FindEntry( 0, mbase, mbase+1440*dinm);
  for( i=1; i<=dinm; i++)
  {
     skch_DrawCalendarRow( mbase, enbase, wkday, i);
     wkday++;
  }
  return true;
}

