date diff

by Евгений

HTML

<form name="form">
<!-- Между
<input type="text" name="years" value="2008" size="4" title="введите год: хххх">
<input type="text" name="months" value="1" size="2" title="введите месяц: х">
<input type="text" name="days" value="20" size="2" title="введите день: х">
 и 
 <input type="text" name="yeare" value="2012" size="4" title="введите год: хххх">
 <input type="text" name="monthe" value="2" size="2" title="введите месяц: х">
 <input type="text" name="daye" value="25" size="2" title="введите день: х">
 <input type="button" value="Считаем" onclick="go()">
 <br />-->
<span id="res"></span>
</form>
<script>
function DateOffset(dd1, dd2) {
    var d1, d2, y, m, d, dec_m = 0, dec_y = 0;
    if(dd1>=dd2) {d1 = dd2; d2 = dd1} else {d1 = dd1; d2 = dd2};
    var    y_s = d1.getFullYear(), 
        y_e = d2.getFullYear(), 
        m_s = d1.getMonth(), 
        m_e = d2.getMonth(), 
        d_s = d1.getDate(), 
        d_e = d2.getDate();
        
    d = d_e - d_s;
    if (d_s > d_e) {
        d+= new Date(d2.getFullYear(), d2.getMonth(), 0).getDate();
        dec_m = 1
    }

    m = m_e - m_s - dec_m;
    if (m < 0) {
        m += 12; 
        dec_y = 1
    }
    
    y = y_e - y_s - dec_y;
    
    return {'year':y, 'months':m, 'days':d}
}

function plural(n,str1,str2,str3){
    return ((((n%10)==1)&&((n%100)!=11))?(n + str1):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(n + str2):(n + str3)))
}

    var dd1 = new Date(2011, 2, 6);// 6 марта 2011
    var dd2 = new Date();//сегодня
    //function go() {
    //var dd1 = new Date(document.form.years.value, document.form.months.value - 1, document.form.days.value);
    //var dd2 = new Date(document.form.yeare.value, document.form.monthe.value - 1, document.form.daye.value);
    document.getElementById('res').innerHTML = 'прошло ' + plural(DateOffset(dd1, dd2).year, ' год',' года',' лет') + ', ' + plural(DateOffset(dd1, dd2).months, ' месяц',' месяца',' месяцев') + ', ' + plural(DateOffset(dd1, dd2).days, '...