function run(){

	
	setInterval(update,1000);
	update();
}

function update(){
	//alert("run ");
var year = new Number(document.getElementById('year').value);
//alert("year: " + year)
var day = new Number(document.getElementById('day').value);
//alert("day: " + day)
var month = new Number(document.getElementById('month').value); //0 (January) to 11 (December). 
//alert("month: " + month)
var hour = new Number(document.getElementById('hour').value);
var minute = new Number(document.getElementById('minute').value);	

var dOB    = new Date(year, month, day, hour, minute);
var dateNow = new Date();
//var dOB    = Date.parse(25, 5, 5);


//alert("dOB: " + dOB);
//alert("dateNow: " + dateNow);
  
  var allowCalculation  = true;
  

  // Check dates for validity
  if ((dOB==null)||(isNaN(dOB))) {
    alert("the date you have entered is invalid");
    allowCalculation = false;
  }
  
  
  if ((dateNow==null)||(isNaN(dateNow))) {
    alert("todays date is invalid");
    allowCalculation = false;
  }
  

  if (dOB > dateNow) {
    alert("the date you have entered is after the today's date");
    allowCalculation = false;
  }


  if ((month==3 || month==5 || month==8 || month==10) && day==31) {
    alert(document.getElementById('month').value + " doesn't have 31 days")
    allowCalculation = false;
  }
  
    if (month == 1) { // check For february 29th
   var isLeap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
   if (day>29 || (day==29 && !isLeap)) {
    alert("february " + year + " doesnt have " + day + " days");
    allowCalculation = false;
   }
  }
 
  
  
 
  if (allowCalculation) {

	//alert("allowed")
	
	var ageSeconds = 0;
	var ageMinutes = 0;
	var ageHours = 0;  
    var ageDays  = 0;
    var ageWeeks = 0;
    var ageMonths = 0;
    var ageYears = 0;
    var ageRemainder  = 0;
 
    timeDiff   = dateNow - dOB;
	
	////
	ageSeconds = timeDiff / 1000;
	ageMinutes = ageSeconds/60;	
	ageHours = ageMinutes / 60;
	ageDays = ageHours /24;
    ageWeeks = ageDays / 7;
    ageMonths = ageDays / 30.4375;
	ageYears = ageDays / 365.24;    
    ageYears = Math.floor(ageYears);

    
    ageRemainder  = (ageDays - ageYears * 365.24) / 30.4375; //remainder in months
	
	ageSeconds  = Math.round(ageSeconds);
	ageMinutes  = Math.round(ageMinutes);
	ageHours  = Math.round(ageHours);
    ageDays  = Math.round(ageDays);
    ageWeeks = Math.round(ageWeeks);
    ageMonths = Math.round(ageMonths);	
    ageRemainder  = Math.round(ageRemainder);	
 
  /*  ageSeconds  = Math.round(ageSeconds * 10) / 10;
	ageMinutes  = Math.round(ageMinutes * 10) / 10;
	ageHours  = Math.round(ageHours * 10) / 10;
    ageDays  = Math.round(ageDays * 10) / 10;
    ageWeeks = Math.round(ageWeeks * 10) / 10;
    ageMonths = Math.round(ageMonths * 10) / 10;	
    ageRemainder  = Math.round(ageRemainder * 10) / 10;	*/

	
//document.getElementById('result').value="You are "


	var resultString = "you are "+ageYears+" years and " + ageRemainder +" months old...\n\n" + "    or  "+addCommas(ageMonths)+" months old\n" + "    or  "+addCommas(ageWeeks)+" weeks old\n" + "    or  "+addCommas(ageDays)+" days old\n" + "    or  "+addCommas(ageHours)+" hours old\n" + "    or  "+addCommas(ageMinutes)+" minutes old\n" + "    or  "+addCommas(ageSeconds)+" seconds old"

	document.getElementById('result').value = resultString;

/*	if(Math.abs(ageYears)==1){
		document.getElementById('result').value="you are "+ageYears+" year and ";
	}else{
		document.getElementById('result').value="You are "+ageYears+" years and ";
	}
	
	if(Math.abs(ageMonths)==1){
		document.getElementById('result').value+=ageRemainder+" month old...\n\n";
	}else{
		document.getElementById('result').value+=ageRemainder+" months old...\n\n";
	}	
	

  if(Math.abs(ageMonths)==1){document.getElementById('result').value+="    or  "+addCommas(ageMonths)+" month old\n";} 
  else{document.getElementById('result').value+="    or  "+addCommas(ageMonths)+" months old\n";}
  if(Math.abs(ageWeeks)==1){document.getElementById('result').value+="    or  "+addCommas(ageWeeks)+" week old\n";} 
  else{document.getElementById('result').value+="    or  "+addCommas(ageWeeks)+" weeks old\n";}
  if(Math.abs(ageDays)==1){document.getElementById('result').value+="    or  "+addCommas(ageDays)+" day old\n";} 
  else{document.getElementById('result').value+="    or  "+addCommas(ageDays)+" days old\n";}
  if(Math.abs(ageHours)==1){document.getElementById('result').value+="    or  "+addCommas(ageHours)+" hour old\n";} 
  else{document.getElementById('result').value+="    or  "+addCommas(ageHours)+" hours old\n";}
  if(Math.abs(ageMinutes)==1){document.getElementById('result').value+="    or "+addCommas(ageMinutes)+" minute old\n";}  
  else{document.getElementById('result').value+="    or  "+addCommas(ageMinutes)+" minutes old\n";}
  if(Math.abs(ageSeconds)==1){document.getElementById('result').value+="    or "+addCommas(ageSeconds)+" second old\n";}  
  else{document.getElementById('result').value+="    or  "+addCommas(ageSeconds)+" seconds old\n";}
*/
  
  
  }
  
  
  

  
}
  

  
function addCommas(numb)
{
	if(Math.abs(numb)<1000){
		return (""+numb);
	}
	textstring=""+numb;
	sit=0;
	while(textstring.charAt(sit)!="")
	{
		sit++
	}
	returnString="";
	for (x=sit-1;x>=0;x--)
	{
		nextChar=textstring.charAt(x)
		if(((((sit-1)-x)%3)==0)&&(((sit-1)-x)>0))
		{
			if((nextChar=="1")||(nextChar=="2")||(nextChar=="3")||(nextChar=="4")||(nextChar=="5")||(nextChar=="6")||(nextChar=="7")||(nextChar=="8")||(nextChar=="9")||(nextChar=="0"))
			{
			returnString=","+returnString;
			}
		}
	returnString=nextChar+returnString;
	}
	return(returnString);
}  
  
