JS. Кому несложно/интересно, то покритикуйте программу

Шамиль Абдуллин
Недавно начал изучать JS, и как полагается, код написанный мной, пока еще "кривой и сырой".
Кому интересно или несложно, то покритикуйте пожалуйста. 
Будут умные мысли как улучшить, пишите, буду рад попробовать реализовать :) и заодно попрактиковаться.
Есть интересные задачки на JS? Подкиньте плиз))) (ну мой уровень вы видите по коду)
Так же буду рад наставлениям "старших".
Просьба к модератору: не удалять данную тему до 23.09.2015.
<!DOCTYPE html>

<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<title>Изучение JavaScript</title>
<script language="javascript" src="scripts.js"></script>
</head>
<body>
<form action="" method="post" name="form1">
<input type="text" name="inpDate" size="7" value="09/2015"/> <span>Вводить в формате: ММ/ГГГГ</span><br>
<input type="button" value="Показать" onclick="getKalendar()"/>
</form><br><br>
<div id="kalendar"></div>
<script language="javascript">
// Календарь, выводящий таблицу "Дни недели/даты" - разработка для обучения.
function getKalendar(){
    // очистка DIV перед добавлением конечного результата.
div = document.all.kalendar;
div.innerHTML = ""; // Получение из INPUTа формы: месяца и года для показа календаря
month = Number((document.forms.form1.inpDate.value).substr(0, 2));
year = Number((document.forms.form1.inpDate.value).substr(3, 4));
months = new Array();
months[0] = "Январь";
months[1] = "Февраль";
months[2] = "Март";
months[3] = "Апрель";
months[4] = "Май";
months[5] = "Июнь";
months[6] = "Июль";
months[7] = "Август";
months[8] = "Сентябрь";
months[9] = "Октябрь";
months[10] = "Ноябрь";
months[11] = "Декабрь";
// Сегодняшний день today, месяц, и год
    today_date = new Date();
today_data = today_date.getDate();
today_month = today_date.getMonth() + 1;
today_year = today_date.getFullYear();
// генерация даты, узнавание номера недели (week). 0 - воскр., 1 - понед, 2 - втор.
    dateVal = year + "." + month + ".01";
date = new Date(dateVal);
    week = Number(date.getDay());
// Определение последнего числа календаря (max_date)
i = 28;
for(i; i < 32; i++){
// Не знаю, как еще ее можно получить автоматический.
// Вариан массива с готовыми ответами не радует.
    dateVal1 = year + "." + month + "." + i;
date1 = new Date(dateVal1);
         date2 = date1.getDate();
if(date2 == i) max_date = date2;
else break;
}
//
    // построение таблицы
//
// Да, можно было и в одну строку :)
kalendar = "<table border='1'>\n";
kalendar += "<tr>\n";
kalendar += "<td colspan=7>\n<center>";
kalendar += (months[month-1]).bold();
kalendar += "</center></td>\n";
kalendar += "</tr>\n";
kalendar += "<tr>\n";
kalendar += "<td>Воскресенье</td>\n<td>Понедельник</td>\n<td>Вторник</td>\n<td>Среда</td>\n" +
"<td>Четверг</td>\n<td>Пятница</td>\n<td>Суббота</td>\n";
kalendar += "</tr>\n";
    // нехватающие элементы спереди, когда неделя начинается не с воскресенья
if(week != 0){
    kalendar += "<tr>\n";
         week_regr = week;
        while(week_regr != 0){
kalendar += "<td> </td>\n";
week_regr--;
}
}
    // основная часть календаря
// первый день календаря
    j = 1;
// последующие дни календаря
    for(j; j <= max_date; j++){
    // если неделя началась не с воскресенья
         if(week != 0){ if(((j+week) % 7) == 1) kalendar += "<tr>\n";}
// или в воскресенья
            else if((j % 7) == 1) kalendar += "<tr>\n";
         // текущий день J
// именно сегодня
if((today_data == j) && (today_month == month) && (today_year == year)){
kalendar += "<td style='color:red; font-size:22px; text-align: center;'>" + (((j).toString()).bold()) + "</td>\n";
}// другие дни
else kalendar += "<td align='center'>" + j + "</td>\n";
// если неделя закончилась не с субботу
         if(week != 0){ if(((j+week) % 7) == 0) kalendar += "</tr>\n";}
              // или в субботу
else if((j % 7) == 0) kalendar += "</tr>\n";
    }
// нехватающие элементы сзади
if((max_date % 7) != 0){
// неделя не заканчивается на субботу.
         if(week != 0) finish = max_date + week;
// или заканчивается на субботу
else finish = max_date;
// довставка TD в таблицу
while((finish % 7) != 0){
finish++;
kalendar += "<td> </td>\n";
if((finish % 7) == 0) kalendar += "</tr>\n";
}
}
// конец таблицы
    kalendar += "</table>\n";
// вставка в элемент Div
div.innerHTML = kalendar;
    return;
}
</script>
</body>
</html>
PS: много комментариев в коде сделал нарочно. Обычно их куда меньше.
Шамиль Абдуллин около 2 лет назадСпасибо 0
1 чел.