﻿var xhr = false;
var xPos, yPos;

YAHOO.util.Event.onContentReady('quicktools', function() { 
    showXMLTools();
});
YAHOO.util.Event.onContentReady('rate_finder', function() { 
    var allSelect = document.getElementsByTagName("select");
    for (var j=0;j<allSelect.length;j++){
        allSelect[j].onchange = processRateFinder;
    }
    fillSecondSelect("SH");
});
function processRateFinder() {
    switch (this.id){
        case "ratefind1":
            var rate1Value = this.options[this.selectedIndex].value;
            fillSecondSelect(rate1Value);
            break;
        case "ratefind2":
            if (this.selectedIndex > 0) {
                fillRateDiv(this.selectedIndex);
            } else {
                document.getElementById("rateDisplay").innerHTML = "";
            }
            break;
        default:
    }
}

function fillRateDiv(indexVal) {
    var rateCallBack = {
        success: function(o) {
            var xmlRateDoc = o.responseXML.documentElement;
            var rate1Selected = document.getElementById("ratefind1").options[document.getElementById("ratefind1").selectedIndex].value;
            var rateDisplayDiv = "";
            var allRates = xmlRateDoc.getElementsByTagName(rate1Selected);
            switch (rate1Selected) {
                case "SH":
                    try {
                        // pull correct values from loaded XML object
                        var rate = allRates[indexVal - 1].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                        var APY = allRates[indexVal - 1].getElementsByTagName("APY")[0].childNodes[0].nodeValue;
                        // display in div
                        rateDisplayDiv += "<span class='rate1'>rate</span><br/><span class='rate2'>";
                        rateDisplayDiv += rate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><br/>";
                        rateDisplayDiv += "<span class='rate1'>APY</span><br/><span class='rate2'>";
                        rateDisplayDiv += APY;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                    } catch (e) { }
                    break;
                case "Cert":
                    try {
                        // pull correct values from loaded XML object
                        var rate = allRates[indexVal - 1].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                        var APY = allRates[indexVal - 1].getElementsByTagName("APY")[0].childNodes[0].nodeValue;
                        var term = allRates[indexVal - 1].getElementsByTagName("Term")[0].childNodes[0].nodeValue;
                        // display in div
                        rateDisplayDiv += "<span class='rate1'>rate</span><br/><span class='rate2'>";
                        rateDisplayDiv += rate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><br/>";
                        rateDisplayDiv += "<span class='rate1'>APY</span><br/><span class='rate2'>";
                        rateDisplayDiv += APY;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span><br/>";
                        rateDisplayDiv += "<span class='rate3'>";
                        rateDisplayDiv += term;
                        rateDisplayDiv += "</span> <span class='rate1'>month term</span>";

                    } catch (e) { alert(e); }

                    break;
                case "MLR":
                    try {
                        // pull correct values from loaded XML object
                        var term = allRates[indexVal - 1].getElementsByTagName("Term")[0].childNodes[0].nodeValue;
                        var rate = allRates[indexVal - 1].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                        var maxltv = allRates[indexVal - 1].getElementsByTagName("maxLTV")[0].childNodes[0].nodeValue;

                        rate = rate.substring(0, 4);

                        // display in div
                        rateDisplayDiv += "<br/><span class='rate1'>rates as low as </span><br/><span class='rate2'>";
                        rateDisplayDiv += rate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><span class='rate1'>";
                        switch (indexVal) {
                            case 1:
                                maxltv = maxltv.substring(0, 14);
                                break;
                            case 2:
                                maxltv = maxltv.substring(0, 14);
                                break;
                            case 3:
                                maxltv = maxltv.substring(0, 14);
                                break;
                            case 4:
                                maxltv = maxltv.substring(0, 7);
                                break;
                            case 5:
                                break;
                            default:
                                break;

                        }
                        rateDisplayDiv += maxltv;
                        rateDisplayDiv += "<br/>*** Must qualify for premium rates</span>";

                    } catch (e) { alert(e); }

                    break;

                case "ULR":
                    try {
                        // pull correct values from loaded XML object
                        var ARate = allRates[indexVal - 1].getElementsByTagName("ARate")[0].childNodes[0].nodeValue;
                        var BRate = allRates[indexVal - 1].getElementsByTagName("BRate")[0].childNodes[0].nodeValue;
                        var CRate = allRates[indexVal - 1].getElementsByTagName("CRate")[0].childNodes[0].nodeValue;
                        var DRate = allRates[indexVal - 1].getElementsByTagName("DRate")[0].childNodes[0].nodeValue;
                        // display in div
                        rateDisplayDiv += "<span class='rate1'>A Paper: </span><span class='rate4'>";
                        rateDisplayDiv += ARate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><span class='rate1'>B Paper: </span><span class='rate4'>";
                        rateDisplayDiv += BRate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><span class='rate1'>C Paper: </span><span class='rate4'>";
                        rateDisplayDiv += CRate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><span class='rate1'>D Paper: </span><span class='rate4'>";
                        rateDisplayDiv += DRate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span><br/><span class='rate1'>* Must qualify for premium rates";

                    } catch (e) { alert(e); }

                    break;

                case "SLR":
                    try {
                        var desc, rate;

                        // pull correct values from loaded XML object
                        switch (indexVal - 1) {
                            case 0:
                                desc = "New Autos, Vans, Trucks";
                                rate = allRates[0].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            case 1:
                                desc = "Used Autos, Vans, Trucks";
                                rate = allRates[3].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            case 2:
                                desc = "New Boats, PWC, Motorcycles";
                                rate = allRates[6].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            case 3:
                                desc = "Used Boats, PWC, Motorcycles";
                                rate = allRates[9].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            case 4:
                                desc = "New Motor Homes and Travel Trailors";
                                rate = allRates[12].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            case 5:
                                desc = "Used Motor Homes and Travel Trailors";
                                rate = allRates[16].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            case 6:
                                desc = "New and Used Lawn Tractors and Equipment";
                                rate = allRates[20].getElementsByTagName("Rate")[0].childNodes[0].nodeValue;
                                break;
                            default:
                                break;

                        }
                        // display in div
                        rateDisplayDiv += "<span class='rate1'>";
                        rateDisplayDiv += desc;
                        rateDisplayDiv += "</span><br/>";
                        rateDisplayDiv += "<span class='rate1'>rates as low as</span><br/><span class='rate4'>";
                        rateDisplayDiv += rate;
                        rateDisplayDiv += "</span><span class='ratePercent'>%</span>";
                        rateDisplayDiv += "<br/><span class='rate1'>* Must qualify for premium rates<br />* Collateral Age, Loan Term, and Credit Scores determine rates</span>";
                        rateDisplayDiv += "<br/><a href='Rates.aspx' class='rate1'>Click here for more detailed rate information.</a>";

                    } catch (e) { alert(e); }

                    break;
                default:
                    alert("Problem loading rates from XML properly!");
                    break;
            }
            rateDisplayDiv += "<br/><span class='rate1'>** Rates subject to change<br/>*** Rules and Restrictions Apply</span>"
            document.getElementById("rateDisplay").innerHTML = rateDisplayDiv;
        },
        failure: function(o) {
            alert("Connection Failed!");
        }
    }
    var xmlRateLoad = YAHOO.util.Connect.asyncRequest('GET', 'xml/xmlHSCU.xml', rateCallBack, null);
}

