
// return number of days in month
function daysInMonth(month,year)
{
	var arr = [0,31,28,31,30,31,30,31,31,30,31,30,31]
	if (month == 2)
        // if Feb. 29th, year is not a valid date the new Date() will return
        // a date object equivelent to March 1st, year
        return ((new Date(year,1,29)).getDate() == 1)? 28: 29
	else if (month < 1 || month > 12)
		return 0
	else
		return arr[month]
}

// 2 versions:
// ver 1: takes 0-1 arguments a date object. if no arguments date taken as today
// var 2: takes 3 arguments, year, month and day
function dateToStr()
{
    var dateObj
    switch (arguments.length) {
    case 0:
        dateObj = new Date()
        break
    case 1:
        dateObj = arguments[0]
        break
    case 3:
        dateObj = new Date(arguments[0],arguments[1]-1,arguments[2])
        break
    default:
        return null
    }
    var day = dateObj.getDate()
    var month = dateMonth(dateObj)
    var year = dateYear(dateObj)
    return day + '/' + month + '/' + year
}

// returns date object from input string with DD/MM/YYYY format
function strToDate(datestr)
{
    var reg = /^\d{1,2}\/\d{1,2}\/\d{4}$/ // validate date string format
    if (!datestr)
        return new Date()
    else if (!reg.test(datestr))
        return null
    var arr = datestr.split('/')
    return new Date(arr[2],arr[1]-1,arr[0])
}

function MonthName(month)
{
    return monthesArr[month-1]
}

function dateYear(dateObj)
{
    if (!dateObj) dateObj = new Date()
    var year = dateObj.getYear()
    return year < 100 || navigator.appName == 'Netscape'? year + 1900: year
}

function dateMonth(dateObj)
{
    if (!dateObj) dateObj = new Date()
    var month = dateObj.getMonth()
    return month + 1
}

// return an integer indicating which date is the later
//  0: dateObj1 = dateObj2
//  1: dateObj1 > dateObj2
// -1: dateObj1 < dateObj2
function dateCmp(dateObj1,dateObj2)
{
    // check if same date
    if (dateObj1.getDate() == dateObj2.getDate() &&
        dateObj1.getMonth() == dateObj2.getMonth() &&
        dateObj1.getYear() == dateObj2.getYear())
        return 0 // equal
    else
        return (dateObj1 - dateObj2 < 0)? -1: 1
}
