(function(b){var a={};b.fn.ical=function(r){b.fn.ical.defaults={daynames:["Mo","Tu","We","Th","Fr","Sa","Su"],monthnames:["January","Febuary","March","April","May","June","July","August","September","October","November","December"],startdate:new Date(),eventdates:{},beforeDay:function(s){},beforeMonth:function(s){},beforeYear:function(s){}};var r=b.extend({},b.fn.ical.defaults,r);return this.each(function(){var t=b(this);a=r.eventdates;var s=r.startdate;j(t,s)});function j(t,s){t.html("");k(t,s);o(t);p(t,s);c()}function k(t,s){t.append("<div><span id = 'currentmonth'>"+r.monthnames[s.getMonth()]+"</span> <span id = 'currentyear'>"+s.getFullYear()+"</span></div><div><span id ='icalprev'>Previous</span> | <span id ='icalnext'>Next</span></div>");b("#icalnext",t).click(function(){var v=s.getMonth()+1;if(v>11){v=0;var u=s.getFullYear()+1;r.beforeYear(q(u,v,1))}else{var u=s.getFullYear()}r.beforeMonth(q(u,v,1));date=new Date(u,v,1);j(t,date)});b("#icalprev",t).click(function(){var v=s.getMonth()-1;if(v<0){v=11;var u=s.getFullYear()-1;r.beforeYear(q(u,v,1))}else{var u=s.getFullYear()}r.beforeMonth(q(u,v,1));date=new Date(u,v,1);j(t,date)})}function o(t){t.append("<table cellspacing='0'><thead><tr></tr></thead><tfoot><tr></tr></tfoot></table>");for(var s=0;s<r.daynames.length;s++){b(".calendar table tr, obj").append("<th>"+r.daynames[s]+"</th>")}}function p(w,D){var z=D.getMonth();var A=D.getFullYear();var E=e(A,z);var x=l(A,z);var C=m(A,z,E);var B=6-C;var s=true;for(var v=1;v<=E;v++){if((x+v-1)%7===0||s===true){b("table",w).append("<tr></tr>")}for(var u=0;u<x&&s;u++){b("table tr:last, obj").append("<td class = 'padding'></td")}s=false;var z=n(b("#currentmonth",w).text());var A=b("#currentyear",w).text();var y=q(A,z,v);var t=i(y);if(!t){r.beforeDay(y);b("table tr:last, obj").append("<td id = '"+y+"'>"+v+"</td")}else{r.beforeDay(y);b("table tr:last, obj").append("<td class='date_has_event' id = '"+y+"'>"+v+"<div class='events'><ul><li><span class='title'>"+t.title+"</span><span class='desc'>"+t.desc+"</span></li></ul></div></td")}}for(var v=0;v<B;v++){b("table tr:last, obj").append("<td class = 'padding'></td")}g(w)}function n(t){for(var s=0;s<r.monthnames.length;s++){if(r.monthnames[s]===t){return s}}}function e(s,t){return 32-new Date(s,t,32).getDate()}function g(t){var s=new Date();s=q(s.getFullYear(),s.getMonth(),s.getDate());b("#"+s,t).addClass("today")}function i(s){for(var u in a.dates){var t=f(u,s);if(s===t){return a.dates[u]}}return false}function f(t,s){var t=t.split("-");var s=s.split("-");if(t[0]==="yyyy"){t[0]=s[0]}if(t[1]==="mm"){t[1]=s[1]}if(t[2]==="dd"){t[2]=s[2]}return t[0]+"-"+t[1]+"-"+t[2]}function m(t,u,v){var s=new Date(t,u,v);if(s.getDay()==0){return 6}else{return s.getDay()-1}}function l(t,u){var s=new Date(t,u,1);if(s.getDay()==0){return 6}else{return s.getDay()-1}}function q(t,u,s){return t+"-"+d(u)+"-"+h(s)}function d(s){s=s+1;if(s<10){s="0"+s}return s}function h(s){if(s<10){s="0"+s}return s}function c(){b(".date_has_event").each(function(){var z=10;var y=250;var v=500;var u=null;var x=false;var w=false;var t=b(this);var s=b(".events ul",this).css("opacity",0);b([t.get(0),s.get(0)]).mouseover(function(){if(u){clearTimeout(u)}if(x||w){return}else{x=true;s.css({bottom:20,left:-76,display:"block"}).animate({bottom:"+="+z+"px",opacity:1},y,"swing",function(){x=false;w=true})}}).mouseout(function(){if(u){clearTimeout(u)}u=setTimeout(function(){u=null;s.animate({bottom:"-="+z+"px",opacity:0},y,"swing",function(){w=false;s.css("display","none")})},v)})})}};b.fn.ical.changeEventDates=function(c){a=c}})(jQuery);