(function($){ $(function(){ var $c = $('#calendarWidget'); var dayNamesMin = ['S', 'M', 'T', 'W', 'T', 'F', 'S'], dayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; function ord(n){ n=n+''; var l=n.length, r=parseInt(n.substring(l-2,l)), i = n % 10; return ((r < 11 || r > 19) && (i < 4)) ? ['th','st','nd','rd'][i] : 'th'; } $c.datepicker({ yearRange: "-0:+1", changeMonth: true, changeYear: true, dayNamesMin : dayNamesMin, onChangeMonthYear : function(){ setTimeout(function(){ dayEvents(); },10); }, beforeShowDay : function(date){ var strDate = dayNamesShort[date.getDay()]+' '+ date.getDate()+ord(date.getDate())+' of '+monthNames[date.getMonth()]+' '+date.getFullYear(), numDate = date.getDate()+'/'+date.getMonth()+'/'+date.getFullYear(); month = date.getMonth() + 1; dateRef = date.getFullYear().toString() + (month < 10 ? '0' + month : month) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()); return [ true, 'day {date : '+dateRef+', strDate : \''+strDate+'\'}', strDate ]; } }); $.metadata.setType('class'); var $dH = $('.calendarWidget-details:first'), dHWidth = $dH.outerWidth(), showDH = '', hideDH = ''; function dayEvents() { $('.calendarWidget-details').not($dH).remove(); $('.day').each(function(){ var $el = $(this), date = $el.metadata().date, $det = $dH.find('.day-'+date); $el.bind('mouseup',function(){ setTimeout(function(){ dayEvents(); $('.day').each(function(){ var $el = $(this); if($el.metadata().date===date){ $el.trigger('mouseover'); } }); }, 1); }); if($det.length){ // style day var deps = { art : 0, language : 0, studies : 0, library : 0 }, colors = { ynnn : 'orange', nynn : 'green', nnyn : 'blue', yynn : 'orange-green', ynyn : 'blue-orange', nyyn : 'blue-green', yyyn : 'green-orange-blue', nnnn : 'none', nyyy : 'purple-blue-green', ynyy : 'purple-blue-orange', nnyy : 'purple-blue', yyny : 'purple-green-orange', nyny : 'purple-green', ynny : 'purple-orange', nnny : 'purple', yyyy : 'purple-blue-green-orange' }; $det.each(function(){ var $e = $(this); deps[$e.metadata().department]=1; }); var color = ''; for(var i in deps){ color += (deps[i])?'y':'n'; } color = colors[color]; $el.addClass('day-'+color); // Append calendar var $thisDH = $('
x

').appendTo($el); $det = $det.clone().appendTo($thisDH); $thisDH.find('h2').html($el.metadata().strDate); // ordering of $det var detCache = []; $det.each(function(){ var $e = $(this); if($e.hasClass('oneDayEvent')){ detCache.push($e.clone()); } }); $det.each(function(){ var $e = $(this); if($e.hasClass('eventStart')){ detCache.push($e.clone()); } }); $det.each(function(){ var $e = $(this); if($e.hasClass('eventEnd')){ detCache.push($e.clone()); } }); $det.each(function(){ var $e = $(this); if($e.hasClass('midEvent')){ detCache.push($e.clone()); } }); $det.remove(); for(var i in detCache){ $thisDH.append(detCache[i]); } // events $thisDH.bind('click mouseup', sp); // hovers $el.hover(function(){ clearTimeout(hideDH); hideDH = setTimeout(function(){ $('.calendarWidget-details').not($thisDH).hide(); },1); clearTimeout(showDH); showDH = setTimeout(function(){ $thisDH.css({ left : Math.floor($el.offset().left-dHWidth)+1+'px', top : Math.floor($el.offset().top)+7+'px', display : 'block' }); },1); }, function(){ clearTimeout(hideDH); hideDH = setTimeout(function(){ $thisDH.hide(); },1); }); $thisDH.find('.close').bind('click', function(){ $thisDH.hide(); }); } }); }; dayEvents(); }); })(jQuery)