// 与えられた西暦がうるう年かどうかを返す
function isLeap(year) {
  // うるう年の場合、"2月29日"は2月のはず
  return new Date(year, 2 - 1, 29).getMonth() == 2 - 1;
}

自分で計算してバグを仕込むのも嫌なので、ECMAScriptの仕様にあるDateオブジェクトを使ってみる。