// The text below proceeded by // should never be removed.
//
// Calendar (c)2011.  Release 2.0
//
// DISCLAIMER OF WARRANTY 
// ----------------------
// This Software is provided on an "AS IS" basis, without warranty of any kind, including without 
// limitation the warranties of merchantability, fitness for a particular purpose and non-infringement. 
// The entire risk as to the quality and performance of the Software is borne by you.  Should the 
// Software prove defective, you alone assume the entire cost of any service and repair. In addition, 
// the security mechanisms implemented by this software have inherent limitations, and you must
// determine that the Software sufficiently meets your requirements. This disclaimer of warranty 
// constitutes an essential part of the agreement. 
// 
// If you do not agree with the statement above or your jurisdictions does not allow exclusions of 
// an implied warranty then DO NOT USE this software.
// 
// This copyright notice must remain intact
// Please contact itilv3@tiscali.co.uk for further information.
//
// Adapted from
// Event Calendar
// Copyright Stephen Chapman, 10th June 2006, 22nd January 2010
// Original code can be found at http://javascript.about.com/library/blevent2.htm 
// This adaptation of the calendar is FREE
// Copyright itilv3, 2011


dayP = '';
monP = '';

var tb = 't'; // top or bottom (t or b)
var headbg = '#cccccc';  // table heading background colour
var todaybg = '#5BABEB'; // current selected date background colour
var todaybg2 = '#28558e'; // current selected date background colour
var textclr = '#ffffff'; // text colour
var linkclr = 'blue'; // link text colour

var noMessage =  ''; // message to display when no entry in array
var bAdvertL =  '<--- Previous Year'; // message to display when no entry in array
var bAdvertR =  'Next Year --->'; // message to display when no entry in array
var iclock = '<object type="application/x-shockwave-flash" data="relog.swf" width="40" height="40"> <param name="movie" value="relog.swf" /> <param name="WMode" value="Transparent" /> </object>';
var dow = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']; 
var moy = ['January','February','March','April','May','June','July','August','September','October','November','December'];var today = new Date();

var dA = new Array(); 
var mA = new Array(); 

// permission is granted to use this javascript provided that the below code is not altered
var pageLoaded = 0; window.onload = function() {pageLoaded = 1;}
var selDate = today.getFullYear()+getmmdd(today.getMonth()+1,today.getDate());
var selDate2 = today.getFullYear()+getmm(today.getMonth()+1);

// This function is copied from http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm
function loadFile(url)
{
   var req = false;
   // branch for native XMLHttpRequest object
   if (window.XMLHttpRequest && !(window.ActiveXObject))
   {
      try { req = new XMLHttpRequest() }
      catch(e) { req = false }
   }
   else // branch for IE/Windows ActiveX version
   {
      if (window.ActiveXObject)
      {
         try { req = new ActiveXObject("Msxml2.XMLHTTP") }
         catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP") }
         catch(e) { req = false }
      }
   }
}

   if(req)
   {
      req.open("GET", url, false);
      req.send("");
      return req.responseText
   }
   return ''
}

function AssignDateList(TheData)
{
   var mySplitRt = TheData.split("\n");
   var x1 = 0;
   var x2 = 0;

   for(i = 0; i < mySplitRt.length; i++)
   {
      mySplitXt = mySplitRt[i].split('\t');
      dA[x1++] = mySplitXt[1]+mySplitXt[2]+mySplitXt[3];
   }

}

function loaded(i) 
{
   var f = "start";
   if (document.getElementById && document.getElementById(i) != null) 
      start(); 
   else if (!pageLoaded) 
      setTimeout('loaded(\''+i+'\','+f+')',100);
}

function monthlength(month,year) 
{
  var dd = new Date(year, month, 0);return dd.getDate();
}

