﻿// JavaScript Document
$(document).ready(function() {
    var COOKIE_NAME = 'icebergAge';
    //alert($.cookie(COOKIE_NAME));
    if ($.cookie(COOKIE_NAME) != null) {
        $('body').hide();
        window.location = '/home.aspx';
    }
    else {
    
        var slideshowImages = eval({
            'INFO':
				    [
					    { 'src': '/Iceberg/images/en/imgSplashBanner-2.jpg', 'alt': 'imgSplashBanner 2', 'srcFr': '/Iceberg/images/fr/imgSplashBanner-2.jpg', 'altFr': 'Fr imgSplashBanner 2' },
					    { 'src': '/Iceberg/images/en/imgSplashBanner-3.jpg', 'alt': 'imgSplashBanner 3', 'srcFr': '/Iceberg/images/fr/imgSplashBanner-3.jpg', 'altFr': 'Fr imgSplashBanner 3' },
					    { 'src': '/Iceberg/images/en/imgSplashBanner-4.jpg', 'alt': 'imgSplashBanner 4', 'srcFr': '/Iceberg/images/fr/imgSplashBanner-4.jpg', 'altFr': 'Fr imgSplashBanner 4' },
					    { 'src': '/Iceberg/images/en/imgSplashBanner-5.jpg', 'alt': 'imgSplashBanner 5', 'srcFr': '/Iceberg/images/fr/imgSplashBanner-5.jpg', 'altFr': 'Fr imgSplashBanner 5' },
					    { 'src': '/Iceberg/images/en/imgSplashBanner-6.jpg', 'alt': 'imgSplashBanner 6', 'srcFr': '/Iceberg/images/fr/imgSplashBanner-6.jpg', 'altFr': 'Fr imgSplashBanner 6' },
					    { 'src': '/Iceberg/images/en/imgSplashBanner-7.jpg', 'alt': 'imgSplashBanner 7', 'srcFr': '/Iceberg/images/fr/imgSplashBanner-7.jpg', 'altFr': 'Fr imgSplashBanner 7' }
				    ]
        });
        var provinces = eval({
            'CAD':
			     [
				    { 'code': 'Alberta', 'name': 'Alberta', 'namefr': 'Alberta' },
				    { 'code': 'British Columbia', 'name': 'British Columbia', 'namefr': 'Colombie-Britannique' },
				    { 'code': 'Manitoba', 'name': 'Manitoba', 'namefr': 'Manitoba' },
				    { 'code': 'New Brunswick', 'name': 'New Brunswick', 'namefr': 'Nouveau-Brunswick' },
				    { 'code': 'Newfoundland', 'name': 'Newfoundland', 'namefr': 'Terre-Neuve' },
				    { 'code': 'Nova Scotia', 'name': 'Nova Scotia', 'namefr': 'Nouvelle-Écosse' },
				    { 'code': 'Northwest Territories', 'name': 'Northwest Territories', 'namefr': 'Territoires du Nord-Ouest' },
				    { 'code': 'Nunavut', 'name': 'Nunavut', 'namefr': 'Nunavut' },
				    { 'code': 'Ontario', 'name': 'Ontario', 'namefr': 'Ontario' },
				    { 'code': 'Prince Edward Island', 'name': 'Prince Edward Island', 'namefr': 'Île du Prince-Édouard' },
				    { 'code': 'Québec', 'name': 'Québec', 'namefr': 'Québec (Province)' },
				    { 'code': 'Saskatchewan', 'name': 'Saskatchewan', 'namefr': 'Saskatchewan' },
				    { 'code': 'Yukon', 'name': 'Yukon', 'namefr': 'Territoire du Yukon' }
			     ]
        });

        $("#slideshowEn").fade({
            pause: 4000,
            speed: 800,
            loop: true
        });

        $("#slideshowFr").fade({
            pause: 4000,
            speed: 800,
            loop: true
        });

        var yearOptions = "<option value=''>YYYY</option>";
        var nowDate = new Date();
        for (var i = (nowDate.getFullYear() - 15); (nowDate.getFullYear() - 100) < i; i--) {
            yearOptions = yearOptions + "<option value='" + i + "'>" + i + "</option>";
        }
        $("#formYear").html(yearOptions);

        var region = ""; // used for age range checking
        var lang = "en"; // used for English/French site checking
        var usaMinAge = 21;
        var caMinAge = 19;
        var queMinAge = 18;

        $('#canada .en').click(function() {
            /* var slideshow = "";
            for (var i = 0; i < slideshowImages.INFO.length; i++) {
            slideshow += "<li><img width='801' height='379' src='" + slideshowImages.INFO[i].src + "' alt='" + slideshowImages.INFO[i].alt + "' /></li>";
            }
            $(".banner").html(slideshow);*/
            /*$("#slideshow").fade({
            pause: 4000,
            speed: 800,
            loop: false
            });*/
            $("#slideshowEn").show();
            $("#slideshow").hide();
            $("#slideshowFr").hide();

            $('#entryform').slideDown(250);
            $('#entryform').removeClass('usa');
            $('#canada .en').addClass('here');
            $('#canada .fr').removeClass('here');
            $('#usa a').removeClass('here');
            $('#region').show();
            $('#region label').html('select your location');
            $('#birthday label').html('date of birth');
            $('.submit').val('enter');
            var options = "";
            for (var i = 0; i < provinces.CAD.length; i++) {
                options += "<option value='" + provinces.CAD[i].code + "'>" + provinces.CAD[i].name + "</option>";
            }
            $("#province").html(options);
            region = "ca";
            lang = "en";
        });
        $('#canada .fr').click(function() {
            /*var slideshow = "";
            for (var i = 0; i < slideshowImages.INFO.length; i++) {
            slideshow += "<li><img width='801' height='379' src='" + slideshowImages.INFO[i].src + "' alt='" + slideshowImages.INFO[i].alt + "' /></li>";
            }
            $(".banner").html(slideshow);*/
            $("#slideshowFr").show();
            $("#slideshow").hide();
            $("#slideshowEn").hide();

            $('#entryform').slideDown(250);
            $('#entryform').removeClass('usa');
            $('#canada .fr').addClass('here');
            $('#canada .en').removeClass('here');
            $('#usa a').removeClass('here');
            $('#region').show();
            $('#region label').html('Sélectionner votre localisation');
            $('#birthday label').html('Sélectionner votre localisation');
            $('.submit').val('entrer');
            var options = "";
            for (var i = 0; i < provinces.CAD.length; i++) {
                options += "<option value='" + provinces.CAD[i].code + "'>" + provinces.CAD[i].namefr + "</option>";
            }
            $("#province").html(options);
            region = "ca";
            lang = "fr";
        });
        $('#usa a').click(function() {
            /*var slideshow = "";
            for (var i = 0; i < slideshowImages.INFO.length; i++) {
            slideshow += "<li><img width='801' height='379' src='" + slideshowImages.INFO[i].src + "' alt='" + slideshowImages.INFO[i].alt + "' /></li>";
            }
            $(".banner").html(slideshow);*/
            $("#slideshowEn").show();
            $("#slideshow").hide();
            $("#slideshowFr").hide();

            $('#entryform').slideDown(250);
            $('#entryform').addClass('usa');
            $('#usa a').addClass('here');
            $('#canada .fr').removeClass('here');
            $('#canada .en').removeClass('here');
            $('#region').hide();
            $('#birthday label').html('date of birth');
            $('.submit').val('enter');
            region = "usa";
            lang = "en";
        });
        $('#province').change(function() {
            if ($('#province').val() == 'Québec') {
                region = "quebec";
            }
        });

        $('#entryform .submit').click(function() {
            //alert('check age:' + checkAge($('#formDate').val(), $('#formMonth').val(), $('#formYear').val()));
            //alert(lang + checkAge($('#formDate').val(), $('#formMonth').val(), $('#formYear').val()));
            if (checkAge($('#formDate').val(), $('#formMonth').val(), $('#formYear').val())) {
                //alert('old enough');
                if ($.cookie(COOKIE_NAME) == null) {
                    //date.setTime(date.getTime() + (3 * 24 * 60 * 60 * 1000));
                    $.cookie(COOKIE_NAME, 'true', { path: '/' });
                }
                if (lang == 'fr') {
                    window.location = "/home.aspx?lang=fr-CA"
                } else {
                    window.location = "/home.aspx?lang=en-CA"
                }
            }
            return false;
        });


        function checkAge(dayVal, monthVal, yearVal) {
            //alert('check age');
            if (!validateDate(monthVal + '/' + dayVal + '/' + yearVal)) {
                //alert('invalid date');
                if (lang == 'fr') {
                    alert("S'il vous plaît entrer une date valide.");
                }
                else {
                    alert('Please enter a valid date.');
                }
                return false;
            }
            else {
                //alert('valid date');
                //valid date, check the age limit base on region
                if (region == 'usa') {
                    if (calage(yearVal, monthVal, dayVal) < usaMinAge) {
                        alert('Sorry, you must be legal drinking age to enter this site ');
                        return false;
                    }
                    return true;
                }
                if (region == 'ca') {
                    if (calage(yearVal, monthVal, dayVal) < caMinAge) {
                        if (lang == 'fr') {
                            alert('Désolé, vous devez être âge légal pour boire à entrer dans ce site.');
                        }
                        else {
                            alert('Sorry, you must be legal drinking age to enter this site ');
                        }
                        return false;
                    }
                    return true;
                }
                if (region == 'quebec') {
                    if (calage(yearVal, monthVal, dayVal) < queMinAge) {
                        if (lang == 'fr') {
                            alert('Désolé, vous devez être âge légal pour boire à entrer dans ce site.');
                        }
                        else {
                            alert('Sorry, you must be legal drinking age to enter this site ');
                        }
                        return false;
                    }
                    return true;
                }
                //return true;
            }
        }

        /**
        * DHTML date validation script for mm/dd/yyyy. Courtesy of SmartWebby.com (http://www.smartwebby.com/DHTML/date_validation.asp)
        */
        // Declaring valid date character, minimum year and maximum year
        var dtCh = "/";
        var minYear = 1900;
        var maxYear = 2100;

        function isInteger(s) {
            var i;
            for (i = 0; i < s.length; i++) {
                // Check that current character is number.
                var c = s.charAt(i);
                if (((c < "0") || (c > "9"))) return false;
            }
            // All characters are numbers.
            return true;
        }

        function stripCharsInBag(s, bag) {
            var i;
            var returnString = "";
            // Search through string's characters one by one.
            // If character is not in bag, append to returnString.
            for (i = 0; i < s.length; i++) {
                var c = s.charAt(i);
                if (bag.indexOf(c) == -1) returnString += c;
            }
            return returnString;
        }

        function daysInFebruary(year) {
            // February has 29 days in any year evenly divisible by four,
            // EXCEPT for centurial years which are not also divisible by 400.
            return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
        }
        function DaysArray(n) {
            for (var i = 1; i <= n; i++) {
                this[i] = 31
                if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
                if (i == 2) { this[i] = 29 }
            }
            return this
        }

        function validateDate(dtStr) { // mm/dd/yyyy format
            var daysInMonth = DaysArray(12)
            var pos1 = dtStr.indexOf(dtCh)
            var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
            var strMonth = dtStr.substring(0, pos1)
            var strDay = dtStr.substring(pos1 + 1, pos2)
            var strYear = dtStr.substring(pos2 + 1)
            strYr = strYear
            if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
            if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
            for (var i = 1; i <= 3; i++) {
                if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
            }
            month = parseInt(strMonth)
            day = parseInt(strDay)
            year = parseInt(strYr)
            if (pos1 == -1 || pos2 == -1) {
                //alert("The date format should be : mm/dd/yyyy")
                return false
            }
            if (strMonth.length < 1 || month < 1 || month > 12) {
                //alert("Please enter a valid month")
                return false
            }
            if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
                //alert("Please enter a valid day")
                return false
            }
            if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
                //alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
                return false
            }
            if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
                //alert("Please enter a valid date")
                return false
            }
            //alert('valid date');
            return true
        }

        function calage(calyear, calmon, calday) {

            var curd = new Date();
            var curyear = curd.getYear();
            var curmon = curd.getMonth() - 1;
            var curday = curd.getDay();

            var cald = new Date(calyear, calmon - 1, calday);

            var diff = Date.UTC(curyear, curmon, curday, 0, 0, 0) - Date.UTC(calyear, calmon, calday, 0, 0, 0);

            var dife = datediff(curd, cald);

            return dife[0];
        }

        function datediff(date1, date2) {
            var y1 = date1.getFullYear(), m1 = date1.getMonth(), d1 = date1.getDate(),
			     y2 = date2.getFullYear(), m2 = date2.getMonth(), d2 = date2.getDate();

            if (d1 < d2) {
                m1--;
                d1 += DaysInMonth(y2, m2);
            }
            if (m1 < m2) {
                y1--;
                m1 += 12;
            }
            return [y1 - y2, m1 - m2, d1 - d2];
        }

        function DaysInMonth(Y, M) {
            with (new Date(Y, M, 1, 12)) {
                setDate(0);
                return getDate();
            }
        }


    }
});

