<?php
/* This calculator is your for free by Calendarscripts.info. You have no obligations for anything - you can modify, redistribute, sell it or whatever you want to do.
We will appreciate if you don't remove the link at the bottom, but that's not required. */
/* Feel free to modify the CSS and the texts below. - no problem at all. Just don't touch the PHP code or the specual codes which are surrounded with %% unless you know what you are doing. */
/* Version 1.1 released on Nov 7, 2011*/
?>
<style type="text/css">
.calculator_table
{
font-size:11px;
font-family:verdana, arial, sans-serif;
border:2pt solid #4444FF;
padding:25px;
width:300px;
}
</style>
<?php if ( ! empty ( $_POST [ 'calculator_ok' ] ) ) : //last cycle date
$date = "$_POST[dateyear] -$_POST[datemonth] -$_POST[dateday] " ;
//convert to time
$lasttime = mktime ( 0 , 0 , 0 , $_POST [ 'datemonth' ] , $_POST [ 'dateday' ] , $_POST [ 'dateyear' ] ) ;
// next period start
$next_period = $lasttime + $_POST [ 'days' ] * 24 * 3600 ;
$next_period = date ( "F d, Y" , $next_period ) ;
//first fertile day
$firstdaytime = $lasttime + $_POST [ 'days' ] * 24 * 3600 - 16 * 24 * 3600 ;
$firstday = date ( "F d, Y" , $firstdaytime ) ;
//last fertile day
$lastdaytime = $lasttime + $_POST [ 'days' ] * 24 * 3600 - 12 * 24 * 3600 ;
$lastday = date ( "F d, Y" , $lastdaytime ) ;
//have to adjust due date?
$diff = $_POST [ 'days' ] - 28 ;
//due date $date + 280 days
$duedatetime = $lasttime + 280 * 24 * 3600 + $diff * 24 * 3600 ;
$duedate = date ( "F d, Y" , $duedatetime ) ;
?>
<div class="calculator_table">
<p>Here are the results based on the information you provided:</p>
<p>Your next <b>menstrual period</b> is expected to start on <strong><?php echo $next_period ?> </strong>.</p>
<p>You next <b>most fertile</b> period is <strong><?php echo $firstday ?> to <?php echo $lastday ?> </strong>.</p>
<p>If you conceive within this timeframe, your estimated <b>due date</b> will be <strong><?php echo $duedate ?> </strong>.</p>
<p align="center"><input type="button" value="Calculate again!" onclick="window.location='http://<?php echo $_SERVER [ 'HTTP_HOST' ] ; ?> <?php echo $_SERVER [ 'REQUEST_URI' ] ?> '"></p>
</div>
<?php else :
//the calculator comes here
?>
<div class="calculator_table">
<form method="post">
<p>Please select the first day of your last menstrual period:</p>
<p>
<?php echo date_chooser
( "date" , date ( "Y-m-d" ) ) ?> </p>
<p>Usual number of days in your period: <select name="days">
<?php
for ( $i = 20 ; $i <= 45 ; $i ++ )
{
if ( $i == 28 ) $selected = 'selected="true"' ;
else $selected = '' ;
echo "<option $selected value='$i '>$i </option>" ;
}
?>
</select></p>
<p align="center"><input type="submit" name="calculator_ok" value="Calculate"></p>
</form>
</div>
<?php endif ;
//to print a date chooser - get name and value in mysql date format
function date_chooser( $name , $value = "" )
{
$months = array ( '' , 'January' , 'February' , 'March' , 'April' , 'May' , 'June' , 'July' , 'August' , 'September' , 'October' , 'November' , 'December' ) ;
$day = $parts [ 2 ] + 0 ;
$month = $parts [ 1 ] + 0 ;
$year = $parts [ 0 ] ;
$chooser = "" ;
$chooser .= "<select name='" . $name . "month'>" ;
for ( $i = 1 ; $i <= 12 ; $i ++ )
{
if ( $i == $month ) $selected = 'selected="true"' ;
else $selected = '' ;
$chooser .= "<option $selected value='$i '>$months [$i ]</option>" ;
}
$chooser .= "</select> / " ;
$chooser .= "<select name='" . $name . "day'>" ;
for ( $i = 1 ; $i <= 31 ; $i ++ )
{
if ( $i == $day ) $selected = 'selected' ;
else $selected = '' ;
$chooser .= "<option $selected value='$i '>$i </option>" ;
}
$chooser .= "</select> / " ;
$chooser .= "<select name='" . $name . "year'>" ;
for ( $i = ( date ( "Y" ) - 1 ) ; $i <= 2050 ; $i ++ ) {
if ( $i == $year ) $selected = 'selected' ;
else $selected = '' ;
$chooser .= "<option $selected >$i </option>" ;
}
$chooser .= "</select> " ;
return $chooser ;
}
?>
PD9waHAKLyogVGhpcyBjYWxjdWxhdG9yIGlzIHlvdXIgZm9yIGZyZWUgYnkgQ2FsZW5kYXJzY3JpcHRzLmluZm8uIFlvdSBoYXZlIG5vIG9ibGlnYXRpb25zIGZvciBhbnl0aGluZyAtIHlvdSBjYW4gbW9kaWZ5LCByZWRpc3RyaWJ1dGUsIHNlbGwgaXQgb3Igd2hhdGV2ZXIgeW91IHdhbnQgdG8gZG8uCldlIHdpbGwgYXBwcmVjaWF0ZSBpZiB5b3UgZG9uJ3QgcmVtb3ZlIHRoZSBsaW5rIGF0IHRoZSBib3R0b20sIGJ1dCB0aGF0J3Mgbm90IHJlcXVpcmVkLiAqLwoKLyogRmVlbCBmcmVlIHRvIG1vZGlmeSB0aGUgQ1NTIGFuZCB0aGUgdGV4dHMgYmVsb3cuIC0gbm8gcHJvYmxlbSBhdCBhbGwuIEp1c3QgZG9uJ3QgdG91Y2ggdGhlIFBIUCBjb2RlIG9yIHRoZSBzcGVjdWFsIGNvZGVzIHdoaWNoIGFyZSBzdXJyb3VuZGVkIHdpdGggJSUgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy4gKi8KCi8qIFZlcnNpb24gMS4xIHJlbGVhc2VkIG9uIE5vdiA3LCAyMDExKi8KPz4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLmNhbGN1bGF0b3JfdGFibGUKewoJZm9udC1zaXplOjExcHg7Cglmb250LWZhbWlseTp2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjsKCWJvcmRlcjoycHQgc29saWQgIzQ0NDRGRjsKCXBhZGRpbmc6MjVweDsKCXdpZHRoOjMwMHB4OwkKfQo8L3N0eWxlPgo8P3BocCBpZighZW1wdHkoJF9QT1NUWydjYWxjdWxhdG9yX29rJ10pKToKCS8vbGFzdCBjeWNsZSBkYXRlCgkkZGF0ZT0iJF9QT1NUW2RhdGV5ZWFyXS0kX1BPU1RbZGF0ZW1vbnRoXS0kX1BPU1RbZGF0ZWRheV0iOwoJCgkvL2NvbnZlcnQgdG8gdGltZQoJJGxhc3R0aW1lPW1rdGltZSgwLDAsMCwkX1BPU1RbJ2RhdGVtb250aCddLCRfUE9TVFsnZGF0ZWRheSddLCRfUE9TVFsnZGF0ZXllYXInXSk7CiAgICAKICAgIC8vIG5leHQgcGVyaW9kIHN0YXJ0CiAgICAkbmV4dF9wZXJpb2Q9JGxhc3R0aW1lICsgJF9QT1NUWydkYXlzJ10qMjQqMzYwMDsKICAgICRuZXh0X3BlcmlvZD1kYXRlKCJGIGQsIFkiLCRuZXh0X3BlcmlvZCk7CgkKCS8vZmlyc3QgZmVydGlsZSBkYXkKCSRmaXJzdGRheXRpbWU9JGxhc3R0aW1lICsgJF9QT1NUWydkYXlzJ10qMjQqMzYwMCAtIDE2KjI0KjM2MDA7CgkkZmlyc3RkYXk9ZGF0ZSgiRiBkLCBZIiwkZmlyc3RkYXl0aW1lKTsKCQoJLy9sYXN0IGZlcnRpbGUgZGF5CgkkbGFzdGRheXRpbWU9JGxhc3R0aW1lICsgJF9QT1NUWydkYXlzJ10qMjQqMzYwMCAtIDEyKjI0KjM2MDA7CgkkbGFzdGRheT1kYXRlKCJGIGQsIFkiLCRsYXN0ZGF5dGltZSk7CgkKCS8vaGF2ZSB0byBhZGp1c3QgZHVlIGRhdGU/CgkkZGlmZj0kX1BPU1RbJ2RheXMnXSAtIDI4OwoJCgkvL2R1ZSBkYXRlICRkYXRlICsgMjgwIGRheXMKCSRkdWVkYXRldGltZT0kbGFzdHRpbWUgKyAyODAqMjQqMzYwMCArICRkaWZmKjI0KjM2MDA7CgkkZHVlZGF0ZT1kYXRlKCJGIGQsIFkiLCRkdWVkYXRldGltZSk7CgkKCT8+Cgk8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX3RhYmxlIj4KCTxwPkhlcmUgYXJlIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiB5b3UgcHJvdmlkZWQ6PC9wPgogICAgPHA+WW91ciBuZXh0IDxiPm1lbnN0cnVhbCBwZXJpb2Q8L2I+IGlzIGV4cGVjdGVkIHRvIHN0YXJ0IG9uIDxzdHJvbmc+PD9waHAgZWNobyAkbmV4dF9wZXJpb2Q/Pjwvc3Ryb25nPi48L3A+Cgk8cD5Zb3UgbmV4dCA8Yj5tb3N0IGZlcnRpbGU8L2I+IHBlcmlvZCBpcyA8c3Ryb25nPjw/cGhwIGVjaG8gJGZpcnN0ZGF5Pz4gdG8gPD9waHAgZWNobyAkbGFzdGRheT8+PC9zdHJvbmc+LjwvcD4KCTxwPklmIHlvdSBjb25jZWl2ZSB3aXRoaW4gdGhpcyB0aW1lZnJhbWUsIHlvdXIgZXN0aW1hdGVkIDxiPmR1ZSBkYXRlPC9iPiB3aWxsIGJlIDxzdHJvbmc+PD9waHAgZWNobyAkZHVlZGF0ZT8+PC9zdHJvbmc+LjwvcD4KCTxwIGFsaWduPSJjZW50ZXIiPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJDYWxjdWxhdGUgYWdhaW4hIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb249J2h0dHA6Ly88P3BocCBlY2hvICRfU0VSVkVSWydIVFRQX0hPU1QnXTs/Pjw/cGhwIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10/PiciPjwvcD4KCTwvZGl2Pgo8P3BocCBlbHNlOgoJLy90aGUgY2FsY3VsYXRvciBjb21lcyBoZXJlCgk/PgoJPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl90YWJsZSI+Cgk8Zm9ybSBtZXRob2Q9InBvc3QiPgoJPHA+UGxlYXNlIHNlbGVjdCB0aGUgZmlyc3QgZGF5IG9mIHlvdXIgbGFzdCBtZW5zdHJ1YWwgcGVyaW9kOjwvcD4KCTxwPjw/cGhwIGVjaG8gZGF0ZV9jaG9vc2VyKCJkYXRlIixkYXRlKCJZLW0tZCIpKT8+PC9wPgoJPHA+VXN1YWwgbnVtYmVyIG9mIGRheXMgaW4geW91ciBwZXJpb2Q6IDxzZWxlY3QgbmFtZT0iZGF5cyI+Cgk8P3BocAoJZm9yKCRpPTIwOyRpPD00NTskaSsrKQoJewoJCWlmKCRpPT0yOCkgJHNlbGVjdGVkPSdzZWxlY3RlZD0idHJ1ZSInOwoJCWVsc2UgJHNlbGVjdGVkPScnOwoJCWVjaG8gIjxvcHRpb24gJHNlbGVjdGVkIHZhbHVlPSckaSc+JGk8L29wdGlvbj4iOwoJfQoJPz4KCTwvc2VsZWN0PjwvcD4KCTxwIGFsaWduPSJjZW50ZXIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNhbGN1bGF0b3Jfb2siIHZhbHVlPSJDYWxjdWxhdGUiPjwvcD4KCTwvZm9ybT4KCTwvZGl2Pgo8P3BocCBlbmRpZjsKCi8vdG8gcHJpbnQgYSBkYXRlIGNob29zZXIgLSBnZXQgbmFtZSBhbmQgdmFsdWUgaW4gbXlzcWwgZGF0ZSBmb3JtYXQKZnVuY3Rpb24gZGF0ZV9jaG9vc2VyKCRuYW1lLCR2YWx1ZT0iIikKewoJJG1vbnRocz1hcnJheSgnJywnSmFudWFyeScsJ0ZlYnJ1YXJ5JywnTWFyY2gnLCdBcHJpbCcsJ01heScsJ0p1bmUnLCdKdWx5JywnQXVndXN0JywKCSdTZXB0ZW1iZXInLCdPY3RvYmVyJywnTm92ZW1iZXInLCdEZWNlbWJlcicpOwoJCglpZihlbXB0eSgkdmFsdWUpKSAkdmFsdWU9ZGF0ZSgiWS1tLWQiKTsKCQoJJHBhcnRzPWV4cGxvZGUoIi0iLCR2YWx1ZSk7CgkKCSRkYXk9JHBhcnRzWzJdKzA7CgkkbW9udGg9JHBhcnRzWzFdKzA7CgkkeWVhcj0kcGFydHNbMF07CgkKCSRjaG9vc2VyPSIiOwoJCgkkY2hvb3Nlci49IjxzZWxlY3QgbmFtZT0nIi4kbmFtZS4ibW9udGgnPiI7Cglmb3IoJGk9MTskaTw9MTI7JGkrKykKCXsKCQlpZigkaT09JG1vbnRoKSAkc2VsZWN0ZWQ9J3NlbGVjdGVkPSJ0cnVlIic7CgkJZWxzZSAkc2VsZWN0ZWQ9Jyc7CgkJJGNob29zZXIuPSI8b3B0aW9uICRzZWxlY3RlZCB2YWx1ZT0nJGknPiRtb250aHNbJGldPC9vcHRpb24+IjsKCX0KCSRjaG9vc2VyLj0iPC9zZWxlY3Q+IC8gIjsKCQoJJGNob29zZXIuPSI8c2VsZWN0IG5hbWU9JyIuJG5hbWUuImRheSc+IjsKCWZvcigkaT0xOyRpPD0zMTskaSsrKQoJewoJCWlmKCRpPT0kZGF5KSAkc2VsZWN0ZWQ9J3NlbGVjdGVkJzsKCQllbHNlICRzZWxlY3RlZD0nJzsKCQkkY2hvb3Nlci49IjxvcHRpb24gJHNlbGVjdGVkIHZhbHVlPSckaSc+JGk8L29wdGlvbj4iOwoJfQoJJGNob29zZXIuPSI8L3NlbGVjdD4gLyAiOwoJCgkkY2hvb3Nlci49IjxzZWxlY3QgbmFtZT0nIi4kbmFtZS4ieWVhcic+IjsKCWZvcigkaT0oZGF0ZSgiWSIpLTEpOyRpPD0yMDUwOyRpKyspCgl7CgkJaWYoJGk9PSR5ZWFyKSAkc2VsZWN0ZWQ9J3NlbGVjdGVkJzsKCQllbHNlICRzZWxlY3RlZD0nJzsKCQkkY2hvb3Nlci49IjxvcHRpb24gJHNlbGVjdGVkPiRpPC9vcHRpb24+IjsKCX0KCSRjaG9vc2VyLj0iPC9zZWxlY3Q+ICI7CQoJCglyZXR1cm4gJGNob29zZXI7Cn0KPz4=