function dspCal(s_yy,s_mm) 
{  
   bw=102;
   cw=14;
   fw=1;

   var s_calendar = new Date();  
   var s_today = s_calendar.getDate(); 
   s_calendar.setDate(1); 

   if (s_yy > 1900) 
      s_calendar.setFullYear(s_yy); 

   if (s_mm > 0) 
      s_calendar.setMonth(s_mm - 1); 

   var s_yy = s_year = s_calendar.getFullYear(); 
   var s_month = s_calendar.getMonth(); 
   s_calendar.setDate(s_today); 
   var weekday = s_calendar.getDay(); 
   var daysInMonth = monthlength(s_month+1,s_year); 
   var hilite_start = '<td width="' + cw + '" height="60" style="background:' + todaybg + '" align="center"><b>'; 
   var hilite2_start = '<td width="' + cw + '" height="60" style="background:' + todaybg2 + '" align="center"><b>'; 
   var td_start = '<td width="' + cw + '" align="center">'; 
   var fst = '<font size="' + fw +'">'; 
   var fst2 = '</font>'; 
   var cal = '<div id="cal"><div style="border:1pt solid #cccccc;width:' + bw + 'px">';
   
   cal += '<table border="0" cellspacing="0" cellpadding="1" align="center" width="' + bw + '">';
   cal += '<tr><td colspan="7" style="background:' + headbg + '" align="center">';
   cal += '<b><center>' + fst + moy[s_month]  + ' ' + s_year +  fst2;
   cal += '<\/center><\/b>';
   cal += '<\/td><\/tr>';
   cal += '<tr>'; 
   //START: Display Days of the week
   for(dex=0; dex < 7; dex++) 
   {
      cal += td_start + fst + dow[dex].substr(0,1) + fst2 + '</td>';
   } 
   cal += '<\/tr><tr>'; 
   //END  : Display Days of the week
   
   var day2 = s_today; 
   for (dex = s_today; dex > 6; dex -=7) 
     day2 = dex; 

   weekday -= day2 - 1; 

   while (weekday < 0) 
      weekday += 7; 

   for(dex=0; dex < weekday; dex++) 
   {
      cal += td_start + ' <\/td>'; 
   }

   for(dex=1; dex <= daysInMonth; dex++) 
   {
      if(weekday == 7) 
      {
         cal += '</tr><tr>'; weekday = 0;
      } 
      cal += td_start + fst + dex + fst2 + '<\/td>'; 
      weekday += 1;
   } 

   for(dex=weekday; dex < 7; dex++) 
   {
      cal += td_start + ' <\/td>'; 
   }

   cal += '<\/tr>';

   cal +='<\/table><\/div>';
   cal += '</div>'; 
   return cal;
}


