jQM - jQM Calendar example
HTML
<link rel="stylesheet" href="http://example.gajotres.net/sources/jQMCalendar/jw-jqm-cal.css">
<script src="http://example.gajotres.net/sources/jQMCalendar/jw-jqm-cal.js"></script>
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<!--<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>-->
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
</head>
<body>
<div data-role="page" id="index">
<div data-theme="b" data-role="header">
<h1>Index page</h1>
</div>
<div data-role="content">
<div id="calendar"></div>
</div>
</div>
</body>
</html>
JavaScript
$(document).on('pageinit', '#index', function(){
var periodCycleDays = 28;
var bleedingDays = 3;
var fertilePhaseStart = periodCycleDays - 20;
var fertilePhaseEnd = periodCycleDays - 11;
var ovulation = (fertilePhaseStart-1) + (fertilePhaseEnd - fertilePhaseStart)/2;
var periodStartDate = new Date();
function createEventsForDate(date){
var timeBetween = Math.abs(date.getTime() - periodStartDate.getTime());
var daysBetween = Math.ceil(timeBetween / (1000 * 3600 * 24));
var cyclesBetween = Math.floor((daysBetween / periodCycleDays));
var events = [];
// Create next two events to handle multiple sets within one month
for(var i=0;i<2;i++){
var cycleDaysBetween = periodCycleDays * (cyclesBetween + i);
var p = addDays(periodStartDate, cycleDaysBetween);
var bleedingEnd = addDays(p, bleedingDays);
var fertilePhaseStartDate = addDays(p, fertilePhaseStart);
var fertilePhaseEndDate = addDays(p, fertilePhaseEnd);
var ovulationDayStart = addDays(p, ovulation)
var ovulationDayEnd = new Date(new Date(ovulationDayStart).setHours(23,59,59,999));
events.push({
"summary": "Period",
"begin": p,
"end": bleedingEnd
});
events.push({
"summary": "Fertile",
"begin": fertilePhaseStartDate,
"end": fertilePhaseEndDate
});
events.push({
"summary": "Ovulation",
"begin": ovulationDayStart,
"end": ovulationDayEnd
});
}
return events;
}
var InitialEvents = createEventsForDate(periodStartDate);
$("#calendar").jqmCalendar({
events: InitialEvents,
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
days: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
startOfWeek: 0
}).bind('change',...