/*
 * jCal calendar multi-day and multi-month datepicker plugin for jQuery
 *	version 0.3.4
 * Author: Jim Palmer
 * Released under MIT license.
 */
(function($){$.fn.jCal=function(a){$.jCal(this,a)};$.jCal=function(c,d){d=$.extend({day:new Date(),days:1,showMonths:1,monthSelect:false,dCheck:function(a){return true},callback:function(a,b){return true},selectedBG:'rgb(0, 143, 214)',defaultBG:'rgb(255, 255, 255)',dayOffset:0,forceWeek:false,dow:['S','M','T','W','T','F','S'],ml:['January','February','March','April','May','June','July','August','September','October','November','December'],ms:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],_target:c},d);d.day=new Date(d.day.getFullYear(),d.day.getMonth(),1);if(!$(d._target).data('days'))$(d._target).data('days',d.days);$(c).stop().empty();for(var e=0;e<d.showMonths;e++)$(c).append('<div class="jCalMo"></div>');d.cID='c'+$('.jCalMo').length;$('.jCalMo',c).each(function(a){drawCalControl($(this),$.extend({},d,{'ind':a,'day':new Date(new Date(d.day.getTime()).setMonth(new Date(d.day.getTime()).getMonth()+a))}));drawCal($(this),$.extend({},d,{'ind':a,'day':new Date(new Date(d.day.getTime()).setMonth(new Date(d.day.getTime()).getMonth()+a))}))});if($(d._target).data('day')&&$(d._target).data('days'))reSelectDates(c,$(d._target).data('day'),$(d._target).data('days'),d)};function drawCalControl(f,g){$(f).append('<div class="jCal">'+((g.ind==0)?'<div class="left" />':'')+'<div class="month">'+'<span class="monthYear">'+g.day.getFullYear()+'</span>'+'<span class="monthName">'+g.ml[g.day.getMonth()]+'</span>'+'</div>'+((g.ind==(g.showMonths-1))?'<div class="right" />':'')+'</div>');if(g.monthSelect)$(f).find('.jCal .monthName, .jCal .monthYear').bind('mouseover',$.extend({},g),function(e){$(this).removeClass('monthYearHover').removeClass('monthNameHover');if($('.jCalMask',e.data._target).length==0)$(this).addClass($(this).attr('class')+'Hover')}).bind('mouseout',function(){$(this).removeClass('monthYearHover').removeClass('monthNameHover')}).bind('click',$.extend({},g),function(e){$('.jCalMo .monthSelector, .jCalMo .monthSelectorShadow').remove();var a=$(this).hasClass('monthName'),pad=Math.max(parseInt($(this).css('padding-left')),parseInt($(this).css('padding-left')))||2,calcTop=(($(this).offset()).top-((a?e.data.day.getMonth():2)*($(this).height()+0)));calcTop=calcTop>0?calcTop:0;var b=($(this).offset()).top-calcTop;$('<div class="monthSelectorShadow" style="'+'top:'+$(e.data._target).offset().top+'px; '+'left:'+$(e.data._target).offset().left+'px; '+'width:'+($(e.data._target).width()+(parseInt($(e.data._target).css('paddingLeft'))||0)+(parseInt($(e.data._target).css('paddingRight'))||0))+'px; '+'height:'+($(e.data._target).height()+(parseInt($(e.data._target).css('paddingTop'))||0)+(parseInt($(e.data._target).css('paddingBottom'))||0))+'px;">'+'</div>').css('opacity',0.01).appendTo($(this).parent());$('<div class="monthSelector" style="'+'top:'+calcTop+'px; '+'left:'+(($(this).offset()).left)+'px; '+'width:'+($(this).width()+(pad*2))+'px;">'+'</div>').css('opacity',0).appendTo($(this).parent());for(var c=(a?0:-2),dd=(a?12:3);c<dd;c++)$(this).clone().removeClass('monthYearHover').removeClass('monthNameHover').addClass('monthSelect').attr('id',a?(c+1)+'_1_'+e.data.day.getFullYear():(e.data.day.getMonth()+1)+'_1_'+(e.data.day.getFullYear()+c)).html(a?e.data.ml[c]:(e.data.day.getFullYear()+c)).css('top',($(this).height()*c)).appendTo($(this).parent().find('.monthSelector'));var d=$(this).parent().find('.monthSelector').get(0),diffOff=$(d).height()-($(d).height()-b);$(d).css('clip','rect('+diffOff+'px '+($(this).width()+(pad*2))+'px '+diffOff+'px 0px)').animate({'opacity':.92,'clip':'rect(0px '+($(this).width()+(pad*2))+'px '+$(d).height()+'px 0px)'},'fast',function(){$(this).parent().find('.monthSelectorShadow').bind('mouseover click',function(){$(this).parent().find('.monthSelector').remove();$(this).remove()})}).parent().find('.monthSelectorShadow').animate({'opacity':.1},'fast');$('.jCalMo .monthSelect',e.data._target).bind('mouseover mouseout click',$.extend({},e.data),function(e){if(e.type=='click')$(e.data._target).jCal($.extend(e.data,{day:new Date($(this).attr('id').replace(/_/g,'/'))}));else $(this).toggleClass('monthSelectHover')})});$(f).find('.jCal .left').bind('click',$.extend({},g),function(e){if($('.jCalMask',e.data._target).length>0)return false;var b={w:0,h:0};$('.jCalMo',e.data._target).each(function(){b.w+=$(this).width()+parseInt($(this).css('padding-left'))+parseInt($(this).css('padding-right'));var a=$(this).height()+parseInt($(this).css('padding-top'))+parseInt($(this).css('padding-bottom'));b.h=((a>b.h)?a:b.h)});$(e.data._target).prepend('<div class="jCalMo"></div>');e.data.day=new Date($('div[id*='+e.data.cID+'d_]:first',e.data._target).attr('id').replace(e.data.cID+'d_','').replace(/_/g,'/'));e.data.day.setDate(1);e.data.day.setMonth(e.data.day.getMonth()-1);drawCalControl($('.jCalMo:first',e.data._target),e.data);drawCal($('.jCalMo:first',e.data._target),e.data);if(e.data.showMonths>1){$('.right',e.data._target).clone(true).appendTo($('.jCalMo:eq(1) .jCal',e.data._target));$('.left:last, .right:last',e.data._target).remove()}$(e.data._target).append('<div class="jCalSpace" style="width:'+b.w+'px; height:'+b.h+'px;"></div>');$('.jCalMo',e.data._target).wrapAll('<div class="jCalMask" style="clip:rect(0px '+b.w+'px '+b.h+'px 0px); width:'+(b.w+(b.w/e.data.showMonths))+'px; height:'+b.h+'px;">'+'<div class="jCalMove"></div>'+'</div>');$('.jCalMove',e.data._target).css('margin-left',((b.w/e.data.showMonths)*-1)+'px').css('opacity',0.5).animate({marginLeft:'0px'},'fast',function(){$(this).children('.jCalMo:not(:last)').appendTo($(e.data._target));$('.jCalSpace, .jCalMask',e.data._target).empty().remove();if($(e.data._target).data('day'))reSelectDates(e.data._target,$(e.data._target).data('day'),$(e.data._target).data('days'),e.data)})});$(f).find('.jCal .right').bind('click',$.extend({},g),function(e){if($('.jCalMask',e.data._target).length>0)return false;var b={w:0,h:0};$('.jCalMo',e.data._target).each(function(){b.w+=$(this).width()+parseInt($(this).css('padding-left'))+parseInt($(this).css('padding-right'));var a=$(this).height()+parseInt($(this).css('padding-top'))+parseInt($(this).css('padding-bottom'));b.h=((a>b.h)?a:b.h)});$(e.data._target).append('<div class="jCalMo"></div>');e.data.day=new Date($('div[id^='+e.data.cID+'d_]:last',e.data._target).attr('id').replace(e.data.cID+'d_','').replace(/_/g,'/'));e.data.day.setDate(1);e.data.day.setMonth(e.data.day.getMonth()+1);drawCalControl($('.jCalMo:last',e.data._target),e.data);drawCal($('.jCalMo:last',e.data._target),e.data);if(e.data.showMonths>1){$('.left',e.data._target).clone(true).prependTo($('.jCalMo:eq(1) .jCal',e.data._target));$('.left:first, .right:first',e.data._target).remove()}$(e.data._target).append('<div class="jCalSpace" style="width:'+b.w+'px; height:'+b.h+'px;"></div>');$('.jCalMo',e.data._target).wrapAll('<div class="jCalMask" style="clip:rect(0px '+b.w+'px '+b.h+'px 0px); width:'+(b.w+(b.w/e.data.showMonths))+'px; height:'+b.h+'px;">'+'<div class="jCalMove"></div>'+'</div>');$('.jCalMove',e.data._target).css('opacity',0.5).animate({marginLeft:((b.w/e.data.showMonths)*-1)+'px'},'fast',function(){$(this).children('.jCalMo:not(:first)').appendTo($(e.data._target));$('.jCalSpace, .jCalMask',e.data._target).empty().remove();if($(e.data._target).data('day'))reSelectDates(e.data._target,$(e.data._target).data('day'),$(e.data._target).data('days'),e.data);$(this).children('.jCalMo:not(:first)').removeClass('')})});$('.jCal',f).each(function(){var a=$(this).parent().width()-($('.left',this).width()||0)-($('.right',this).width()||0);$('.month',this).css('width',a).find('.monthName, .monthYear').css('width',((a/2)-4))});$(window).load(function(){$('.jCal',f).each(function(){var a=$(this).parent().width()-($('.left',this).width()||0)-($('.right',this).width()||0);$('.month',this).css('width',a).find('.monthName, .monthYear').css('width',((a/2)-4))})})};function reSelectDates(a,b,c,d){var e=new Date(b.getTime());var f=new Date(b.getTime());for(var g=false,di=0,dC=c;di<dC;di++){var h=$(a).find('div[id*=d_'+(f.getMonth()+1)+'_'+f.getDate()+'_'+f.getFullYear()+']');if(h.length>0){h.stop().addClass('selectedDay');g=true}f.setDate(f.getDate()+1)}if(g&&typeof d.callback=='function')d.callback(b,c)};function drawCal(f,g){for(var h=0,length=g.dow.length;h<length;h++)$(f).append('<div class="dow">'+g.dow[h]+'</div>');var i=new Date(new Date(g.day.getTime()).setDate(1));var j=new Date(new Date(i.getTime()).setDate(0));var k=new Date(new Date(new Date(i.getTime()).setMonth(i.getMonth()+1)).setDate(0));var l={fd:i.getDay(),lld:j.getDate(),ld:k.getDate()};var m=((l.fd<g.dayOffset)?(g.dayOffset-7):1);var n=((k.getDay()<g.dayOffset)?(7-k.getDay()):k.getDay());for(var d=m,dE=(l.fd+l.ld+(7-n));d<dE;d++)$(f).append(((d<=(l.fd-g.dayOffset))?'<div id="'+g.cID+'d'+d+'" class="pday">'+(l.lld-((l.fd-g.dayOffset)-d))+'</div>':((d>((l.fd-g.dayOffset)+l.ld))?'<div id="'+g.cID+'d'+d+'" class="aday">'+(d-((l.fd-g.dayOffset)+l.ld))+'</div>':'<div id="'+g.cID+'d_'+(i.getMonth()+1)+'_'+(d-(l.fd-g.dayOffset))+'_'+i.getFullYear()+'" class="'+((g.dCheck(new Date((new Date(i.getTime())).setDate(d-(l.fd-g.dayOffset)))))?'day':'invday')+'">'+(d-(l.fd-g.dayOffset))+'</div>')));$(f).find('div[id^='+g.cID+'d]:first, div[id^='+g.cID+'d]:nth-child(7n+2)').before('<br style="clear:both; font-size:0.1em;" />');$(f).find('div[id^='+g.cID+'d_]:not(.invday)').bind("mouseover mouseout click",$.extend({},g),function(e){if($('.jCalMask',e.data._target).length>0)return false;var a=new Date($(this).attr('id').replace(/c[0-9]{1,}d_([0-9]{1,2})_([0-9]{1,2})_([0-9]{4})/,'$1/$2/$3'));if(e.data.forceWeek)a.setDate(a.getDate()+(e.data.dayOffset-a.getDay()));var b=new Date(a.getTime());if(e.type=='click')$('div[id*=d_]',e.data._target).stop().removeClass('selectedDay').removeClass('overDay').css('backgroundColor','');for(var c=0,h=$(e.data._target).data('days');c<h;c++){var d=$(e.data._target).find('#'+e.data.cID+'d_'+(b.getMonth()+1)+'_'+b.getDate()+'_'+b.getFullYear());if(d.length==0||$(d).hasClass('invday'))break;if(e.type=='mouseover')$(d).addClass('overDay');else if(e.type=='mouseout')$(d).stop().removeClass('overDay').css('backgroundColor','');else if(e.type=='click')$(d).stop().addClass('selectedDay');b.setDate(b.getDate()+1)}if(e.type=='click'){e.data.day=a;e.data.callback(a,c);$(e.data._target).data('day',e.data.day).data('days',c)}})}})(jQuery);

