﻿var arrMonthNames = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var arrDates = new Array(365);
var intNumDaysPicked;

var CTRL_PREFIX = "ctl00_ContentPlaceHolder1_"

function DateAsString(theDate) {
    return arrMonthNames[theDate.getMonth()] + " " + theDate.getDate();
}

function AddDays(theDate, days) {
    return new Date(theDate.getTime() + days * 24 * 60 * 60 * 1000);
}

function PickADay() {
    var newDayJulian = Math.floor(Math.random() * 365);
    var jan1 = new Date(1999, 0, 1);
    var newDay = AddDays(jan1, newDayJulian);

    intNumDaysPicked++;
    var intNumPairs = intNumDaysPicked * (intNumDaysPicked - 1) / 2;
    probNoMatches = Math.pow((364 / 365), intNumPairs);

    var strInfo = "Last date selected: " + DateAsString(newDay) + "<br/><br/>"
            + "# dates selected (n): " + intNumDaysPicked + "<br/><br/>"
            + "# date pairs = n(n-1)/2: " + intNumPairs + "<br/><br/>"
            + "P(no match in " + intNumPairs + " pairs)<br>= (364/365)<sup>" + intNumPairs + "</sup>: " + String(Math.round(probNoMatches * 100000) / 1000) + "%" + "<br><br>"
            + "P(at least one match)<br/>= 1 - P(no matches): " + String(Math.round((1 - probNoMatches) * 100000) / 1000) + "%" + "<br/><br/>"
            + "P(match on next selection)<br/>= n/365: " + String(Math.round((intNumDaysPicked / 365) * 100000) / 1000) + "%";

    document.getElementById("lblInfo").innerHTML = strInfo;

    if (arrDates[newDayJulian] == true)
        alert("Hit!  " + DateAsString(newDay) + " has been picked for the second time.");
    else
        arrDates[newDayJulian] = true;

    document.getElementById(CTRL_PREFIX + "daycell" + String(newDay.getMonth() + 1) + "x" + String(newDay.getDate())).innerHTML = DateAsString(newDay);
}

function Init() {
    intNumDaysPicked = 0;
    PickADay();
    PickADay();
    document.getElementById("cmdPickADay").onclick = PickADay;
    document.getElementById("cmdPickADay").focus();
}
