var daysOfMonth = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysOfMonthLY = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var lucky_firsttime = 0; var gender_firsttime = 0; var dob_firsttime = "00000000"; var dob_fulldate="00000000"; today_fulldate="00000000";
var dgr_length = 90; dgr_count = 0; dob_g_results = new Array (dgr_length); extra_factors = 0;
for (var dg = 0; dg <= dgr_length-1; dg++) {dob_g_results[dg] = "";}
var lucky_today_fulldate=0; var lucky_dob_fulldate=0;
function isLeapYear(year) {
  year = year - 0;
  if ((year/4)   != Math.floor(year/4)) return false; 
  if ((year/100) != Math.floor(year/100)) return true; 
  if ((year/400) != Math.floor(year/400)) return false;
  return true;
}
function isValidDate(day, month, year) {
  day = day - 0; month = month - 0; year = year - 0;
  if ((isLeapYear(year) && day > daysOfMonthLY[month-1]) || (!isLeapYear(year) && day > daysOfMonth[month-1]) || (day < 1 ) || (month < 1 ) || (year < 1900)) return false;
  else return true;
}
function numero(input,ln) {
  input = input - 0; ln = ln - 0; var sum = 0;
  for (var i = 1; i <= ln; i++){x = input - (Math.floor((input/10))*10); sum = sum + x; input = Math.floor(input/10);}
  if (sum > 9){
   sum2 = sum; sum = 0;
   for (var i = 1; i <= 2; i++){x = sum2 - (Math.floor((sum2/10))*10); sum = sum + x; sum2 = Math.floor(sum2/10);}
  }
  return sum;
}
function CheckBirthDay(dob){
today = new Date(); year = today.getYear();  if (year < 1000) year += 1900; month = today.getMonth()+1; day = today.getDate();
doblength=dob.value.length; today_fulldate=(year*10000)+(month*100)+day; var dob_ok = -1; 
if (doblength!=8){ alert("There appears to be an error in the date. Please enter your birth date in DDMMYYYY"); document.lotto4d['birthday'].value= ''; dob.focus(); }
else
{
   dob_day=dob.value.substring(0,2); dob_month=dob.value.substring(2,4); dob_year=dob.value.substring(4,8); dob_fulldate=(dob_year)+(dob_month)+(dob_day);
   if (today_fulldate >= dob_fulldate){
      isdate = isValidDate(dob_day,dob_month,dob_year);
      if (!isdate) {alert("There appears to be an error in the date. Please enter your birth date as DDMMYYYY"); document.lotto4d['birthday'].value= ''; dob.focus();}
   }                   
   else { alert("There appears to be an error in the date. Please enter your birth date as DDMMYYYY"); document.lotto4d['birthday'].value= ''; dob.focus();}
}}
function calcnum() {
if (( gender_firsttime == document.lotto4d.sex.value ) && ( dob_firsttime == document.lotto4d.birthday.value ))  lucky_firsttime = 1;
else lucky_firsttime = 0;
var dgr_flag=0;
if (lucky_firsttime < 1 ){
  if (document.lotto4d['birthday'].value != '') {
    var ncount = 3; var mcount = 5; var maxnumber = 9999; var proceed = 1; nr = new Array (ncount + 1); mr = new Array (mcount + 1);
    today = new Date(); year = today.getYear();  if (year < 1000) year += 1900; month = today.getMonth()+1; day = today.getDate();
    today_fulldate=(year*10000)+(month*100)+day; dob=document.lotto4d.birthday.value;
    dob_day=dob.substring(0,2); dob_month=dob.substring(2,4); dob_year=dob.substring(4,8); dob_fulldate=(dob_year)+(dob_month)+(dob_day);
    lucky_dob_fulldate = (dob_year.substring(0,1)-0)+(dob_year.substring(1,2)-0)+(dob_year.substring(2,3)-0)+(dob_year.substring(3)-0);
    lucky_dob_fulldate = lucky_dob_fulldate+(dob_month.substring(0,1)-0)+(dob_month.substring(1)-0)+(dob_day.substring(0,1)-0)+(dob_day.substring(1)-0);
    if (lucky_dob_fulldate > 9)lucky_dob_fulldate = numero(lucky_dob_fulldate,2);
    lucky_today_fulldate = numero(today_fulldate,8);
    for (var m = 1; m <= mcount; m++) {mr[m] = "    ";}
    extra_factors = document.lotto4d.sex.value - lucky_today_fulldate + lucky_dob_fulldate; 
    if ( extra_factors < 0 ) extra_factors = 0 - extra_factors; if ( extra_factors < 1 ) extra_factors = 1; if ( extra_factors > 20 ) extra_factors = 20;
    for (var ext = 1; ext <= extra_factors; ext++){for (var n = 1; n <= ncount; n++) {nr[n] = Math.round(Math.random() * (maxnumber-1))+1;}}
    for (var i = ncount; i >= 1; i--) {for (var j = ncount; j >= 1; j--) {if ((i != j) && (nr[i] == nr[j])) proceed = 0; }}
    for (var kk = 1; kk <= ncount; kk++) { xy = nr[kk]; if (xy < 1000) nr[kk]="0" + nr[kk]; if (xy < 100) nr[kk]="0" + nr[kk]; if (xy < 10) nr[kk]="0" + nr[kk];}
    for (var nn = 1; nn <= mcount; nn++) {mr[nn] = "    ";}; mr[1] = "      "; mr[5] = mr[5] + "\n"; mr[2]=nr[1]; mr[3]=nr[2]; mr[4]=nr[3];
    if (proceed) {
       var moutput = ""; for (var k = 1; k <= mcount; k++) {moutput += mr[k] + "  ";};
       dob_firsttime = document.lotto4d.birthday.value; gender_firsttime = document.lotto4d.sex.value; dgr_flag = 0;
       for (var g = 0; g <= dgr_length-3; g +=3){if ((dob_firsttime == dob_g_results[g]) && (gender_firsttime == dob_g_results[g+1])){moutput=dob_g_results[g+2]; dgr_flag=1;}}
       if (dgr_count > dgr_length-3) dgr_flag=1;
       if (dgr_flag == 0){ dob_g_results[dgr_count] = dob_firsttime; dob_g_results[dgr_count+1] = gender_firsttime; dob_g_results[dgr_count+2] = moutput; dgr_count=dgr_count+3;}
       document.lotto4d.results.value = moutput;
    }     
    else calcnum();
  }
 else { alert("There appears to be an error in the date. Please enter your birth date as DDMMYYYY"); document.lotto4d.results.value = '';}
}}
