var fired=false;

$ = jQuery;

$(document).ready(function(){
 	if (fired) {return;} fired = true;
	if ($('#ithanet-event') && $('#ithanet-event').length && $('iEventArray') && $('iEventHash')) {ithanet_event_calendar_show("","");}
   });

function ithanet_event_calendar(curdate,view)
{
    var content = '';

    var separator = ' ◆ ';

    if (0)
	{
	    content += '<h2 class="widgettitle">Events</h2>';
	    
	    content += '<ul>';
	    for (var elm=0; elm<iEventArray.length;elm++)
		{
		    var d = new Date();
		    d.setDate(iEventArray[elm]['d']);
		    d.setMonth(iEventArray[elm]['m']-1);
		    d.setFullYear(iEventArray[elm]['y']);
		    content += '<li>['+d.format('F jS, Y')+']<br/><a href="?p='+iEventArray[elm]['i']+'">'+iEventArray[elm]['t']+'</a></li>';
		}
	}

    content += '</ul>';
    
    content += '<div id=\"calendar_wrap\">';
    content += '<table summary=\"Calendar\" id=\"wp-calendar\">';

    if (view=='m')
	{
	    var today = new Date();
	    curdate.setDate(1);
	    var curmonth = curdate.getMonth();
	    var nextdate = new Date(curdate.getTime()); nextdate.setMonth(nextdate.getMonth()+1);
	    var prevdate = new Date(curdate.getTime()); prevdate.setMonth(prevdate.getMonth()-1);

	    content += '<caption id=\"calendar_wrap_caption\">'+curdate.format('F, Y')+'</caption>';

	    content += '<thead>';
	    content += '<tr>';

	    content += '<th title=\"Monday\" scope=\"col\" abbr=\"Monday\">Mon</th>';
	    content += '<th title=\"Tuesday\" scope=\"col\" abbr=\"Tuesday\">Tue</th>';
	    content += '<th title=\"Wednesday\" scope=\"col\" abbr=\"Wednesday\">Wed</th>';
	    content += '<th title=\"Thursday\" scope=\"col\" abbr=\"Thursday\">Thu</th>';
	    content += '<th title=\"Friday\" scope=\"col\" abbr=\"Friday\">Fri</th>';
	    content += '<th title=\"Saturday\" scope=\"col\" abbr=\"Saturday\">Sat</th>';
	    content += '<th title=\"Sunday\" scope=\"col\" abbr=\"Sunday\">Sun</th>';

	    content += '</tr>';
	    content += '</thead>';

	    content += '<tfoot>';
	    content += '<tr>';
	    content += '<td class=\"pad\" id=\"prev\" colspan=\"2\" abbr=\"'+prevdate.format('F')+'\"><a title=\"View events for '+prevdate.format('F, Y')+'\" href=\"#date='+prevdate.format('Ymd')+view+'\" onclick=\"javascript:ithanet_event_calendar_show(\''+prevdate.format('m/d/Y')+'\',\''+view+'\');\">« '+prevdate.format('M')+'</a></td>';
	    content += '<td class=\"pad\" id=\"monyr\" colspan=\"3\" abbr=\"M/Y\"><a title=\"View events yearly\" href=\"#date='+today.format('Ymd')+'y\" onclick=\"javascript:ithanet_event_calendar_show(\''+today.format('m/d/Y')+'\',\'y\');\">Year</a></td>';
	    content += '<td class=\"pad\" id=\"next\" colspan=\"2\" abbr=\"'+nextdate.format('F')+'\"><a title=\"View events for '+nextdate.format('F, Y')+'\" href=\"#date='+nextdate.format('Ymd')+view+'\" onclick=\"javascript:ithanet_event_calendar_show(\''+nextdate.format('m/d/Y')+'\',\''+view+'\');\">'+nextdate.format('M')+' »</a></td>';
	    content += '</tr>';
	    content += '</tfoot>';

	    while (curdate.getDay()!=1)
		curdate.setDate(curdate.getDate()-1);
    
	    content += '<tbody>';
	    while (curdate < nextdate)
		{
		    content += '<tr>';
		    for (var day=0; day<7; day++)
			{
			    if (day == (curdate.getDay()+6)%7)
				{
				    if (curdate.getFullYear() == today.getFullYear() &&
					curdate.getMonth() == today.getMonth() &&
					curdate.getDate() == today.getDate())
					{
					    content += '<td id=\"today\"';
					}
				    else
					{
					    content += '<td';
					}
				    
				    if (curdate.getMonth() != curmonth)
					{
					    content += ' class=\"inactive\" ';
					}
				    
				    content += '>';
				    
				    if (iEventHash[curdate.getFullYear()] &&
					iEventHash[curdate.getFullYear()][curdate.getMonth()+1] &&
					iEventHash[curdate.getFullYear()][curdate.getMonth()+1][curdate.getDate()])
					{
					    var links = new Array();
					    var titles = new Array();
					    var list = iEventHash[curdate.getFullYear()][curdate.getMonth()+1][curdate.getDate()];
					    var elm;
					    list = unique(list);
					    for (elm in list)
						{
						    links.push(iEventArray[list[elm]]['i']);
						    titles.push(iEventArray[list[elm]]['t']);			    
						}
					    var param;
					    if (links.length>1)
						param = 'pp';
					    else
						param = 'p';
					    
					    content += '<a title=\"'+titles.join(separator)+'\" href=\"?'+param+'='+links.join(',')+'&category_name=events\">'+(curdate.getDate())+'</a>';
					}
				    else
					{
					    content += (curdate.getDate());
					}
				    
				    curdate.setDate(curdate.getDate()+1);
				}
			    else
				{
				    content += '<td>';
				}
			    content += '</td>';
			}
		    content += '</tr>';
		}
	    content += '</tbody>';
	}
    else if (view=='y')
	{
	    var today = new Date();
	    curdate.setDate(1);
	    curdate.setMonth(0);
	    var nextdate = new Date(curdate.getTime()); nextdate.setFullYear(nextdate.getFullYear()+1);
	    var prevdate = new Date(curdate.getTime()); prevdate.setFullYear(prevdate.getFullYear()-1);

	    content += '<thead>';
	    content += '<tr>';
	    content += '<th title=\"\" id=\"prev\" scope=\"col\" abbr=\"'+prevdate.format('Y')+'\"><a title=\"View events for '+prevdate.format('Y')+'\" href=\"#date='+prevdate.format('Ymd')+view+'\" onclick=\"javascript:ithanet_event_calendar_show(\''+prevdate.format('m/d/Y')+'\',\''+view+'\');\">« '+prevdate.format('Y')+'</a></th>';
	    content += '<th title=\"\" scope=\"col\" abbr=\"\">'+curdate.format('Y')+'</th>';
	    content += '<th title=\"\" id=\"next\" scope=\"col\" abbr=\"'+nextdate.format('Y')+'\"><a title=\"View events for '+nextdate.format('Y')+'\" href=\"#date='+nextdate.format('Ymd')+view+'\" onclick=\"javascript:ithanet_event_calendar_show(\''+nextdate.format('m/d/Y')+'\',\''+view+'\');\">'+nextdate.format('Y')+' »</a></th>';
	    content += '</tr>';
	    content += '</thead>';

	    content += '<tfoot>';
	    content += '<tr>';
	    content += '<td class=\"pad\" colspan=\"1\" abbr=\"\"></td>';
	    content += '<td class=\"pad\" id=\"monyr\" colspan=\"1\" abbr=\"M/Y\"><a title=\"View events monthly\" href=\"#date='+today.format('Ymd')+'m\" onclick=\"javascript:ithanet_event_calendar_show(\''+today.format('m/d/Y')+'\',\'m\');\">Month</a></td>';
	    content += '<td class=\"pad\" colspan=\"1\" abbr=\"\"></td>';
	    content += '</tr>';
	    content += '</tfoot>';

	    content += '<tbody>';
	    content += '<tr>';

	    while (curdate < nextdate)
		{
		    content += '<tr>';
		    for (var month=0; month<3; month++)
			{
			    if (curdate.getFullYear() == today.getFullYear() &&
				curdate.getMonth() == today.getMonth())
				{
				    content += '<td id=\"today\">';
				}
			    else
				{
				    content += '<td>';
				}

			    if (iEventHash[curdate.getFullYear()] &&
				iEventHash[curdate.getFullYear()][curdate.getMonth()+1])
				{
				    var links = new Array();
				    var titles = new Array();
				    var list = new Array();

				    var elm;
				    for (elm in iEventHash[curdate.getFullYear()][curdate.getMonth()+1])
					{
					    list = list.concat(iEventHash[curdate.getFullYear()][curdate.getMonth()+1][elm]);
					}
				    list = unique(list);
				    for (elm in list)
					{
					    links.push(iEventArray[list[elm]]['i']);
					    titles.push(iEventArray[list[elm]]['t']);			    
					}
				    var param;
				    if (links.length>1)
					param = 'pp';
				    else
					param = 'p';
				    
				    content += '<a title=\"'+titles.join(separator)+'\" href=\"?'+param+'='+links.join(',')+'&category_name=events\">'+(curdate.format('M'))+'</a>';
				}
			    else
				{
				    content += (curdate.format('M'));
				}

			    content += '</td>';
				    
			    curdate.setMonth(curdate.getMonth()+1);
			}
		    content += '</tr>';
		    
		}

	    content += '</tr>';
	    content += '</tbody>';
	}

    content += '</table>';
    content += '</div>';

    return content;
}

function ithanet_event_calendar_show(dstr,view)
{
    var today;
    
    if (dstr && view)
	today = new Date(dstr);
    else
	{
	    var regex = /#date=(\d{4})(\d{2})(\d{2})(m|y)(#|$)/; //YYYY MM DD m|y #|$
	    var match = regex.exec(window.location.href);
	    if (match)
		{
		    today = new Date(match[2]+'/'+match[3]+'/'+match[1]);
		    view = match[4];
		}
	}

    if (!today || isNaN(today.getTime()) || today==undefined || typeof today=='undefined')
	{
	    today = new Date();
	    view = 'm';
	}
    
    document.getElementById("ithanet-event").innerHTML=ithanet_event_calendar(today,view);
}

function unique(ar)
{
    var a = new Array();
    var l = ar.length;
    for(var i=0; i<l; i++)
	{
	    for(var j=i+1; j<l; j++)
		{
		    if (ar[i] === ar[j])
			j = ++i;
		}
	    a.push(ar[i]);
	}
    return a;
}


