@@ -845,15 +845,38 @@ $.fn.calendar = function(parameters) {
845
845
846
846
helper : {
847
847
isDisabled : function ( date , mode ) {
848
- return mode === 'day' && ( ( settings . disabledDaysOfWeek . indexOf ( date . getDay ( ) ) !== - 1 ) || settings . disabledDates . some ( function ( d ) {
848
+ return ( mode === 'day' || mode === 'month' || mode === 'year' ) && ( ( settings . disabledDaysOfWeek . indexOf ( date . getDay ( ) ) !== - 1 ) || settings . disabledDates . some ( function ( d ) {
849
849
if ( typeof d === 'string' ) {
850
850
d = module . helper . sanitiseDate ( d ) ;
851
851
}
852
852
if ( d instanceof Date ) {
853
853
return module . helper . dateEqual ( date , d , mode ) ;
854
854
}
855
- if ( d !== null && typeof d === 'object' && d [ metadata . date ] ) {
856
- return module . helper . dateEqual ( date , module . helper . sanitiseDate ( d [ metadata . date ] ) , mode ) ;
855
+ if ( d !== null && typeof d === 'object' ) {
856
+ if ( d [ metadata . year ] ) {
857
+ if ( typeof d [ metadata . year ] === 'number' ) {
858
+ return date . getFullYear ( ) == d [ metadata . year ] ;
859
+ } else if ( Array . isArray ( d [ metadata . year ] ) ) {
860
+ return d [ metadata . year ] . indexOf ( date . getFullYear ( ) ) > - 1 ;
861
+ }
862
+ } else if ( d [ metadata . month ] ) {
863
+ if ( typeof d [ metadata . month ] === 'number' ) {
864
+ return date . getMonth ( ) == d [ metadata . month ] ;
865
+ } else if ( Array . isArray ( d [ metadata . month ] ) ) {
866
+ return d [ metadata . month ] . indexOf ( date . getMonth ( ) ) > - 1 ;
867
+ } else if ( d [ metadata . month ] instanceof Date ) {
868
+ var sdate = module . helper . sanitiseDate ( d [ metadata . month ] ) ;
869
+ return ( date . getMonth ( ) == sdate . getMonth ( ) ) && ( date . getFullYear ( ) == sdate . getFullYear ( ) )
870
+ }
871
+ } else if ( d [ metadata . date ] && mode === 'day' ) {
872
+ if ( d [ metadata . date ] instanceof Date ) {
873
+ return module . helper . dateEqual ( date , module . helper . sanitiseDate ( d [ metadata . date ] ) , mode ) ;
874
+ } else if ( Array . isArray ( d [ metadata . date ] ) ) {
875
+ return d [ metadata . date ] . some ( function ( idate ) {
876
+ return module . helper . dateEqual ( date , idate , mode ) ;
877
+ } ) ;
878
+ }
879
+ }
857
880
}
858
881
} ) ) ;
859
882
} ,
@@ -875,10 +898,9 @@ $.fn.calendar = function(parameters) {
875
898
}
876
899
} ,
877
900
findDayAsObject : function ( date , mode , dates ) {
878
- if ( mode === 'day' ) {
879
- var i = 0 , il = dates . length ;
901
+ if ( mode === 'day' || mode === 'month' || mode === 'year' ) {
880
902
var d ;
881
- for ( ; i < il ; i ++ ) {
903
+ for ( var i = 0 ; i < dates . length ; i ++ ) {
882
904
d = dates [ i ] ;
883
905
if ( typeof d === 'string' ) {
884
906
d = module . helper . sanitiseDate ( d ) ;
@@ -888,8 +910,37 @@ $.fn.calendar = function(parameters) {
888
910
dateObject [ metadata . date ] = d ;
889
911
return dateObject ;
890
912
}
891
- else if ( d !== null && typeof d === 'object' && d [ metadata . date ] && module . helper . dateEqual ( date , module . helper . sanitiseDate ( d [ metadata . date ] ) , mode ) ) {
892
- return d ;
913
+ else if ( d !== null && typeof d === 'object' ) {
914
+ if ( d [ metadata . year ] ) {
915
+ if ( typeof d [ metadata . year ] === 'number' && date . getFullYear ( ) == d [ metadata . year ] ) {
916
+ return d ;
917
+ } else if ( Array . isArray ( d [ metadata . year ] ) ) {
918
+ if ( d [ metadata . year ] . indexOf ( date . getFullYear ( ) ) > - 1 ) {
919
+ return d ;
920
+ }
921
+ }
922
+ } else if ( d [ metadata . month ] ) {
923
+ if ( typeof d [ metadata . month ] === 'number' && date . getMonth ( ) == d [ metadata . month ] ) {
924
+ return d ;
925
+ } else if ( Array . isArray ( d [ metadata . month ] ) ) {
926
+ if ( d [ metadata . month ] . indexOf ( date . getMonth ( ) ) > - 1 ) {
927
+ return d ;
928
+ }
929
+ } else if ( d [ metadata . month ] instanceof Date ) {
930
+ var sdate = module . helper . sanitiseDate ( d [ metadata . month ] ) ;
931
+ if ( ( date . getMonth ( ) == sdate . getMonth ( ) ) && ( date . getFullYear ( ) == sdate . getFullYear ( ) ) ) {
932
+ return d ;
933
+ }
934
+ }
935
+ } else if ( d [ metadata . date ] && mode === 'day' ) {
936
+ if ( d [ metadata . date ] instanceof Date && module . helper . dateEqual ( date , module . helper . sanitiseDate ( d [ metadata . date ] ) , mode ) ) {
937
+ return d ;
938
+ } else if ( Array . isArray ( d [ metadata . date ] ) ) {
939
+ if ( d [ metadata . date ] . some ( function ( idate ) { return module . helper . dateEqual ( date , idate , mode ) ; } ) ) {
940
+ return d ;
941
+ }
942
+ }
943
+ }
893
944
}
894
945
}
895
946
}
@@ -1576,7 +1627,9 @@ $.fn.calendar.settings = {
1576
1627
type : 'type' ,
1577
1628
monthOffset : 'monthOffset' ,
1578
1629
message : 'message' ,
1579
- class : 'class'
1630
+ class : 'class' ,
1631
+ month : 'month' ,
1632
+ year : 'year'
1580
1633
} ,
1581
1634
1582
1635
eventClass : 'blue'
0 commit comments