function fillSecondSelect(rate1SelectValue) {
    clearSecondSelect();
    var secondCallback = {
        success: function(o) {
            var xmlRateDoc = o.responseXML.documentElement;
            var updated = xmlRateDoc.getElementsByTagName("Rates")[0].getAttribute("updated");
            updated = "last updated: " + updated;
            document.getElementById("rate_updated").innerHTML = updated;

            var rateSelect2 = document.getElementById("ratefind2");
            var firstOption = new Option;
            firstOption.text = "Please Select to View Rate";
            rateSelect2.options[0] = firstOption;

            switch (rate1SelectValue) {
                case "SH":
                    var r = xmlRateDoc.getElementsByTagName(rate1SelectValue);
                    var rateDesc = xmlRateDoc.getElementsByTagName("Description");

                    for (var x = 0; x < r.length; x++) {
                        var rateOption = new Option;
                        rateOption.text = r[x].getElementsByTagName("Description")[0].childNodes[0].nodeValue;
                        rateOption.value = x;
                        try {
                            rateSelect2.options[x + 1] = rateOption;
                        } catch (e) { }
                    }
                    document.getElementById("ratefind2").selectedIndex = 9;
                    fillRateDiv(9);
                    break;
                case "Cert":
                    var r = xmlRateDoc.getElementsByTagName(rate1SelectValue);
                    var rateDesc = xmlRateDoc.getElementsByTagName("Description");

                    for (var x = 0; x < r.length; x++) {
                        var rateOption = new Option;
                        rateOption.text = r[x].getElementsByTagName("Description")[0].childNodes[0].nodeValue;
                        rateOption.value = x;
                        try {
                            rateSelect2.options[x + 1] = rateOption;
                        } catch (e) { }
                    }
                    break;
                case "MLR":
                    var r = xmlRateDoc.getElementsByTagName(rate1SelectValue);
                    var rateDesc = new Array("30 Year 5/5", "15 Year 5/5", "15 Year Fixed", "Home Equity Line of Credit", "Express Equity Fixed");

                    for (var x = 0; x < r.length; x++) {
                        var rateOption = new Option;
                        rateOption.text = rateDesc[x];
                        rateOption.value = x;
                        try {
                            rateSelect2.options[x + 1] = rateOption;
                        } catch (e) { }
                    }
                    break;
                case "ULR":
                    var r = xmlRateDoc.getElementsByTagName(rate1SelectValue);
                    var rateDesc = xmlRateDoc.getElementsByTagName("Term");

                    for (var x = 0; x < r.length; x++) {
                        var rateOption = new Option;
                        rateOption.text = r[x].getElementsByTagName("Term")[0].childNodes[0].nodeValue;
                        rateOption.value = x;
                        try {
                            rateSelect2.options[x + 1] = rateOption;
                        } catch (e) { }
                    }

                    break;
                case "SLR":
                    //var r = o.getElementsByTagName(rate1SelectValue);
                    //var rateDesc = o.getElementsByTagName("Description");
                    var rateOptionText = new Array()
                    var rateOptionValue = new Array()
                    rateOptionText[0] = "New Autos, Vans, Trucks"
                    rateOptionText[1] = "Used Autos, Vans, Trucks"
                    rateOptionText[2] = "New Boats, PWC, Motorcycles"
                    rateOptionText[3] = "Used Boats, PWC, Motorcycles"
                    rateOptionText[4] = "New Motor Homes/Travel Trailors"
                    rateOptionText[5] = "Used Motor Homes/Travel Trailors"
                    rateOptionText[6] = "New/Used Lawn Tractors & Equip."

                    for (var x = 0; x < 7; x++) {
                        var rateOption = new Option;
                        rateOption.text = rateOptionText[x];
                        rateOption.value = x;
                        try {
                            rateSelect2.options[x + 1] = rateOption;
                        } catch (e) { }
                    }
                    break;
                default:

                    break;
            }
        },
        failure: function(o) { alert("Failed to Fill Second Select"); }
    }
    var xmlSecondRateLoad = YAHOO.util.Connect.asyncRequest('GET','xml/xmlHSCU.xml', secondCallback, null);
}

