<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mihalytch personal blog &#187; JavaScript</title>
	<atom:link href="http://mihalytch.org.ua/programming/js/feed" rel="self" type="application/rss+xml" />
	<link>http://mihalytch.org.ua</link>
	<description>Все о высоких технологиях</description>
	<lastBuildDate>Mon, 05 Dec 2011 16:05:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>С днем рождения jQuery или релиз версии 1.4</title>
		<link>http://mihalytch.org.ua/programming/js/jquery/jquery-1-4-release.html</link>
		<comments>http://mihalytch.org.ua/programming/js/jquery/jquery-1-4-release.html#comments</comments>
		<pubDate>Thu, 14 Jan 2010 14:37:54 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=241</guid>
		<description><![CDATA[Сегодня очередная годовщина jQuery. Разработчики jQuery решили приурочить к четвертому дню рождения этой замечательной библиотеки релиз новой версии 1.4. В [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня очередная годовщина jQuery. Разработчики jQuery решили приурочить к четвертому дню рождения этой замечательной библиотеки релиз новой версии 1.4.</p>
<p>В честь этого двойного праздника был открыт сайт <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://jquery14.com/"  target="_blank">14 Days of jQuery</a>, на котором в течении 14 дней будет анонсирована новая версия библиотеки.<br />
<span id="more-241"></span><br />
Скачать последнюю версию библиотеки вы можете здесь &#8211; <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://code.jquery.com/jquery-1.4.js"  target="_blank">jQuery 1.4</a>. Следить за последними анонсами можно через <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://twitter.com/jquery"  target="_blank">Твиттер</a> или подписавшись на <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://feeds.feedburner.com/The14DaysOfJquery"  target="_blank">RSS рассылку</a>.</p>
<p>Уже доступны <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://futurecolors.ru/jquery/"  target="_blank">онлайн</a> и <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://futurecolors.ru/jquery/jquery.cheatsheet.1.4.pdf"  target="_blank">PDF версия для печати</a> шпаргалки для текущей версии jQuery 1.4. Также известно, что обновлен дизайн и структура <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://api.jquery.com/"  target="_blank">jQuery API</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/jquery/jquery-1-4-release.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Бегущая строка на JavaScript своими руками</title>
		<link>http://mihalytch.org.ua/programming/js/begushhaya-stroka-na-javascript-svoimi-rukami.html</link>
		<comments>http://mihalytch.org.ua/programming/js/begushhaya-stroka-na-javascript-svoimi-rukami.html#comments</comments>
		<pubDate>Tue, 28 Jul 2009 09:38:59 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=177</guid>
		<description><![CDATA[Сегодня речь пойдет о создании простого скрипта для имитации эффекта бегущей строки. Для начала, придумаем, как это будет работать. По [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня речь пойдет о создании простого скрипта для имитации эффекта бегущей строки. Для начала, придумаем, как это будет работать. По идее должен быть внешний контейнер, который определит размеры блока бегущей строки и ее положение <span style="text-decoration: line-through;">в пространстве</span> на странице, назовем его <em>marquee_container</em>. Также должен существовать блок, содержащий &#8220;бегущий&#8221; текст, наречем его &#8211; <em>marquee_text</em>.</p>
<p>Теперь должно быть все просто, мы задаем родительскому блоку фиксированную ширину, position: relative (для того, чтобы мы могли абсолютно позиционировать блок с текстом относительно текущего), overflow: hidden (для того, чтобы &#8220;бегущий&#8221; текст скрывался за границами родительского блока). Далее пишем скрипт, который отодвигает текст вправо на ширину родительского блока (теперь он не видим) и потом перемещает его влево с заданной скоростью, пока текст не скроется полностью. И повторяем это действие снова и снова =).<span id="more-177"></span><br />
Для того, чтобы рассчитать момент, когда текст полностью скроется за левой границей, нам  нужно узнать настоящую ширину блока с текстом. Если наш текстовый блок будет содержаться  в <em>marquee_container</em> с заданной шириной, скрипт нам покажет ширину не больше нами заданной. Поэтому нам нужен еще один блок (<em>marquee_subcontainer</em>). Зададим ему ширину width:9999999px, и поместим в него текстовый блок. Теперь проблема с определением ширины решена.</p>
<p>Составим HTML код бегущей строки:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;marquee-container&quot; id=&quot;marquee_container&quot;&gt;
    &lt;div class=&quot;marquee-subcontainer&quot; id=&quot;marquee_subcontainer&quot;&gt;
        &lt;div class=&quot;marquee-text&quot; id=&quot;marquee_text&quot;&gt;
            Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Теперь составим таблицу CSS стилей в соответствии с нашими рассуждениями:</p>
<pre class="brush: css; title: ; notranslate">
.marquee-container {
    position: relative; /* см. UPD 1 */
    border-right:1px dotted #d8cfc2;
    height:30px;
    width:200px;
    overflow: hidden;
    border:2px solid #f00;
    margin:0px auto;
}

.marquee-subcontainer {
    position: relative;
    width:9999999px;
    height:30px;
    margin:0px;
}

.marquee-text {
    position: absolute;
    margin: 0px;
    top:0px;
    left:0px;
    height:30px;
    font: bold 16px Arial Georgia;
    color:#000;
}
</pre>
<p>Когда все предварительные приготовления сделали, можно приступить к написанию JS кода.</p>
<pre class="brush: jscript; title: ; notranslate">
// текущий сдвиг текста относительно левой границы блока бегущей строки
var craw_line_offset;

// функция инициализации бегущей строки
function enableCrawLine () {
    craw_line_offset = 0;

    // ширина текстового блока
    var craw_line_width = document.getElementById('marquee_text').offsetWidth;

    moveCrawLine (craw_line_width);
}

// функция пошагового сдвига
function moveCrawLine (w) {
    var lefttime;
    var container_width = document.getElementById('marquee_container').offsetWidth;
    // шаг (в пикселях), с которым будем перемещать текст
    var step = 1;
    // задержка между перемещениями на step пикселей
    var tdelay = 50;

    // ширина текстового блока
    w = parseInt(w);

    // если блок не &quot;заехал&quot; за левую границу
    if (craw_line_offset&lt;(w+container_width)) {
        // сдвигаем блок на шаг влево
        craw_line_offset = craw_line_offset + step;
    } else {
        // иначе начинаем все с начала
        craw_line_offset = 0;
    }

    // изменяем позицию текстового блока
    document.getElementById('marquee_text').style.left = parseInt(container_width-craw_line_offset)+'px';

    // рекурсивно вызываем функцию сдвига с заданной задержкой
    setTimeout('moveCrawLine ('+w+');', tdelay);
}

// вызов инициализирующей функции
enableCrawLine ();
</pre>
<p>Теперь можем ознакомиться с <a href="http://mihalytch.org.ua/example/marquee-javascript.html" >рабочим примером</a>.</p>
<p><a name="upd-1">UPD 1</a>: В IE6 не корректно срабатывал overlow: hidden для родительского блока. Дочерний див с position:absolute отображался полностью, не зависимо от границ родительского блока. Оказалось нужно просто добавить свойство position: relative и блоку с overflow:hidden.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/begushhaya-stroka-na-javascript-svoimi-rukami.html/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Знакомство с Google Maps API. Часть #2</title>
		<link>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-2.html</link>
		<comments>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-2.html#comments</comments>
		<pubDate>Fri, 24 Apr 2009 16:21:23 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=166</guid>
		<description><![CDATA[Как я и обещал в первой части Знакомства с Google Maps API этого цикла, мы сейчас познакомимся с обработкой событий, [...]]]></description>
			<content:encoded><![CDATA[<p>Как я и обещал в <a href="http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html" title="Знакомство с Google Maps API. Часть #1"  target="_blank">первой части Знакомства с Google Maps API</a> этого цикла, мы сейчас познакомимся с обработкой событий, добавлением/управлением объектами <strong>карты Google</strong>.</p>
<p>Как для регистрации обработчиков событий DOM и пользовательских событий, так и для их запуска в Google maps API есть пространство имен <strong>GEvent</strong>.  Сейчас мы воспользуемся для примера методом <em>addListener(source, event, handler)</em>.  Этот метод регистрирует пользовательское событие <em>event </em>в источнике объекта <em>source</em> и вызывает обработчик <em>handler.</em><span id="more-166"></span></p>
<p>Теперь назначим событию <em>click</em> обработчик, который будет <strong>создавать метки на карте</strong>. Затем мы научим эти метки позиционироваться путем перетаскивания их мышкой по самой карте и назначим удаление их из карты по даблклику по метке.</p>
<p>Теперь перейдем от теории к практической части:</p>
<pre class="brush: jscript; title: ; notranslate">
/* Здесь мы будем хранить классы:
- GMap2 для создания карты;
- GClientGeocoder для получения геокодов для пользовательских адресов
*/
var map, geocoder;

function initialize_map () {
    /* Если браузер совместим */
    if (GBrowserIsCompatible()) {
        /* Создадим объект карты */
        map = new GMap2(document.getElementById(&quot;google_canvas&quot;));
        geocoder = new GClientGeocoder();

        /* Установим координаты центра карты и начальный масштаб */
        map.setCenter(new GLatLng(37.4419, -122.1419), 5);

        /* Добавим элементы управления картой, воспользовавшись конструктором GLargeMapControl из класса GControl  */
        map.addControl(new GLargeMapControl());

        /* Добавим мини-карту обзора в углу основной карты */
        map.addControl(new GOverviewMapControl());

        /* Назначаем  onClickForMap() обработчиком события click  */
        GEvent.addListener(map, &quot;click&quot;, onClickForMap);
    }
}

/* При нажатии на карту  */
function onClickForMap(overlay, latlng) {
    /* Если определен входной аргумент */
    if (latlng != null) {
        /* Определим координаты точки, в которой было вызвано событие  */
        geocoder.getLocations(latlng, addPointToMap);
    }
}

/* Непосредственно добавление точки с маркером на карту */
function addPointToMap (response) {
    /* Если произошла какая-либо ошибка при определении координат - выведем ошибку */
    if (!response || response.Status.code != 200) {
        alert(&quot;Status Code:&quot; + response.Status.code);
    } else {
        /* Получим координаты */
        place = response.Placemark[0];
        /* Создадим точку на карте */
        point = new GLatLng(place.Point.coordinates[1],
        place.Point.coordinates[0]);

        /* Создадим маркер в этой точке */
        var marker = new GMarker(
            point,
            /* разрешим пользователю перетаскивать мышкой этот маркер  */
            {draggable: true}
        );

        /* При двойном клике по маркеру */
        GEvent.addListener(marker, &quot;dblclick&quot;, function() {
            /* Вызовем метод  hide() который скроет маркер */
            this.hide();
        });

        /* Нанесем созданный нами объект на полотно карты */
        map.addOverlay(marker);
    }
}

initialize_map ();
</pre>
<p>То что из этого получиться вы можете посмотреть <a href="http://mihalytch.org.ua/example/google-maps-api-2.html"  target="blank_">в примере</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Знакомство с Google Maps API. Часть #1</title>
		<link>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html</link>
		<comments>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html#comments</comments>
		<pubDate>Wed, 22 Apr 2009 10:55:53 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/?p=117</guid>
		<description><![CDATA[Для того чтобы использовать карты Google на своем веб-ресурсе, необходимо получить ключ к API карте гугла. Для этого идем по [...]]]></description>
			<content:encoded><![CDATA[<p>Для того чтобы использовать <strong>карты Google</strong> на своем веб-ресурсе, необходимо получить <strong>ключ к API карте гугла</strong>. Для этого <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://code.google.com/intl/ru_ALL/apis/maps/signup.html" title="Зарегистрироваться для получения ключа к API карт Google"  target="_blank">идем по этому адресу</a>, соглашаемся с условиями использования, вводим URL своего сайта и жмем &#8220;Сгенерировать ключ к API&#8221;. На следующей странице получаем ключ.</p>
<p>Следующим шагом нам необходимо <em>подключить саму библиотеку Google</em>:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script src=&quot;http://maps.google.com/maps?file=api&amp;v=2.x&amp;sensor=false&amp;key=[здесь_код_к_API]&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p><span id="more-117"></span>Затем в HTML коде страницы <em>необходимо определить блок</em>, в котором будет отображаться карта и стили для него.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;style&gt;
div#google_canvas {
 height:300px;
 width: 500px;
 margin:0px auto;
}
&lt;/style&gt;
&lt;div id=&quot;google_canvas&quot;&gt;&lt;/div&gt;
</pre>
<p>Теперь пишем <em>функцию инициализации карты Google</em>:</p>
<pre class="brush: jscript; title: ; notranslate">
 /* Если браузер совместим */
 if (GBrowserIsCompatible()) {
 /* Создадим объект карты */
 var map = new GMap2(document.getElementById(&quot;google_canvas&quot;));

 /* Установим координаты центра карты и начальный масштаб */
 map.setCenter(new GLatLng(37.4419, -122.1419), 5);

 /* Добавим элементы управления картой воспользовавшись конструктором GLargeMapControl из класса GControl  */
 map.addControl(new GLargeMapControl());

 /* Добавим мини-карту обзора в углу основной карты */
 map.addControl(new GOverviewMapControl());
 }
</pre>
<p>И самое главное, нам нужно запустить эту функцию при загрузке страницы и выгрузить при закрытии:</p>
<p>&lt;<span class="start-tag">body</span><span class="attribute-name"> onload</span>=<span class="attribute-value">&#8220;initialize_map()&#8221; </span><span class="attribute-name">onunload</span>=<span class="attribute-value">&#8220;GUnload()&#8221;</span>&gt;</p>
<p>Сейчас у нас получилось отобразить <a href="http://mihalytch.org.ua/example/google-maps-api-1.html"  target="_blank">карту следующим образом</a>. В следующей статье мы научим нашу карту взаимодействовать с пользователем в интерактивном режиме.</p>
<p>P.S. Для самостоятельного изучения рекомендую к прочтению <a target="_blank" rel="nofollow" href="http://mihalytch.org.ua/goto//go/http://code.google.com/intl/ru/apis/maps/documentation/reference.html" title="Справочные материалы по API карт Google"  target="_blank">справочные материалы по API карт Google</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/znakomstvo-s-google-maps-api-1.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>В Firefox`е не работает innerHTML ?</title>
		<link>http://mihalytch.org.ua/programming/js/does-not-work-innerhtml-in-firefox.html</link>
		<comments>http://mihalytch.org.ua/programming/js/does-not-work-innerhtml-in-firefox.html#comments</comments>
		<pubDate>Tue, 21 Oct 2008 11:48:47 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[innerHTML]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/does-not-work-innerhtml-in-firefox.html</guid>
		<description><![CDATA[Панацея здесь. Для любимого нами огненного лиса (Firefox) средствами JavaScript HTML код необходимо вставлять следующим образом:]]></description>
			<content:encoded><![CDATA[<p>Панацея здесь.<span id="more-62"></span></p>
<p>Для любимого нами огненного лиса (Firefox) средствами JavaScript HTML код необходимо вставлять следующим образом:</p>
<pre class="brush: jscript; title: ; notranslate">
     // Блок куда необходимо вставить html контент
    var our_div = document.getElementById('our_div_name');

     // Непосредственно наш контент
    var our_text = 'our html code ...';

     // Получим userAgent браузера
    var ua = navigator.userAgent.toLowerCase();

    if (ua.indexOf(&quot;gecko&quot;) != -1) {
        // Если браузер Mozilla, или Firefox, или Netscape
        var range = div_preview.ownerDocument.createRange();
        range.selectNodeContents(our_div);

        // Очистим внутренности нашего блока
        range.deleteContents();
        var fragment = range.createContextualFragment(our_text); //&amp;lt;-- dies here

        // Теперь наполним необходимым контентом
        our_div.appendChild(fragment);
    }  else  {
        // Для остальных браузеров
        our_div.innerHTML = our_text;
    }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/does-not-work-innerhtml-in-firefox.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Перехват (обработка, отключение) ошибок в JavaScript</title>
		<link>http://mihalytch.org.ua/programming/js/interception-of-errors-in-javascript.html</link>
		<comments>http://mihalytch.org.ua/programming/js/interception-of-errors-in-javascript.html#comments</comments>
		<pubDate>Thu, 16 Oct 2008 15:37:42 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[xHttprequest]]></category>
		<category><![CDATA[ошибка]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/interception-of-errors-in-javascript.html</guid>
		<description><![CDATA[Иногда все-таки возникает потребность перехватить ошибки при выполнении сценария JavaScript, с целью обработать каким либо образом сообщения об ошибке (например, [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда все-таки возникает потребность перехватить ошибки при выполнении сценария JavaScript, с целью обработать каким либо образом сообщения об ошибке (например, через xHttprequest отправить на сервер и записать в .log файл) либо просто отключить вывод этих сообщений конечному пользователю.<span id="more-61"></span></p>
<p>Реализуется эта задача очень просто.</p>
<p>Для того чтобы просто отключить вывод сообщений об ошибках, достаточно написать одну строку  JavaScript кода:</p>
<pre class="brush: jscript; title: ; notranslate">
window.onerror=null;
</pre>
<p>Либо мы можем назначить обработчиком ошибок пользовательскую функцию:</p>
<pre class="brush: jscript; title: ; notranslate">
/* определим функцию обработки ошибок */
function onErrorHandler(msg, url, lno)  {
    /* тут тело обработчика */
   return true;
}

/* теперь  назначаем наш обработчик для события onError   */
window.onerror = onErrorHandler;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/interception-of-errors-in-javascript.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Стилизированный раскрывающийся список (select в html)</title>
		<link>http://mihalytch.org.ua/programming/js/styled-drop-down-list.html</link>
		<comments>http://mihalytch.org.ua/programming/js/styled-drop-down-list.html#comments</comments>
		<pubDate>Wed, 10 Sep 2008 08:21:34 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/styled-drop-down-list.html</guid>
		<description><![CDATA[Ниже представлено решение на JavaScript и CSS, с помощью которого можно было бы изменить внешний вид любой части выпадающего списка. [...]]]></description>
			<content:encoded><![CDATA[<p>Ниже представлено решение на JavaScript и CSS, с помощью которого можно было бы изменить внешний вид любой части выпадающего списка. При этом соблюдена кроссбраузерность, а также решена проблема, возникающая в IE 6 при перекрытии DIV`ом выпадающего списка select, который оказывался видимым при любом значении z-index.<span id="more-58"></span></p>
<p>Стилизация выпадающих списков основывается на замене стандартного элемента html &lt;select&gt;  на маркированный список&lt;ul&gt;, оформленный с помощью CSS необходимым нам образом.</p>
<p>JavaScript перехватывает все события onClick на странице и проверяет не &#8220;нажал&#8221; ли пользователь на ту или иную область выпадающего списка. Если произошло необходимое событие, и необходимо раскрыть, свернуть или выбрать необходимый элемент, скрипт применяет к элементам маркированного списка соответствующие стили и изменяет выбранное значение исходного выпадающего списка &lt;select&gt; (который был скрыт при загрузке страницы).</p>
<p>Ниже привожу результат стилизации (взят с реального проекта):</p>
<p style="text-align: center"><img width="454" src="/wp-content/drop-down.gif" alt="styled-drop-down" height="306" /></p>
<p>Чтобы не загромождать страницу кодом размещаю<a target="_blank" href="/wp-content/styled-drop-down.zip" title="Styled drop-down"> ссылку на архив с рабочим примером</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/styled-drop-down-list.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Циклическая прокрутка содержимого в блоке div</title>
		<link>http://mihalytch.org.ua/programming/js/cyclic-scrolling-of-content-in-div.html</link>
		<comments>http://mihalytch.org.ua/programming/js/cyclic-scrolling-of-content-in-div.html#comments</comments>
		<pubDate>Tue, 05 Aug 2008 12:40:39 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/ciklicheskaya-prokrutka-soderzhimogo-v-bloke-div.html</guid>
		<description><![CDATA[Начнем с того, что снова возникла необходимость создать плавную автоматическую прокрутку текста в DIV`е и зациклить ее. Несложно догадаться, что [...]]]></description>
			<content:encoded><![CDATA[<p>Начнем с того, что снова возникла необходимость создать плавную автоматическую прокрутку текста в DIV`е и зациклить ее. Несложно догадаться, что для этого были выбраны следующие инструменты: CSS и JavaScript.<span id="more-52"></span></p>
<p>Для начала необходимо выделить в блок сам текст:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div class=&quot;frame&quot;&gt;&lt;div id=&quot;animation_div&quot;&gt;&lt;div id=&quot;animate_div&quot;&gt;
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Donec vestibulum metus et nulla. Etiam at elit.
Nullam id mi eget lorem hendrerit viverra.
Fusce mi pede, tempor vitae, tristique tempus, molestie id, sem.
Cras mauris dolor, accumsan vitae, gravida a, blandit nec, massa.
&lt;br /&gt;
Morbi metus libero, pellentesque sed, tristique et, ultrices quis, nunc.
Nunc interdum vulputate sem. Donec laoreet sagittis sapien.
In interdum. Nunc tempus purus faucibus lorem.
Proin fermentum tristique nisi. Proin sed nibh ut purus sollicitudin facilisis.
Fusce imperdiet tincidunt metus. Etiam tempor ante a eros.
Curabitur blandit erat a nisl. Sed elit.
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
</pre>
<p>Затем оформим соответствующим образом с помощью каскадных таблиц стилей (CSS):</p>
<pre class="brush: css; title: ; notranslate">
div.frame {
padding: 0px;
margin: 0px;
width: 250px;     /* ширина блока */
border: 1px solid #fcc; /* рамка вокруг блока */
}

#animation_div {
position: relative;
padding: 0px;
margin: 0px;
height: 150px;    /* высота блока */
overflow: hidden;
}

#animate_div {
position: relative;
overflow: hidden;
margin:0px;
padding:3px;
/* стиль для текста внутри блока */
color: #000;
text-align: justify;
font: 10px Arial;
}
</pre>
<p>После блока в HTML коде необходимо вставить следующий JavaScript:</p>
<pre class="brush: jscript; title: ; notranslate">
var oText = document.getElementById(&quot;animate_div&quot;);
var oContainer = document.getElementById(&quot;animation_div&quot;);

var nHeight = oText.offsetHeight;
var nPos = oContainer.offsetHeight;

var bScrolling = true;

function OnScrollerMouseOver() {
bScrolling = false;
}

function OnScrollerMouseOut()  {
bScrolling = true;
}

function OnTimer() {
if(!bScrolling)
return;

oText.style.top = nPos.toString() + &quot;px&quot;;
if(--nPos &amp;lt; -nHeight)
nPos = oContainer.offsetHeight;
}

OnTimer();

oContainer.onmouseover = OnScrollerMouseOver;
oContainer.onmouseout  = OnScrollerMouseOut;

window.setInterval(OnTimer, 50); /* задержка перед каждым сдвигом */
</pre>
<p>Суть работы скрипта заключается в том, что он через заданный интервал времени сдвигает текст на 1 пиксель, потому чем больше значение задержки, тем медленнее будет прокручиваться текст.</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/cyclic-scrolling-of-content-in-div.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Аналог foreach в javascript</title>
		<link>http://mihalytch.org.ua/programming/php/analogue-foreach-in-javascript.html</link>
		<comments>http://mihalytch.org.ua/programming/php/analogue-foreach-in-javascript.html#comments</comments>
		<pubDate>Wed, 23 Jul 2008 21:39:40 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/php/analogue-foreach-in-javascript.html</guid>
		<description><![CDATA[В PHP конструкция foreach &#8211; это очень удобный инструмент для обхода элементов массива. В бою на самом деле используеться этот [...]]]></description>
			<content:encoded><![CDATA[<p>В PHP конструкция foreach &#8211; это очень удобный инструмент для обхода элементов массива.<span id="more-43"></span><br />
<s>В бою</s> на самом деле используеться этот оператор следующим образом:</p>
<pre class="brush: php; title: ; notranslate">
foreach ($some_array as $key=&amp;gt;$val) {
    echo $key,' = ',$val,'';
}
</pre>
<p>Опять таки по велению случая, мне было необходимо использовать ее аналог в JavaScript. Соответствующий вариант использования аналогичной конструкции в JavaScript`е представлен ниже:</p>
<pre class="brush: php; title: ; notranslate">
for (var key in some_array) {
    var val = some_array [key];
    alert (key+' = '+val);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/analogue-foreach-in-javascript.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Графический checkbox с помошью JavaScript</title>
		<link>http://mihalytch.org.ua/programming/js/graph-checkbox-javascript.html</link>
		<comments>http://mihalytch.org.ua/programming/js/graph-checkbox-javascript.html#comments</comments>
		<pubDate>Mon, 23 Jun 2008 16:05:34 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/js/graph-checkbox.html</guid>
		<description><![CDATA[Работая над последним проектом, возникла надобность изменить вид элементов формы: checkbox и select. Так как велосипед изобретать мне не свойственно, [...]]]></description>
			<content:encoded><![CDATA[<p>Работая над последним проектом, возникла надобность изменить вид элементов формы: checkbox и select. Так как велосипед изобретать мне не свойственно, я решил почитать немного умных мыслей, посоветоваться с духами в он-лайне. Потратив пару часов своего времени, я нашел следущее решение.<span id="more-32"></span> Для начала качаем скрипты: <a href="http://mihalytch.org.ua/wp-content/mootools.js" title="demo-moo" >mootools</a>, <a href="http://mihalytch.org.ua/wp-content/demo-moo.js" title="demo-moo" >demo-moo</a></p>
<p>Затем пишем в таблице стилей следующий код, отвечающий за оформление чекбоксов:</p>
<pre class="brush: css; title: ; notranslate">
.f_checkbox {
background-repeat:no-repeat;
background-position:0px center;
height:16px;display:block;
cursor:pointer;
cursor:hand;
width:20px;
height:20px;
}

.checked,.selected{
color:#ddd;
}

.f_checkbox{
padding:0px;
background-color:#ccc;
}

.unchecked{
background-image:url('img/checkbox_off.gif');
}

.checked{
background-image:url('img/checkbox_on.gif');
}
</pre>
<p>В коде страницы делаем следующую запись:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!-- один из оформляемых чекбоксов --&gt;
&lt;label class=&quot;f_checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; /&gt;&lt;/label&gt;;
&lt;!-- подключаем скачанные java-скрипты --&gt;
&lt;script type='text/javascript' src='mootools.js'&gt;&lt;/script&gt;
&lt;script type='text/javascript' src='demo-moo.js'&gt;&lt;/script&gt;;
</pre>
<p>checkbox_on.gif и checkbox_off.gif изображения выбранного и не выбранного checkbox`а.</p>
<p>Теперь остается только экспериментировать =)</p>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/js/graph-checkbox-javascript.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