function dispCal(yy,mm) 
{  
   if (mm < 0 || mm > 12) 
   {
      alert('month must be between 1 and 12'); 
      return false;
   } 

   if (yy != 0 && (yy < 1901 || yy > 2100)) 
   {
      alert('year must be after 1900 and before 2101'); 
      return false;
   } 

   bw=595;
   cw=85;
   fw=2;

   var selDate3;
   var calendar = new Date();  
   var today = calendar.getDate(); 
   calendar.setDate(1); 

   if (yy > 1900) 
      calendar.setFullYear(yy); 

   if (mm > 0) 
      calendar.setMonth(mm - 1); 

   var yy = year = calendar.getFullYear(); 
   var month = calendar.getMonth(); 
   calendar.setDate(today); 
   var weekday = calendar.getDay(); 
   var daysInMonth = monthlength(month+1,year); 
   var hilite_start = '<td width="' + cw + '" height="60" style="background:' + todaybg + '" align="center"><b>'; 
   var hilite2_start = '<td width="' + cw + '" height="60" style="background:' + todaybg2 + '" align="center"><b>'; 
   var td_start = '<td width="' + cw + '" align="center">'; 
   var fst = '<font size="' + fw +'">'; 
   var fst2 = '</font>'; 
   var cal = '<div id="cal"><div style="border:1pt solid #cccccc;width:' + bw + 'px">';
   cal += '<table border="0" cellspacing="1" cellpadding="2" align="center" width="' + bw + '">';
   cal += '<tr><td colspan="7" style="background:' + headbg + '" align="center">';


   
   // START: Calculate Future / Past Months
   var mmb = month;  
   mm = month + 1; 
   var yya = yyb = yy; 
   if (mmb <1) {mmb += 12; yyb--;} 
     var mma = month + 2; 
   if (mma > 12) 
     {mma -= 12; yya++;} 
   // END  : Calculate Future / Past Months

   selDate3 = yy+''+getmm(month+1);
   day = 1;

   hlo=yyb+','+mmb+',1';
   csal = '<span style="cursor:pointer;color:' + linkclr + '" onclick="if (cala = dispCal('+yyb+','+mmb+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}" >';
   csal2 = '<\/span>';
      
   cssal = '<span style="cursor:pointer;color:' + linkclr + '" onclick="if (cala = dispCal('+yya+','+mma+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}" >';
   cssal2 = '<\/span>';

   fliyear = year;
   if (month == 1) 
   {
     //++ fliyear;
   }

   cal += '<table border="0" cellspacing="0" cellpadding="0" width="100%">';
   cal += '<tr><td>' + csal + dspCal(yyb,mmb) + csal2 + '<\/td>';
   cal += '<td><b><center>';
   cal += '<embed src="http:\/\/www.respectsoft.com\/onlineclock\/ballclock.swf" width="125" height="125" quality=high pluginspage="http:\/\/www.macromedia.com\/shockwave\/download\/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application\/x-shockwave-flash" wmode="transparent"><\/embed><br><br>';
   cal += '<font size="5">' + moy[month]  + ' ' + fliyear + '<\/font><br><br>';
   cal += ev(selDate3) + '<\/center><\/b><\/td>';
   cal += '<td align="right">' + cssal + dspCal(yya,mma) + cssal2 + '<\/td><\/tr>';
   cal += '<\/table>';
   
   cal += '<\/td><\/tr>';
   cal += '<tr>'; 

   //START: Display Days of the week
   for(dex=0; dex < 7; dex++) 
   {
      cal += td_start + dow[dex] + '</td>';
   } 
   cal += '<\/tr><tr>'; 
   //END  : Display Days of the week
   
   var day2 = today; 
   for (dex = today; dex > 6; dex -=7) 
     day2 = dex; 

   weekday -= day2 - 1; 

   while (weekday < 0) 
      weekday += 7; 

   for(dex=0; dex < weekday; dex++) 
   {
      if ( dex == 0 )
         cal += hilite2_start + iclock + ' <\/td>'; 
      else 
         cal += hilite2_start + ' <\/td>'; 
   }

   for(dex=1; dex <= daysInMonth; dex++) 
   {
      if(weekday == 7) 
      {
         cal += '</tr><tr>'; weekday = 0;
      } 

      if(selDate==year+getmmdd(month+1,dex)) 
      {
         ctx = nextDate(year,getmmdd(month+1,dex));
         ctxi = '<br><br><strong><font size="1" color="black">' + ctx + '<\/font><\/strong>';

         if (ctx == '')
         {
           ctoken=1;
           dexi = dex;
         }
         else
         {
           ctoken=2;

           dayP = '0' + dex;
           monP = '0' + (month+1);

           dexi = '<a href="\/calendars\/viewcalevents.asp\?CalDate=' + year + monP.substr(-2) + dayP.substr(-2) + '">' + dex + '<\/a>' 
           ctxi = '<br><br><strong><a href="\/calendars\/viewcalevents.asp\?CalDate=' + year + monP.substr(-2) + dayP.substr(-2) + '"><font size="1" color="yellow">[View Events]<\/font><\/a><\/strong>';

         }
         cal += hilite_start +'<span ' + clickDate2(ctoken,dex,month,year) + '>'+ dexi + ctxi + '<\/span><\/b><\/td>'; 
      }
      else 
      {
         ctx = nextDate(year,getmmdd(month+1,dex));
         ctxi = '<br><br><strong><font size="1" color="yellow">' + ctx + '<\/font><\/strong>';

         if (ctx == '')
         {
           ctoken=1;
           dexi = dex;
         }
         else
         {
           ctoken=2;
           dayP = '0' + dex;
           monP = '0' + (month+1);

           dexi = '<a href="\/calendars\/viewcalevents.asp\?CalDate=' + year + monP.substr(-2) + dayP.substr(-2) + '">' + dex + '<\/a>' 
           ctxi = '<br><br><strong><a href="\/calendars\/viewcalevents.asp\?CalDate=' + year + monP.substr(-2) + dayP.substr(-2) + '"><font size="1" color="yellow">[View Events]<\/font><\/a><\/strong>';
         }
         cal += hilite2_start + '<br><span '+clickDate2(ctoken,dex,month,year) + '>' + dexi + ctxi + '<\/span><\/td>'; 

      }
      weekday += 1;
   } 

   for(dex=weekday; dex < 7; dex++) 
   {
      cal += hilite2_start + ' <\/td>'; 
   }

   cal += '<\/tr>';

   if (document.getElementById) 
   {
      var yb = yy -1; 
      var ya = yy +1; 

      csal = '<span style="cursor:pointer;color:' + linkclr + '" onclick="if (cala = dispCal('+yb+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}" >';
      csal2 = '<\/span>';
      
      cssal = '<span style="cursor:pointer;color:' + linkclr + '" onclick="if (cala = dispCal('+ya+','+mm+')) {document.getElementById(\'cal\').innerHTML = cala; return false;}" >';
      cssal2 = '<\/span>';

      cal += '<tr><td colspan="7" style="background:' + headbg + '" align="center">';
      cal += '<table border="0" cellspacing="0" cellpadding="0" width="100%">';
      cal += '<tr><td width="10%" align="left"><strong>[' + csal + yb + csal2 + ']<\/strong><\/td>';
      cal += '<td align="left" width="40%"><b><font size="2">' + bAdvertL + '<\/b><\/td>';
      cal += '<td align="right" width="40%"><b><font size="2">' + bAdvertR + '<\/b><\/td>';
      cal += '<td width="10%" align="right"><strong>[' + cssal + ya + cssal2 + ']<\/strong><\/td><\/tr>';
      cal += '<\/table>';
      cal += '<\/td><\/tr>';
   }

   cal +='<\/table><\/div>';
   cal += '</div>'; 
   return cal;
}