function clearSecondSelect() {
    var rateSelect2 = document.getElementById("ratefind2");
    rateSelect2.options.length = 0;
    document.getElementById("rateDisplay").innerHTML = "";
    
}

function showPreview(evt) {
    if (evt) {
        var url = evt.target;
    } else {
        evt = window.event;
        var url = evt.srcElement;
    }
    xPos = evt.clientX;
    yPos = YAHOO.util.Dom.getY(this);

    var prevCallback = {
        success: function(o) {

            document.getElementById("newsWin_content").innerHTML = o.responseText;
            if (navigator.userAgent.indexOf('iPhone') != -1) {
                YAHOO.util.Dom.setX("newsWin", 5);
                YAHOO.util.Dom.setY("newsWin", yPos - 25);
            } else {
                YAHOO.util.Dom.setX("newsWin", xPos + 15);
                YAHOO.util.Dom.setY("newsWin", yPos - 25);
            }

            YAHOO.util.Dom.setStyle('newsWin', 'visibility', 'visible');
        },
        failure: function(o) {
            alert('Error retrieving the preview!');
        }
    };
    var getPreview = YAHOO.util.Connect.asyncRequest('GET',url,prevCallback,null);
     
    return false;
}

function hidePreview() {
    document.getElementById("newsWin").style.visibility = "hidden";
}

