
// Parse an HTML5-liberalized version of RFC 3339 datetime values
Date.parseRFC3339 = function (string) {
    var date=new Date(0);
    var match = string.match(/(\d{4})-(\d\d)-(\d\d)\s*(?:[\sT]\s*(\d\d):(\d\d)(?::(\d\d))?(\.\d*)?\s*(Z|([-+])(\d\d):(\d\d))?)?/);
    if (!match) return;
    if (match[2]) match[2]--;
    if (match[7]) match[7] = (match[7]+'000').substring(1,4);
    var field = [null,'FullYear','Month','Date','Hours','Minutes','Seconds','Milliseconds'];
    for (var i=1; i<=7; i++) if (match[i]) date['setUTC'+field[i]](match[i]);
    if (match[9]) date.setTime(date.getTime()+
        (match[9]=='-'?1:-1)*(match[10]*3600000+match[11]*60000) );
    return date;
}


//Returns the differences between two dates
Date.diff = function(a,b){
    var diff = new Date(a - b);
    var days = Math.floor( ((a-b)  % (1000 * 60 * 60 * 24 * 31)) / (1000 * 60 * 60 * 24));
    var months = Math.floor( (a-b) / (1000 * 60 * 60 * 24 * 31));
    return [months, days, diff.getUTCHours(), diff.getUTCMinutes(), diff.getUTCSeconds()];
} 
