﻿var PREFIX_DAY = "#Day";
var PREFIX_MONTH = "#Month";
var HOVER_FONT_COLOR = "#720303";
var HOVER_BACKGROUND = "#FFFFFF";
var NORMAL_FONT_COLOR = "#FFFFFF";
var NORMAL_BACKGROUND = "transparent";

var HoverOverDay = null;
var HoverOverYear = null;
var SelectedDay = null;
var SelectedMonth = null;
var SelectedYear = null;

function CheckDOBEntry() {
    if ((SelectedDay != null) && (SelectedMonth != null) && (SelectedYear != null)) {
        $("#LoadingMessage").css("display", "block");
        setTimeout('$("form:first").submit();', 750);
    }
}

function SetHoverState(id) {
    $(id).css("background-color", HOVER_BACKGROUND).css("color", HOVER_FONT_COLOR);
}

function SetNormalState(id) {
    $(id).css("background-color", NORMAL_BACKGROUND).css("color", NORMAL_FONT_COLOR); ;
}

function DetermineValue(obj, event, width, base, spacer) {
    var pos = event.pageX - obj.offset().left;
    var offset = Math.floor(pos / width / 10) * spacer;
    var value = Math.floor((pos - offset) / width) + base;
    return value;
}

function DayDetermineValue(event) {
    return DetermineValue($("#DaySelector"), event, 26, 1, 0);
}

function DayValueMove(event) {
    var value = DayDetermineValue(event);

    if (value != HoverOverDay) {
        SetHoverState(PREFIX_DAY + value);

        if (HoverOverDay != SelectedDay) {
            SetNormalState(PREFIX_DAY + HoverOverDay);
        }

        HoverOverDay = value;
    }
}

function DayValueClick(event) {
    var value = DayDetermineValue(event);

    if (SelectedDay != value) {
        if (SelectedDay != null) {
            SetNormalState(PREFIX_DAY + SelectedDay);
        }

        SelectedDay = value;
        SetHoverState(PREFIX_DAY + SelectedDay);
        $("#DOBDay").attr("value", SelectedDay);

        CheckDOBEntry();
    }
}

function DayValueExit() {
    if (HoverOverDay != SelectedDay) {
        SetNormalState(PREFIX_DAY + HoverOverDay);
    }

    HoverOverDay = null;
}

function MonthValueEnter(value) {
    SetHoverState(PREFIX_MONTH + value);
}

function MonthValueClick(value) {
    if (SelectedMonth != value) {
        if (SelectedMonth != null) {
            SetNormalState(PREFIX_MONTH + SelectedMonth);
        }

        SelectedMonth = value;
        SetHoverState(PREFIX_MONTH + SelectedMonth);
        $("#DOBMonth").attr("value", SelectedMonth);

        CheckDOBEntry();
    }
}

function MonthValueExit(value) {
    if (value != SelectedMonth) {
        SetNormalState(PREFIX_MONTH + value);
    }
}

function YearDetermineValue(event) {
    return DetermineValue($("#YearSelector"), event, 7, 0, 1);
}

function YearDetermineX(value) {
    return ((Math.floor((value - 1) / 10) * 1) + (value * 7) - 25);
}

function YearValueMove(event) {
    var value = YearDetermineValue(event);

    if (value != HoverOverYear) {
        $("#YearValue").css("left", YearDetermineX(value) + "px").text(value + 1900);

        HoverOverYear = value;
    }
}

function YearValueClick(event) {
    var value = YearDetermineValue(event);

    if (SelectedYear != value) {
        SelectedYear = value;

        $("#DOBYear").attr("value", value + 1900);
        $("#YearSelected").css("left", YearDetermineX(value) + "px").text(value + 1900).css("display", "block");

        CheckDOBEntry();
    }
}

google.setOnLoadCallback(function() {
    $("#DaySelector").mousemove(DayValueMove);
    $("#DaySelector").click(DayValueClick);
    $("#DaySelector").mouseout(DayValueExit);

    $("#YearSelector").mousemove(YearValueMove);
    $("#YearSelector").click(YearValueClick);
    $("#YearSelector").mouseover(function() {
        $("#YearValue").css("display", "block");
    });
    $("#YearSelector").mouseout(function() {
        $("#YearValue").css("display", "none");
    });

    $("#DOBDay").attr("value", 0);
    $("#DOBMonth").attr("value", 0);
    $("#DOBYear").attr("value", 0);
});