(function($) { 
   
	function calendarWidget(el, params) { 
		
		var now   = new Date();
		var thismonth = now.getMonth();
		var thisyear  = now.getYear() + 1900;
		var dtArray   = new Array();
                var base_url;
		var opts = {
			month: thismonth,
			year: thisyear,
                        dtArray :dtArray, 
                        base_url:base_url
		};
		
		$.extend(opts, params);
		
		var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
		var dayNames = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];
		month = i = parseInt(opts.month);
		year = parseInt(opts.year);
		dtArray = opts.dtArray;
                base_url = opts.base_url;
                var m = 0;
		var table = '';
		
			// next month
			if (month == 11) {
				var next_month = '<a class="cal_button" href="'+base_url+'/refresh_calendar?month=' + 1 + '&amp;year=' + (year + 1) + '" title="' + monthNames[0] + ' ' + (year + 1) + '">▶</a>';
			} else {
				var next_month = '<a class="cal_button" href="'+base_url+'/refresh_calendar?month=' + (month + 2) + '&amp;year=' + (year) + '" title="' + monthNames[month + 1] + ' ' + (year) + '">▶</a>';
			}
				
			// previous month
			if (month == 0) {
				var prev_month = '<a class="cal_button" href="'+base_url+'/refresh_calendar?month=' + 12 + '&amp;year=' + (year - 1) + '" title="' + monthNames[11] + ' ' + (year - 1) + '">◀</a>';
			} else {
				var prev_month = '<a class="cal_button" href="'+base_url+'/refresh_calendar?month=' + (month) + '&amp;year=' + (year) + '" title="' + monthNames[month - 1] + ' ' + (year) + '">◀</a>';
			}		
				
			table += ('<table id="moth_table"><tr><th>'+prev_month+'</th><th id="current-month">'+monthNames[month]+' '+year+'</th><th>'+next_month+'</th></tr></table>');
			// uncomment the following lines if you'd like to display calendar month based on 'month' and 'view' paramaters from the URL
			//table += ('<div class="nav-prev">'+ prev_month +'</div>');
			//table += ('<div class="nav-next">'+ next_month +'</div>');
			table += ('<table class="calendar-month " ' +'id="calendar-month'+i+' " cellspacing="0">');	
		
			table += '<tr>';
			
			for (d=0; d<7; d++) {
				table += '<th class="weekday">' + dayNames[d] + '</th>';
			}
			
			table += '</tr>';
		
			var days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay();
			
			var prev_days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay();
			
			var prev_m = month == 0 ? 11 : month-1;
			var prev_y = prev_m == 11 ? year - 1 : year;
			var prev_days = getDaysInMonth(prev_m, prev_y);
			firstDay = (firstDay == 0 && firstDayDate) ? 7 : firstDay;
	
			var i = 0;
                   
            for (j=0;j<42;j++){
			  
              if ((j<firstDay)){
                table += ('<td class="other-month"><span class="day">'+ (prev_days-firstDay+j+1) +'</span></td>');
			  } else if ((j>=firstDay+getDaysInMonth(month,year))) {
				i = i+1;
                table += ('<td class="other-month"><span class="day">'+ i +'</span></td>');			 
              }else{
                  if(dtArray[(j-firstDay+1)+''])
                      {
                          var vclass = " vtip";
                          var vtitle = dtArray[(j-firstDay+1)+'']+" Post(s)";
                          var tag    = 'a';
                          var sMonth = (month+1<10)?"0"+(month+1):month+1;
                          var sDay   = ((j-firstDay+1)<10)?"0"+(j-firstDay+1):(j-firstDay+1);
                          var href   = ' href="'+base_url+'/archive_list/'+year+sMonth+sDay+'"';   
                      }
                      else
                          {
                              var vclass="";
                              var vtitle = "";
                              var tag   = "span";
                              var href="";
                          }
                table += ('<td class="current-month day'+(j-firstDay+1)+'"><'+tag+href+' class="day'+vclass+'"  title="'+vtitle+'">'+(j-firstDay+1)+'</'+tag+'></td>');
              }
              if (j%7==6)  table += ('</tr>');
            }

            table += ('</table>');

		el.html(table);
	}
	
	function getDaysInMonth(month,year)  {
		var daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];
		if ((month==1)&&(year%4==0)&&((year%100!=0)||(year%400==0))){
		  return 29;
		}else{
		  return daysInMonth[month];
		}
	}
	
	
	// jQuery plugin initialisation
	$.fn.calendarWidget = function(params) {    
		calendarWidget(this, params);		
		return this; 
	}; 

})(jQuery);
function arrayCompare(a1, a2) {
    if (a1.length != a2.length) return false;
    var length = a2.length;
    for (var i = 0; i < length; i++) {
        if (a1[i] !== a2[i]) return false;
    }
    return true;
}

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(typeof haystack[i] == 'object') {
            if(arrayCompare(haystack[i], needle)) return true;
        } else {
            if(haystack[i] == needle) return true;
        }
    }
    return false;
}$(document).ready(function(){
 $(".cal_button").live('click', function(e){
     e.preventDefault();
     $.get($(this).attr("href"),function(data){
          $.globalEval(data);
          vtip();
     });
     return false;
 })   
})
