var calDaysLabels = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
var calMonthsLabels = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var calDaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var calCurrentDate = new Date();

function Calendar(calMonth, calYear) {
  this.calMonth = (isNaN(calMonth) || calMonth === null) ? calCurrentDate.getMonth() : calMonth-1;
  this.calYear  = (isNaN(calYear) || calYear === null) ? calCurrentDate.getFullYear() : calYear;
  this.calHtml = '';
}

Calendar.prototype.generateHTML = function(){
  var firstcalDay = new Date(this.calYear, this.calMonth, 1);
  var startcalDay = firstcalDay.getDay();
  var calMonthLength = calDaysInMonth[this.calMonth];
 
  if (this.calMonth == 1) 
  {
    if((this.calYear % 4 === 0 && this.calYear % 100 !== 0) || this.calYear % 400 === 0)
    {
      calMonthLength = 29;
    }
  }
  
  var calDay = 1;
  var displayMonth = this.calMonth+1;
  var calHtml = '<table class="ui-datepicker-calendar" cellspacing="1"><thead><tr>';
  for(var i = 0; i <= 6; i++ )
  {
    calHtml += '<th><span>'+calDaysLabels[i]+'</span></th>';
  }
  calHtml += '</thead></tr><tbody><tr>';
  for (var lWeeks = 0; lWeeks < 6; lWeeks++) 
  {
    for (var lcalDays = 0; lcalDays <= 6; lcalDays++) 
    {
      calHtml += '<td ';
      if (calDay <= calMonthLength && (lWeeks > 0 || lcalDays >= startcalDay)) 
      {
        if(displayMonth <= 9)
        {
          calHtml += 'id="0'+displayMonth;
        }
        else
        {
          calHtml += 'id="' + displayMonth;
        }
        if(calDay <= 9)
        {
          calHtml += '0'+ calDay;
        }
        else
        {
          calHtml += calDay;
        }
        
        calHtml += this.calYear+'"><span class="ui-state-default">';
        calHtml += calDay;
        calDay++;
      }
      else
      {
        calHtml += '/>';
      }
      calHtml += '</span></td>';
    }
    if (calDay > calMonthLength) 
    {
      break;
    }
    else 
    {
      calHtml += '</tr><tr>';
    }
  }
  calHtml += '</tr></tbody></table>';
  calHtml += '<a href="javascript:changeBlogMonth()" class="ui-state-default" style="display:block; text-align:center">Show All Posts in '+calMonthsLabels[this.calMonth]+'</a>';
  this.calHtml = calHtml;
};

Calendar.prototype.getHTML = function() {
  return this.calHtml;
};

function dateArrayManip()
{
	this.dateString = '';
	this.dateArray = '';
}

dateArrayManip.prototype.setDateArray = function()
{
	this.dateString = document.getElementById("dateArr").value;
	this.dateArray = this.dateString.split(", ");
};

dateArrayManip.prototype.setHyperlinks = function(month, year)
{
	for (var nDate = 0; nDate < this.dateArray.length; nDate++)
	{
	  var date = this.dateArray[nDate];
	  var testYear = date.substring(0, 4);
	  var testMonth = date.substring(4, 6);
	  var testDay = date.substring(6, 8);
		var id = testMonth+testDay+testYear;
		var actDay = document.getElementById(id);
	
    if((testYear == year)&&(testMonth == month))
    {
      (function(y,m,d)
      {
        $(actDay).children().addClass("ui-state-highlight").css('cursor', 'pointer').bind("click", function(e)
        {
          changeBlogDay(''+y+m+d);
        });
      }(testYear, testMonth, testDay));
    }
	}
};

