 //================================== DATE =======================
     var hoursInADay = 24;
    var minutesInAnHour = 60;
    var secondsInAMinute = 60;
    var millisecondsInASecond = 1000;
    var millisecondsInADay = hoursInADay * minutesInAnHour * secondsInAMinute * millisecondsInASecond;
    var millisecondsInAnHour = minutesInAnHour * secondsInAMinute * millisecondsInASecond;
    var millisecondsInAMinute = secondsInAMinute * millisecondsInASecond;

 /**Based on 2003-01-31T17:42:14.160Z (YYYY-MM-DDTHH:MM:SS.sssZ) date this will return a JavaScript Date after parsing the standard time string.*/
function xsdDateTimeToDate(xsdDateTime)
{
    var pieces = xsdDateTime.split('T');
    var datePiece = pieces[0];
    var timePiece = pieces[1];

    //tear apart the date
    var datePieces = datePiece.split('-');
    var year = parseInt(datePieces[0],10);
    //javascript month is 0-based
    var month = parseInt(datePieces[1],10) -1;
    var dayOfMonth = parseInt(datePieces[2],10);
    //tear apart the time.
    var timePieces = timePiece.split(':');
    var hourBase24 = parseInt(timePieces[0],10);
    var minute = parseInt(timePieces[1],10);
    var secondPieces = timePieces[2].split('.');
    var second = parseInt(secondPieces[0],10);
    var millisecond = 0;
    if(secondPieces.length > 1)
    {
        var millisecondPiece = secondPieces[1];
        //keep all but the last character
        millisecond = millisecondPiece.subString(0,millisecondPiece.length -2);
    } 
    var date = new Date(year,month,dayOfMonth,hourBase24,minute,second,millisecond);
       
    /*
    var date = new Date();
    date.setUTCFullYear(year);
    date.setUTCMonth(month);
    date.setUTCDate(dayOfMonth);
    date.setUTCHours(hourBase24);
    date.setUTCMinutes(minute);
    date.setUTCSeconds(second);
    date.setUTCMilliseconds(millisecond);
    */
    return date;
    
}


function RealDate(xsdDateTime)
{
    var pieces = xsdDateTime.split('T');
    var datePiece = pieces[0];
    var timePiece = pieces[1];

    //tear apart the date
    var datePieces = datePiece.split('-');
    this.year = parseInt(datePieces[0],10);
    //javascript month is 0-based
    this. month = parseInt(datePieces[1],10) -1;
    this.dayOfMonth = parseInt(datePieces[2],10);
    //tear apart the time.
    var timePieces = timePiece.split(':');
    this.hourBase24 = parseInt(timePieces[0],10);
    thisminute = parseInt(timePieces[1],10);
    var secondPieces = timePieces[2].split('.');
    this.second = parseInt(secondPieces[0],10);
    this.millisecond = 0;
    if(secondPieces.length > 1)
    {
        var millisecondPiece = secondPieces[1];
        //keep all but the last character
        this.millisecond = millisecondPiece.subString(0,millisecondPiece.length -2);
    }    
    this.date = new Date(year,month,dayOfMonth,hourBase24,minute,second,millisecond);
    
    return date;
    this.getTimeDisplay = displayRealTimeUs;
}

function formatDuration(milliseconds)
{
    var remaining = milliseconds;
    var result = "";
     var separator = ':';
    var units = new Array(millisecondsInADay , millisecondsInAnHour , millisecondsInAMinute , millisecondsInASecond );
    for(var whichUnit = 0; whichUnit < units.length; whichUnit++)
    {
        var millisecondsInUnit = units[whichUnit];
                var totalOfUnit = parseInt(remaining / millisecondsInUnit);
        if(whichUnit != 0 || totalOfUnit != 0)
        {
            if(totalOfUnit < 10)
            {
                result += "0";
            }            result  = result + totalOfUnit.toString()  ;
            if(whichUnit < units.length -1)
            {
                result += separator;
            }
        } 
        
        remaining = remaining - (totalOfUnit * millisecondsInUnit);
    }    

    return result;
}

function formatDurationFromPeriod(beginDateTime,endDateTime)
{
    return formatDuration(endDateTime.getTime() - beginDateTime.getTime() );
}


/**
http://www.merlyn.demon.co.uk/js-date0.htm
*/
function dateToDayOfYear(dt) {
    with (dt) {
        var Y = getFullYear(), M = getMonth(), D = getDate();
    }
    var K, N;
    N = (Date.UTC(Y, M, D) - Date.UTC(Y, 0, 0)) / 86400000;

    M++;
    K = 2 - (Y % 4 == 0);
    N = Math.floor(275 * M / 9) - K * (M > 2) + D - 30;

    with (dt) {
        K = valueOf();
        setMonth(0);
        setDate(0);
        N = Math.round((K - valueOf()) / 86400000);
    }
return N;
}      

