var dayOfBirth = 23; //your literal date of birth
var monthOfBirth = 9; //your month of birth
var yearOfBirth = 1983; //your year of birth :: Use all the 4 digits, not 2 two digits in short form

//Variables containg values of current date
var today = new Date();
var dayOfToday = parseInt(today.getDate());
var monthOfToday = today.getMonth() + 1;
var yearOfToday = today.getFullYear();

//Variables required to calculate age.
var yearDiff;
var monthDiff;
var daysDiff;

var totalNumOfDaysOfMonths = [31,28,31,30,31,30,31,31,30,31,30,31];
var ageString;

AgeUptodate();

function AgeUptodate()
{
calcYearDiff();

}

function calcYearDiff()
{
if (monthOfToday > monthOfBirth)
{
yearDiff = yearOfToday - yearOfBirth;
monthDiff = monthOfToday - monthOfBirth;
calcDateDiff();
}

else if (monthOfToday == monthOfBirth)
{
if((dayOfToday == dayOfBirth) || (dayOfToday > dayOfBirth))
{
yearDiff = yearOfToday - yearOfBirth;
}
else
yearDiff = yearOfToday - yearOfBirth - 1;

calcMonthDiff();

}
else
{
yearDiff = yearOfToday - yearOfBirth - 1;
monthDiff = 12 - (monthOfBirth - monthOfToday);

calcDateDiff();
}

}

function calcMonthDiff()
{
if (monthOfToday == monthOfBirth)
{
if (dayOfToday > dayOfBirth)
monthDiff = monthOfToday - monthOfBirth;
else if ( dayOfToday == dayOfBirth )
monthDiff = 0; // That's a Birthday
else
monthDiff = 11; // Birthday coming soon
}
calcDateDiff();
}

function calcDateDiff()
{
if ( yearOfToday % 4 == 0 )
totalNumOfDaysOfMonths[1] = 29;

if (dayOfToday > dayOfBirth)
daysDiff = dayOfToday - dayOfBirth;
else if (dayOfToday == dayOfBirth)
daysDiff = 0;
else
{
daysDiff = ( totalNumOfDaysOfMonths[monthOfToday - 1] - dayOfBirth) + dayOfToday;
}


process();

}

function process()
{
if((monthOfToday > monthOfBirth) && (dayOfToday < dayOfBirth))
monthDiff -= 1;

if(yearDiff == 0)
ageString = '';
else if (yearDiff == 1)
ageString = yearDiff + ' a&ntilde;os';
else
ageString = yearDiff + ' a&ntilde;os';

if((!((monthDiff == 0) && (daysDiff == 0))) && (yearDiff != 0))
ageString = ageString + ', ';

if(monthDiff == 0)
ageString = ageString +'';
else if (monthDiff == 1)
ageString = ageString + '1 mes ';
else
ageString = ageString + monthDiff +' meses ';

if(daysDiff == 0)
ageString = ageString + '';
else if (daysDiff == 1)
{
if(!(yearDiff == 0) && (monthDiff == 0))
ageString = ageString + 'y 1 d&iacute;a';
else
ageString = ageString + '1 d&iacute;a';
}
else
{
if(!(yearDiff == 0) && (monthDiff == 0))
ageString = ageString + 'y ' + daysDiff + ' d&iacute;as';
else
ageString = ageString + daysDiff + ' d&iacute;as';
}


document.write('Quiere decir que tengo ' + ageString + '.');
} 
