
function getStrDate(df, d)
{
/*
	==========================================================================
    Returns a formatted string representing the date d.
    Parameters:
      df - Date Format ie 'yyyy-mm-dd hh:nn:ss'
      d - Date object
    ==========================================================================
*/
	var reservedchars = 'ymdhns';
	var retval = new Array();
	if(d)
	{
		var dflength = df.length;
		if(dflength > 0)
		{
			df += ' ';
			var start = 0;
			for(var i = 0; i < dflength + 1; i++)
			{
				var c = df.substr(i, 1);
				var nextC = "end";
				if(i < dflength)
					nextC = df.substr(i + 1, 1);
					
				if(reservedchars.indexOf(c) == -1 )
				{
				    var pf = df.substr(start, i - start);
				    var delim = c;
				    start = i + 1;
				    retval[retval.length] = getStrDatePart( pf, d ); 
				    if(i < dflength)
				    	retval[retval.length] = delim;
			 	}
			 	else if( nextC != c && reservedchars.indexOf(nextC) > -1)
			 	{
				 	var pf = df.substr(start, i - start + 1);
				    var delim = "";
				    start = i + 1;
				    retval[retval.length] = getStrDatePart( pf, d ); 
				    if(i < dflength)
				    	retval[retval.length] = delim;
			 	}
			}
		}
	}
    return retval.join("");
}

function getStrDatePart( dp, d )
{
	switch (dp.toLowerCase())
    {
        case 'yyyy':
            return d.getFullYear();
            break;
        case 'yy':
            return String(d.getFullYear()).substr(2,2);
            break;
        case 'mm':
            return fixLength(d.getMonth() + 1, 2);
            break;
        case 'dd':
            return  fixLength(d.getDate(), 2);
            break;
        case 'm':
            return (d.getMonth() + 1);
            break;
        case 'd':
            return  d.getDate();
            break;
        case 'ddd':
            switch(d.getDay())
            {
                case 0:
                    return 'Sun';
                    break;
                case 1:
                    return 'Mon';
                    break;
                case 2:
                    return 'Tue';
                    break;
                case 3:
                    return 'Wed';
                    break;
                case 4:
                    return 'Thu';
                    break;
                case 5:
                    return 'Fri';
                    break;
                case 6:
                    return 'Sat';
                    break;
            }
            break;
        case 'dddd':
            switch(d.getDay())
            {
                case 0:
                    return 'Sunday';
                    break;
                case 1:
                    return 'Monday';
                    break;
                case 2:
                    return 'Tuesday';
                    break;
                case 3:
                    return 'Wednesday';
                    break;
                case 4:
                    return 'Thursday';
                    break;
                case 5:
                    return 'Friday';
                    break;
                case 6:
                    return 'Saturday';
                    break;
            }
            break;
        case 'hh':
            return  fixLength(d.getHours(), 2);
            break;
        case 'nn':
            return  fixLength(d.getMinutes(), 2);
            break;
        case 'ss':
            return  fixLength(d.getSeconds(), 2);
            break;
        case 'mmm':
            switch(d.getMonth())
            {
                case 0:
                    return 'Jan';
                    break;
                case 1:
                    return 'Feb';
                    break;
                case 2:
                    return 'Mar';
                    break;
                case 3:
                    return 'Apr';
                    break;
                case 4:
                    return 'May';
                    break;
                case 5:
                    return 'Jun';
                    break;
                case 6:
                    return 'Jul';
                    break;
                case 7:
                    return 'Aug';
                    break;
                case 8:
                    return 'Sep';
                    break;
                case 9:
                    return 'Oct';
                    break;
                case 10:
                    return 'Nov';
                    break;
                case 11:
                    return 'Dec';
                    break;
            }
            break;
        case 'mmmm':
            switch(d.getMonth())
            {
                case 0:
                    return 'January';
                    break;
                case 1:
                    return 'February';
                    break;
                case 2:
                    return 'March';
                    break;
                case 3:
                    return 'April';
                    break;
                case 4:
                    return 'May';
                    break;
                case 5:
                    return 'June';
                    break;
                case 6:
                    return 'July';
                    break;
                case 7:
                    return 'August';
                    break;
                case 8:
                    return 'September';
                    break;
                case 9:
                    return 'October';
                    break;
                case 10:
                    return 'November';
                    break;
                case 11:
                    return 'December';
                    break;
            }
            break;
    }
    return "";
	
}

function fixLength(n, c)
{
/*
    ==========================================================================
    Returns a string based on the Number n with the length of c with zero fill
      n - number
      c - string length
      ie fixLength(6, 2) returns 06 and fixLength(33, 4) returns 0033
    ==========================================================================
*/
        var s = n.toString();
        while(s.length < c)
        {
            s = '0' + s;
        }
        return s;
}

