// age verification
// requires - <div id='age'></div>

function addEvent(obj, type, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(type, fn, false);
        EventCache.add(obj, type, fn);
    }
    else if (obj.attachEvent) {
        obj["e" + type + fn] = fn;
        obj[type + fn] = function () { obj["e" + type + fn](window.event); }
        obj.attachEvent("on" + type, obj[type + fn]);
        EventCache.add(obj, type, fn);
    }
    else {
        obj["on" + type] = obj["e" + type + fn];
    }
}

var EventCache = function () {
    var listEvents = [];
    return {
        listEvents: listEvents,
        add: function (node, sEventName, fHandler) {
            listEvents.push(arguments);
        },
        flush: function () {
            var i, item;
            for (i = listEvents.length - 1; i >= 0; i = i - 1) {
                item = listEvents[i];
                if (item[0].removeEventListener) {
                    item[0].removeEventListener(item[1], item[2], item[3]);
                };
                if (item[1].substring(0, 2) != "on") {
                    item[1] = "on" + item[1];
                };
                if (item[0].detachEvent) {
                    item[0].detachEvent(item[1], item[2]);
                };
                item[0][item[1]] = null;
            };
        }
    };
} ();
addEvent(window, 'unload', EventCache.flush);

function RemoveElements(el) {
    for (var i = el.childNodes.length - 1; i >= 0; i = i - 1) {
        el.removeChild(el.childNodes[i]);
    }
}

function isDate(mm, dd, yyyy) {
    var d = new Date(mm + '/' + dd + '/' + yyyy);
    return d.getMonth() + 1 == mm && d.getDate() == dd && d.getFullYear() == yyyy;
}

function isOfLegalAge(mm, dd, yyyy) {
    var d = new Date(mm + '/' + dd + '/' + yyyy);
    var t = new Date();
    var diffYears = t.getFullYear() - d.getFullYear();
    var diffMonths = t.getMonth() - d.getMonth();
    var diffDays = t.getDate() - d.getDate();
    diff = new Date();
    diff.setTime(Math.abs(t.getTime() - d.getTime()));
    var timediff = Math.abs(t.getTime() - d.getTime());
    var leap = Math.floor((timediff / (1000 * 60 * 60 * 24 * 365)) / 4);
    var daysx = Math.floor(timediff / (1000 * 60 * 60 * 24)) - leap;
    var yearsx = Math.floor(daysx / 365);
    return (yearsx > 18);
}

