// 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 ) {
  var el = document.getElementById( element );
  if( !isDate(el.selectMonth.value,el.selectDay.value,el.selectYear.value) ) {
    alert( 'Invalid date of birth' );
    return false;
  }
  if( !isOfLegalAge(el.selectMonth.value,el.selectDay.value,el.selectYear.value) ) {
    alert( 'You must be at least 19 years of age' );
    
    el.action = underageURL;
    return false;
  }
  el.action = homepageURL;
  return true;
}
function drawForm( element ) {
  var el = document.getElementById( element );
  RemoveElements( el );
  var newform = document.createElement('form');
  newform.setAttribute( 'name', 'formAge' );
  newform.setAttribute( 'id', 'formAge' );
  newform.setAttribute( 'method', 'post' );
  newform.setAttribute( 'enctype', 'application/x-www-form-urlencoded' );
  el.appendChild(newform);
  el = document.getElementById( 'formAge' );
  var newdiv = document.createElement('div');
  newdiv.setAttribute( 'name', 'divAge' );
  newdiv.setAttribute( 'id', 'divAge' );
  newdiv.setAttribute( 'class', 'text');
  el.appendChild(newdiv);
  el = document.getElementById( 'divAge' );
  var newselect = document.createElement('select');
  newselect.setAttribute( 'name', 'selectMonth' );
  newselect.setAttribute( 'id', 'selectMonth' );
  newselect.setAttribute( 'class', 'text' );
  el.appendChild(newselect);
  el = document.getElementById( 'selectMonth' );
  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 = document.createTextNode( monthnames[i] );
    newoption.appendChild( newtext );
    el.appendChild(newoption);
  }
  el = document.getElementById( 'divAge' );
  newselect = document.createElement('select');
  newselect.setAttribute( 'name', 'selectDay' );
  newselect.setAttribute( 'id', 'selectDay' );
  newselect.setAttribute( 'class', 'text' );
  el.appendChild(newselect);
  el = document.getElementById( 'selectDay' );
  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' );
  newselect = document.createElement('select');
  newselect.setAttribute( 'name', 'selectYear' );
  newselect.setAttribute( 'id', 'selectYear' );
  newselect.setAttribute( 'class', 'text' );
  el.appendChild(newselect);
  el = document.getElementById( 'selectYear' );
  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' );
  var newdiv = document.createElement('div');
  newdiv.setAttribute( 'src', 'text');
  var newtext = document.createTextNode( '&nbsp;' );
  newdiv.appendChild( newtext );
  el.appendChild( newdiv );
  newdiv = document.createElement('div');
  newdiv.setAttribute( 'name', 'divAgeSubmit' );
  newdiv.setAttribute( 'id', 'divAgeSubmit' );
  newdiv.setAttribute( 'src', 'text');
  el.appendChild(newdiv);
  el = document.getElementById( 'divAgeSubmit' );
  var newinput = document.createElement('input');
  newinput.setAttribute( 'name', 'imageAge' );
  newinput.setAttribute( 'id', 'imageAge' );
  newinput.setAttribute( 'type', 'image' );
  newinput.setAttribute( 'src', 'en/images/submit.gif' );
  el.appendChild( newinput );
  el = document.getElementById( 'imageAge' );
  addEvent( el, 'click', function() { validateForm( 'formAge' ); } );
}

var t = new Date();
var mm = t.getMonth();
var dd = t.getDate();
var yyyy = t.getFullYear();
var monthnames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var dayselect = '';
var yearselect = '';

function Init() {
  drawForm( 'age' );
}

window.onload = Init;