function showNewTags() {
    var now = new Date();
    var lastVisit = new Date(cookieVal("pageVisit"));
    var expireDate = new Date();
    expireDate.setMonth(expireDate.getMonth() + 6);
    document.cookie = "pageVisit=" + now + ";expires=" + expireDate.toGMTString();
    var allGrafs = document.getElementsByTagName("p");
    for (var i = 0; i < allGrafs.length; i++) {
        if (allGrafs[i].id.indexOf("New-") != -1) {
            newCheck(allGrafs[i],allGrafs[i].id.substring(4));
        }

    }

    function newCheck(grafElement, dtString) {
        var yyyy = parseInt(dtString.substring(0, 4), 10);
        var mm = parseInt(dtString.substring(4, 6), 10);
        var dd = parseInt(dtString.substring(6, 8), 10);
        var lastChgd = new Date(yyyy, mm - 1, dd);
        if (lastChgd.getTime() > lastVisit.getTime()) {
            grafElement.className = (grafElement.className == "") ? "newImg" : "newImg " + grafElement.className;
        }

    }
}

function cookieVal(cookieName) {
    var thisCookie = document.cookie.split("; ");
    for (var i = 0; i<thisCookie.length; i++) {
        if(cookieName == thisCookie[i].split("=")[0]){
            return thisCookie[i].split("=")[1];
        }

    }
    return "1 January 1970";
}

function showXMLTools() {

        var toolsDiv;
        toolsDiv = "";

        var weekday = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
        var month = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

        var currDateTime = new Date();

        toolsDiv += "<ul class='openclosedgrp'><li class='currDateTime'>";
        toolsDiv += weekday[currDateTime.getDay()];
        toolsDiv += ", ";
        toolsDiv += month[currDateTime.getMonth()];
        toolsDiv += " ";
        toolsDiv += currDateTime.getDate();
        toolsDiv += ", ";
        toolsDiv += currDateTime.getFullYear();
        toolsDiv += "</li>";


        if (CheckIfOpen("lobby")) {
            // alert("lobby is open!");
            toolsDiv += "<li class='openclosed'>";
            toolsDiv += "<img src='img/icons/door_open.png' alt='Lobby is Open' width='16px' height='16px'/>";
            toolsDiv += "  The Lobby is open!</li>";

        } else {
            // alert("lobby is closed!");
            toolsDiv += "<li class='openclosed'>";
            toolsDiv += "<img src='img/icons/cancel.png' alt='Lobby is Closed' width='16px' height='16px'/>";
            toolsDiv += "  The Lobby is closed</li>";
        }

        if (CheckIfOpen("callcenter")) {
            // alert("call center is open");
            toolsDiv += "<li class='openclosed'>";
            toolsDiv += "<img src='img/icons/user_comment.png' alt='Call Center is Open' width='16px' height='16px'/>";
            toolsDiv += "  The Call Center is open!</li>";
        } else {
            // alert("call center is closed");
            toolsDiv += "<li class='openclosed'>";
            toolsDiv += "<img src='img/icons/cancel.png' alt='Call Center is Closed' width='16px' height='16px'/>";
            toolsDiv += "  The Call Center is closed</li>";
        }

        if (CheckIfOpen("drivethru")) {
            // alert("drive thru is open");
            toolsDiv += "<li class='openclosed'>";
            toolsDiv += "<img src='img/icons/car.png' alt='Drive Thru is Open' width='16px' height='16px'/>";
            toolsDiv += "  The Drive Thru is open!</li></ul>";
        } else {
            // alert("drive thru is closed");
            toolsDiv += "<li class='openclosed'>";
            toolsDiv += "<img src='img/icons/cancel.png' alt='Drive Thru is Closed' width='16px' height='16px'/>";
            toolsDiv += "  The DriveThru is closed</li></ul>";
        }
        document.getElementById("quicktools").innerHTML = toolsDiv;
    // }
}

