//date
var DOW_SUNDAY    = 0; 
var DOW_MONDAY    = 1;
var DOW_TUESDAY   = 2;
var DOW_WEDNESDAY = 3;
var DOW_THURSDAY  = 4;
var DOW_FRIDAY    = 5;
var DOW_SATURDAY  = 6;

function getYear(date) {
  return date.getFullYear();
}

function getMonth(date) {
  return (parseInt(date.getMonth(), 10) + 1);
}

function getDay(date) {
  return date.getDate();
}

function getDayOfWeek(date) {
  return date.getDay();
}

function createDate(year, month, day) {
  return new Date(year, month - 1, day);
}

////////////////////////////////////////////////////////////////////////////////

function isLeapYear(year) {
  return ((parseInt(year, 10) % 4) == 0);
}

function getToday() {
  var tmpToday = new Date();
  return new Date(tmpToday.getFullYear(), tmpToday.getMonth(), tmpToday.getDate());
}

function isToday(targetDate) {
  var today = new Date();
  return ((today.getFullYear() == targetDate.getFullYear())
          && (today.getMonth() == targetDate.getMonth())
          && (today.getDate() == targetDate.getDate()));
}

function getDaysInMonth(month, year) {
  if (month == 2) {
    if (isLeapYear(year)) {
      return 29;
    } else {
      return 28;
    }
  } else if (month == 4 || month == 6 || month == 9 || month == 11) {
    return 30;
  } else {
    return 31;
  }
}

function getNextDate(targetDate) {
  var year  = parseInt(getYear(targetDate), 10);
  var month = parseInt(getMonth(targetDate), 10);
  var day   = parseInt(getDay(targetDate), 10) + 1;
  
  if (day > getDaysInMonth(month, year)) {
    day = 1;
    month = month + 1;

    if (month > 12) {
      month = 1;
      year = year + 1;
    }
  }
  return createDate(year, month, day);
}

function getPrevDate(targetDate) {
  var year  = parseInt(getYear(targetDate), 10);
  var month = parseInt(getMonth(targetDate), 10);
  var day   = parseInt(getDay(targetDate), 10) - 1;
  
  if (day == 0) {
    if (month == 1) {
      year = year - 1;
      month = 12;
    } else {
      month = month - 1;
    }
    day = getDaysInMonth(month, year);
  }
  return createDate(year, month, day);
}

function getNextMonth(month) {
  if (month == 12) {
    return 1;
  } else {
    return parseInt(month, 10) + 1;
  }
}

function getPrevMonth(month) {
  if (month == 1) {
    return 12;
  } else {
    return parseInt(month, 10) - 1;
  }
}

function getYearOfNextMonth(year, month) {
  if (month == 12) {
    return parseInt(year, 10) + 1;
  } else {
    return year;
  }
}

function getYearOfPrevMonth(year, month) {
  if (month == 1) {
    return parseInt(year, 10) - 1;
  } else {
    return year;
  }
}


//form
function getIndexInListBox(obj, val) {
  for (var i = 0; i < obj.length; i++) {
    if (obj.options[i].value == val) {
      return i;
    }
  }
  return -1;
}

function setItemSelectedInListBox(obj, val) {
  for (var i = 0; i < obj.length; i++) {
    if (obj.options[i].value == val) {
      obj.options[i].selected = true;
    } else {
      obj.options[i].selected = false;
    }
  }
}

function getSelectedItemInListBox(obj) {
  var index = obj.selectedIndex;
//  return parseInt(obj.options[index].value, 10);
  return obj.options[index].value;
}

