// JavaScript Document

function checkNumber(input, min, max, msg)
{
    msg = msg + " field has invalid data: " + input.value;

    var str = input.value;
    for (var i = 0; i < str.length; i++) {
        var ch = str.substring(i, i + 1)
        if ((ch < "0" || "9" < ch) && ch != '.') {
            alert(msg);
	    return false;
        }
    }
    var num = 0 + str;
    if (num < min || max < num) {
        alert(msg + " not in range [" + min + ".." + max + "]");
        return false;
    }
    input.value = str;
    return true;
}

function getMonthLength(month,year,julianFlag)
{
   var ml;
   if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10||month==12)
      {ml = 31;}
   else {
       if(month==2) {
          ml = 28;
          if(!(year%4) && (julianFlag==1 || year%100 || !(year%400)))
             ml++;
       }
       else
          {ml = 30;}
   }
   return ml;    
}

function useCurrentDate(form)
{
   Today=new Date();
   form.yd.value=Today.getYear()+1900;
   form.md.selectedIndex=Today.getMonth();
   form.dd.value=Today.getDate();

   return;
}

function computeForm(form)
{
//   var ml={31,28,31,30,31,30,31,31,30,31,30,31};

   MNames=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep",
      "Oct","Nov","Dec");

   if( (form.yd.value == null || form.yd.value.length == 0) ||
       (form.dd.value == null || form.dd.value.length == 0) ||
       (form.yb.value == null || form.yb.value.length == 0) ||
       (form.db.value == null || form.db.value.length == 0))
   {
      return;
   }

   var yd = form.yd.value;
   var md = form.md.value;
   var dd = form.dd.value;

   var yb = form.yb.options[form.yb.selectedIndex].value;
   var mb = form.mb.options[form.mb.selectedIndex].value;
   var db = form.db.options[form.db.selectedIndex].value;
   // Month length 0->use calendar length
   var mLength = 0;
   // 0 if Gregorian, 1 is Julian
   var isJulian = 0;

   if( !checkNumber(form.dd,1, getMonthLength(md,yd,isJulian),"Day of death") ||
       !checkNumber(form.db,1, getMonthLength(mb,yb,isJulian), "Day of birth"))
   {
      return;
   }

   var ma=0;
   var ya=0;

   var da = dd-db;
   // This is the all-important day borrowing code.
   if(da<0)
   {
      md--;
      // Borrow months from the year if necesssary.
      if(md<1)
      {
	 yd--;
	 // Determine no. of months in year
	 if(mLength)
	    {md=md+parseInt(365/mLength);}
	 else
	    {md=md+12;}
      }
      if(mLength==0) // Use real month length if no fixed
      {              // length is indicated - note that we add a leap day if necessary.
         ml=getMonthLength(md,yd,isJulian);
	 da=da+ml;
      } 
      // For this case, everything works like it did in elementary school.
      else
	 {da+=mLength;} // Use fixed month length
   }

   ma = md - mb;
   // Month borrowing code - borrows months from years.
   if(ma<0)
   {
      yd--;
      if(mLength!=0)
	 {ma=ma+parseInt(365/mLength);}
      else
	 {ma=ma+12;}
   }

   ya = yd - yb;

   form.ya.value = ya;
   
   if(ya <= 13)
   {
	   document.getElementById("coppa").style.display = "block";
	   document.getElementById("email_pg").disabled = false;
   }
   else
   {
	   document.getElementById("coppa").style.display = "none";
	   document.getElementById("email_pg").disabled = true;
   }
}

