<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss version="2.0"><channel><title>Snowcore's блог</title><link>http://snowcore.blogspot.com/</link><description>Fundless in kharkov или Где взять стартовый капитал</description><language>en</language><managingEditor>noreply@blogger.com (unknown)</managingEditor><lastBuildDate>Thu, 13 Nov 2008 17:07:29 -0600</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">31</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Snowcores" type="application/rss+xml" /><item><title>ICQ 12111 System</title><link>http://snowcore.blogspot.com/2008/06/icq-12111-system.html</link><category>virus</category><category>seo</category><author>noreply@blogger.com (unknown)</author><pubDate>Fri, 20 Jun 2008 09:17:36 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-6608562539146951124</guid><description>Весь мир вздрогнул!&lt;br /&gt;20.06.2008 у всех абонентов ICQ появился номер 12111 в группе General. Это троян - удаляйте его и меняйте пароль. Ходят слухи, что AOL number 12111 - это все проделки AOL, но это все-таки вирус! Так что остерегайтесь номера аськи 12111 - если вам не удается его удалить, перезапустите аську и снова попробуйте. Иначе - воспользуйтесь менеджером контактов (можна найти на сайте qip.ru).&lt;br /&gt;&lt;br /&gt; Мочите 12111 в своем QIP !!!&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-20T07:17:36.879-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></item><item><title>Уррррряяяяяя!!!</title><link>http://snowcore.blogspot.com/2008/05/blog-post.html</link><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 08 May 2008 06:42:08 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-308364297175845601</guid><description>Наконец-то я сделал это!&lt;br /&gt;&lt;br /&gt;Буду собирать вещи и перебираться потихоньку на &lt;a href="http://snowcore.net"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;snowcore.net&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-08T04:42:08.013-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Quirks Mode ... IE</title><link>http://snowcore.blogspot.com/2008/04/quirks-mode-ie.html</link><category>Instant Evil (IE)</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 10 Apr 2008 09:33:45 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-8614553222820755280</guid><description>Все... моему терпению уже нет конца... В связи с этим на моем блоге поселяется новая картинка НАВСЕГДА (смотрите правый верхний угол).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-10T07:33:45.271-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Prevent text selection или отмена выделения текста</title><link>http://snowcore.blogspot.com/2008/04/prevent-text-selection.html</link><category>javascript</category><category>jQuery</category><author>noreply@blogger.com (unknown)</author><pubDate>Fri, 04 Apr 2008 09:40:02 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-2299399755498853185</guid><description>При разработке клиентской части приложения иногда нужно отменить выделение текста, которое делает браузер при двойном клике на элементе или при drag'n'drop.&lt;br /&gt;Этого можно избежать, используя объект &lt;span style="font-weight: bold;"&gt;document.selection&lt;/span&gt;.&lt;br /&gt;Пишем простую функцию, которая отменяет выделение текста и задаем ее на соответствующее событие:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; clearSelection&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; sel;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;document.&lt;span style="color: rgb(0, 102, 0);"&gt;selection&lt;/span&gt; &amp;amp;&amp;amp; document.&lt;span style="color: rgb(0, 102, 0);"&gt;selection&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;empty&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           document.&lt;span style="color: rgb(0, 102, 0);"&gt;selection&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;empty&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;window.&lt;span style="color: rgb(0, 102, 0);"&gt;getSelection&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           sel = window.&lt;span style="color: rgb(0, 102, 0);"&gt;getSelection&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;sel &amp;amp;&amp;amp; sel.&lt;span style="color: rgb(0, 102, 0);"&gt;removeAllRanges&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;               sel.&lt;span style="color: rgb(0, 102, 0);"&gt;removeAllRanges&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;А еще проще (и лучше ;-) - используем jQuery плагин &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;jQuery Disable Text Select Plugin&lt;/span&gt; &lt;a href="http://www.jdempster.com/2007/07/14/jquery-disable-text-select/"&gt;http://www.jdempster.com/2007/07/14/jquery-disable-text-select/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Подключаем единственный файл jquery.disable.text.select.js и задаем отмену выделения текста для нужных элементов:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript" style="font-family: monospace; color: #000000;"&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;#wrapper&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;disableTextSelect&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;a href="http://syhi.stworks.ru/"  style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-04T07:40:02.865-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>jQuery Обработка щелчка правой кнопки мыши</title><link>http://snowcore.blogspot.com/2008/04/jquery.html</link><category>javascript</category><category>jQuery</category><author>noreply@blogger.com (unknown)</author><pubDate>Wed, 02 Apr 2008 09:05:21 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-3832396920673651070</guid><description>Долго возился, никак не мог найти как задать этот обработчик. Я использую livequery plugin.&lt;br /&gt; Задать обработку можно так:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript" style="font-family: monospace; color: #000000;"&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;.pixel&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;livequery&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'contextmenu'&lt;/span&gt;, &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900; font-style: italic;"&gt;// do something ...&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #003366; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;a href="http://syhi.stworks.ru/"  style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-02T07:05:21.255-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Учимся достигать целей</title><link>http://snowcore.blogspot.com/2008/03/blog-post_26.html</link><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:30 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-3079092423923698586</guid><description>Наконец-то ты начинаю побеждать себя, практически, во всем. Больше никакой лени и безответственности! Как приятно это ощущать!&lt;br /&gt;Ну что ж, теперь могу достигать большего...&lt;br /&gt;Первая цель - Atom MX 2.0&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dnS89WGz6Yg/R-oCRUwWeTI/AAAAAAAAACc/eZ0Jgazo7ZE/s1600-h/atom_mx_black.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_dnS89WGz6Yg/R-oCRUwWeTI/AAAAAAAAACc/eZ0Jgazo7ZE/s320/atom_mx_black.jpg" alt="" id="BLOGGER_PHOTO_ID_5181956817895717170" border="0" /&gt;&lt;/a&gt;  Я люблю экстрим, давно себе хотел нормальный велик. Мне очень понравился этот экстремальный хардтейл с оборудованием любительского класса SRAM 3.0, 21 скорость. Алюминиевая рама Oversize-reinforced 7005. Передний амортизатор Suntour XCR, 120mm, регулируемый. Двойные обода Weinman ZAC2000DW. Тормоза дисковый механический Tectro IO/Promax V.Подходит для активной езды по различным дорогам и пересеченной местности.&lt;br /&gt;И цена за этого красавчика просто смешная - чуть больше $300&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:30.508-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_dnS89WGz6Yg/R-oCRUwWeTI/AAAAAAAAACc/eZ0Jgazo7ZE/s72-c/atom_mx_black.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Новый проект :-)</title><link>http://snowcore.blogspot.com/2008/03/blog-post.html</link><category>я</category><category>юмор</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:30 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-5840260108748715383</guid><description>С сегодняшнего утра объявил себе войну по поводу утренней зарядки. Все никак не мог начать ее делать постоянно. Поэтому прицепил на дверь напоминание:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dnS89WGz6Yg/R_8R4ciaZqI/AAAAAAAAACs/RuQtY2RKS7s/s1600-h/%28reflect%29%D0%97%D0%B0%D1%80%D1%8F%D0%B4%D0%BA%D0%BEBETA.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_dnS89WGz6Yg/R_8R4ciaZqI/AAAAAAAAACs/RuQtY2RKS7s/s320/%28reflect%29%D0%97%D0%B0%D1%80%D1%8F%D0%B4%D0%BA%D0%BEBETA.png" alt="" id="BLOGGER_PHOTO_ID_5187884957184976546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Пока это бета-версия... Но скоро будет stable release!&lt;br /&gt;Желаю всем находить силы для борьбы с самим собой это &lt;span style="font-weight: bold;"&gt;ОЧЕНЬ ВАЖНО &lt;/span&gt;!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:30.586-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_dnS89WGz6Yg/R_8R4ciaZqI/AAAAAAAAACs/RuQtY2RKS7s/s72-c/%28reflect%29%D0%97%D0%B0%D1%80%D1%8F%D0%B4%D0%BA%D0%BEBETA.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>jQuery binding events problem</title><link>http://snowcore.blogspot.com/2008/03/jquery-bind-events.html</link><category>javascript</category><category>jQuery</category><author>noreply@blogger.com (unknown)</author><pubDate>Wed, 05 Mar 2008 06:05:07 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-1320218081241426542</guid><description>При использовании ajax запросов и изменении DOM дерева налету не всегда срабатывают функции-обработчики событий для добавленных элементов в документе. Пример:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// Получаем html код и вставляем его в div&lt;/span&gt;&lt;br /&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"#grid_toolbar"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;load&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"./ajax/toolbar_menu/users.inc"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// Задаем обработчик для нового элемента&lt;/span&gt;&lt;br /&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"#delete"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;click&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;    $&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"#grid"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;empty&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Такой способ, к сожалению, не будет работать.&lt;br /&gt;В этой ситуации поможет специальный плагин &lt;span style="font-weight: bold;"&gt;livequery&lt;/span&gt;: &lt;a href="http://docs.jquery.com/Plugins/livequery"&gt;http://docs.jquery.com/Plugins/livequery&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Подключаем единственный файл &lt;span style="font-weight: bold;"&gt;jquery.livequery.js &lt;/span&gt;и переписываем код:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript" style="font-family: monospace; color: #000000;"&gt;&lt;span style="color: #009900; font-style: italic;"&gt;// Загружаем также ;-)&lt;/span&gt;&lt;br /&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;#grid_toolbar&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;load&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;./ajax/toolbar_menu/users.inc&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #009900; font-style: italic;"&gt;// А здесь уже задаем обработчики при помощи livequery&lt;/span&gt;&lt;br /&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;#delete&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;livequery&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'click'&lt;/span&gt;, &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;event&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; $&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;#grid&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;empty&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;a href="http://syhi.stworks.ru/"  style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-05T04:05:07.017-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Javascript ошибки</title><link>http://snowcore.blogspot.com/2008/03/javascript.html</link><category>javascript</category><category>программирование</category><category>jQuery</category><author>noreply@blogger.com (unknown)</author><pubDate>Wed, 05 Mar 2008 05:10:08 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-4823980104316761107</guid><description>Сейчас разруливаю jQuery framework - отличная разработка! Много готовых и расширяемых инструментов. Не мог разобраться с одной ошибкой около часа. В итоге понял, в чем дело... поэтому пишу заметку в блог: если ищешь javascript ошибку больше, чем полчаса - посмотри в &lt;span style="font-weight: bold;"&gt;правильном ли порядке ты подключаешь скрипты&lt;/span&gt; !!!&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-05T03:10:08.129-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Тонкая Красная Нить</title><link>http://snowcore.blogspot.com/2008/02/blog-post.html</link><category>я</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:30 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-5847225334624101250</guid><description>Обалдеть! Чисто случайно наткнулся на альбом этих Харьковских ребят. Теперь уже целую неделю в плейлисте - только они. &lt;span style="font-weight: bold;font-size:24;" &gt;СУПЕР!!!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dnS89WGz6Yg/R8gFbblGbGI/AAAAAAAAACM/UXohF2kICEQ/s1600-h/tkn.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_dnS89WGz6Yg/R8gFbblGbGI/AAAAAAAAACM/UXohF2kICEQ/s320/tkn.jpg" alt="" id="BLOGGER_PHOTO_ID_5172390140852989026" border="0" /&gt;&lt;/a&gt;Всем советую!!!&lt;br /&gt;Страница вконтакте - &lt;a href="http://vkontakte.ru/club447030"&gt;http://vkontakte.ru/club447030&lt;/a&gt;&lt;br /&gt;Сайт группы - &lt;a href="http://www.tkn.com.ua/"&gt;www.tkn.com.ua&lt;/a&gt;&lt;br /&gt;И, собственно говоря, альбомчик - &lt;a href="http://www.tkn.com.ua/mp3/tkn-106%28ep%29%282008%29.rar"&gt;www.tkn.com.ua/mp3/tkn-106(ep)(2008).rar&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:24;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;script style="font-size: 24px;" src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:30.731-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_dnS89WGz6Yg/R8gFbblGbGI/AAAAAAAAACM/UXohF2kICEQ/s72-c/tkn.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>MySQL и кодировки</title><link>http://snowcore.blogspot.com/2008/02/mysql.html</link><category>базы данных</category><author>noreply@blogger.com (unknown)</author><pubDate>Tue, 05 Feb 2008 03:09:45 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-8383983433016444115</guid><description>Иногда при работе с MySQL возникают ошибки, связанные с кодировкой (например, вместо русских символов - знаки вопроса).&lt;br /&gt; Эта проблема решается легко при помощи одного из следующих запросов:&lt;br /&gt;&lt;br /&gt;&lt;div class="mysql" style="font-family: monospace; color: #000000;"&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'SET NAMES &amp;quot;cp1251&amp;quot;'&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SET collation_connection = 'cp1251_general_ci'&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SET collation_server = 'cp1251_general_ci'&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SET character_set_client='cp1251'&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SET character_set_connection='cp1251'&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SET character_set_results='cp1251'&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;mysql_query&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;SET character_set_server='cp1251'&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;a href="http://syhi.stworks.ru/"  style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-05T01:09:45.311-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Перехват нажатия Enter в IE</title><link>http://snowcore.blogspot.com/2008/01/enter-ie.html</link><category>javascript</category><category>программирование</category><category>Instant Evil (IE)</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:31 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-2203473671804472156</guid><description>Вот так уж повелось, что IE не дает спокойно жить всем web-developerам. И меня он не устает удивлять.&lt;br /&gt;&lt;br /&gt;Ситуация следующая: в текстовое поле вводится числовое значение, по нажатию Enter это значение передается на сервер (при помощи AJAX). Что может быть проще? Я привязал функцию обновления на событие &lt;span style="font-weight: bold;"&gt;onchange&lt;/span&gt; элемента input (текст). Как обычно, все идеально сработало в FireFox и Safari. А этот IE... При нажатии Enter - вообще ничего не происходило.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Объясняю:&lt;/span&gt; в IE Enter вызывает событие "onsubmit" формы.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Решение: &lt;/span&gt;input должен находиться в форме. На событие onsubmit ставим return false;&lt;br /&gt;И добавляем следующий код:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;processKeyEvent = &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;eventType, event&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;                                             &lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;window.&lt;span style="color: rgb(0, 102, 0);"&gt;event&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;          event = window.&lt;span style="color: rgb(0, 102, 0);"&gt;event&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; caller_;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;event.&lt;span style="color: rgb(0, 102, 0);"&gt;target&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;          caller_ = event.&lt;span style="color: rgb(0, 102, 0);"&gt;target&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;event.&lt;span style="color: rgb(0, 102, 0);"&gt;srcElement&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;          caller_ = event.&lt;span style="color: rgb(0, 102, 0);"&gt;srcElement&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; code;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;event.&lt;span style="color: rgb(0, 102, 0);"&gt;keyCode&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; code = event.&lt;span style="color: rgb(0, 102, 0);"&gt;keyCode&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;event.&lt;span style="color: rgb(0, 102, 0);"&gt;which&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; code = event.&lt;span style="color: rgb(0, 102, 0);"&gt;which&lt;/span&gt;;&lt;br /&gt;   &lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;switch&lt;/span&gt; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;code&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;case&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;13&lt;/span&gt;:&lt;br /&gt;              checkEnteredOrder&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;caller_&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;; &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// наша функция для обновления&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;break&lt;/span&gt;;       &lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;     &lt;br /&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;processKeyPress = &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;event&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;      processKeyEvent&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"onkeypress"&lt;/span&gt;, event&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Затем меняем событие onchange на &lt;span style="font-weight: bold;"&gt;keypress:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;input.&lt;span style="color: rgb(0, 102, 0);"&gt;onkeypress&lt;/span&gt; = processKeyPress;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Теперь все проходит через &lt;span&gt;&lt;span style="font-weight: bold;"&gt;processKeyPress &lt;/span&gt;&lt;span&gt;хэндлер, а в нем мы отлавливаем нажатую клавишу по &lt;span style="font-weight: bold;"&gt;keycode&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;P.S.: Чувствую, скоро нужно будет создать отдельную категорию на блоге типа "Умри, IE поганый" или "&lt;span style="font-weight: bold;"&gt;I&lt;/span&gt;nstant &lt;span style="font-weight: bold;"&gt;E&lt;/span&gt;vil"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dnS89WGz6Yg/R4ZHVQ4RseI/AAAAAAAAACE/EniK6iofXtw/s1600-h/page23_19.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_dnS89WGz6Yg/R4ZHVQ4RseI/AAAAAAAAACE/EniK6iofXtw/s320/page23_19.jpg" alt="" id="BLOGGER_PHOTO_ID_5153885254205944290" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:31.279-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_dnS89WGz6Yg/R4ZHVQ4RseI/AAAAAAAAACE/EniK6iofXtw/s72-c/page23_19.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>const + javascript in IE</title><link>http://snowcore.blogspot.com/2008/01/const-javascript.html</link><category>javascript</category><category>программирование</category><category>Instant Evil (IE)</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 10 Apr 2008 09:36:22 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-8900459699860079019</guid><description>Ну вот закончились праздники (ура!), и снова любимая работа...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Первое удивление в новом году:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Никогда не используйте ключевое слово &lt;span style="font-weight: bold;font-size:100%;" &gt;const&lt;/span&gt; в javascript. Константы не поддерживаются в &lt;span style="font-weight: bold;"&gt;IE&lt;/span&gt; (в этом только что убедился, посвятив отладке 2 часа).  Так что &lt;span style="font-weight: bold;"&gt;var&lt;/span&gt; вам в помощь ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script style="font-size: 24px;" src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-10T07:36:22.039-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Всех с Новым 2008 Годом !!!</title><link>http://snowcore.blogspot.com/2007/12/2008.html</link><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:31 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-8808150810900721590</guid><description>&lt;div style="text-align: center;"&gt;Удачи Вам, здоровья, всяческих благ и исполнения всех желаний!&lt;br /&gt;С Новым Годом !!!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dnS89WGz6Yg/R3YEFw4RsdI/AAAAAAAAAB8/t6FOH8PlFCU/s1600-h/tree.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_dnS89WGz6Yg/R3YEFw4RsdI/AAAAAAAAAB8/t6FOH8PlFCU/s320/tree.jpg" alt="" id="BLOGGER_PHOTO_ID_5149307721011540434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:31.811-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_dnS89WGz6Yg/R3YEFw4RsdI/AAAAAAAAAB8/t6FOH8PlFCU/s72-c/tree.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Javascript Treeview</title><link>http://snowcore.blogspot.com/2007/12/javascript-treeview.html</link><category>javascript</category><category>программирование</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:32 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-5272550743112085905</guid><description>В нашем "вечном" проекте появилась новая задача - реализовать иерархическую структуру категорий. Сделать это нужно было в таблице + реализовать следующие действия:&lt;ul&gt;&lt;li&gt;открытие/закрытие ветвей дерева&lt;/li&gt;&lt;li&gt;перемещение категории на уровень вверх/вниз&lt;/li&gt;&lt;li&gt;дублирование (как категории отдельно, так и целой ветки)&lt;/li&gt;&lt;li&gt;удаление элементов&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Немного поразмыслив я придумал такой подход:&lt;br /&gt;&lt;br /&gt;Каждой строке таблицы присваивается 2 параметра:&lt;br /&gt;level - уровень, на котором лежит узел (от 0 и выше)&lt;br /&gt;state - состояние узла (open - узел открыт, closed - закрыт, end - узел является конечным )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Смотрите скриншот таблицы:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dnS89WGz6Yg/R2vn-Q4RsZI/AAAAAAAAABc/pnBzX2u4VXA/s1600-h/tree.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_dnS89WGz6Yg/R2vn-Q4RsZI/AAAAAAAAABc/pnBzX2u4VXA/s320/tree.gif" alt="" id="BLOGGER_PHOTO_ID_5146462056069837202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;И так, первая функция для открытия и закрытия узлов. Встречайте:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;&lt;ol&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; changeRowState&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;box, RH_Panel&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    elem = box.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; current_level = elem.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; current_state = elem.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"state"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; current_table = &lt;span style="color: rgb(51, 102, 204);"&gt;"table_body"&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;RH_Panel&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        current_table = &lt;span style="color: rgb(51, 102, 204);"&gt;"RH_table_body"&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; row_display = &lt;span style="color: rgb(51, 102, 204);"&gt;"none"&lt;/span&gt;; &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// for style.display&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;current_state == &lt;span style="color: rgb(51, 102, 204);"&gt;"closed"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// if item is closed, than show all children&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        row_display = &lt;span style="color: rgb(51, 102, 204);"&gt;""&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; tbody = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementById&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;current_table&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; children = tbody.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; after_current = &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; i=&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;; i&amp;lt;children.&lt;span style="color: rgb(0, 102, 0);"&gt;length&lt;/span&gt;; i++&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;                &lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;tagName&lt;/span&gt; == &lt;span style="color: rgb(51, 102, 204);"&gt;'TR'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; == elem&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                after_current = &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;after_current&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;   &lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt; != elem&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'level'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; == current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;current_state == &lt;span style="color: rgb(51, 102, 204);"&gt;"open"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        elem.&lt;span style="color: rgb(0, 102, 0);"&gt;setAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"state"&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 204);"&gt;"closed"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        box.&lt;span style="color: rgb(0, 102, 0);"&gt;src&lt;/span&gt; = &lt;span style="color: rgb(51, 102, 204);"&gt;"images/branch_closed.gif"&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        elem.&lt;span style="color: rgb(0, 102, 0);"&gt;setAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"state"&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 204);"&gt;"open"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        box.&lt;span style="color: rgb(0, 102, 0);"&gt;src&lt;/span&gt; = &lt;span style="color: rgb(51, 102, 204);"&gt;"images/branch_open.gif"&lt;/span&gt;; &lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;return&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;                &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'level'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &amp;gt; current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;                    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;                    children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;style&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;display&lt;/span&gt; = row_display;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;current_state == &lt;span style="color: rgb(51, 102, 204);"&gt;"open"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;        elem.&lt;span style="color: rgb(0, 102, 0);"&gt;setAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"state"&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 204);"&gt;"closed"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;        box.&lt;span style="color: rgb(0, 102, 0);"&gt;src&lt;/span&gt; = &lt;span style="color: rgb(51, 102, 204);"&gt;"images/branch_closed.gif"&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;        elem.&lt;span style="color: rgb(0, 102, 0);"&gt;setAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"state"&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 204);"&gt;"open"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;        box.&lt;span style="color: rgb(0, 102, 0);"&gt;src&lt;/span&gt; = &lt;span style="color: rgb(51, 102, 204);"&gt;"images/branch_open.gif"&lt;/span&gt;;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="margin: 0px;"&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;Эту функцию мы ставим на событие onclick для элемента &amp;lt;img&amp;gt; в строке таблицы:&lt;br /&gt;&lt;br /&gt;&lt;div class="html4strict"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/tr.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;tr&lt;/span&gt;&lt;/a&gt; level=&lt;span style="color: rgb(255, 0, 0);"&gt;"0"&lt;/span&gt; state=&lt;span style="color: rgb(255, 0, 0);"&gt;"open"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;style&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"background:#99ddaa;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/input.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;input&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"checkbox"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"tree_items[]"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/a.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"javascript:void(0)"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/img.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;img&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;src&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"images/branch_open.gif"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;onclick&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"changeRowState(this);"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/a.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;a&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;href&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"action.php"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(221, 187, 0);"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(221, 187, 0);"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/b.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;b&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;Web Channel (2)&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/b&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;56&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;2&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;3&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;10&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a style="text-decoration: none;" href="http://december.com/html/4/element/td.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;td&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;class&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"statusProduction"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Published&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Логика очень проста: при нажатии на иконку, функция проходит по всем строчкам таблицы и изменяет атрибут display (если уровень больше). При таком подходе, в принципе, уровень вложенности может быть большим. Но для нашего проекта я сделал ограничение до 10 уровней.&lt;br /&gt;&lt;br /&gt;Функция для изменения уровня узлов:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; changeLevel&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;direction&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; delta_level = &lt;span style="color: rgb(204, 0, 0);"&gt;-1&lt;/span&gt;;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;direction == &lt;span style="color: rgb(51, 102, 204);"&gt;"down"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;      delta_level = &lt;span style="color: rgb(204, 0, 0);"&gt;1&lt;/span&gt;;&lt;br /&gt;   &lt;br /&gt;  &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; checkboxes = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementsByName&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"tree_items[]"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; i=&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;; i&amp;lt;checkboxes.&lt;span style="color: rgb(0, 102, 0);"&gt;length&lt;/span&gt;; i++&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;checked&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; row = checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;;&lt;br /&gt;          &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; current_level = row.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;       &lt;br /&gt;          &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;current_level != &lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt; || direction == &lt;span style="color: rgb(51, 102, 204);"&gt;"down"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// dont move up row with level = 0&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; td = checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;nextSibling&lt;/span&gt;;&lt;br /&gt;              &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;td.&lt;span style="color: rgb(0, 102, 0);"&gt;nodeType&lt;/span&gt; == &lt;span style="color: rgb(204, 0, 0);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                  td = checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;nextSibling&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;nextSibling&lt;/span&gt;;&lt;br /&gt;           &lt;br /&gt;              &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; prev_html = td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt;;&lt;br /&gt;              prev_html = prev_html.&lt;span style="color: rgb(0, 102, 0);"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;prev_html.&lt;span style="color: rgb(0, 102, 0);"&gt;indexOf&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"&amp;lt;"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;              &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; new_level = parseInt&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; + parseInt&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;delta_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;              td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt; = getSpacesForLevel&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;new_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; + prev_html;&lt;br /&gt;              row.&lt;span style="color: rgb(0, 102, 0);"&gt;setAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;, new_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;              row.&lt;span style="color: rgb(0, 102, 0);"&gt;style&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;backgroundColor&lt;/span&gt; = arrColors&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;new_level&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;;&lt;br /&gt;           &lt;br /&gt;              &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; tbody = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementById&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'table_body'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;              &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; children = tbody.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;;&lt;br /&gt;              &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; row_index = getRowIndex&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;row&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;           &lt;br /&gt;              &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;direction == &lt;span style="color: rgb(51, 102, 204);"&gt;"down"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                  row_index++;&lt;br /&gt;           &lt;br /&gt;              &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; j=row_index; j&amp;lt;children.&lt;span style="color: rgb(0, 102, 0);"&gt;length&lt;/span&gt;; j++&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                  &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;tagName&lt;/span&gt; == &lt;span style="color: rgb(51, 102, 204);"&gt;'TR'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; == current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                          &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;break&lt;/span&gt;;&lt;br /&gt;                       &lt;br /&gt;                      &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &amp;gt; current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                      &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; cur_level = children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; td = children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;;&lt;br /&gt;                           &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;indexOf&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"&amp;lt;img"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; == &lt;span style="color: rgb(204, 0, 0);"&gt;-1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// IE and Safari hack&lt;/span&gt;&lt;br /&gt;                              td = children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;;&lt;br /&gt;                      &lt;br /&gt;                           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; prev_html = td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt;;&lt;br /&gt;                           prev_html = prev_html.&lt;span style="color: rgb(0, 102, 0);"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;prev_html.&lt;span style="color: rgb(0, 102, 0);"&gt;indexOf&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"&amp;lt;"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;                           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; new_lev = parseInt&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;cur_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; + parseInt&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;delta_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;                           td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt; = getSpacesForLevel&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;new_lev&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; + prev_html;&lt;br /&gt;                           children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;setAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;, new_lev&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;                           children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;style&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;backgroundColor&lt;/span&gt; = arrColors&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;new_lev&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;;&lt;br /&gt;                      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;                  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// for&lt;/span&gt;&lt;br /&gt;              checkAll&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// uncheck all checkboxes&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// if&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// if checked&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// AJAX request to set level&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А также функции дублирования:&lt;br /&gt;&lt;br /&gt;&lt;div class="javascript"  style="color: rgb(0, 0, 0);font-family:monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; duplicateSingle&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; checkboxes = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementsByName&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"tree_items[]"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; tbody = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementById&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"table_body"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;   &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; len = checkboxes.&lt;span style="color: rgb(0, 102, 0);"&gt;length&lt;/span&gt;;    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// FireFox hack (against constant reference to collection of checkboxes)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; i=&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;; i&amp;lt;len; i++&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;checked&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; row = checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; inserted_row = tbody.&lt;span style="color: rgb(0, 102, 0);"&gt;appendChild&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;row.&lt;span style="color: rgb(0, 102, 0);"&gt;cloneNode&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; td = inserted_row.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;indexOf&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"&amp;lt;img"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; == &lt;span style="color: rgb(204, 0, 0);"&gt;-1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// IE and Safari hack&lt;/span&gt;&lt;br /&gt;              td = inserted_row.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;;&lt;br /&gt;            &lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; cell_content = td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; ins_pos = cell_content.&lt;span style="color: rgb(0, 102, 0);"&gt;indexOf&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"&amp;lt;/b&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;           td.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt; = cell_content.&lt;span style="color: rgb(0, 102, 0);"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;, ins_pos&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; + &lt;span style="color: rgb(51, 102, 204);"&gt;" Copy"&lt;/span&gt; + cell_content.&lt;span style="color: rgb(0, 102, 0);"&gt;slice&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;ins_pos&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   checkAll&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt; duplicateBranch&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; checkboxes = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementsByName&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"tree_items[]"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;   &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; tbody = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementById&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"table_body"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;   &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; len = checkboxes.&lt;span style="color: rgb(0, 102, 0);"&gt;length&lt;/span&gt;;    &lt;span style="color: rgb(0, 153, 0); font-style: italic;"&gt;// FireFox hack (against constant reference to collection of checkboxes)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; i=&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;; i&amp;lt;len; i++&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;checked&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; row = checkboxes&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;i&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;parentNode&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; inserted_row = tbody.&lt;span style="color: rgb(0, 102, 0);"&gt;appendChild&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;row.&lt;span style="color: rgb(0, 102, 0);"&gt;cloneNode&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; current_level = inserted_row.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;         &lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; tbody = document.&lt;span style="color: rgb(0, 102, 0);"&gt;getElementById&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'table_body'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; children = tbody.&lt;span style="color: rgb(0, 102, 0);"&gt;childNodes&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; row_index = getRowIndex&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;row&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;         &lt;br /&gt;           &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; j=&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;row_index&lt;span style="color: rgb(204, 0, 0);"&gt;+1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;; j&amp;lt;children.&lt;span style="color: rgb(0, 102, 0);"&gt;length&lt;/span&gt;; j++&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;tagName&lt;/span&gt; == &lt;span style="color: rgb(51, 102, 204);"&gt;'TR'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; == current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                       &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;break&lt;/span&gt;;&lt;br /&gt;                     &lt;br /&gt;                   &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;getAttribute&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;"level"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &amp;gt; current_level&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;br /&gt;                       tbody.&lt;span style="color: rgb(0, 102, 0);"&gt;appendChild&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;children&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;j&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;cloneNode&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;; &lt;br /&gt;                   &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;   checkAll&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;a href="http://syhi.stworks.ru/" style="display: block; text-align: right; font-size: 9px;"&gt;Syhi-подсветка кода&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Кому нужны будут подробные объяснения, или кто сталкивался с подробной задачей - сообщите об этом в комментах.&lt;br /&gt;&lt;br /&gt;Удачи!&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:32.165-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_dnS89WGz6Yg/R2vn-Q4RsZI/AAAAAAAAABc/pnBzX2u4VXA/s72-c/tree.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Процесс разработки</title><link>http://snowcore.blogspot.com/2007/12/blog-post_18.html</link><category>юмор</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:32 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-7049146390611982324</guid><description>Как же правдиво все выглядит.&lt;br /&gt;Посмотрите на типичний процесс разработки проектов:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dnS89WGz6Yg/R2eFtg4RsYI/AAAAAAAAABU/zcVQoiF1B1w/s1600-h/process.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_dnS89WGz6Yg/R2eFtg4RsYI/AAAAAAAAABU/zcVQoiF1B1w/s320/process.jpg" alt="" id="BLOGGER_PHOTO_ID_5145228116260663682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:32.839-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_dnS89WGz6Yg/R2eFtg4RsYI/AAAAAAAAABU/zcVQoiF1B1w/s72-c/process.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Вот это так письмо!</title><link>http://snowcore.blogspot.com/2007/12/blog-post_14.html</link><category>юмор</category><author>noreply@blogger.com (unknown)</author><pubDate>Fri, 14 Dec 2007 08:53:37 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-4539131284075712408</guid><description>Прислал недавно знакомый, я ржал долго:&lt;br /&gt;&lt;br /&gt;"Здравствуй, дорогая доченька! Если ты получишь это письмо, значит, оно до тебя дошло. Если же нет, то дай мне знать, и я напишу тебе ещe раз. Я пишу медленно, потому что я знаю, что ты не очень быстро читаешь. Погода у нас хорошая. На прошлой неделе дождь шел всего два раза: в начале недели, 3 дня, и ближе к концу, в течение 4 дней. Кстати, насчет пальтишка, которое ты хотела, дядя Вася сказал, что если пересылать его с этими литыми пуговицами, то это выйдет слишком дорого по весу, поэтому я их отрезала. Пришей их обратно, я положила их в правый кармашек. Твой папа нашeл новую работу. Под ним 500 человек! Он косит траву на кладбище. Твоя сестра Настя недавно вышла замуж, и ждет малыша Мы не знаем, какого он пола, поэтому пока что не могу тебе сказать, будешь ли ты дядей или тeтей. Если это девочка, то она хочет еe назвать, как меня. Немного странное решение, назвать свою дочку Мама. С твоим братом Толей недавно случился казус: он закрыл свою машину, а ключи оставил внутри. Ему пришлось вернуться домой пешком&lt;br /&gt;( 10 километров!), чтобы взять второй комплект ключей, и выпустить нас из машины. Если ты вдруг встретишь свою кузину Лилю, то передай ей от меня привет. Eсли ты еe не встретишь, то ничего ей не говори. Твоя мама. P.S.: Я хотела отослать тебе немного денег, но уже заклеила конверт"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T06:53:37.761-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Сервис подсветки кода</title><link>http://snowcore.blogspot.com/2007/12/blog-post_11.html</link><category>tools</category><author>noreply@blogger.com (unknown)</author><pubDate>Tue, 11 Dec 2007 04:06:02 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-86867939280013118</guid><description>Очень часто в постах приходится писать участки кода.&lt;br /&gt;Раньше это было полное извращение - менял HTML, сам создавал стили... Недавно узнал об очень удобном сервисе - &lt;b&gt;SyHi&lt;/b&gt;(&lt;b&gt;Sy&lt;/b&gt;ntax &lt;b&gt;Hi&lt;/b&gt;ghlighter for blogs) система подсветки кода для блогов. Такая классная штука!&lt;br /&gt;&lt;br /&gt;Вот ряд ее достоинств:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;28 языков для подсветки (PHP, C++, C#, XML и другие)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;нумерация строк&lt;/li&gt;&lt;li&gt;возможность разрешать/запрещать переносы строк&lt;/li&gt;&lt;/ul&gt;Всем кодерам советую! Адрес: &lt;a href="http://syhi.stworks.ru/"&gt;&lt;b&gt;SyHi&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;А какими сервисами пользуетесь Вы?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-11T02:06:02.371-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Удачное продвижение</title><link>http://snowcore.blogspot.com/2007/12/blog-post.html</link><category>я</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:33 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-1340732995492528463</guid><description>Ура! Проект, который делаю на работе уже начинает внедряться!!! Как же приятно это слышать, а тем более видеть вот такие фотографии (эти ценники создаются при помощи нашего проекта):&lt;br /&gt;&lt;br /&gt;Великобритания:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dnS89WGz6Yg/R1fHBMILfoI/AAAAAAAAAAk/Rq87DQSqbZ8/s1600-h/UK.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_dnS89WGz6Yg/R1fHBMILfoI/AAAAAAAAAAk/Rq87DQSqbZ8/s320/UK.JPG" alt="" id="BLOGGER_PHOTO_ID_5140796322916040322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Китай:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dnS89WGz6Yg/R1fHj8ILfpI/AAAAAAAAAAs/2uW9elzEvM4/s1600-h/China.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_dnS89WGz6Yg/R1fHj8ILfpI/AAAAAAAAAAs/2uW9elzEvM4/s320/China.jpg" alt="" id="BLOGGER_PHOTO_ID_5140796919916494482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:33.937-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_dnS89WGz6Yg/R1fHBMILfoI/AAAAAAAAAAk/Rq87DQSqbZ8/s72-c/UK.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Какая же ты прелесть ... C# !</title><link>http://snowcore.blogspot.com/2007/12/c.html</link><category>программирование</category><category>C#</category><author>noreply@blogger.com (unknown)</author><pubDate>Fri, 21 Dec 2007 08:07:39 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-1989084019092389693</guid><description>С прошлой недели потихоньку начинаю переходить на C# - очень классная язык!  Я просто балдею от него!&lt;br /&gt;&lt;br /&gt;Параллельно с изучением в ШАГе решил написать свой проект для раскрутки сайтов.&lt;br /&gt;Идея давно всем известна и проста - полуавтоматическая регистрация в поисковиках, каталогах и т.д.&lt;br /&gt;&lt;br /&gt;Пока делаю основную часть программы. В будущем планирую добавить инструменты для упрощения работы с рекламными программами а также часть инструментов для блоггеров.&lt;br /&gt;&lt;br /&gt;Все свои результаты выложу здесь, так что следите :-)&lt;br /&gt;&lt;br /&gt;P.s.: использую Framework 2, у кого нету - можете скачать &lt;a href="http://depositfiles.com/files/2603257"&gt;ТУТ&lt;/a&gt; (23,5 Мб)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-21T06:07:39.588-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Горькая правда</title><link>http://snowcore.blogspot.com/2007/11/blog-post_2396.html</link><category>юмор</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:34 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-769229092769605535</guid><description>Иногда смотришь на вот такое, и становится немного грустно:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dnS89WGz6Yg/R1ApCCDPCNI/AAAAAAAAAAc/KbXmh96s4oA/s1600-R/teapot.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_dnS89WGz6Yg/R1ApCCDPCNI/AAAAAAAAAAc/XwtMmMG8kzI/s320/teapot.jpg" alt="" id="BLOGGER_PHOTO_ID_5138652289716652242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:34.324-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_dnS89WGz6Yg/R1ApCCDPCNI/AAAAAAAAAAc/XwtMmMG8kzI/s72-c/teapot.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>GUID Generator</title><link>http://snowcore.blogspot.com/2007/11/guid-generator.html</link><category>программирование</category><category>C#</category><author>noreply@blogger.com (unknown)</author><pubDate>Fri, 18 Jan 2008 02:40:05 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-8850530152342193692</guid><description>Вот на днях понадобилось генерировать GUID. GUID (Globally Unique Identifier) — представляет собой статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения получения конфликтов, вызванных совпадением идентификатора. Хотя уникальность каждого отдельного GUID и не гарантируется, общее количество уникальных ключей настолько велико, что вероятность того, что один и тот же ключ будет получен дважды, крайне мала.&lt;br /&gt;&lt;br /&gt;GUID — это частная реализация (фирмой Microsoft) стандарта, имеющего название Universally Unique Identifier (UUID).&lt;br /&gt;&lt;br /&gt;В тексте GUID записывается в виде строки из 16-ричных цифр, разбитых на группы дефисами и окружённой фигурными скобками:&lt;br /&gt;&lt;br /&gt;   {6F9619FF-8B86-D011-B42D-00CF4FC964FF}&lt;br /&gt;&lt;br /&gt;Есть куча online сервисов, которые позволяют это сделать, я же предлагаю скачать мой &lt;a href="http://roman-snitko.narod.ru/download/GUID_Generator.rar" style="color: green; font-weight: bold;"&gt;GUID Generator&lt;/a&gt; (написан на C# Framework v2.0 )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-18T00:40:05.179-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>А теперь немного о нас...</title><link>http://snowcore.blogspot.com/2007/11/blog-post_29.html</link><category>юмор</category><author>noreply@blogger.com (unknown)</author><pubDate>Fri, 30 Nov 2007 04:35:33 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-9035484615049549886</guid><description>&lt;br&gt;&lt;br /&gt;Поехал программист на стрельбище. Три раза стрелял, а ему с огневого рубежа сообщают, что ни одного попадания не зафиксировано.&lt;br /&gt;Программист вставил палец в ствол, нажал на спусковой крючок. Палец, естественно, разлетелся в разные стороны.&lt;br /&gt;Программист орет на огневого рубеж: - У меня на выходе все нормально, у вас проблемы с приемом.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Сидят два программиста в кафе. Мимо идет красивая девушка.&lt;br /&gt;- Классные у нее properties, - говорит один.&lt;br /&gt;- Вчера проверял... Все &lt;span style="font-weight:bold;"&gt;read only&lt;/span&gt;, - с грустью отвечает другой...&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Останавливает дорожная полиция машину, из машины вываливается сильно пьяный программист.&lt;br /&gt;Полицейский спрашивает:&lt;br /&gt;- Ваши права?&lt;br /&gt;Водитель отвечает (с трудом ворочая языком):&lt;br /&gt;- Root!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-30T02:35:33.642-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>PHP загрузчик с ProgressBar'ом</title><link>http://snowcore.blogspot.com/2007/11/progress-bar-php.html</link><category>программирование</category><category>php</category><author>noreply@blogger.com (unknown)</author><pubDate>Thu, 13 Nov 2008 17:07:34 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-3143158853174901951</guid><description>Одним из недостатков загрузки файлов через веб-интерфейс является отсутствие возможности увидеть статус процесса загрузки.&lt;br /&gt;&lt;br /&gt;Raditha Dissanyake предлагает свой вариант решения этой проблемы -&lt;br /&gt;"Mega Upload". CGI скрипты + javascript (страница загрузки: &lt;a href="http://sourceforge.net/projects/megaupload/"&gt;http://sourceforge.net/projects/megaupload/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;При аплоаде появляется вот такое окошко:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dnS89WGz6Yg/R06QkSDPCMI/AAAAAAAAAAU/wzYfsiVf-ic/s1600-h/progress.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_dnS89WGz6Yg/R06QkSDPCMI/AAAAAAAAAAU/wzYfsiVf-ic/s320/progress.png" alt="" id="BLOGGER_PHOTO_ID_5138203177871411394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В есь процесс проходит такой путь:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) &lt;/span&gt;Сабмит формы с файлами&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2)&lt;/span&gt; Вызов javascript функции postIt&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3)&lt;/span&gt; Передача управления upload - хендлэру&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) &lt;/span&gt;Хендлер выбирает нужный скрипт, который выполняет манипуляцию с файлами&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5)&lt;/span&gt; Возврат в форму загрузки&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Рассмотрим все этапы подробнее.&lt;br /&gt;&lt;br /&gt;Форма загрузки должна иметь следующий вид:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: rgb(102, 136, 170);"&gt;&lt;br /&gt;&amp;lt;form enctype="multipart/form-data" action="/cgi-bin/upload.cgi?sid=1Kfg87r4sd5" method="post" name="uploadForm"&amp;gt;                             &lt;br /&gt;&amp;lt;input name="sessionid" value="1Kfg87r4sd5" type="hidden"&amp;gt;&lt;br /&gt;&amp;lt;input name="upload_single_font" value="1" type="hidden"&amp;gt;                                                     &lt;br /&gt;Файл 1: &amp;lt;input name="file[0]" type="file"&amp;gt;&lt;br /&gt;Файл 2: &amp;lt;input name="file[1]" type="file"&amp;gt;&lt;br /&gt;Файл 3: &amp;lt;input name="file[2]" type="file"&amp;gt;&lt;br /&gt;&amp;lt;input type="reset"&gt; &amp;lt;input value="Загрузить" onclick="checkFields();" type="button"&amp;gt;           &lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Рассмотрим необходимые поля:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;sessionid&lt;/b&gt; - используется для безопасности (в CGI сравнивается с параметром, переданным в адресной строке)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;upload_single_font&lt;/b&gt; - название actiona, по которому в upload - хэндлере будет выбираться нужный скрипт для манипуляции с файлами&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;После нажатия на кнопку "Загрузить" вызывается javascript функция checkFields(). В ней можно проверить не пуста ли форма с файлами, а также здесь вызывается функция postIt() - она берет значения из формы и передает их CGI скрипту. После этого появляется окошко с ProgressBar'ом, управление передается upload - хэндлеру.&lt;br /&gt;Структура хэндлера следующая:&lt;br /&gt;&lt;br /&gt;&lt;pre style="color:navy;"&gt;&lt;br /&gt;if(isset($_REQUEST['upload_single_font']))&lt;br /&gt;   $upload_single_font = $_REQUEST['upload_single_font'];&lt;br /&gt;&lt;br /&gt;&lt;div style="color: rgb(69, 165, 73);"&gt;&lt;br /&gt;    // ...&lt;br /&gt;    // здесь могут быть проверки других actions&lt;br /&gt;    // ...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt; else if (@$upload_single_font)&lt;br /&gt; {&lt;br /&gt;    include_once './upload_single_font.php';&lt;br /&gt;    exit;&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Таким образом управление передается соответствующему скрипту (upload_single_font.php)&lt;br /&gt;&lt;br /&gt; В скрипте для манипуляции с файлами массив файлов хранится в &lt;span style="font-weight:bold;"&gt;$file&lt;/span&gt; (не $_FILES !!!)&lt;br /&gt;&lt;br /&gt;И финальный этап - редирект в изначальную форму с радостным сообщением ("Файлы успешно загрузились").&lt;br /&gt;&lt;br /&gt; Если кто-нибудь еще знает способы реализации ProgressBar'ов - пишите в комментариях.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://odnaknopka.ru/ok3.utf8.js"&gt;&lt;/script&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T15:07:34.600-08:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_dnS89WGz6Yg/R06QkSDPCMI/AAAAAAAAAAU/wzYfsiVf-ic/s72-c/progress.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total></item><item><title>О мне говорят</title><link>http://snowcore.blogspot.com/2007/11/blog-post_23.html</link><author>noreply@blogger.com (unknown)</author><pubDate>Wed, 05 Dec 2007 04:32:34 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8421650938130481857.post-3462337901691690629</guid><description>Сегодня проходил тест на Mamba - у них партнерка есть. Смысл таков: пользователи, которые пройдут тест по Вашей рекомендации и заключат трудовой договор с Mamba, Вы получите 500 гринов (так написано у них на сайте).&lt;br /&gt;Что ж, как для новичка - фраза "Я -- хороший PHP-программист     200 баллов" звучит очень приятно :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.corp.mamba.ru/test/promo.phtml"&gt;&lt;img src="http://www.corp.mamba.ru/test/widget.phtml?id=14626" border="0" /&gt;&lt;/a&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-05T02:32:34.732-08:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item></channel></rss>