function clickDate2(token, day, month, year) 
{

   if (token == 1)
      return 'style="color:'+textclr+'"'; 

   if (token == 2)
      return 'style="cursor:pointer;color:'+linkclr+'" onclick="selDate = '+year+ getmmdd(month+1,day)+'; true; return true;"';
}


function nextDate(yy,mmdd) 
{
    var yymmdd=yy+''+mmdd;
    var yymmdd2='0000'+mmdd;
    var x = dA.length;
    var retval = '';

    for (var i = 0; i < x; i++) 
    {
      if (dA[i] == yymmdd2) 
         retval += dA[i].substr(0,8) + "<br>";

      if (dA[i] == yymmdd) 
         retval += dA[i].substr(0,8) + "<br>";
    }
    return retval;
}

function nextDate2(yymm) 
{
    var x = mA.length;
    var retval = '';
    for (var i = 0; i < x; i++) 
    {
      if (mA[i].substr(0,6) == yymm) 
         retval += mA[i].substr(6) + "<br>";
    }
    return retval;
}


function getmmdd(mm,dd) 
{
    return (mm > 9 ? '' + mm : '0' + mm) + (dd > 9 ? dd : '0' + dd);
}

function getmm(mm) 
{
    return (mm > 9 ? '' + mm : '0' + mm);
}

function ev(thedate) 
{
   var ct = nextDate2(thedate);
   if (ct == '') {ct = noMessage; }
   return ct;
}

function start() 
{
   var y = dispCal(0,0); 
   //var y=dispCal(2010,12)
   document.getElementById('calendar').innerHTML = y; 
}

function mybits(request)
{
   var elem;  
   if( document.getElementById ) 
      elem = document.getElementById(request);  
   else if( document.all ) 
      elem = document.all[request];  
   else if( document.layers ) 
      elem = document.layers[request];  
}

var DateList = loadFile("/calendars/EventsCalData.csv");
AssignDateList(DateList);

loaded('calendar');