function validateForm(element, isFr) {
    var el = document.getElementById(element);

    if (isFr == true) {

        if (!isDate(el.selectMonth_fr.value, el.selectDay_fr.value, el.selectYear_fr.value)) {

            alert('Invalide la date de naissance');
            return false;
        }

        if (!isOfLegalAge(el.selectMonth_fr.value, el.selectDay_fr.value, el.selectYear_fr.value)) {

            alert('Vous devez être au moins de 19 ans');
            el.action = underageURL;
            return false;
        }

        el.action = homepage2URL;

    }

    else {

        if (!isDate(el.selectMonth_en.value, el.selectDay_en.value, el.selectYear_en.value)) {

            alert('Invalid date of birth');
            return false;
        }

        if (!isOfLegalAge(el.selectMonth_en.value, el.selectDay_en.value, el.selectYear_en.value)) {

            alert('You must be at least 19 years of age');
            el.action = underageURL;
            return false;
        }

        el.action = homepageURL;

    }

    
    return true;
}
function drawForm(element, isFr) {

    var suffix = "_en";

    if (isFr == true)
        suffix = "_fr";

    var el = document.getElementById(element);
    RemoveElements(el);
    var newform = document.createElement('form');
    newform.setAttribute('name', 'formAge' + suffix);
    newform.setAttribute('id', 'formAge' + suffix);
    newform.setAttribute('method', 'post');
    newform.setAttribute('enctype', 'application/x-www-form-urlencoded');
    el.appendChild(newform);
    el = document.getElementById('formAge' + suffix);
    var newdiv = document.createElement('div');
    newdiv.setAttribute('name', 'divAge' + suffix);
    newdiv.setAttribute('id', 'divAge' + suffix);
    newdiv.setAttribute('class', 'text');
    el.appendChild(newdiv);
    el = document.getElementById('divAge' + suffix);
    var newselect = document.createElement('select');
    newselect.setAttribute('name', 'selectMonth' + suffix);
    newselect.setAttribute('id', 'selectMonth' + suffix);
    newselect.setAttribute('class', 'text');
    el.appendChild(newselect);
    el = document.getElementById('selectMonth' + suffix);
    for (var i = 0; i < 12; i++) {
        var newoption = document.createElement('option');
        newoption.setAttribute('class', 'text');
        newoption.setAttribute('value', i + 1);
        if (i == mm) newoption.setAttribute('selected', 'selected');

        var newtext;

        if (isFr == true)
            newtext = document.createTextNode(monthnames_fr[i]);
        else
            newtext = document.createTextNode(monthnames_en[i]);

        newoption.appendChild(newtext);
        el.appendChild(newoption);
    }
    el = document.getElementById('divAge' + suffix);
    newselect = document.createElement('select');
    newselect.setAttribute('name', 'selectDay' + suffix);
    newselect.setAttribute('id', 'selectDay' + suffix);
    newselect.setAttribute('class', 'text');
    el.appendChild(newselect);
    el = document.getElementById('selectDay' + suffix);
    for (var i = 0; i < 31; i++) {
        var newoption = document.createElement('option');
        newoption.setAttribute('class', 'text');
        newoption.setAttribute('value', i + 1);
        if (i + 1 == dd) newoption.setAttribute('selected', 'selected');
        var newtext = document.createTextNode(i + 1);
        newoption.appendChild(newtext);
        el.appendChild(newoption);
    }
    el = document.getElementById('divAge' + suffix);
    newselect = document.createElement('select');
    newselect.setAttribute('name', 'selectYear' + suffix);
    newselect.setAttribute('id', 'selectYear' + suffix);
    newselect.setAttribute('class', 'text');
    el.appendChild(newselect);
    el = document.getElementById('selectYear' + suffix);
    for (var i = yyyy; i > yyyy - 101; i--) {
        var newoption = document.createElement('option');
        newoption.setAttribute('class', 'text');
        newoption.setAttribute('value', i);
        if (i + 1 == dd) newoption.setAttribute('selected', 'selected');
        var newtext = document.createTextNode(i);
        newoption.appendChild(newtext);
        el.appendChild(newoption);
    }
    el = document.getElementById('formAge' + suffix);
    var newdiv = document.createElement('div');
    newdiv.setAttribute('src', 'text');
    var newtext = document.createElement('br'); //document.createTextNode('&nbsp;');
    newdiv.appendChild(newtext);
    el.appendChild(newdiv);
    newdiv = document.createElement('div');
    newdiv.setAttribute('name', 'divAgeSubmit' + suffix);
    newdiv.setAttribute('id', 'divAgeSubmit' + suffix);
    newdiv.setAttribute('src', 'text');
    el.appendChild(newdiv);
    el = document.getElementById('divAgeSubmit' + suffix);
    var newinput = document.createElement('input');
    newinput.setAttribute('name', 'imageAge' + suffix);
    newinput.setAttribute('id', 'imageAge' + suffix);
    newinput.setAttribute('type', 'image');
    newinput.setAttribute('src', '../en/images/submit.gif');
    el.appendChild(newinput);
    el = document.getElementById('imageAge' + suffix);
    addEvent(el, 'click', function () { validateForm('formAge' + suffix, isFr); });
}

var t = new Date();
var mm = t.getMonth();
var dd = t.getDate();
var yyyy = t.getFullYear();
var monthnames_en = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
var monthnames_fr = new Array('Janvier', 'Fèvrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Dècembre');
var dayselect = '';
var yearselect = '';

function Init() {
    drawForm('age', false);
    drawForm('age2', true);
}

window.onload = Init;