function CheckIfOpen(loc) {
    // alert("we are checking to see if " + loc + " is open");
    var d = new Date();
    

    if (d.getDay() == 0){
        return false;
    }
    if (d.getDay() == 7){
        return false;
    }

    if (CheckForHoliday(d.getMonth(), d.getDate(), d.getFullYear())) {
        // alert("is a holiday");
        return false;
    } else {
        // alert("is not a holiday");
        if (CheckNormalHours(loc)) {
                    return true;
                } else {
                    return false;
                }
    }
}

function CheckNormalHours(locationValue) {
    // alert("checking normal business hours for " + locationValue);
    var lobbyOpenHour = new Array(0, 8, 8, 8, 8, 8, 0);
    var lobbyOpenMinute = new Array(0, 30, 30, 30, 30, 30, 0);
    var ccOpenHour = new Array(0, 8, 8, 8, 8, 8, 0);
    var ccOpenMinute = new Array(0, 0, 0, 0, 0, 0, 0);
    var dtOpenHour = new Array(0, 7, 7, 7, 7, 7, 0);
    var dtOpenMinute = new Array(0, 30, 30, 30, 30, 30, 0);
    var lobbyClosedHour = new Array(0, 16, 16, 16, 17, 17, 0);
    var lobbyClosedMinute = new Array(0, 0, 0, 0, 0, 0, 0);
    var ccClosedHour = new Array(0, 16, 16, 16, 17, 17, 0);
    var ccClosedMinute = new Array(0, 30, 30, 30, 0, 0, 0);
    var dtClosedHour = new Array(0, 16, 16, 16, 18, 18, 0);
    var dtClosedMinute = new Array(0, 30, 30, 30, 0, 0, 0);

    var dateValue = new Date();

    switch (locationValue) {
        case "lobby":
            if (dateValue.getHours() < lobbyOpenHour[dateValue.getDay()]) {
                // alert("before lobby has opened");
                return false;
            } else if (dateValue.getHours() == lobbyOpenHour[dateValue.getDay()] && dateValue.getMinutes() < lobbyOpenMinute[dateValue.getDay()]) {
                // alert("before lobby opened, but within 30 minutes");
                return false;
            } else {
                // alert("after lobby has opened");
                // check for closed
                if (lobbyClosedHour[dateValue.getDay()] > 0) {
                    // closes at :30
                    if (dateValue.getHours() < lobbyClosedHour[dateValue.getDay()]) {
                        // alert("before lobby closes");
                        return true;
                    } else if (dateValue.getHours() == lobbyClosedHour[dateValue.getDay()] && dateValue.getMinutes() < lobbyClosedMinute[dateValue.getDay()]) {
                        // alert("before lobby closes");
                        return true;
                    } else {
                        // alert("after lobby closes");
                        return false;
                    }
                } else {
                    // closes at top of the hour
                    if (dateValue.getHours() <= lobbyClosedHour[dateValue.getDay()]) {
                        // alert("before lobby has closed");
                        return false;
                    } else {
                        // alert("after lobby has closed");
                        return false;
                    }
                }
            }
            break;
        case "callcenter":
            if (dateValue.getHours() < ccOpenHour[dateValue.getDay()]) {
                // alert("before cc has opened");
                return false;
            } else if (dateValue.getHours() == ccOpenHour[dateValue.getDay()] && dateValue.getMinutes() < ccOpenMinute[dateValue.getDay()]) {
                // alert("before cc opened, but within 30 minutes");
                return false;
            } else {
                // alert("after cc has opened");
                // check for closed
                if (ccClosedHour[dateValue.getDay()] > 0) {
                    // closes at :30
                    if (dateValue.getHours() < ccClosedHour[dateValue.getDay()]) {
                        // alert("before cc closes");
                        return true;
                    } else if (dateValue.getHours() == ccClosedHour[dateValue.getDay()] && dateValue.getMinutes() < ccClosedMinute[dateValue.getDay()]) {
                        // alert("before cc closes");
                        return true;
                    } else {
                        // alert("after cc closes");
                        return false;
                    }
                } else {
                    // closes at top of the hour
                    if (dateValue.getHours() <= ccClosedHour[dateValue.getDay()]) {
                        // alert("before cc has closed");
                        return false;
                    } else {
                        // alert("after cc has closed");
                        return false;
                    }
                }
            }
            break;
        case "drivethru":
            if (dateValue.getHours() < dtOpenHour[dateValue.getDay()]) {
                // alert("before dt has opened");
                return false;
            } else if (dateValue.getHours() == dtOpenHour[dateValue.getDay()] && dateValue.getMinutes() < dtOpenMinute[dateValue.getDay()]) {
                // alert("before dt opened, but within 30 minutes");
                return false;
            } else {
                // alert("after dt has opened");
                // check for closed
                if (dtClosedHour[dateValue.getDay()] > 0) {
                    // closes at :30
                    if (dateValue.getHours() < dtClosedHour[dateValue.getDay()]) {
                        // alert("before dt closes");
                        return true;
                    } else if (dateValue.getHours() == dtClosedHour[dateValue.getDay()] && dateValue.getMinutes() < dtClosedMinute[dateValue.getDay()]) {
                        // alert("before dt closes");
                        return true;
                    } else {
                        // alert("after dt closes");
                        return false;
                    }
                } else {
                    // closes at top of the hour
                    if (dateValue.getHours() <= dtClosedHour[dateValue.getDay()]) {
                        // alert("before dt has closed");
                        return false;
                    } else {
                        // alert("after dt has closed");
                        return false;
                    }
                }
            }
            break;
    }
}

