// Age check (C) 2007 Jan Hlavaty, Bohemia Interactive a.s.

var age_birthday_cookie_name = "agecheck";
var age_return_cookie_name = "agecheck_ret";

// run this in the header of every  protected page
function ageCheck(min_age, ask_url, fail_url) {
  if (location.href != ask_url) {
    var birthdate_ms = ageCookie(age_birthday_cookie_name);
    if (birthdate_ms == null) {
      ageSetCookie(age_return_cookie_name,escape(location.href),0);
      location.replace(ask_url);
    } else {
      birthdate_ms = parseInt(birthdate_ms,10);
      if (!ageIsOver(min_age, birthdate_ms)) {
        location.replace(fail_url);
      }
    }
  }
}

// Run this in the page that asks for the age
function ageForm() {
  document.write('<form name="age_form" id="age_form">');
  
  document.write('<select name="month" id="month" onChange="ageChange();">');
  var months = ['Month','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  for (i=0; i<months.length; i++) {
    document.write('<option value="'+i+'">'+months[i]+'<'+'/option>');
  }
  document.write('<'+'/select>');

  document.write('<select name="day" id="day" onChange="ageChange();">');
  document.write('<option value="0">Day<'+'/option>');
  for (i=1; i<10; i++) document.write('<option value="'+i+'">0'+i+'<'+'/option>');
  for (i=10; i<32; i++) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');

  document.write('<select name="year" id="year" onChange="ageChange();">');
  document.write('<option value="0">Year<'+'/option>');
  for (i=new Date().getFullYear(); i>=1900; i--) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');
  
  document.write('<'+'/form>');
}

function ageFormENG() {
  document.write('<form name="age_form" id="age_form">');
  
  document.write('<select name="month" id="month" onChange="ageChange();">');
  var months = ['Month','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  for (i=0; i<months.length; i++) {
    document.write('<option value="'+i+'">'+months[i]+'<'+'/option>');
  }
  document.write('<'+'/select>');

  document.write('<select name="day" id="day" onChange="ageChange();">');
  document.write('<option value="0">Day<'+'/option>');
  for (i=1; i<10; i++) document.write('<option value="'+i+'">0'+i+'<'+'/option>');
  for (i=10; i<32; i++) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');

  document.write('<select name="year" id="year" onChange="ageChange();">');
  document.write('<option value="0">Year<'+'/option>');
  for (i=new Date().getFullYear(); i>=1900; i--) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');
  
  document.write('<'+'/form>');
}

function ageFormCZ() {
  document.write('<form name="age_form" id="age_form">');
  
  document.write('<select name="day" id="day" onChange="ageChange();">');
  document.write('<option value="0">Den<'+'/option>');
  for (i=1; i<10; i++) document.write('<option value="'+i+'">0'+i+'<'+'/option>');
  for (i=10; i<32; i++) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');
  
  document.write('<select name="month" id="month" onChange="ageChange();">');
  var months = ['Měsíc','Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec'];
  for (i=0; i<months.length; i++) {
    document.write('<option value="'+i+'">'+months[i]+'<'+'/option>');
  }
  document.write('<'+'/select>');

  document.write('<select name="year" id="year" onChange="ageChange();">');
  document.write('<option value="0">Rok<'+'/option>');
  for (i=new Date().getFullYear(); i>=1900; i--) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');
  
  document.write('<'+'/form>');
}

function ageFormDE() {
  document.write('<form name="age_form" id="age_form">');
  
  document.write('<select name="month" id="month" onChange="ageChange();">');
  var months = ['Monat','Jan','Feb','März','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
  for (i=0; i<months.length; i++) {
    document.write('<option value="'+i+'">'+months[i]+'<'+'/option>');
  }
  document.write('<'+'/select>');

  document.write('<select name="day" id="day" onChange="ageChange();">');
  document.write('<option value="0">Tag<'+'/option>');
  for (i=1; i<10; i++) document.write('<option value="'+i+'">0'+i+'<'+'/option>');
  for (i=10; i<32; i++) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');

  document.write('<select name="year" id="year" onChange="ageChange();">');
  document.write('<option value="0">Jahre<'+'/option>');
  for (i=new Date().getFullYear(); i>=1900; i--) document.write('<option value="'+i+'">'+i+'<'+'/option>');
  document.write('<'+'/select>');
  
  document.write('<'+'/form>');
}

// callback from the form
function ageChange() {
  var month_value = parseInt(document.age_form.month.options[document.age_form.month.selectedIndex].value,10);
  var day_value = parseInt(document.age_form.day.options[document.age_form.day.selectedIndex].value,10);
  var year_value = parseInt(document.age_form.year.options[document.age_form.year.selectedIndex].value,10);
  
  if (month_value && day_value && year_value) {
    month_value--;
    var new_birthdate = new Date(year_value,month_value,day_value,0,0,0,0);
    if ( (new_birthdate.getDate() - day_value) || (new_birthdate.getMonth() - month_value) || (new_birthdate.getFullYear() - year_value) ) {
      alert("Invalid date entered!","Error");
    } else {
      ageSetCookie(age_birthday_cookie_name,new_birthdate.getTime(),525600);
      var return_to = unescape(ageCookie(age_return_cookie_name));
//      alert("Going back to "+return_to);
      location.replace(return_to);
    }
  }
}

//----- internal use only ------



function ageIsOver(min_age, birthdate_ms) {
  var deadline = new Date(birthdate_ms);
  deadline.setFullYear(deadline.getFullYear()+min_age);
  return new Date().getTime() > deadline.getTime();
}

function ageCookie(cookie_name) {
  var cookies = " "+document.cookie+";";
  var startpos = cookies.indexOf(" "+cookie_name+"=");
  if (startpos != -1) {
    startpos = startpos + (cookie_name.length) + 2;
    var endpos = cookies.indexOf(";",startpos);
    return cookies.substring(startpos,endpos);
  } else {
    return null;
  }
}

function ageSetCookie(cookie_name, cookie_value, persistent_minutes) {
  if (persistent_minutes != 0) {
    var expire_date = new Date( new Date().getTime()+(60000*persistent_minutes) ).toGMTString();
    document.cookie = cookie_name+"="+cookie_value+"; path=/; expires="+expire_date;
  } else {
    document.cookie = cookie_name+"="+cookie_value+";path=/";
  }
}
