var tb = 't'; // top or bottom (t or b)
var headbg = '#FFFFCC';  // table heading background colour
var todaybg = '#FF0000'; // current selected date background colour
var todaybg2 = '#FFFFCC'; // current selected date background colour
var textclr = '#000000'; // text colour
var linkclr = '#FF0000'; // link text colour
var linkclr = '#000000'; // link text colour
var noMessage =  'Fixtures / Training Calendar'; // message to display when no entry in array
var bAdvert =  'Paisley Saints Ladies Football Club'; // 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(); 

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);

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(",");
      if (mySplitXt.length == 4)
      {
         dA[x1++] = mySplitXt[0]+mySplitXt[1]+mySplitXt[2]+" "+mySplitXt[3];
      }
      if (mySplitXt.length == 3)
      {
         mA[x2++] = mySplitXt[0]+mySplitXt[1]+" "+mySplitXt[2];
      }
   }

}

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=98;
   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 + '<\/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=800;
   cw=114;
   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="1" cellspacing="0" 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><font size="5">' + moy[month]  + ' ' + fliyear + '<\/font><br><br>' + 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><strong><font size="1" color="black">' + ctx + '<\/font><\/strong>';
         if (ctx == '')
           ctoken=1;
         else
           ctoken=2;
         cal += hilite_start +'<span '+clickDate2(ctoken,dex,month,year) + '>'+ dex + ctxi + '<\/span><\/b><\/td>'; 
      }
      else 
      {
         ctx = nextDate(year,getmmdd(month+1,dex));
         ctxi = '<br><strong><font size="1" color="black">' + ctx + '<\/font><\/strong>';
         if (ctx == '')
           ctoken=1;
         else
           ctoken=2;

         cal += hilite2_start + '<span '+clickDate2(ctoken,dex,month,year) + '>' + dex + 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><strong>[' + csal + yb + csal2 + ']<\/strong><\/td>';
      cal += '<td><b><center><font size="5">' + bAdvert + '<\/center><\/b><\/td>';
      cal += '<td 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)+'; isDate(' + day + ',' + month + ',' + year + '); return false;"';
}


function isDate(dayVal,monthVal,yearVal) 
{
   var ct = nextDate(yearVal,getmmdd(monthVal+1,dayVal));

   if (ct == '') 
      ct = nextDate('0000',getmmdd(monthVal+1,dayVal));

   if (ct == '') 
      ct = noMessage;

   document.getElementById('calDate').innerHTML = selDate + ':<br \/>' +ct; 
   return false;
}

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].substr(0,8) == yymmdd2) 
         retval += dA[i].substr(8) + "<br>";

      if (dA[i].substr(0,8) == yymmdd) 
         retval += dA[i].substr(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("eventdata.csv");
AssignDateList(DateList);

loaded('calendar');

