1. JavaScript / Говнокод #4441

    +151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    function msglist_scroll_change() {
    
    	var mailbox = Mailbox.Get();
    	if (!mailbox.mList.length && (mailbox.state == 2)) { if (splash) splash_off(); return; }
    	var scroll_height = document.getElementById("msglist_container_id").style.height;
    	var scroll_top = document.getElementById("msglist_container_id").scrollTop;
    	var delta = parseInt((parseInt(scroll_height) / mailbox.mListItemHeight) + 2);
    	
    	var first = parseInt((scroll_top / mailbox.mListItemHeight) - 1);
    	var last = parseInt(((parseInt(scroll_top) + parseInt(scroll_height)) / mailbox.mListItemHeight) + 1);
    	if (first < 0) first = 0;
    	if (last >= mailbox.mList.length) last = mailbox.mList.length - 1;
    	
    	// проверка на то, что в область видимости попало неподгруженное письмо
    	var needToLoad = 0;
    	for (var i = first; i <= last; i++) if (mailbox.mList[i].STATE == 0) needToLoad++;
    	if (!needToLoad) return; // если не надо
    
    	
    	var first = parseInt((scroll_top / mailbox.mListItemHeight) - 1 - delta);
    	var last = parseInt(((parseInt(scroll_top) + parseInt(scroll_height)) / mailbox.mListItemHeight) + 1 + delta);
    	if (first < 0) first = 0;
    	if (last >= mailbox.mList.length) last = mailbox.mList.length - 1;
    	
    	var messages_part = new Array();
    	var k = 0;
    	targetDiv = gebi("msglist_container_id");
    	inn = "";
    	for (var i = first; i <= last; i++) {
    		if (mailbox.mList[i].STATE == 0) {
    			messages_part[k] = mailbox.mList[i].ID;
    			k++;
    		}
    		tmpl_msg_loading(mailbox.mList[i].ID);
    	}
    	if (messages_part.length) ajax_get_folder_msg_list_info_part(mailbox.fId, messages_part, mailbox.recvMListInfoData, mailbox);
    	else heatFolders();
    }

    Зачем-то два раза определяют first и last...
    Может кто-нибудь объяснит?..

    Запостил: istem, 25 Октября 2010

    Комментарии (17) RSS

    • heatFolders - поджарить папки?
      Ответить
      • двоечник, здесь to heat - глагол и означает нагретьПапки() на случай если понадобятся горячие папки
        Ответить
        • точно, точнее переводится "нагреть", а не "поджарить"
          ммм, что бы означало "горячие папки"?
          Ответить
          • это опечатка.
            в оригинале было "горячие попки 3"
            Ответить
            • и после этого они удивляются, отчего им приходится так много трахаться с кодом, почему они недосыпают и рвут жопу, и откуда у них такой геморрой = )
              Ответить
            • Скрипт:
              //Mr. FROST - средство от "ненужных кликов"
              [...]
              function heatFolders() {
              if (!frostFolders) return;
              if (gebi('frost_f'))
              gebi('frost_f').innerHTML = '';
              frostFolders = 0;
              }
              Ответить
              • вопросов стало только больше, какие такие "замороженные" папки?
                Ответить
                • там практически каждая функция заканчивается heatFolders()...

                  вот что делает инвертирование:
                  function freezeFolders() {
                  if (frostFolders) return;
                  var hor = gebi('folder_count').offsetWidth;
                  var ver = gebi('folder_count').offsetHeight;
                  if (gebi('frost_f'))
                  gebi('frost_f').innerHTML = '<div style="width:'+hor+'px;height:'+ver+'px; "><spacer/></div>';
                  frostFolders = 1;
                  }
                  Ответить
          • мне видится папка декорированная анимированной гифкой /hot.gif и спасибо opera software asa за удобную опцию выключения анимации
            Ответить
    • а определяют не два раза, а переопределяют. Конечно, второй раз писать var говно, но начинаешь и к этому относиться снисходительно
      Ответить
      • определение - два раза, расчёт - два раза.. и проверка в цикле тоже два раза... ну с некоторыми вариациями...
        Ответить
    • Это у парня рука с мышкой с нажатой левой кнопкой и выделенным текстом случайно дернулась. Текст скопипастился, а автор не заметил.
      У меня такое же бывает, когда колесом мышки усердно пролистываешь код, а колесо в этот момент нажимается и код вставляется. Ну там, обычно, синтаксические ошибки вылезают.
      Ответить
      • ...это от mail.ru
        Ответить
        • > gebi()
          обезьяны ленивые, блжад
          теперь смотри строки 5 и 6
          код правился с чтением мантры "только бы не уронить, уволят же"
          Ответить
      • космические технологии
        Ответить
        • "... космического масштаба, и космической же глупости!" (ц)
          Ответить
      • зато если один кусочек текста потеряется случайно -- его легко будет восстановить
        Ответить

    Добавить комментарий