function CheckForHoliday(monthValue, dateValue, yearValue) {
    
    switch (yearValue) {
        case 2008:
            switch (monthValue) {
                case 9: // october

                case 10: // november
                    if (dateValue != 11 && dateValue != 27) {
                        return false;
                    } else {
                        return true;
                    }
                    return true;

                case 11: // december
                    if (dateValue != 24 && dateValue != 25) {
                        return false;
                    } else {
                        return true;
                    }
                default:

            }
            break;
        case 2010:
            switch (monthValue) {
                case 0: // january
                    if (dateValue != 1 && dateValue != 18) {
                        return false;
                    } else {
                        return true;
                    }

                case 1: // february
                    if (dateValue != 15) {
                        return false;
                    } else {
                        return true;
                    }
                case 2: // march
                    return false;

                case 3: // april
                    return false;

                case 4: // may
                    if (dateValue != 31) {
                        return false;
                    } else {
                        return true;
                    }
                case 5: // june

                case 6: // july
                    if (dateValue != 5) {
                        return false;
                    } else {
                        return true;
                    }
                case 7: // august
                    return false;

                case 8: // september
                    if (dateValue != 6) {
                        return false;
                    } else {
                        return true;
                    }

                case 9: // october
                    if (dateValue != 11) {
                        return false;
                    } else {
                        return true;
                    }

                case 10: // november
                    if (dateValue != 11 && dateValue != 25) {
                        return false;
                    } else {
                        return true;
                    }
                case 11: // december
                    if (dateValue != 24 && dateValue != 25 && dateValue != 31) {
                        return false;
                    } else {
                        return true;
                    }
            }
    }
    return false;
}