  function showDogAge(bdayString, tol, override)
  {
    //document.write("<hr>Input : bdayString=["+bdayString+"], tol=["+tol+"], override=["+override+"]<br>");
    
    //If they override the date to include "About 4years" or other text, simply return that value.
    if(override != undefined) //|| (override.length==0)
    {
    if( override.length != 0){
      return(override);
      }
    }

    //Constants for units, can be changed freely.

    maxWeeks = 12;
    maxMonths = 23;

    //Get today's date for age calculations

    todayDate = new Date();

    //Get the birthdate as a date object for age calculations

    birthDate = new Date(bdayString);

    //Verify that the birthDate object worked <<----

    //Determine the number of month between the two dates, bdate and now.
    //Default is milliseconds -> seconds -> minutes -> hours -> days

    todayMS = todayDate.getTime();
    birthMS = birthDate.getTime();
    ageDays = (todayMS - birthMS) / 1000 / 60 / 60 / 24;
    ageWeeks = Math.floor(ageDays / 7);
    ageMonths = Math.floor(ageDays / 30);
    ageYears = Math.floor(ageDays / 365.25);

    //Comment out / delete the line below in actual function
    //document.write("Today : "+todayDate+" / Birth : "+birthDate+" | "+bdayString+" / Days : "+ageDays+" / Weeks : "+ageWeeks+" / Months : "+ageMonths+" / Years : "+ageYears+"<br>");
    //Dissect tolerance string to get amount, units
 
    tolAmt = 0;
    tolUnit = 'x';
   
    if(tol != undefined)
    {
      cutPt = tol.search(/(w|m|y|W|M|Y)/);
 
      if(cutPt != -1)
      {
        tolAmt = Math.round(tol.substring(0,cutPt));
        tolUnit = tol.substring(cutPt);
        tolUnit = tolUnit.toLowerCase();
      }
    }

    //Check smallest units first, then default upward to higher units

    if(ageWeeks <= maxWeeks)
    {
      //Represent and return the age in weeks
      retVal = ""+ageWeeks;

      //Account for optional tolerance
      if(tolUnit == "w")
      {
        topEnd = 0+ageWeeks + tolAmt;
        retVal += " - "+ topEnd;
      }

      return(retVal+" week old");
    }


    if(ageMonths <= maxMonths)
    {      
      //Represent and return the age in months
      retVal = ""+ageMonths;

      //Account for optional tolerance
      if(tolUnit == "m")
      {
        topEnd = 0+ageMonths + tolAmt;
        retVal += " - "+ topEnd;
      }

      return(retVal+" month old");
    }


    //Not young enough for weeks or months, must be years.

    retVal = ""+ageYears;

    //Account for optional tolerance
    if(tolUnit == "y")
    {
        topEnd = 0+ageYears + tolAmt;
        retVal += " - "+ topEnd;
    }
    else
    {
      // No tolerance... check for 1/2 year!
      if((ageMonths % 12) >= 6)
      {
        retVal += "&#189;";
      }
    }

    return(retVal+" year old");

  }
