<?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>Уроки PHP, Mootools, JavaScript, ActionScript, HTML, CSS</title>
	<atom:link href="http://php.infoniac.ru/feed" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Tue, 02 Mar 2010 16:48:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Уроки Mootools &#8211; Перемещение/Передвижение с помощью класса Drag.Move &#8211; Урок 12</title>
		<link>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html</link>
		<comments>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html#comments</comments>
		<pubDate>Mon, 01 Mar 2010 19:59:43 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[drag]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[интерактив]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=283</guid>
		<description><![CDATA[Объекты Drag и Drag.Move - это те самые объекты Mootools, которые отвечают за формирование перетаскивающихся элементов на странице, а это то самое действие, которое, я считаю, придает наибольшую интерактивность веб-страницам. В общем, в этом уроке рассмотрим основные методы, параметры и события этих объектов, и, как всегда, рассмотрим пример работы таких объектов.]]></description>
			<content:encoded><![CDATA[<h2>Drag.Move &#8211; Перемещение с помощью Mootools 1.2</h2>
С 10-го урока я начал публиковать уроки, посвященные спец. эффектам, которые можно создавать с помощью библиотеки Mootools. Если Вы еще не взглянули в эти уроки, очень рекомендую <a href="http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html">посмотреть</a>.

В сегодняшнем уроке мы поставим под прицел класс Drag.Move &#8211; очень сильный инструмент, который позволяет добавить возможность перемещения/перетаскивания элементов на странице. Вообще, эта возможность &#8211; это одна из моих самых любимых функций JavaScript и всех библиотек на его основе.

Используется этот класс также, как и все остальные плагины библиотеки: создается новый (<em>&laquo;new&raquo;</em>) объект Drag.Move и назначается переменной. Далее назначаются параметры и события объекта. В принципе, это и есть вся основа. Кстати, объекты Drag и Drag.Move не определены в основной библиотеке, потом нужно будет создавать свою собственную сборку Mootools с помощью <a title="Mootools More Builder" href="http://mootools.net/more" target="_blank">онлайн инструмента</a> на сайте разработчиков.
<h2>Основы</h2>
<h3>Drag.Move</h3>
Установка перетаскиваемого элемента довольно проста. Давайте рассмотрим пример ниже. Обратите внимание, как отделяются параметры и события класса <em>Drag.Move</em> от событий и параметров класса <em>Drag</em>. Drag.Move расширяет и дополняет класс Drag, потому он будет принимать не только свои параметры и события, но и те, что относятся к классу Drag. Сегодня мы не будем углубляться в работу Drag, но мы взглянем на несколько его интересных параметров и событий.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// параметры класса Drag.Move</span>
		droppables<span style="color: #339933;">:</span> dropElement<span style="color: #339933;">,</span>
		container<span style="color: #339933;">:</span> dragContainer<span style="color: #339933;">,</span>
		<span style="color: #006600; font-style: italic;">// параметры класса Drag</span>
		handle<span style="color: #339933;">:</span> dragHandle<span style="color: #339933;">,</span>
		<span style="color: #006600; font-style: italic;">// событие класса Drag.Move</span>
		onDrop<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #006600; font-style: italic;">// вызовет предупреждение с атрибутом id сброшенного элемента</span>
                        <span style="color: #006600; font-style: italic;">// в элемент, принимающий сброшенные элементы</span>
                        <span style="color: #006600; font-style: italic;">// (это может показаться запутанным, на первый взглад, но, надеюсь,</span>
                        <span style="color: #006600; font-style: italic;">// далее все проясниться</span>
                        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>dr.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
                <span style="color: #006600; font-style: italic;">// События Drag</span>
                <span style="color: #006600; font-style: italic;">// передаются перетаскиваемому элементу</span>
                onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>el.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'id'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



Разберем всё это по полочкам&#8230;
<h3>Параметры Drag.Move</h3>
Параметры Drag.Move позволяют назначить два основных типа элементов:
<ul>
	<li><strong>droppables</strong> &#8211; опеределяет элементы, которые будут способны &laquo;принять&raquo; сброшенный элемент</li>
	<li><strong>container</strong> &#8211; установить контейнер перетаскиваемого элемента (будет удерживать элемент внутри этого элемента-контейнера)</li>
</ul>
Установка параметров доволно проста:


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//определяем один элемент по id, который можно будет перетаскивать</span>
<span style="color: #003366; font-weight: bold;">var</span> dragElement <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_element'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//определяем массив элементов по их классу, которые смогут принят сброшенный элемент</span>
<span style="color: #003366; font-weight: bold;">var</span> dropElements <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.drag_element'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//определяем контейнер</span>
<span style="color: #003366; font-weight: bold;">var</span> dragContainer <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_container'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//определяем объект Drag.Move</span>
<span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// Параметры Drag.Move</span>
                <span style="color: #006600; font-style: italic;">// назначаем элементу droppables массив элементов, определённых немного выше</span>
		droppables<span style="color: #339933;">:</span> dropElements <span style="color: #339933;">,</span>
               <span style="color: #006600; font-style: italic;">// назначаем элементу container элемент, определенный немного выше</span>
		container<span style="color: #339933;">:</span> dragContainer
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



Теперь наш перетаскиваемый элемент имеет свой контейнер, а также у нас имеется класс элементов, который будет принимать сбросы других элементов. Тут можно провести аналогию с современными аэропортами: не все аэропорты предназначены для принятия и обслуживания определенных типов самолётов. Так и в нашем случае: необходимо определить, какой класс сможет принимать &laquo;на посадку&raquo; перетаскиваемые элементы.
<h3>События объекта Drag.Move</h3>
События этого объекта дают возможность запускать определенные заранее функции в определенные этапы существования объекта, как например в тот момент, когда пользователь &laquo;совершил захват&raquo; передвигаемого элемента, когда он начинает его передвигать или когда он его сбрасывает. События объекта Drag.Move передаются каждому перетаскиваемому и сбрасывамому элементу в качестве параметров.
<ul>
	<li><strong>onDrop</strong> &#8211; запускается при сбросе элемента в соответствующий принимающий элемент;</li>
	<li><strong>onLeave</strong> &#8211; запускается когда перетаскиваемый элемент покидает границы элемента, способного принимать перетаскиваемые элементы;</li>
	<li><strong>onEnter</strong> &#8211; запускается при входе перетаскиваемого элемента в зону принимающего элемента.</li>
</ul>
Как и <a href="http://php.infoniac.ru/mootools-tutorial-day-5-events.html">любые другие события</a>, которые мы до этого обсуждали, события объекта Drag.Move вызывают функцию, которая выполняется когда событие исполняется.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> dragContainer <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_container'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">// Параметры Drag.Move</span>
	droppables<span style="color: #339933;">:</span> dropElements <span style="color: #339933;">,</span>
	container<span style="color: #339933;">:</span> dragContainer <span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">// События Drag.Move</span>
	<span style="color: #006600; font-style: italic;">// функции Drag.Move передадут перетаскиваемый элемент (в данном случае 'el')</span>
	<span style="color: #006600; font-style: italic;">// принимающему элементу, с которым перетаскиваемый взаимодействует (у нас 'dr')</span>
	onDrop<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// на русском: &quot;если элемента, на который происходит сброс НЕ ЯВЛЯЕТСЯ принимающий&quot;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">//ничего не делать</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #006600; font-style: italic;">// в противном случае, т.е. элемент принимающий</span>
		<span style="color: #006600; font-style: italic;">// делать то-то, то-то</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">// действия, который произойдут,</span>
			<span style="color: #006600; font-style: italic;">// когда элемента будет сброшен на принимающий элемент</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onLeave<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// эта функция будет запущена, когда перетаскиваемый элемент</span>
		<span style="color: #006600; font-style: italic;">// покинет границы принимающего элемента</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onEnter<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// эта функция будет запущена, когда перетаскиваемый элемент</span>
		<span style="color: #006600; font-style: italic;">// входит в границы принимающего элемента</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Несколько событий объекта Drag</h3>
У объекта Drag есть совсем немного событий и параметров, но и я не все буду рассматривать:
<h4>Параметр &#8211; snap</h4>
Параметр <strong>snap</strong> позволяет определить, на сколько пикселей пользователь должен передвинуть курсор прежде чем начнется сам процесс перемещения элемента. Значение по умолчанию &#8211; 6, но можно указать любое число или переменную, содержащую число. Конечно же, существуют некие логические рамки (установив это значение на 1000, никакой пользы не принесешь своему приложению), но все-таки этот параметр может сослужить хорошую службу разработчику при улучшении своего приложения.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// Параметры Drag</span>
		snap<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h4>Параметр &#8211; handle</h4>
Данный параметр добавляет &laquo;ручку&raquo; к вашему перетаскиваемому элементу. Эта &laquo;ручка&raquo; определяет единственную область элемента, которой можно воспользоваться для &laquo;захвата&raquo; перетаскиваемого элемента, что позволяет использовать оставшуюся часть элемента для других целей. Для определения &laquo;ручки&raquo;, просто вызовите элемент.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// определяет массив элементов по классу</span>
<span style="color: #006600; font-style: italic;">// это позволит нам добавить несколько &quot;ручек&quot;,</span>
<span style="color: #006600; font-style: italic;">// если нам нужно будет определять несколько передвигаемых элементов</span>
<span style="color: #003366; font-weight: bold;">var</span> dragHandle <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_handle'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// параметры Drag</span>
		handle<span style="color: #339933;">:</span> dragHandle
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h4>Событие onStart</h4>
Событие <strong>onStart</strong> определяет функцию, которая будет запускаться при начале перетаскивания. Если значение параметра <strong>snap</strong> установлено большое, то событие не начнется до тех пор, пока заданное количество пикселей не будет пройдено.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// Параметры Drag</span>
		onStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #006600; font-style: italic;">// сюда вставляем всё, что должно произойти вначале перетаскивания</span>
               <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h4>Событие &#8211; onDrag</h4>
Событие <strong>onDrag</strong> будет работать постоянно во время перетаскивания элемента.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// Параметры Drag</span>
		onDrag<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #006600; font-style: italic;">// сюда вставляем всё, что должно происходить во время перетаскивания</span>
               <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h4>Событие onComplete</h4>
Событие <strong>onComplete</strong> запускается когда происходит сброс перетаскиваемого элемента и оно будет запущено вне зависимости от того, будет этот элемент приземлен в элементе droppable или нет.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	        <span style="color: #006600; font-style: italic;">// Параметры Drag</span>
		onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #006600; font-style: italic;">// сюда вставляем всё, что должно произойти при сбросе элемента</span>
               <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h2>Примеры</h2>
Снова подошло время моей любимой части любого урока: Пример!

Давайте, для упрощения процесса переваривания всей информации этого урока, соорудим пример, который бы содержал максимум из представленных параметров, событий и т.д. Поехали!


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dragElement <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_me'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dragContainer <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_cont'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dragHandle <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_me_handle'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dropElement <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.draggable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> startEl <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'start'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> completeEl <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'complete'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dragIndicatorEl <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drag_ind'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> enterDrop <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'enter'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> leaveDrop <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'leave'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dropDrop <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'drop_in_droppable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> myDrag <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Drag.<span style="color: #660066;">Move</span><span style="color: #009900;">&#40;</span>dragElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	    <span style="color: #006600; font-style: italic;">// Параметры Drag.Move</span>
		droppables<span style="color: #339933;">:</span> dropElement<span style="color: #339933;">,</span>
		container<span style="color: #339933;">:</span> dragContainer<span style="color: #339933;">,</span>
		<span style="color: #006600; font-style: italic;">// Параметры Drag</span>
		handle<span style="color: #339933;">:</span> dragHandle<span style="color: #339933;">,</span>
		<span style="color: #006600; font-style: italic;">// События Drag.Move</span>
		onDrop<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
        	        <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
				dropDrop.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#FB911C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает оранжевым</span>
				el.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#fff'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает белым</span>
				dr.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#667C4A'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает зеленым</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onLeave<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			leaveDrop.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#FB911C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает оранжевым</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onEnter<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> dr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			enterDrop.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#FB911C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает оранжевым</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		<span style="color: #006600; font-style: italic;">// Drag Events</span>
		onStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			startEl.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#FB911C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает оранжевым</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onDrag<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			dragIndicatorEl.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#FB911C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает оранжевым</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			completeEl.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#FB911C'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//мигает оранжевым</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



В этом примере, в отличие от большинства ранее представленных, мы будем серьезно использовать CSS, потому нужно добавить некоторые пояснения к таблице CSS. Для того, чтобы контейнер Drag.Move нормально определялся в IE, нужно будет подробно объяснить позиционирование элементов этому популярному браузеру. Очень важно определить элементу-контейнеру &laquo;position:relative&raquo;, а перетаскиваемому элементу &laquo;position:absolute&raquo;. Далее нужно удостовериться в том, что знаяения &laquo;left&raquo; и &laquo;top&raquo; для этого элемента тажке установлены. Ну, а если вы создаете приложение с перетаскиваемыми элементами, которое никоим образом не предназначается для IE, можете вообще не обращать внимание на эту часть.


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">body <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* убедитесь в том, что перетаскиваемый элемент умеет &quot;position: absolute&quot;
 а параметры top и left установлены на значения для первоначального положения элемента*/</span>
<span style="color: #cc00cc;">#drag_me</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#drop_here</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#eee</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* убедитесь в том, что элемент-контейнер имеет &quot;position:relative&quot; */</span>
<span style="color: #cc00cc;">#drag_cont</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">600px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">500px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#drag_me_handle</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#666</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">cursor</span><span style="color: #00AA00;">:</span>move<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#drag_me_handle</span> span <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.indicator</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#0066FF</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#eee</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.indicator</span> span <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">14px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.draggable</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>



Далее следует HTML код, который создаст нам плацдарм для восхощения возможностями Mootools.


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;drag_cont&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;start&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Начало<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;drag_ind&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Перетаскивание<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;complete&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Завершен<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;enter&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Вход в принимающий элемент<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;leave&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Выход из принимающего элемента<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;drop_in_droppable&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Сброшен в принимающий элемент<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;drag_me&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;drag_me_handle&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>ручка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;drop_here&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;draggable&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<div id="drag_cont">
<div id="start" class="indicator"><span>Начало</span></div>
<div id="drag_ind" class="indicator"><span>Перетаскивание</span></div>
<div id="complete" class="indicator"><span>Завершен</span></div>
<div id="enter" class="indicator"><span>Вход в принимающий элемент</span></div>
<div id="leave" class="indicator"><span>Выход из принимающего элемента</span></div>
<div id="drop_in_droppable" class="indicator"><span>Сброшен в принимающий элемент</span></div>
<div id="drag_me">
<div id="drag_me_handle"><span>ручка</span></div>
</div>
<div id="drop_here" class="draggable"></div>
</div>]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создаем интерактивные закладки JavaScript</title>
		<link>http://php.infoniac.ru/javascript-zakladki.html</link>
		<comments>http://php.infoniac.ru/javascript-zakladki.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 18:37:01 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[bookmarks]]></category>
		<category><![CDATA[закладки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=298</guid>
		<description><![CDATA[JavaScript закладки очень полезны в повседневной жизни активного пользователя интернет, т.к. они не просто открывают любимый сайт, но и позволяют сразу выполнять некоторые стандартные действия]]></description>
			<content:encoded><![CDATA[<p>Всем привет!</p>
<p>Хочу поделиться опытом! Я давно хотел научиться делать интерактивные закладки, чтобы размещать их на панели закладок браузера, но, к сожалению, пока этого так и не сделал&#8230;</p>
<p>Зато, я подсмотрел, как это делается у всяких сервисов, как, например, у сервиса автоматического постинга в различные сервисы закладок &#8211; <strong><a href="http://www.bposter.net/?a=13968">bposter.net</a></strong>, и теперь, как минимум, могу просто их изменять и приспосабливать под собственные нужды. Но, обо всем по порядку&#8230;</p>
<p>Вначале, напомню, кто такая эта панель, да еще и закладок. В Win Safari она выглядит так:</p>
<p style="text-align: center;"><img class="size-full wp-image-299 aligncenter" title="Окно браузера с панелью закладок" src="http://php.infoniac.ru/wp-content/uploads/browser-window.jpg" alt="Окно браузера с панелью закладок" width="400" height="389" /></p>
<p>Для тех, кто пока не рассмотрел и не особо понял, что это, пожалуйста:</p>
<div id="attachment_300" class="wp-caption alignleft" style="width: 160px"><a href="http://php.infoniac.ru/wp-content/uploads/bookmarks-pannel-zoomed-in.jpg"><img class="size-thumbnail wp-image-300" title="bookmarks-pannel-zoomed-in" src="http://php.infoniac.ru/wp-content/uploads/bookmarks-pannel-zoomed-in-150x29.jpg" alt="Увеличенная панель закладок" width="150" height="29" /></a><p class="wp-caption-text">Увеличенная панель закладок</p></div>
<p>Наверняка, многие знают, что сегодняшние браузеры могут хранить в закладках не только URL адреса понравившихся или полезных сайтов, но и короткие скрипты JavaScript, что, как мне кажется, станет очень полезным для многих. Я уже начал интенсивно пользоваться такими закладками.</p>
<p>Пока у меня есть только несколько примеров, как и зачем можно использовать такие закладки. Например, думаю, все специалисты, занимающиеся продвижением сайтов, знают сервис siteexplorer.search.yahoo.com, ведь на сегодняшний день, это чуть ли не единственный источник данных по обратным ссылкам на любой сайт, а для того, чтобы получить эту информацию, нужно сделать слишком много телодвижений, а именно:</p>
<p>- открыть сервис;<br />
&#8211; возможно, yahoo.com попросит авторизоваться;<br />
- набрать адрес сайта, инфу о котором требуется узнать;<br />
- нажать на кнопку &laquo;Inlinks&raquo;, чтобы перейти на отображение не кол-ва страниц в кэше Яху, а на, собственно, информацию об обратных ссылках;<br />
- выбрать опцию &laquo;Except from this domain&raquo; (Кроме этого домена), чтобы исключить ссылки с этого домена;<br />
&#8211; возможно, выбрать опцию &laquo;Entire Site&raquo;, чтобы посмотреть ссылки, приходящие на страницы всего сайта, а не только на одну страницу.</p>
<p>Чтобы исключить всё это, требуется всего-лишь немного наблюдательности. Например, перетащите эту ссылку -</p>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://siteexplorer.search.yahoo.com/search?p='+encodeURIComponent(document.domain)+'&amp;bwm=i&amp;bwmo=d&amp;bwmf=s');})();">Бэклинки по SiteExplorer</a></p>
<p>- в панель закладок вашего браузера и нажмите на появившуюся там кнопку &#8211; вы увидите все ссылки, приходящие на все страницы моего блога.</p>
<p>А вот и сам код ссылки:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://siteexplorer.search.yahoo.com/search?p='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">domain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;amp;bwm=i&amp;amp;bwmo=d&amp;amp;bwmf=s'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Что в коде? Первым словом в атрибуте href идет слово <strong>javascript</strong>, которое сообщает браузеру, что ссылка &#8211; это JavaScript код. Далее &#8211; функция, которая открывает новое окно, вставляя имя домена (<strong>document.domain</strong>) текущего документа &laquo;куда надо&raquo;. (По сути, такая ссылка действует также,  как и ссылка вида <strong>javascript:history.back()</strong>.) Если вместо <strong>window.domain</strong> использовать метод <strong>location.href</strong>, в открывшейся вкладке (окне), будут показаны обратные ссылки только на открытую страницу.</p>
<p>Вот еще несколько закладок, которые я уже соорудил (если кому что нужно, перетягивайте ссылку в панель закладок):</p>
<h3>• Посмотреть, есть ли страница в индексе Яндекса:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.yandex.ru/yandsearch?serverurl='+encodeURIComponent(location.href));})();">Индекс Яндекса</a></p>
<p>Исходник:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://www.yandex.ru/yandsearch?serverurl='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>• Количество страниц с домена в индексе Google:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.google.ru/search?q=site:'+encodeURIComponent(document.domain));})();"># страниц в гугле</a></p>
<p>Исходник:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://www.google.ru/search?q=site:'</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">domain</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>• Есть ли страница в индексе Google:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.google.ru/search?q=cache:'+encodeURIComponent(location.href));})();">Есть в кэше гугла?</a></p>
<p>Исходник:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://www.google.ru/search?q=cache:'</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Вообще, каждый, у кого есть плагин SearchStatus для Firefox, может проверить наличие страницы в кэше Гугла, но, может кому и пригодится такая закладка.</p>
<h3>• <a href="http://www.bposter.net/?a=13968">Постинг в закладки через сервис bposter.net</a>:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://www.bposter.net/?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title)+'&amp;desc='+encodeURIComponent(window.getSelection?window.getSelection():''));})();">В закладки!!!</a></p>
<p>Исходник:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://www.bposter.net/?url='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;amp;title='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">title</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;amp;desc='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>window.<span style="color: #660066;">getSelection</span><span style="color: #339933;">?</span>window.<span style="color: #660066;">getSelection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Тут следует отметить, что я этот код совсем не придумывал, а просто заменил метод <strong>location.href</strong> на <strong>window.open</strong>, чтобы открывалась новая закладка (или окно, в зависимости от настроек браузера).</p>
<h3>• Обратные ссылки по SiteExplorer.search.yahoo.com на весь сайт:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://siteexplorer.search.yahoo.com/search?p='+encodeURIComponent(document.domain)+'&amp;bwm=i&amp;bwmo=d&amp;bwmf=s');})();">Обратные ссылки на сайт</a></p>
<p>Исходник:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://siteexplorer.search.yahoo.com/search?p='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">domain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;amp;bwm=i&amp;amp;bwmo=d&amp;amp;bwmf=s'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>• Обратные ссылки по SiteExplorer.search.yahoo.com на данную страницу:</h3>
<p><a class="jsBookmark" href="javascript:(function(){window.open('http://siteexplorer.search.yahoo.com/search?p='+encodeURIComponent(location.href)+'&amp;bwm=i&amp;bwmo=d&amp;bwmf=u');})();">Обратные ссылки на страницу</a></p>
<p>Исходник:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://siteexplorer.search.yahoo.com/search?p='</span><span style="color: #339933;">+</span>encodeURIComponent<span style="color: #009900;">&#40;</span>location.<span style="color: #660066;">href</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">'&amp;amp;bwm=i&amp;amp;bwmo=d&amp;amp;bwmf=u'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Хочу заметить, что все эти закладки открывают новые вкладки (или окна, в зависимости от браузера и его настроек), что, как мне кажется, на порядок удобнее, чем  когда эти страницы открываются на месте просматриваемых.</p>
<p>Ну вот, пока это все закладки, да и все, что я хотел тут написать. По мере того, как у меня будут появляться такие закладки, обязательно буду ими делиться через эту страницу.</p>
<p>Всем удачи в своих открытиях!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/javascript-zakladki.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Почему Dreamweaver не открывает файлы через ftp?</title>
		<link>http://php.infoniac.ru/dreamweaver-ne-otrkyvaet-faily-cherez-ftp.html</link>
		<comments>http://php.infoniac.ru/dreamweaver-ne-otrkyvaet-faily-cherez-ftp.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 07:18:13 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Работа с сайтом]]></category>
		<category><![CDATA[dreamweaver]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[неполадки]]></category>
		<category><![CDATA[решения]]></category>
		<category><![CDATA[трудности]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=285</guid>
		<description><![CDATA[Сегодня, после недавней переустановки системы, первой за 2 года использования макбука, поставил небольшой пакет Adobe для работы со своими сайтами. Всё-таки видеть дерево файлов и иметь возможность сразу и редактировать файлы - это чертовски удобно!]]></description>
			<content:encoded><![CDATA[<p>Итак, Dreamwever установился, я импортировал заранее экспортированные конфигурации соединений. Попробовал подключиться ко всем серверам &#8211; вроде все пока нормально. Пытаюсь открыть файл &#8211; не открывается. Проблемку такую я давно за дримуивером замечал, но как-то не было сильной необходимости исправлять ошибку, да и в интернете ничего не нашел. Сразу подумал, что проблема только с этим сайтом и попробовал подключиться к другому. Подключиться то он подключился, только вот файлы снова открыть не хочет. В общем, оказалось, что проблема общая для всех моих сайтов.</p>
<p>Обратившись к интернету, мгновенной помощи, на которую я так рассчитывал утром перед выходом на работу, так и не нашлось. Но решение пришло внезапно, ниоткуда и случайно. Перед тем как импортировать конфигурации подключений, я вместо того, чтобы импортировать файл через соответствующее окно программы, а просто попытался запустить через Finder (Explorer, если по-уиндоуски), но файл просто открылся в дримуивере в виде обычного XML файла. Я решил еще раз открыть, посмотреть, что там есть. Оказалось, что там есть 2 локальных пути на папки, где дримуивер хранил временные файлы на старой системе, т.е. сейчас таких путей нет и в помине, т.к. я изменил и количество, и название партитиций диска.</p>
<p>Решение оказалось простым: я удалил атрибуты localroot и еще какой-то (дома посмотрю и добавлю название) и файлы стали нормально открываться.</p>
<p>Потому, если после каких-то перемен с железом вы видите, что Dreamweaver отказывается открывать файлы, а в Журнале появляется такая запись &laquo;ПУТЬ К УДАЛЕННОМУ ФАЙЛУ &#8211; отменено пользователем</p>
<p>Обработка файлов завершена.&raquo; на Windows XP, русская версия Adobe Dreamweaver CS3, (то, что писал мне Dreamweaver на маке напишу позднее) вероятнее всего проблема именно в том, что приложение не знает, куда нужно писать файл.</p>
<p>Надеюсь это кому-нибудь еще, кроме меня поможет.</p>
<p>Удачи!</p>
<p>P.S.: позже выложу и скрины всего произошедшего.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/dreamweaver-ne-otrkyvaet-faily-cherez-ftp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Есть такой вопрос: Как получить ссылки, с известных доменов?</title>
		<link>http://php.infoniac.ru/question-how-to-get-links-from-popular-domains.html</link>
		<comments>http://php.infoniac.ru/question-how-to-get-links-from-popular-domains.html#comments</comments>
		<pubDate>Fri, 15 Jan 2010 08:23:57 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[персонализированный поиск]]></category>
		<category><![CDATA[Поисковые системы]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=262</guid>
		<description><![CDATA[Получил на работе номер 308 расширенного выпуска ашмановской рассылки &#171;Продвижение сайта. Профессиональные советы экспертов&#171;, где есть ссылка на статью &#171;Getting Links from the Top 50 Domains&#187; (&#187;Получение ссылок с Топ 50 доменов Интернета&#187;). Решил поделиться мыслями и наблюдениями по поводу неё.

Некоторые из пунктов очень очевидны, думаю, только ленивый СЕО-работник не использует их, а некоторые раскрыты [...]]]></description>
			<content:encoded><![CDATA[<p>Получил на работе номер 308 расширенного выпуска ашмановской рассылки &laquo;<strong>Продвижение сайта. Профессиональные советы экспертов</strong>&laquo;, где есть ссылка на статью &laquo;<noindex><a href="http://www.thegooglecache.com/uncategorized/getting-links-from-the-top-50-domains/" rel="nofollow">Getting Links from the Top 50 Domains</a></noindex>&raquo; (&raquo;Получение ссылок с Топ 50 доменов Интернета&raquo;). Решил поделиться мыслями и наблюдениями по поводу неё.</p>
<p><span id="more-262"></span></p>
<p>Некоторые из пунктов очень очевидны, думаю, только ленивый СЕО-работник не использует их, а некоторые раскрыты только потому, что они уже и так слишком раскрыты. Я имею ввиду, ну вот зачем раскрывать всем, что с домена nytimes.com (а точнее с одного из его поддоменов), либо с форума на поддомене sourceforge.net можно получить ссылку без nofollow? А только потому, что там этих ссылок уже и так уйма, и добавлять еще и себя туда, среди виагры, порнухи, таблеток и фармы абсолютно не нужно &#8211; такая ссылка, мне кажется, только навредит. Сами посудите: вот <noindex><a href="http://code.nytimes.com/projects/xslcache/ticket/3" rel="nofollow">одна страница</a></noindex>, вот <noindex><a href="http://code.nytimes.com/projects/xslcache/ticket/1" rel="nofollow">другая</a></noindex>. Эти страницы о PECL, а то, что там вылазят ссылки на всякие нечистоты &#8211; уже не хорошо, и даже если там вдруг появится ссылка на сайт/страницу/статью про PECL &#8211; сомневаюсь, что она даст ее владельцу серьезный вес, т.к. вся страница уже с черной пометкой &laquo;spam page&raquo; где-то там, в недрах гугловской БД и Гугл либо не учитывает эти ссылки при ранжировании, либо просто выбросил ее из свой выдачи.</p>
<p>Что касается ссылок с остальных доменов &#8211; мне думается, они рано или поздно все равно утратят свою значимость при ранжировании, но пока, естественно, можно их и попользовать. Например,  можно, добавить ссылку на сайт в профиль при регистрации на форуме sourceforge (вообще, это нужно делать всегда, при регистрации на любом форуме), можно/нужно добавить ссылку на что-то продвигаемое в подпись, но и нужно потом использовать этот профиль, нужно быть активным форумчанином, чтобы эти ссылки имели хоть какую-то значимость. Еще раз, в качестве примера, возьмем уже упомянутый форум на поддомене sourceforge.net &#8211; http://ettercap.sourceforge.net/forum/. Я не поленился и посмотрел на список форумчан. Судя по их количеству &#8211; определенно очень популярный форум. 28419 пользователей. А между тем, кто-нибудь слышал про такую программульку, как Ettercap? Если кто не в курсе, вышла версия 0.7.3!!! Оказалось, что 27093 пользователя не написало ни одного сообщения (хотя, самые отпетые спамеры умудрились зарегистрироваться еще в 2001 году &#8211; они не оставили ни одного сообщения, но у них есть интересные сайты про фарм). Вопрос в том, стоит ли тратить время, на то, чтобы зарегистрироваться на форуме только ради того, чтобы получить одну ссылку, которая, скорее всего, уже никогда не проиндексируется из-за большого количества спаммынх ссылок? Длинный вопрос получился&#8230;</p>
<p>Ради чего я всего это написал? Просто хотел поделиться мыслью о том, что реально полезной информации на тему СЕО мало. Публикуется, в основном то, что опытные СЕО-специалисты уже испробовали и им это результата не дало, либо метод исчерпал себя. Они публикуют метод на своем блоге, получают кучу благодарностей в комментариях, трафика и доход с рекламы на блоге. Конечно же, отнюдь не все методы, публикующиеся на СЕО блогах &#8211; фальшивки. Например, я подписан на RSS <a href="http://shakin.ru">блога Михаила Шакина &#8211; shakin.ru</a> (Михаил мне, вообще, кажется, талантливым писателем, т.к. он не только про Интернет интересно пишет, но и просто про жизнь), и блога известного <a href="http://blog.dimok.ru">Рунет деятеля Димка</a> (моего тезки, только меня просто Дима зовут <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), который недавно получил от WebmastersWorld мою любимую игрушку &#8211; <strong>МакБук Pro</strong>.</p>
<p>Итого: верить всему, что написано в СЕО статьях и блогах, мне кажется, не нужно. Главное в этой сфере &#8211; умение анализировать факты! Почитал, проанализировал. При необходимости, проверил, протестировал. Слепо верить и следовать всему, что пишут в Интернете &#8211; не всегда верно и не всегда полезно. Так что моим ответом на вопрос в заголовке будет таким: <strong>Нужно думать самому.</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/question-how-to-get-links-from-popular-domains.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools &#8211; Использование Fx.Morph, Fx.Options и Fx.Events &#8211; Урок 11</title>
		<link>http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html</link>
		<comments>http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 20:09:44 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[fx.events]]></category>
		<category><![CDATA[fx.morph]]></category>
		<category><![CDATA[fx.options]]></category>
		<category><![CDATA[анимация]]></category>
		<category><![CDATA[уроки mootools]]></category>
		<category><![CDATA[эффекты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=201</guid>
		<description><![CDATA[Мне всегда казалось, что самое интересное в JavaScript - это возможности анимации объектов на странице, что придает больше возможностей разработчику в плане пользовательских удобств на сайте, больше возможностей придания более благоприятного внешнего вида сайту и для достижения других благих целей. Библиотека Mootools делает работу с анимацией намного проще, чем ковыряние с кодом JavaScript, при этом, как мне кажется, ничуть не теряет в функционале. Хотя небольшие трудности у меня уже появились, я уверен, что если просто хорошенько разобраться, все заработает, как по маслу ;)]]></description>
			<content:encoded><![CDATA[<h2>Mootools 1.2 Fx.Morph, Fx.Options, и Fx.Events</h2>
<p>Сегодня продолжим исследовать раздел спец. эффектов нашей любимой библиотеки. Вначале, мы научимся тому, как использовать библиотеку Fx.Morph (которая, по сути, позволяет изменять несколько свойств объектов), после чего посмотрим на несколько примеров использования общих параметров спец. эффектов, применимых как к Fx.Tween и Fx.Morph. Ну а в конце, рассмотрим такие события раздела Fx как &laquo;<strong>onComplete</strong>&raquo; и &laquo;<strong>onStart</strong>&laquo;. Все эти параметры и события позволят нам получить больше контроля над анимированными переходами.</p>
<h3>Fx.Morph</h3>
<h4>Создание нового эффекта Fx.Morph</h4>
<p>Запуск нового превращения (<em>morph</em> с англ. &#8211; превращение) происходит примерно также, как и запуск нового <a href="http://php.infoniac.ru/mootorials-special-effects-day10.html" title="Спец. Эффекты в Mootools – Уроки Mootools – Урок 10">эффекта tween</a>, с той разницей, что указывать изменения нужно в нескольких свойствах.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//вначале, назначим нашему элементу переменную</span>
<span style="color: #003366; font-weight: bold;">var</span> morphElement <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'morph_element'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//теперь создаем объект превращения</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//далее задаем параметры свойств, также как в случае с Fx.Tween</span>
<span style="color: #006600; font-style: italic;">//только сейчас можно будет устанавливать несколько свойств</span>
morphObject.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">'width'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'height'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'#eeeeee'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//еще можно начать превращение также, как и в случае с tween</span>
<span style="color: #006600; font-style: italic;">//с помощью функции start, но назначить изменения в нескольких свойствах</span>
morphObject.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #3366CC;">'width'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">300</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'height'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">300</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'#d3715c'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Вот это и есть тот минимум, который необходим для создания, настройки и запуска эффекта morph &#8211; превращения.</p>
<p>Ну, а для того, что бы сделать всё по-хорошему, нужно создать еще несколько переменных, отделить функции друг от друга, создать несколько событий и прослушек для хорошего контроля всего процесса:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> morphSet <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//далее задаем параметры свойств стилей, также как в случае с Fx.Tween</span>
	<span style="color: #006600; font-style: italic;">//только сейчас можно будет устанавливать несколько свойств стилей</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #3366CC;">'width'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">'height'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'#eeeeee'</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> morphStart <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">//еще можно начать превращение также, как и в случае с tween</span>
<span style="color: #006600; font-style: italic;">//с помощью функции start, но назначить изменения в нескольких свойствах</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #3366CC;">'width'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">300</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">'height'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">300</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'#d3715c'</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> morphReset <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//устанавливаем первоначальные значения</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #3366CC;">'width'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">'height'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">'background-color'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'#ffffff'</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> morphElement <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'morph_element'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//тут добавляем прослушку соответствующим кнопкам</span>
	<span style="color: #006600; font-style: italic;">//и соединяем переменную morphObject с функцией</span>
	<span style="color: #006600; font-style: italic;">//что позволяет нам использовать &quot;this&quot;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'morph_set'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> morphSet.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>morphObject<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'morph_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> morphStart.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>morphObject<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'morph_reset'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> morphReset.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>morphObject<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;morph_element&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;morph_set&quot;</span>&gt;</span>Установить<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;morph_start&quot;</span>&gt;</span>Запустить<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;morph_reset&quot;</span>&gt;</span>Сбросить<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span></pre></div></div>

<div id="morph_element"></div>
<p><button id="morph_set">Установить</button><br />
<button id="morph_start">Запустить</button><br />
<button id="morph_reset">Сбросить</button></p>
<h2>Fx Options</h2>
<p>Вот несколько параметров, которые принимаются как Fx.Tween, так и Fx.Morph. Их просто использовать и они дают массу возможностей по управлению над вашими эффектами. Для использования этих настроек, нужно использовать конструкции такой формы:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//объявляем объекты morph и tween</span>
<span style="color: #006600; font-style: italic;">//а все параметры вставляем в фигурные скобки</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//вначале объявляем название параметра</span>
    <span style="color: #006600; font-style: italic;">//потом двоеточие - :</span>
    <span style="color: #006600; font-style: italic;">//и значение параметра</span>
    duration<span style="color: #339933;">:</span> <span style="color: #3366CC;">'long'</span><span style="color: #339933;">,</span>
    transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'sine:in'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>fps (frames per second) &#8211; кадры в секунду</h3>
<p>Данный параметр определяет скорость анимации. По умолчанию скорость анимации установлена на 50 кадров в секунду и этот параметр может принимать данные в виде чисел и переменные, содержащие числа.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//определяем объект, а параметры в фигурные скобки { }</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    fps<span style="color: #339933;">:</span> <span style="color: #CC0000;">60</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//или</span>
<span style="color: #003366; font-weight: bold;">var</span> framesPerSecond <span style="color: #339933;">=</span> <span style="color: #CC0000;">60</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> tweenObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>tweenElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    fps<span style="color: #339933;">:</span> framesPerSecond
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>unit</h3>
<p>Параметр <strong>unit</strong> определяет единицу измерения. Например, нужно, чтобы число 100 означало px &#8211; пиксели, % &#8211; проценты или что-лобо еще.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//все как и выше</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    unit<span style="color: #339933;">:</span> <span style="color: #3366CC;">'%'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>link</h3>
<p>Параметр <strong>link</strong> позволяет управлять несколькими вызовами эффекта. Например, если имеется объект с эффектом mouseover, вы же не хотите начинать его каждый раз, как пользователь наводит на него указатель? Или, если пользователь наводит мышь на объект дважды, нужно ли игнорировать следующий вызов эффекта или его нужно поставить в очередь и запустить сразу по окончании первого вызова? У параметра  link  есть 3 возможных значения: </p>
<ul>
<li>&#8216;ignore&#8217; (по умолчанию) &#8211; это значение игнорирует все вызовы пока предыдущее выполнение эффекта не выполнено.</li>
<li>&#8216;calcel&#8217; &#8211; отменяет текущее выполнение эффекта и запускает его с начала.</li>
<li>&#8216;chain&#8217; &#8211; позволяет чередовать вызовы эффектов и выполнять каждый из них по очереди.</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//и снова назначаем объект в переменную</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'chain'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>duration &#8211; длительность</h3>
<p>Параметр <strong>duration</strong> определяет длительности анимации. Этот параметр не является идентичным параметру <strong>speed</strong> (<em>скорость</em>), но пока всей разницы лично я пока не понял. Может кто объяснит? <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Этот параметр принимает числа (милисекунды), переменную, содержащую числа, или же одно из ключевых слов, обозначающих длительность в милисекундах:</p>
<ul>
<li>&#8217;short&#8217; = 250</li>
<li>&#8216;normal&#8217; = 500 (по умолчанию)</li>
<li>&#8216;long&#8217; = 1000</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//определяем объект и вставляем его параметры в фигурные скобки</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    duration<span style="color: #339933;">:</span> <span style="color: #3366CC;">'long'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//или</span>
<span style="color: #003366; font-weight: bold;">var</span> morphObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Morph</span><span style="color: #009900;">&#40;</span>morphElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">1000</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>transition &#8211; переход</h3>
<p>И последний параметр, который мы рассмотрим, это параметр <strong>transition</strong>, который определяет тип перехода. Например, это должен быть плавный переход или он должен начинаться плавно, а потом ускориться под конец. В полиграфии есть штука под названием &laquo;пантонница&raquo;. Предлагаю вашему вниманию <em>&laquo;транзитницу&raquo;</em> библиотеки Mootools <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> tweenObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>tweenElement<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'quad:in'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong><em>Примечание</em></strong>: Первая полоса перехода оснащена зарядом красного highlight, переходящий в оранжевый highlight (мы о нем говорили <a href="mootorials-special-effects-day10.html" title="Спец. Эффекты в Mootools – Уроки Mootools – Урок 10">в прошлом уроке</a>). А вот и она, &laquo;транзитница&raquo;, собственно:</p>
<div style="width: 300px; background-color: rgb(102, 102, 102);" id="quadin" class="trans">‘quad:in’</div>
<div style="width: 300px;" id="quadout" class="trans stripe">‘quad:out’</div>
<div style="width: 300px;" id="quadinout" class="trans">‘quad:in:out’</div>
<div id="cubicin" class="trans stripe">‘cubic:in’</div>
<div id="cubicout" class="trans">‘cubic:out’</div>
<div id="cubicinout" class="trans stripe">‘cubic:in:out’</div>
<div id="quartin" class="trans">‘quart:in’</div>
<div id="quartout" class="trans stripe">‘quart:out’</div>
<div id="quartinout" class="trans">‘quart:in:out’</div>
<div id="quintin" class="trans stripe">‘quint:in’</div>
<div id="quintout" class="trans">‘quint:out’</div>
<div id="quintinout" class="trans stripe">‘quint:in:out’</div>
<div id="expoin" class="trans">‘expo:in’</div>
<div id="expoout" class="trans stripe">‘expo:out’</div>
<div id="expoinout" class="trans">‘expo:in:out’</div>
<div id="circin" class="trans stripe">‘circ:in’</div>
<div id="circout" class="trans">‘circ:out’</div>
<div id="circinout" class="trans stripe">‘circ:in:out’</div>
<div id="sinein" class="trans">’sine:in’</div>
<div id="sineout" class="trans stripe">’sine:out’</div>
<div id="sineinout" class="trans">’sine:in:out’</div>
<div id="backin" class="trans stripe">‘back:in’</div>
<div id="backout" class="trans">‘back:out’</div>
<div id="backinout" class="trans stripe">‘back:in:out’</div>
<div id="bouncein" class="trans">‘bounce:in’</div>
<div id="bounceout" class="trans stripe">‘bounce:out’</div>
<div id="bounceinout" class="trans">‘bounce:in:out’</div>
<div id="elasticin" class="trans stripe">‘elastic:in’</div>
<div id="elasticout" class="trans">‘elastic:out’</div>
<div id="elasticinout" class="trans stripe">‘elastic:in:out’</div>
<p>Всего существует 30 видов переходов, которые состоят из 10 основных типов, имеющих каждый по 3 параметра.</p>
<p><strong>Основные типы</strong>:</p>
<ul>
<li>Quad</li>
<li>Cubic</li>
<li>Quart</li>
<li>Quint</li>
<li>Expo</li>
<li>Circ</li>
<li>Shine</li>
<li>Back</li>
<li>Bounce</li>
<li>Elastic</li>
</ul>
<p><strong>Параметры</strong>:</p>
<ul>
<li>Ease In</li>
<li>Ease Out</li>
<li>Ease In Out</li>
</ul>
<p>Эти три параметра отвечают за следующее: при использовании параметра <strong>In</strong>  спец.эффект перехода будет использоваться только при увеличении некоторых свойств объекта, тогда как параметр <strong>Out</strong> отвечает за спец.эффект перехода при уменьшении свойствf (знаю, что звучит немного непонятно, но обратите внимание на то, как себя ведут объекты с переходом одного типа с параметрами in и out нашей &laquo;транзитницы&raquo; при наведении курсора и при его заборе с объекта). <strong>InOut</strong>, соответственно, определяет использование спец. эффекта перехода, в обоих случаях, т.е. как при увеличении определенных свойств, так и при их уменьшении.</p>
<h3>Fx Events &#8211; события</h3>
<p>События спец. эффектов позволяют выполнять определенный код в различные стадии анимационного эффекта. Эти события могут быть очень полезны для создания обратной связи с пользователями и создает еще один уровень управления над своими эффектами:</p>
<ul>
<li>onStart &#8211; срабатывает при начале эффекта</li>
<li>onCancel &#8211; срабатывает при отмене эффекта</li>
<li>onComplete &#8211; срабатывает при завершении эффекта</li>
<li>onChainComplete &#8211; срабатывает при завершении поочередных эффектов.</li>
</ul>
<p>При создании эффекта tween или morph, события определяются по тому же принципу, что и параметры эффекта, только в качестве значения событию передается функция:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//определяем новый объект переменной</span>
<span style="color: #006600; font-style: italic;">//и объявляем его новым объектом класса Fx.Tween</span>
quadIn <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>quadIn<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//тут выставляем опции</span>
	link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'cancel'</span><span style="color: #339933;">,</span>
	transition<span style="color: #339933;">:</span> ‘quad<span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">in</span>’<span style="color: #339933;">,</span>
&nbsp;
       <span style="color: #006600; font-style: italic;">//несколько событий</span>
	onStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>passes_tween_element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #006600; font-style: italic;">//эти события применяются к нашему объекту</span>
                <span style="color: #006600; font-style: italic;">//потому эффект &quot;highlight&quot; применяется к</span>
                <span style="color: #006600; font-style: italic;">//началу анимации</span>
	        passes_tween_element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#C54641'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
        <span style="color: #006600; font-style: italic;">//обратите внимание на разделители между функциями, в виде запятых,</span>
        <span style="color: #006600; font-style: italic;">//тогда как, после последнего параметра или события</span>
        <span style="color: #006600; font-style: italic;">//запятые не ставятся</span>
        onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>passes_tween_element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                <span style="color: #006600; font-style: italic;">//а тут мы применяем эффекст highlight к завершению анимации </span>
	        passes_tween_element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#C54641'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>Пример</h2>
<p>Попробуем сгенерировать все переходы, показанные выше и попробуем использовать наши функции немного другими методами, какими ранее еще не пользовались. Все элементы переходов используют по две функции: одна функция запускает анимацию по наведению курсора, другая при его отводе.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//эту функцию будем запускать по событию mouseenter</span>
<span style="color: #003366; font-weight: bold;">var</span> enterFunction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'700px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//эту функцию будем запускать по событию mouseleave</span>
<span style="color: #003366; font-weight: bold;">var</span> leaveFunction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//определим переменными некоторые элементы на странице</span>
    <span style="color: #003366; font-weight: bold;">var</span> quadIn <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'quadin'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> quadOut <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'quadout'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> quadInOut <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'quadinout'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">//потом создаем по одному элементу tween каждой переменной, объявленной выше</span>
    quadIn <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>quadIn<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'cancel'</span><span style="color: #339933;">,</span>
	transition<span style="color: #339933;">:</span> Fx.<span style="color: #660066;">Transitions</span>.<span style="color: #660066;">Quad</span>.<span style="color: #660066;">easeIn</span><span style="color: #339933;">,</span>
	onStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>passes_tween_element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		passes_tween_element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#C54641'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>passes_tween_element<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		passes_tween_element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#E67F0E'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   quadOut <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>quadOut<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'cancel'</span><span style="color: #339933;">,</span>
	transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'quad:out'</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    quadInOut <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>quadInOut<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	link<span style="color: #339933;">:</span> <span style="color: #3366CC;">'cancel'</span><span style="color: #339933;">,</span>
	transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'quad:in:out'</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">//теперь добавим каждому элементу по прослушке на события</span>
    <span style="color: #006600; font-style: italic;">//обратите внимание на использование функции .addEvents</span>
    <span style="color: #006600; font-style: italic;">//которая работает также, как и .addEvent</span>
    <span style="color: #006600; font-style: italic;">//только можно добавлять несколько событий, используя определённый шаблон</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'quadin'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//вначале нужно объявить событие, поместив его в единичные кавычки,</span>
        <span style="color: #006600; font-style: italic;">//отделить их двоеточием (&quot;:&quot;)</span>
        <span style="color: #006600; font-style: italic;">//и объявить функцию, которая будет выполняться при этом событии.</span>
        <span style="color: #006600; font-style: italic;">//в данном случае, это функция, которая связана с эффектом tween</span>
        <span style="color: #006600; font-style: italic;">//разделения событий производится с помощью запятой;</span>
        <span style="color: #006600; font-style: italic;">//после последнего события запятая НЕ ИСПОЛЬЗУЕТСЯ</span>
        <span style="color: #3366CC;">'mouseenter'</span><span style="color: #339933;">:</span> enterFunction.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>quadIn<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'mouseleave'</span><span style="color: #339933;">:</span> leaveFunction.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>quadIn<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'quadout'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//обратите внимание, как мы снова используем те же функции в этом коде</span>
        <span style="color: #3366CC;">'mouseenter'</span><span style="color: #339933;">:</span> enterFunction.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>quadOut<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'mouseleave'</span><span style="color: #339933;">:</span> leaveFunction.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>quadOut<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'quadinout'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//тут мы также используем те же функции</span>
        <span style="color: #006600; font-style: italic;">//просто они каждый раз вызываются для работы с событием над разными элементами</span>
        <span style="color: #006600; font-style: italic;">//и привязаны они к разным объектам tween</span>
        <span style="color: #3366CC;">'mouseenter'</span><span style="color: #339933;">:</span> enterFunction.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>quadInOut<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'mouseleave'</span><span style="color: #339933;">:</span> leaveFunction.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>quadInOut<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Спец. Эффекты в Mootools &#8211; Уроки Mootools &#8211; Урок 10</title>
		<link>http://php.infoniac.ru/mootorials-special-effects-day10.html</link>
		<comments>http://php.infoniac.ru/mootorials-special-effects-day10.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 19:26:08 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[уроки mootools]]></category>
		<category><![CDATA[эффекты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=162</guid>
		<description><![CDATA[В 10-м уроке рассматриваем одну из самых интересных тем, которыми славится Mootools, да и любой другой фреймворк на базе Javascript, а именно спец. эффекты. В этом уроке рассмотрим базовые функции работы со спец. эффектами, такие как .fade, .morph и т.д. Надо сказать, мне самому было интересно нажимать на кнопки изменения свойств :)]]></description>
			<content:encoded><![CDATA[<p>
<script type="text/javascript">
var tweenHighlightChange = function(item) {
        item.target.highlight('#eaea16', '#333333');
}

var tweenerFunction  = function() {
	$('tweener').tween('width', '300px');
}

var tweenerGoBack  = function() {
	$('tweener').tween('width', '100px');
}

var tweenFadeOut = function() {
	$('tweener').fade('out');
}

var tweenFadeFifty = function() {
	$('tweener').fade('.5');
}

var tweenFadeIn = function() {
	$('tweener').fade('in');
}

var tweenHighlight = function(event) {
	event.target.highlight('#eaea16');
}

window.addEvent('domready', function() {
	$('tween_button').addEvent('click', tweenerFunction);
	$('tween_reset').addEvent('click', tweenerGoBack);
	$('tween_fade_out').addEvent('click', tweenFadeOut);
	$('tween_fade_fifty').addEvent('click', tweenFadeFifty);
	$('tween_fade_in').addEvent('click', tweenFadeIn);
	$('tweener').addEvent('mouseover',tweenHighlight);
    $('tweenerChange').addEvent('mouseover', tweenHighlightChange);
});

window.addEvent('domready', function() {
});
</script>
<br />
Еще раз добро пожаловать в наш класс по изучению библиотеки Mootools 1.2. Если вы пришли сюда впервые, советую посмотреть и предыдущие уроки, особенно, если вы не совсем знакомы с этой библиотекой (внизу страницы, около комментариев есть специальная ссылка).</p>
<p>Итак, сегодня мы рассмотрим возможности создания спец. эффектов в Mootools из библиотеки эффектов Fx.Tween. Функции этого дополнения, как и многие другие функции библиотеки, очень просты в применении, но при этом дают разработчикам очень большую свободу действий, позволяя улучшить эстетичность веб-приложений и конечно же &laquo;юзабилити&raquo; (очень модное слово сегодня в интернете; в переводе с англицкого: <strong>usability</strong> &#8211; &laquo;<em>удобство (ис)пользования</em>&laquo;).</p>
<h2>Быстрые спец.эффекты</h2>
<p>Обычно я начинаю с основ той или иной темы, но функции работы со спец. эффектами так просты в использовании, что не могу удержаться от того, чтобы именно их поставить на передовую рассмотрения.</p>
<h3>.tween();</h3>
<p>Английское слово <em>tween</em> означает мягкий переход из одного свойства в другое. В нашем случае можно сказать, что переход осуществляется от одного значения свойства, к другому. Например можно сделать так, чтобы блок <strong>div</strong> мягко и красиво растянулся с &#8216;width:100px&#8217; до &#8216;width:300px&#8217;. А фреймворк Mootools позаботился о том, чтобы создание таких эффектов не занимало более секунды!</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//создаем функцию</span>
<span style="color: #003366; font-weight: bold;">var</span> tweenerFunction  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//выбираем элемент, над которым будем издеваться</span>
        <span style="color: #006600; font-style: italic;">//и добавляем к нему .tween</span>
        <span style="color: #006600; font-style: italic;">//а в качестве атрибутов добавляем свойство, которое будет изменяться</span>
        <span style="color: #006600; font-style: italic;">//и значение на которое это свойство нужно мягко изменить</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">tween</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//тут мы добавляем прослушку на определенное событие (в нашем случае click)</span>
        <span style="color: #006600; font-style: italic;">//к кнопке, которая должна вызвать эффект</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_button'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenerFunction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ну а HTML код для этой функции выглядит так:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;tween_button&quot;</span>&gt;</span>растянуть до 300 px<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span></pre></div></div>

<h3>.fade();</h3>
<p>Еще одна потрясающая функция, которая позволяет тонко настроить прозрачность элемента. А настройка выглядит примерно также, как показано в коде выше:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//создаем функцию</span>
<span style="color: #003366; font-weight: bold;">var</span> tweenFadeFifty <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #006600; font-style: italic;">//выбираем объект</span>
       <span style="color: #006600; font-style: italic;">//добавляем к нему .fade</span>
       <span style="color: #006600; font-style: italic;">//и задаем значение между 0 и 1, к которому нужно привести прозрачность элемента</span>
       <span style="color: #006600; font-style: italic;">//(0 - невидимка, 1 - полный видимка)</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fade</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.5'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//тут мы добавляем прослушку на определенное событие (в нашем случае click)</span>
        <span style="color: #006600; font-style: italic;">//к кнопке, которая должна вызвать эффект</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_fade_fifty'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenFadeFifty<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Вот и HTML код:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;tween_fade_fifty&quot;</span>&gt;</span>Снижаем видимость до 50%<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span></pre></div></div>

<h3>.highlight();</h3>
<p>Снова не могу обойтись без слова &laquo;замечательная&raquo;! <strong>.highlight()</strong> &#8211; это замечательная функция! Она очень узконаправленная, при этом также очень полезна. Она имеет две функции:</p>
<ol>
<li>Использование для мягкого перехода к иному цвету фона (можно посмотреть пример немногой ниже).</li>
<li>Мгновенно изменяет цвет фона, потом мягко переходит к другому цвету.</li>
</ol>
<p>Если спросите, зачем вообще тратить время на создание и потом еще и изучение таких функции, могу сказать в их оправдание, что они очень полезны, когда создаешь обратную связь с пользователями. Например, можно привлечь внимание к определенному элементу, когда что-нибудь выделяется; или изменяете цвет, потом этот цвет вспыхивает когда элемент сохраняется и закрывается. Вообще, возможностей уйма. Все зависит от опыта и воображения разработчика.</p>
<p>А пока предлагаю рассмотреть пример использования функции. Создадим два блока <strong>div</strong>, и применим к ним оба типа функции <strong>.highlight()</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//создаем функцию</span>
<span style="color: #003366; font-weight: bold;">var</span> tweenHighlight <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//тут мы будем использовать конструкцию, которую пока еще не использовали - event.target</span>
        <span style="color: #006600; font-style: italic;">//которая будет передаваться как параметр функции</span>
        <span style="color: #006600; font-style: italic;">//на человеческом языке это звучит как &quot;цель события&quot;</span>
        <span style="color: #006600; font-style: italic;">//а так как эффект применим к тому же элементу, к которому прикреплена прослушка на событие</span>
        <span style="color: #006600; font-style: italic;">//не нужно будет снова создавать селектор.</span>
        <span style="color: #006600; font-style: italic;">//обратите внимание, что addEvent автоматически передаст объект события в качестве параметра</span>
        <span style="color: #006600; font-style: italic;">//в функцию, которую вызывает... оч полезно ;)</span>
	event.<span style="color: #660066;">target</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#eaea16'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//создаем вторую функцию</span>
<span style="color: #006600; font-style: italic;">//тут нужно передать сразу параметр</span>
<span style="color: #006600; font-style: italic;">//так как функция будет вызываться при определенном событии</span>
<span style="color: #006600; font-style: italic;">//и ей в параметры автоматически припишут событие (как в функции выше)</span>
<span style="color: #006600; font-style: italic;">//а элемент можно вызывать с помощью конструкции .target</span>
<span style="color: #006600; font-style: italic;">//(цель события)</span>
<span style="color: #003366; font-weight: bold;">var</span> tweenHighlightChange <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//тут, вместо одного значения цвета, через запятую добавляем второй цвет</span>
        <span style="color: #006600; font-style: italic;">//что установит первый цвет, и целевой цвет перехода</span>
        <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">target</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#eaea16'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#333333'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mouseover'</span><span style="color: #339933;">,</span> tweenHighlight<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweenerChange'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mouseover'</span><span style="color: #339933;">,</span> tweenHighlightChange<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Вкусные примеры</h3>
<p>Вот она &#8211; самая интересная часть любого урока. Помните, еще со школы &#8211; все что там училка трындит, очень часто кажется бессмыслицей, но если правильно подобрать пример &#8211; все обретает очень четкий смысл. Вот они наши примеры. Понажимайте на кнопки в разном порядке и обратите внимание на поведение объекта:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> tweenerFunction  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">tween</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> tweenerGoBack  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">tween</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'100px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//функция .fade еще принимает ключевые слова 'out' и 'in',</span>
<span style="color: #006600; font-style: italic;">//что эквивалентно 0 и 1 соответственно</span>
<span style="color: #003366; font-weight: bold;">var</span> tweenFadeOut <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fade</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'out'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> tweenFadeFifty <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fade</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.5'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> tweenFadeIn <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fade</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'in'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> tweenHighlight <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	event.<span style="color: #660066;">target</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#eaea16'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_button'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenerFunction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_reset'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenerGoBack<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_fade_out'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenFadeOut<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_fade_fifty'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenFadeFifty<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tween_fade_in'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> tweenFadeIn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tweener'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'mouseover'</span><span style="color: #339933;">,</span>tweenHighlight<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>При наведении курсора, кстати, работает первый тип функции <strong>.highlight()</strong>.</p>
<p><div id="tweener"></div>
<span class="pseudobutton" id="tween_button">Ширина 300</span> --- <span class="pseudobutton" id="tween_reset">Ширина 100</span> --- <span class="pseudobutton" id="tween_fade_out">В невидимку</span> --- <span class="pseudobutton" id="tween_fade_fifty">На половину видно/невидно</span> --- <span class="pseudobutton" id="tween_fade_in">Видимка</span></p>
<p>А этот одинокий квадратик иллюстрирует работу второго типа функции <strong>.highlight()</strong>.</p>
<div id="tweenerChange" style="border: 1px solid black; background-color: rgb(255, 255, 255); width: 100px; height: 100px;"></div>
<h2>И это еще не всё&#8230;</h2>
<h3>Создание нового эффекта</h3>
<p>Если потребовалось больше гибкости в управлении эффектами, или еще какие-то дополнительные возможности, а такое бывает, скажу я вам,  нужно будет всего навсего создать новый эффект, вместо использования уже имеющихся эффектов в Mootools. Ниже пример создания нового эффекта. Обратите внимание на ключевое слово <strong>new</strong>, которое используется для создания нового объекта Fx.Tween:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//вначале назначаем объект, над которым собираемся издеваться своим новым эффектом,</span>
<span style="color: #006600; font-style: italic;">//и назначаем этот объект новой переменной</span>
        <span style="color: #003366; font-weight: bold;">var</span> newTweenElement <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'newTween'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
       <span style="color: #006600; font-style: italic;">//теперь создаем новый эффект, которому передаем переменную с объектом в качестве параметра</span>
       <span style="color: #003366; font-weight: bold;">var</span> newTween <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>newTweenElement<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;newTween&quot;</span>&gt;</span><span style="color: #808080; font-style: italic;">&lt;!-- это элемент, к которому применим новый Tween эффект--&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!-- а это кнопка, которая очень скоро сыграет свою главную роль --&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;netTween_set&quot;</span>&gt;</span>Назначить<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span></pre></div></div>

<h3>Установка стилей</h3>
<p>При создании нового объекта Tween из элемента, можно начинать назначать свойства стилей с помощью функции <strong>.set();</strong>. Эта функция работает моментально и прицип ее работы практически ничем не отличается от <strong>.setStyle();</strong>, рассмотренной нами в <a title="Манипулирование стилями элементов страницы с помощью Mootools" href="http://php.infoniac.ru/mootools-day7-styles.html">7-м уроке</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> newTweenSet <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//обратите внимание на использование ключевого слова &quot;this&quot;</span>
        <span style="color: #006600; font-style: italic;">//немного далее рассмотрю более подробно использование этого слова</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Когда-то, уже очень давно, я говорил, что определять функции нужно за пределами события domready, но в этом случае, мы создадим эффект внутри этого события, после чего сошлемся на него извне. Мы уже также как-то говорили о том, как можно передавать параметры извне события domready (путем созания анонимной функции).</p>
<h3>.bind()</h3>
<p>С помощью функции <strong>.bind();</strong> можно сделать любой параметр равным ключевому слову &laquo;<strong>this</strong>&raquo; в спектре работы определенной функции:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//вначале добавляем событие клика к кнопке, которую видели немного выше</span>
<span style="color: #006600; font-style: italic;">//потом, помимо простого вызова функции</span>
<span style="color: #006600; font-style: italic;">//мы добавляем к ней &quot;.bind()&quot;</span>
<span style="color: #006600; font-style: italic;">//и помещаем в скобки все, что мы хотим передать этой функции</span>
<span style="color: #006600; font-style: italic;">//и теперь, внутри функции &quot;newTweenSet,&quot; ключевое слово &quot;this&quot;</span>
<span style="color: #006600; font-style: italic;">//будет относиться к переменной &quot;newTween&quot;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'netTween_set'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> newTweenSet.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>newTween<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Таким образом, если взглянем на функцию выше, &laquo;this&raquo; теперь ровняется тому, что мы говорим &laquo;newTween&raquo; (который, по совместительству, и является нашим объектом классса tween)</p>
<p>А теперь, соединим все это в единое целое:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//вот наша функция</span>
<span style="color: #003366; font-weight: bold;">var</span> newTweenSet <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//так как мы использовали bind, &quot;this&quot; теперь относится к &quot;newTween&quot;</span>
        <span style="color: #006600; font-style: italic;">//т.е. на самом деле мы говорим</span>
        <span style="color: #006600; font-style: italic;">//newTween.set('width', '300px')</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//вначале назначаем нашему элементу переменную</span>
	<span style="color: #003366; font-weight: bold;">var</span> newTweenElement <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'newTween'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">//потом создаем новый эффект FX.Tween и назначаем его своей собственной переменной</span>
    <span style="color: #003366; font-weight: bold;">var</span> newTween <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Tween</span><span style="color: #009900;">&#40;</span>newTweenElement<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">//а сейчас добавляем наше событие, в котором связываем newTween и newTweenSet с помощью bind</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'netTween_set'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> newTweenSet.<span style="color: #660066;">bind</span><span style="color: #009900;">&#40;</span>newTween<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Запуск эффекта tween</h3>
<p>А теперь, когда мы полностью настроили наш объект, наша функция находится вне события <em>domready</em> и мы помним, как с помощью функции <strong>.set();</strong> назначить параметр стиля, потому, давайте пройдем к, собственно, спец.эффектам. Запустить эффект &#8211; очень просто! Аналогично <strong>.fade();</strong> использовать <strong>.start();</strong> можно двумя методами.</p>
<ol>
<li>Провести преобразование от одного значения свойства стиля до другого</li>
<li>Назначить значение свойства стиля, потом перейти у другому</li>
</ol>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//эта строчка изменит текущее значение свойства width на 300px</span>
newTween.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//эта строчка установит свойство width на 100px, потом сделает плавный переход на 300px</span>
newTween.<span style="color: #660066;">start</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'100px'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'300px'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Теперь можно начать (с помощью функции <strong>.start();</strong>) выполнение эффекта из функции и спользовать &laquo;this&raquo;, если была использована функция <strong>.bind();</strong> для связи с &laquo;newTween&raquo;.</p>
<h3>По эффектам tween пока все&#8230;</h3>
<p>Несмотря на то что о эффектах tween еще можно долго говорить. Например, если нужно наложить спец. эффекты на несколько свойств стилей одновременно, можно использовать функцию <strong>.morph();</strong>. Можно использовать библиотеку эффектов и переходов для изменения тех самых переводов. Но этот урок и так получается довольно длинным, потому оставим это все на другие уроки.</p>
<p style="text-align:right;"><strong>Всем удачи и успехов!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootorials-special-effects-day10.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Искусство СЕО в реалиях персонализированного поиска</title>
		<link>http://php.infoniac.ru/istusstvo-seo-v-realijah-personalizirovannogo-poiska.html</link>
		<comments>http://php.infoniac.ru/istusstvo-seo-v-realijah-personalizirovannogo-poiska.html#comments</comments>
		<pubDate>Tue, 01 Dec 2009 07:37:35 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Поисковые системы]]></category>
		<category><![CDATA[оптимизация сайтов под персонализированный поиск]]></category>
		<category><![CDATA[персонализированный поиск]]></category>
		<category><![CDATA[поисковики]]></category>
		<category><![CDATA[продвижение сайтов]]></category>
		<category><![CDATA[сео]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=190</guid>
		<description><![CDATA[Решил немного отвлечься от темы уроков Mootools и опубликовать перевод статьи на тему продвижения сайтов, которая меня сильно впечатлила. Несмотря на то, что статье уже более 2х лет, лично я вижу в ней не мало актуальности, особенно в связи с тем, что флагман мирового поиска, <strong>Google</strong>, переходит на полностью персонализированный поиск, (за ним, наверняка, пойдут и остальные более или менее крупные поисковики), думаю, многим как специалистам, так и не особо специалистам, было бы интересно узнать, что думают другие специалисты о перспективах продвижения своих проектов в реалиях персонализированного поиска.]]></description>
			<content:encoded><![CDATA[<p>
<style>
P {padding-top:5px;font-size:10pt;}
</style>
</p>
<p>Решил немного отвлечься от темы уроков Mootools опубликовать перевод статьи на тему продвижения сайтов, которая меня сильно впечатлила. Наткнулся на <a href="http://www.huomah.com/search-engines/search-engine-optimization/the-art-of-personalized-search-optimization.html">статью в блоге huomah.com</a>, и она так и называется &laquo;Искусство оптимизации под персонализированный поиск&raquo;, только на английском (&raquo;The Art of Personalized Search Optimization&raquo;). Несмотря на то, что статье уже более 2х лет, лично я вижу в ней не мало актуальности, особенно в связи с тем, что флагман мирового поиска, <strong>Google</strong>, <a href="http://googleblog.blogspot.com/2009/12/personalized-search-for-everyone.html" title="Персонализированный поиск для всех">переходит на полностью персонализированный поиск</a>, (за ним, наверняка, пойдут и остальные более или менее крупные поисковики), думаю, многим как специалистам, так и не особо специалистам, было бы интересно узнать, что думают другие специалисты о перспективах продвижения своих проектов в реалиях персонализированного поиска.</p>
<h2>Введение</h2>
<p>Краткое содержание новости с <a href="http://googleblog.blogspot.com/">официального блога Google</a>, опубликованной 4 декабря 2009:</p>
<blockquote><p>[…]Например, из-за того, что я часто ищу разные рецепты на <strong>epicurious.com</strong>, Google может выдать этот сайт выше остальных в следующий раз, когда я будут искать рецепты.[…]<br />
[…]Раньше, мы персонализировали результаты поиска только залогиненных пользователей и только в тех случаях, когда они включали опцию истории поиска (Web History) в настройках своих учетных записей. Сегодня мы расширяем персонализированные результаты таким образом, что можем их предоставлять также и незалогиненным и незарегистрированным пользователям. […]</p></blockquote>
<p>Специалисты Google также упомянули, каким образом они будут это делать, а именно с помощью cookie-файла, который будет храниться на компьютере пользователя в течение 180 суток.</p>
<h2>Искусство в теории</h2>
<h3>Стань, персонализация к кому-нибудь задом, а ко мне &#8211; передом</h3>
<p>В этой статье я расскажу, что такое Персонализированный Поиск и почему вебмастеры и специалисты SEO должны потратить немного времени на более подробное изучение вопроса &laquo;что может сделать SEO специалист, чтобы улучшить <strong>Оптимизацию Персонализированного Поиска</strong>?&raquo;</p>
<h3>Метрика пользовательской активности теперь пересонализирована</h3>
<p>Что такое <em>метрика пользовательской активности</em> (МПА)? Попросту говоря, МПА &#8211; это некий набор данных, который анализируется поисковыми системами для улучшения поиска. В этот набор может входить такая информация, как прошлые поисковые запросы, активность на сайте, пользовательские данные, информация о документе и т.д. Поисковая система пытается &laquo;познакомиться&raquo; со своим пользователем, узнать его предпочтения путем активного и пассивного сбора данных о том, что он делает в Интернете. </p>
<p>Не только то, какой выбор делает или какие действия производит пользователь c предоставленным ему результатом поиска (или с рекламой, которая показывается вместе с этим результатом), но и то, что он НЕ выбирает или то, с чем он производит минимальные действия, (показатель отказов) могут влиять на дальнейшие результаты поиска. Такие данные могут быть использованы для создания возможного прототипа будущей поисковой выдачи. В конечном итоге, при ранжировании результатов поиска будут использоваться как активные методы сбора данных, как взаимодействие с пользователем (в стиле популярного сайта <a href="http://www.digg.com">Digg.com</a>), так и пассивные (Google Desktop, Google тулбар, IP клиента, файлы cookie, учетная запись Google и т.д.).</p>
<p>Такое взаимодействие можно представить как диалог с несколькими участниками. Чем лучше себя ведет один из участников поисковой выдачи, тем лучше можно представить себе кто он такой и какую ценность он из себя представляет. Так, при понимания ранжирования в мире метрики пользовательской активности, мы пойдем по направлению к лучшему пониманию сущности страниц поисковой выдачи, а не только к тому, как бы скормить побольше ссылок и текстов с большой плотностью ключевых слов и заточенных под запрос тегов <strong>title</strong>. Появляются новые вызовы и преграды, к которым нужно относиться с уважением и которые нужно учитывать в новых правилах игры.</p>
<h3>Как использовать Персонализированный Поиск в своих инетересах</h3>
<p>На данном этапе нужно понять то, что действия не только одного, но множества пользователей (включая типы пользовательских групп) могут повлиять на то, в каком месте поисковой выдачи окажется сайт в конечном итоге. Потому, в этом новом мире нельзя сходу использовать ту же машину, которая использовать в мире SEO. Хотя, стоит отметить, что обычные для нас явления, такие как PR, не будут игнорироваться при новом ранжировании. Также нужно понять, что принципы Персонализированного Поиска (ПП) &#8211; это лишь очередные методы ранжирования, созданные, чтобы дополнить уже существующие. Это еще одна преграда, которую нужно преодолеть и которую необходимо учитывать. На что нам нужно будет еще обратить внимание, так это на то, какие области поисковой оптимизации и создания сайтов нужно улучшить, чтобы обойти те трудности, которые представляет собой работа над оптимизацией сайта для персонализированного поиска.</p>
<h3>Области применения</h3>
<p><strong>Демография</strong>: нужно учитывать все явные демографические факторы, применимые к проекту/сайту. Будь то фактор географический, тематический или возрастной, необходимо сделать все возможное, чтобы сайт был наиэффективнейшим образом направлен в соответствующее русло, т.к. именно тематическая натура персонализированного поиска может группировать результаты поиска еще до того, как эти результаты ранжируются. Если сайт невозможно определить ни в одну из вышеуказанных групп, он рискует потерять вес в пользу более узких демографических групп. Даже те действия, которые происходят вне сайта, будь то набор ссылочной массы или работа с социальными сетями, должны быть как можно более нацеленными на определенную группу пользователей.</p>
<p><strong>Профиль релевантности</strong>: также интерес представляет потенциальная категоризация с точки зрения тематической релевантности. Очень ценным было бы убедиться в том, что сайт как можно более релевантен тому или иному запросу (<em><strong>Прим. переводчика</strong>: мои познания СЕО говорят о том, что этот фактор очень важен и сейчас. Вообще, было бы бессмысленно отменять его, так как, как только поисковики по запросу &laquo;купить утюг&raquo;, будут предлагать в первых строчках даже гладильные доски, их /поисковики/ можно списывать на помойку.</em>) При более тщательной фильтрации результатов поиска, поисковая система анализирует также и тематически близкие результаты. Путем согласованных действий по усилению релевантности на сайте и вне его, вебмастер повышает вероятность попадания своего сайта в целевую группу результатов поиска в этом новом мире. </p>
<p>Нужно также представить себе, что сужение целевой группы сайта при социальном маркетинге также благотворно повлияет на сужение тематики ссылок. Более того, многие тематически настроенные посетители могут добавить сайт в свои закладки, что также повлияет на профиль данного сайта.</p>
<p><strong>Целевые ключевые слова / Стратегии словосочетаний</strong>: в продолжение темы о релевантности, руководствоваться основными терминами тематики сайта будет также важно, как и понимание принципов поиска. Много усилий может быть направлено на возможные уточнения поискового запроса в определенной подгруппе типов пользователей. Поиск логических продолжений релевантных слов и словосочетаний также принёс бы немало пользы. Более того, &laquo;персонализированное ранжирование&raquo; заставит нас измерять успех оптимизации текущим трафиком и конверсиями, что проливает новый свет на значение &laquo;таргетинг&raquo; (<em><strong>Прим переводчика</strong>: уже сейчас мало кого интересуют исключительно позиции в выдаче. Трафик &#8211; вот основной критерий успеха в интернете. В целом, автор статьи как в воду глядел…</em>).</p>
<p><strong>Качественный контент</strong>: этот фактор был и продолжает быть основным поставщиком веса сайта. При подсчете ценности сайта или страницы, действия пользователей отражаются в таких показателях как отказы, время, проведенное на странице, прокрутка и т.д. Публикация контента наивысшего качества станет важным усилием в попытках получить большую пользу из появляющихся тенденций системы. Если пользователь выбрал и произвел определенные действия с вашим сайтом в нескольких случаях, вашему сайту может быть присвоен больший вес в персональном ранжировании данного пользователя и пользовательской группы, в которую этот пользователь входит. Чем более эффективен опубликованный материал, тем больше будет увеличение веса ранжирования.</p>
<p><strong>Конверсия результатов поиска</strong>: те вебмастеры, которые умеют составлять конкурентоспособные названия (title) своих страниц и сниппеты, скорее всего, получат наивысшие показатели конверсии результатов поиска. Сайт, который на определенной странице результатов пользовательского поиска пользуется большей популярностью, чем его конкуренты, получит, соответственно, больший вес в будущем ранжировании. Работа над мета-тегами страницы (title, meta-description) и над сниппетами приобретает большую, чем ранее значимость в борьбе за посетителей. Осмелюсь предположить, что анализ статистики и разнообразные тесты и эксперименты станут большим подспорьем в определении факторов, которые влияют не только на ранжирование, но и на посещаемость.</p>
<p><strong>Свежесть</strong>: еще один фактор, который, как мне кажется, будет немаловажен &#8211; это свежесть используемых материалов. Этот фактор будет влиять на ранжирование в случаях, если пользователи будут устанавливать диапазон интересующих их дат для поиска информации или если бы система могла в пассивном режиме в посещаемых страницах пользователя рассмотреть тенденцию к просмотру более свежих материалов. У многих вебмастеров, возможно, была &laquo;денежная страничка&raquo;, которая находилась на хорошем счету у поисковых систем в течение года, но которая уже не получала так много трафика, как раньше. Можно было бы попробовать обновить содержимое такой страницы свежим материалом или же, с помощью внутренней перелинковки, перенаправить поток в нужное русло. В зависимости от происхождения контента и его тематики (или от профиля группы пользователей), более новый материал может быть популярнее прошлых материалов, таким образом, новый контент мог бы быть более весомым в целом.</p>
<p>Печать страницы/В закладки: некоторые аспекты системы могут также рассматривать учёт пользовательской активности на странице, в плане сохранения ее в пользовательских закладках и ее печати. Самый простой способ для этого, это создать конечному пользователю все условия для этого. Тут, однако, не следует забывать о том, что страницы, предназначенные для печати, могут попасть в разряд &laquo;дубликатов&raquo;, потому нужно убедиться в том, что они запрещены для индексирования.</p>
<p><strong>Удобство использования (Юзабилити)</strong>: как с точки зрения поискового робота, так и с точки зрения конечного пользователя, логическая структура сайта, которая понятна любому, также имеет высокий ранг важности. Действия, которые пользователь производит, находясь на определенном сайте, формируют &laquo;тему&raquo;, которая становится тематической точкой отсчета. Если похожие типы пользователей произвели похожие действия на этом сайте (сохранение сайта в закладках, печать страницы, навигация, подписка на RSS и т.д.), это придаст больший вес ранжирования целевым страницам внутри сообщества данного типа пользователей. Это, в свою очередь,  расширяет релевантность профиля сайта.</p>
<p><strong>Аналитика</strong>: мне кажется использование аналитики в попытках понимания потоков трафика как органического, так и купленного, понимание пути, по которому ходят пользователи на сайте, проблемных страниц, путей к конверсии и многого другого. Все эти данные будут иметь неимоверную значимость при работе с многочисленными факторами, которым суждено изменить мир SEO в мире метрики персонализированной активности. </p>
<p>&nbsp;</p>
<p>На этом, пожалуй, остановлюсь с переводом, так как считаю, что уже и так достаточно. Некоторые предсказания автора уже сбылись, некоторым еще, видимо, предстоит сбыться, а мы так и будем наблюдать, как поисковики наблюдают за нами.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/istusstvo-seo-v-realijah-personalizirovannogo-poiska.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#171;Фильтруй базар&#187; или учимся фильтровать текст &#8211; Уроки Mootools &#8211; Урок 9</title>
		<link>http://php.infoniac.ru/text-filtering-mootorial9.html</link>
		<comments>http://php.infoniac.ru/text-filtering-mootorial9.html#comments</comments>
		<pubDate>Mon, 16 Nov 2009 14:07:57 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[обработка текста]]></category>
		<category><![CDATA[строка]]></category>
		<category><![CDATA[текст]]></category>
		<category><![CDATA[уроки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=129</guid>
		<description><![CDATA[<p>Привет, люди планеты Земля! 1) хочу перед всеми извинится, если это кому-либо важно, за много месяxный перерыв... Мне стыдно!!!! Сам не ожидал, что так получится, но свадьба - дело тонкое, трудоемкое, которое требует много времени. Да, я женился, отдохнул, и готов к новым урокам. Еще, в качестве оправдания хочу сказать, что все это время я не забывал о блоге, своем не развитом, и хотя бы записывал идеи постов, которые, как мне кажется, окажутся полезными. Некоторые темы уже даже наполовину готовы, осталось только их дописать и опубликовать - всего ничего! Ну а пока, внимание! Смотрим на доску!</p>]]></description>
			<content:encoded><![CDATA[<p>Привет, люди планеты Земля! 1) хочу перед всеми извинится, если это кому-либо важно, за много месяxный перерыв&#8230; Мне стыдно!!!! Сам не ожидал, что так получится, но свадьба &#8211; дело тонкое, трудоемкое, которое требует много времени. Да, я женился, отдохнул, и готов к новым урокам. Еще, в качестве оправдания хочу сказать, что все это время я не забывал о блоге, своем не развитом, и хотя бы записывал идеи постов, которые, как мне кажется, окажутся полезными. Некоторые темы уже даже наполовину готовы, осталось только их дописать и опубликовать &#8211; всего ничего! Ну а пока, внимание! Смотрим на доску!</p>
<p>Если кто не заметил, я перешел от вручную написанного моим знакомым программистом движка на более популярный вордпрес. Это не означает, что ЦМСка моего знакомого не хороша &#8211; наоборот, она хороша тем, что она заточена под определенные действия, а именно под продвижение. Но, так как эту систему управления написал не я, я в ней совсем не разбираюсь, а дергать человека постоянно не хочу, решил перейти на вордпрес. Благо, по этой тематике в интернете много всего понаписано, да и просто покопаться в коде вордпреса тоже полезно для развития. Итак, все старые посты перекинуты, теперь все по-прежнему. Продолжаю публиковать уроки Mootools. Вот он следующий урок, о фильтрации текста.</p>
<p><span id="more-129"></span></p>
<h2>Функции обработки строк</h2>
<p>В этом уроке поговорим о том, какие возможности нам предоставляет библиотека Mootools при работе с данными в виде строк. Сразу нужно отметить, что то, что будет показано в этом уроке &#8211; это лишь ничтожная часть того, что Mootools может предоставить для работы со строками. В качестве небольшой иллюстрации можно привести функцию <strong>сamelCase()</strong>, которая переделывает текст <em>такого-типа</em> в текст <em>ТакогоТипа</em> (или любую другую функцию обработки текста, основанную на регулярных выражениях). Итак, в этом уроке мы пробежимся по основам работы с текстовыми строками, а потом углубимся дальше.</p>
<p>Перед тем, как мы продолжим, взглянем на то, как такие функции вызываются:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> my_text_variable <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Сюда вставляем текстовую строку&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//  результат            переменная с исходником.наименование функции</span>
<span style="color: #003366; font-weight: bold;">var</span> result_of_function <span style="color: #339933;">=</span> my_text_variable.<span style="color: #660066;">someStringFunction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Только ради большей эрудиции, следует отметить, что строковые функции можно вызывать и непосредственно с исходником:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> result_of_function <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Сюда вставляем текст&quot;</span>.<span style="color: #660066;">someStringFunction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Обратите внимание, что так же можно вызвать и функцию для обработки числа:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Обратите внимание на использование скобок</span>
<span style="color: #006600; font-style: italic;">//тогда как при работе со строками используются кавычки</span>
<span style="color: #003366; font-weight: bold;">var</span> limited_number <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">256</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">limit</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Также, хочет отметить вот что: Ява скрипты не должны вычищать пользовательский текст перед посылкой его на сервер для дальнейшей обработки. Все, что пишится на JavaScript может быть видно ВСЕМ посетителям страницы, эти скрипты можно включать/выключать, потому настоятельно рекоммендую не использовать JavaScript для обеспечения безопасности. Надеюсь не забуду провести небольшой дискурс по поводу безопасности с помощью PHP, когда мы дойдем до класса Mootools Request. И еще раз &#8211; <span style="color:#990000; font-weight:bold;">все скрипты обеспечивающие безопасность должны выполняться на сервере, подальше от пользователя, а не с помощью JavaScript и всего к нему относящемуся!!!</span></p>
<h3>trim()</h3>
<p>Функция <strong>trim()</strong> позволяет, как и в языке PHP, быстро и эффективно избавить строку от лишних пробелов и пустого пространсва по обеим сторонам.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Текст, который мы &quot;тримируем&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> text_to_trim <span style="color: #339933;">=</span>  <span style="color: #3366CC;">&quot;    <span style="color: #000099; font-weight: bold;">\n</span>Строка с ненужным пустым местом     &quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//  переменная trimmed_text стала такой: &quot;Строка с ненужным пустым местом&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> trimmed_text <span style="color: #339933;">=</span> text_to_trim.<span style="color: #660066;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Если  вы еще не сталкивались с таким символом, как &laquo;\n&raquo;, сообщаю, что этот символ соответствует новой строке (от англ. &laquo;<em>Newline</em>&laquo;). Этот символ можно использовать в тексте, который нужно разбить на строки. Такой символ, или разрыв строк, фунцией <strong>trim()</strong> считается как пустое пространство, потому от него функция тоже избавляется. Жаль только, что <strong>trim()</strong> не избавляет от пустого пространства внутри текста:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> trimDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//дадим тексту переменную</span>
	<span style="color: #003366; font-weight: bold;">var</span> text_to_trim <span style="color: #339933;">=</span>  <span style="color: #3366CC;">'            <span style="color: #000099; font-weight: bold;">\n</span>очень       много       белого<span style="color: #000099; font-weight: bold;">\n</span>              '</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//тримируем</span>
	<span style="color: #003366; font-weight: bold;">var</span> trimmed_text <span style="color: #339933;">=</span> text_to_trim.<span style="color: #660066;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Смотрим результат</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'До тримирования: <span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #339933;">+</span> 
		  <span style="color: #3366CC;">'|-'</span> <span style="color: #339933;">+</span> text_to_trim <span style="color: #339933;">+</span> <span style="color: #3366CC;">'-|<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #339933;">+</span>
		  <span style="color: #3366CC;">'После тримирования : <span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #339933;">+</span>  
	      <span style="color: #3366CC;">'|-'</span> <span style="color: #339933;">+</span> trimmed_text <span style="color: #339933;">+</span> <span style="color: #3366CC;">'-|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="trim">Тримирование</button></p>
<h3>clean()</h3>
<p>Понятно, заваливать весь текст пробелами &#8211; нехорошо. Потому, разработчики Mootools пошли навстречу тем, кто так считает. Функция <strong>clean()</strong> очистит не только пробелы и &laquo;пробело-образные&raquo; символы до и после текста, но и внутри него:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Текст для очистки</span>
<span style="color: #003366; font-weight: bold;">var</span> text_to_clean <span style="color: #339933;">=</span>  <span style="color: #3366CC;">&quot;    <span style="color: #000099; font-weight: bold;">\n</span>Текст     <span style="color: #000099; font-weight: bold;">\n</span>с      большим <span style="color: #000099; font-weight: bold;">\n</span> <span style="color: #000099; font-weight: bold;">\n</span>    количеством     <span style="color: #000099; font-weight: bold;">\n</span>пробелов  <span style="color: #000099; font-weight: bold;">\n</span>   &quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//  очищенный текст будет таким &quot;Текст с большим количеством пробелов&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> cleaned_text  <span style="color: #339933;">=</span> text_to_trim.<span style="color: #660066;">clean</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как показывает пример, функция <strong>clean()</strong> &#8211; это тотже <strong>trim()</strong>, только с возможностью чистки пробелов внутри текста. Таким образом, эта функция почистит весь текст от пробелов в количестве более 2-х поряд, и от всех табов (\t) и разрывов строк (\n). Давайте сравним результаты работы этих двух функций:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> cleanDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Прикрепляем исходник к переменной</span>
	<span style="color: #003366; font-weight: bold;">var</span> text_to_clean <span style="color: #339933;">=</span>  <span style="color: #3366CC;">'            слишком <span style="color: #000099; font-weight: bold;">\n</span>       много<span style="color: #000099; font-weight: bold;">\n</span>       пробелов              '</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Чистим</span>
	<span style="color: #003366; font-weight: bold;">var</span> cleaned_text <span style="color: #339933;">=</span> text_to_clean.<span style="color: #660066;">clean</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Выводим результат в окно alert()</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'До чистки : <span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #339933;">+</span> 
		  <span style="color: #3366CC;">'|-'</span> <span style="color: #339933;">+</span> text_to_clean <span style="color: #339933;">+</span> <span style="color: #3366CC;">'-|<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #339933;">+</span>
		  <span style="color: #3366CC;">'После чистки : <span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #339933;">+</span>  
	      <span style="color: #3366CC;">'|-'</span> <span style="color: #339933;">+</span> cleaned_text <span style="color: #339933;">+</span> <span style="color: #3366CC;">'-|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="clean">Чистка</button></p>
<h3>contains()</h3>
<p>Как и 2 предыдущие рассмотренные функции, функция Mootools <strong>clean()</strong> делает одну очень простую вещь, без особенностей и заморочек: она проверяет, содержиться ли в исходном тексте заданная строка. В качестве результата работы возвращается <strong>True</strong> если вхождения есть и <strong>False</strong> &#8211; если нет.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Строка с исходным текстом</span>
<span style="color: #003366; font-weight: bold;">var</span> string_to_match <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;В этом тексте ведем поиск?&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Ищем слово &quot;тексте&quot;, did_string_match возвращает true</span>
<span style="color: #003366; font-weight: bold;">var</span> did_string_match <span style="color: #339933;">=</span> string_to_match.<span style="color: #660066;">contains</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'тексте'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Ищем слово &quot;ужас&quot;, функция возвращает False</span>
did_string_match <span style="color: #339933;">=</span> string_to_match.<span style="color: #660066;">contains</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ужас'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Эта функция может пригодится во многих приложениях на Вашем сайте/блоге/сайте, особенно в комплексе с другими Mootools функциями. Например, если использовать функцию <strong>clean()</strong> с функцией <strong>each()</strong> для приминения пользовательской функции к каждому элементу массива (<a href="http://php.infoniac.ru/mootorial-arrays-day3.html" title="30 дневный курс подготовки юного бойца – Mootools 1.2 – Урок 3 – Массивы  30 дневный курс подготовки юного бойца – Mootools 1.2 – Урок 3 – Массивы">см. урок 3</a>), можно сделать довольно многое, засоряя лишь несколько строк. Например, если мы создадим некий массив слов, запрещенных к использованию в комментариях, можно просмотреть весь текст на предмет использования этих слов. При этом, используется не такая уж и большая фукнция:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	string_to_match <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;сюда вставляем любой текст, в котором нужно проводить поиски&quot;</span><span style="color: #339933;">;</span>
	word_array <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'слова'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'которые'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'нужно'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'найти'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Передаем каждое слово в качестве переменного аргумента функции</span>
	word_array.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>word_to_match<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//Поиск текущего слова</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>string_to_match.<span style="color: #660066;">contains</span><span style="color: #009900;">&#40;</span>word_to_match<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'было найдено слово'</span> <span style="color: #339933;">+</span> word_to_match <span style="color: #339933;">+</span> <span style="color: #3366CC;">'! НЕХОРОШО!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>На базе такого примера можно сотворить много чудесных скриптиков, как например такой инструмент, вылавливающий нецензурные и бранные слова или названия конкурентных товаров или брендов <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> containsDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>textAreaID<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Создаем список запрещенных слов</span>
	<span style="color: #003366; font-weight: bold;">var</span> banned_words <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'BMW'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Audi'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'Fererro Roche'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'хрень'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'херня'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'мудак'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
&nbsp;
	<span style="color: #006600; font-style: italic;">//берем содержимое тега textarea</span>
	<span style="color: #003366; font-weight: bold;">var</span> textarea_input <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>textAreaID<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//эта переменная будет отвечать за количество НЕ найденых совпадений</span>
    <span style="color: #006600; font-style: italic;">//чтобы можно было отблагодарить пользователей</span>
    <span style="color: #006600; font-style: italic;">//за чистоту речи, если вдруг такое случиться</span>
	<span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
   	<span style="color: #006600; font-style: italic;">//используя функцию each() пробегаем по каждому слову этого текста</span>
	banned_words.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>banned_word<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//ищем запрещенные слова указанные в списке</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>textarea_input.<span style="color: #660066;">contains</span><span style="color: #009900;">&#40;</span>banned_word<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">//Сообщаем пользователю, что такие плохие слова использовать очень плохо!</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Слово '</span> <span style="color: #339933;">+</span> banned_word <span style="color: #339933;">+</span> <span style="color: #3366CC;">' тут использовать нельзя!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #006600; font-style: italic;">//Если совпадение по очередному слову не найдено</span>
        <span style="color: #006600; font-style: italic;">//перемнная i увеличивается на 1</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #339933;">++</span>i<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//Если i ровняется количеству запрещенных слов, значит пользователь их не использовал</span>
    <span style="color: #006600; font-style: italic;">//Благодарим пользователя за чистоту речи</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">==</span>banned_words.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span> <span style="color: #000066;">alert</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Спасибо, что не используете ненависные нам слова! :) &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><textarea cols="70" rows="4" id="textarea_1">Как-то раз ехал на своем BMW на фабрику Fererro Roche и тут меня подрезает какой-то мудак на своем Audi. Я ему вдогонку кричу &laquo;Ты что за хрень вытворяешь, мудак!!! Что за херня!&raquo;</textarea><br />
<button id="contains">Проверка на запрещенные слова</button></p>
<p><textarea cols="70" rows="5" id="textarea_2" style="padding:5px;">Как-то раз ехал на своем автомобиле на фабрику одной известной компании по производству всяких разных сладостей и тут меня подрезает какой-то нехороший человек на своем автомобиле. Я ему вдогонку кричу &laquo;Ты что за нехорошую вещь вытворяешь, нехороший человек!!! Ну как же так?! Что за люди то неприличные!?!&raquo;</textarea><br />
<button id="contains2">Проверка на запрещенные слова</button></p>
<h3>substitute()</h3>
<p>Функция <strong>substitute()</strong> &#8211; это очень мощный инструмент несмотря на свою кажущююся простоту. Сегодня мы затронем лишь ее основы, но отметим, что основная мощь ее исходит из возможности использовать ее с регулярными выражениями, которые мы рассмотрим в последующих уроках. Однако, только лишь основные возможности этой функции уже позволяет немного поиздеваться над исходным текстом.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Это текст, который функция будет использовать</span>
<span style="color: #006600; font-style: italic;">//в качестве шаблона. Обращаю внимание, что слова, которые </span>
<span style="color: #006600; font-style: italic;">//нужно заменить, помещаются в фигурные скобки</span>
<span style="color: #003366; font-weight: bold;">var</span> text_for_substitute <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Майонез - это {один},  Кетчуп - это {два}, Горчица - это {три}.&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Далее содаем объекс, в котором содержаться правила замены</span>
<span style="color: #006600; font-style: italic;">//Слова справа, не помещенные в кавычки - это слова</span>
<span style="color: #006600; font-style: italic;">//которые будут заменены словами слева, помещенными</span>
<span style="color: #006600; font-style: italic;">//в кавычки</span>
<span style="color: #003366; font-weight: bold;">var</span> substitution_object <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	один<span style="color: #339933;">:</span> <span style="color: #3366CC;">'лучшая заправка для салата'</span><span style="color: #339933;">,</span> 
	два<span style="color: #339933;">:</span> <span style="color: #3366CC;">'соус, который хорошо подходит к мясу, особенно к шашлыку'</span><span style="color: #339933;">,</span> 
	три<span style="color: #339933;">:</span> <span style="color: #3366CC;">'такая замазка, иногда горькая, но в основном не очень. Хорошо  к мясу тоже подходит'</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//вызываем функцию substitute() с объектом, </span>
<span style="color: #006600; font-style: italic;">//в котором находятся шаблоны замены   </span>
<span style="color: #003366; font-weight: bold;">var</span> new_string <span style="color: #339933;">=</span> text_for_substitute.<span style="color: #660066;">substitute</span><span style="color: #009900;">&#40;</span>substitution_object<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #006600; font-style: italic;">//теперь наш текст выглядит вот так:</span>
<span style="color: #006600; font-style: italic;">//&quot;Майонез - это лучшая заправка для салата,</span>
<span style="color: #006600; font-style: italic;">//Кетчуп - это соус, который хорошо подходит к мясу, особенно к шашлыку,</span>
<span style="color: #006600; font-style: italic;">//Горчица - это такая замазка, иногда горькая, но в основном не очень. Хорошо  к мясу тоже подходит.&quot;</span></pre></div></div>

<p>Вообще не всегда обязательно нужно создавать объект с шаблонами, т.к. можно обойтись и таким кодом:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Создаем текст с отметками для замены</span>
<span style="color: #003366; font-weight: bold;">var</span> text_for_substitute <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;{это_нужно_заменить} и оригинальный текст&quot;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//А шаблон для замены в виде объекта можно передать функции substitute()</span>
<span style="color: #006600; font-style: italic;">//в виде параметра</span>
<span style="color: #003366; font-weight: bold;">var</span> result_text <span style="color: #339933;">=</span> text_for_substitute.<span style="color: #660066;">substitute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>это_нужно_заменить<span style="color: #339933;">:</span> <span style="color: #3366CC;">'Значение замены'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//результатом функции будет &quot;Значение замены и оригинальный текст&quot;</span></pre></div></div>

<p>Чем дальше, тем глубже! Вместо стандартных словоформ в кавычках (слова слева) можно использовать элементы DOMа, т.е. можно создавать более интерактивные приложения на сайте:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> substituteDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Берем оригинальный тест из соответствующего элемента DOM</span>
	<span style="color: #003366; font-weight: bold;">var</span> original_text <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'substitute_span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Определяем, чем будем заменять:</span>
	<span style="color: #006600; font-style: italic;">//а заменять мы будем текстом введеным в текстовое поле</span>
	<span style="color: #003366; font-weight: bold;">var</span> new_text <span style="color: #339933;">=</span> original_text.<span style="color: #660066;">substitute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		первый  <span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'first_value'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		второй <span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'second_value'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		третий  <span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'third_value'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'value'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Заменяем первоначальный текст на новый</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'substitute_span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> new_text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
	<span style="color: #006600; font-style: italic;">//Отключаем кнопку замены и включаем кнопку сброса</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'simple_substitute'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'simple_sub_reset'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> substituteReset <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Создаем переменную для первоначального текста</span>
	<span style="color: #003366; font-weight: bold;">var</span> original_text <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;|- {first} -- {second} -- {third} -|&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Заменяем текст в соответствующем элементе на первоначальный </span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'substitute_span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> original_text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Выключаем кнопку сброса и включаем кнопку замены</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'simple_sub_reset'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'simple_substitute'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="substitute_span">|- {первый} — {второй} — {третий} -|</span></p>
<p>Первая замена:</p>
<input type="text" size="6" id="first_value" />
Вторая замена:</p>
<input type="text" size="6" id="second_value" />
Третья замена:</p>
<input type="text" size="6" id="third_value" />
<button id="simple_substitute">Замена</button><button id="simple_sub_reset">Сброс</button></p>
<p>И, напоследок, еще немного теории. При приминении функции <strong>substitute()</strong> к строке, всегда нужно предоставлять функции объект со всеми парами &laquo;ключ : значение&raquo;, так как иначе функция просто удалит все, что найдет между фигурными скобками (включая сами фигурные скобки). Потому, будьте остарожны, при использовании такой строки в качестве полигона действий:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;{раз} блаблабла {два} и пусть бе-бе-бе&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">substitute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>раз <span style="color: #339933;">:</span> <span style="color: #3366CC;">'текст на замену'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>, в конечном итоге получится <button id="last_warning">вот что</button></p>
<p>
<script language="javascript1.1" type="text/javascript">
var trimDemo = function(){
	var text_to_trim =  '            \nочень       много       белого\n              ';
	var trimmed_text = text_to_trim.trim();
	alert('До тримирования: \n' + 
		  '|-' + text_to_trim + '-|\n\n' +
		  'После тримирования : \n' +  
	      '|-' + trimmed_text + '-|');
}

var cleanDemo = function(){
	var text_to_clean =  '            слишком \n       много\n       пробелов              ';
	var cleaned_text = text_to_clean.clean();
	alert('До чистки : \n' + 
		  '|-' + text_to_clean + '-|\n\n' +
		  'После чистки : \n' +  
	      '|-' + cleaned_text + '-|');
}

var containsDemo = function (textAreaID){
	var banned_words = ['BMW', 'Audi', 'Fererro Roche', 'хрень', 'херня', 'мудак'];	
	var textarea_input = $(textAreaID).get('value');
	var i = 0;
	banned_words.each(function(banned_word){
		if (textarea_input.contains(banned_word)){
			alert('Слово ' + banned_word + ' тут использовать нельзя!');
		}
		else ++i;
	});
	if (i==banned_words.length) alert ("Спасибо, что не используете ненависные нам слова! :) ");
}

var substituteDemo = function(){
	var original_text = $('substitute_span').get('html');
	var new_text = original_text.substitute({
		первый  : $('first_value').get('value'),
		второй : $('second_value').get('value'),
		третий  : $('third_value').get('value'),
	});
	$('substitute_span').set('html', new_text);
	$('simple_substitute').set('disabled', true);
	$('simple_sub_reset').set('disabled', false);
}
 
var substituteReset = function(){
	var original_text = "|- {первый} -- {второй} -- {третий} -|";
	$('substitute_span').set('html', original_text);
	$('simple_sub_reset').set('disabled', true);
	$('simple_substitute').set('disabled', false);
	var textFields = $$('input');
	$each(textFields, function(item){
		item.set('value', '');
	})
}

var lastWarning = function (){
	alert(("{раз} блаблабла {два} и пусть бе-бе-бе").substitute({раз : 'текст на замену'}));
}

window.addEvent('domready', function(){
	$('trim').addEvent('click', trimDemo);
	$('clean').addEvent('click', cleanDemo);
	$('contains').addEvent('click', function(){
		containsDemo('textarea_1');
		});
	$('contains2').addEvent('click', function(){
		containsDemo('textarea_2');
		});
	$('simple_substitute').addEvent('click', substituteDemo);
	$('simple_sub_reset').addEvent('click', substituteReset);
	$('last_warning').addEvent('click', lastWarning);
})
</script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/text-filtering-mootorial9.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools &#8211; Урок 8 &#8211; Учимся фильтровать числа</title>
		<link>http://php.infoniac.ru/mootools-filtering-numbers.html</link>
		<comments>http://php.infoniac.ru/mootools-filtering-numbers.html#comments</comments>
		<pubDate>Fri, 24 Jul 2009 14:40:24 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[уроки]]></category>
		<category><![CDATA[фильтрация]]></category>
		<category><![CDATA[числа]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=125</guid>
		<description><![CDATA[<p>Продолжаем наши уроки Mootools и сегодня рассмотрим, как можно использовать Mootools для фильтрации пользовательских данных. Начнем с простой фильтрации чисел, а потом продолжим с фильтрацией текстовых строк в следующем уроке. </p>
<p><strong>Примечание</strong>:Фильтрация входящих данных в Javascript используется для того, чтобы обеспечить нормальную работу ваших скриптов. Не нужно использовать ее для полной замены серверной фильтрации, которая используется для защиты приложений от внешних атак.</p>]]></description>
			<content:encoded><![CDATA[<p>
<script type="text/javascript">
var changeColor_1 = function(red_value, green_value, blue_value){
	var color = [red_value, green_value, blue_value].rgbToHex(); 
	alert('Конвертируется в : ' + color); 
}

var changeColor_2 = function(red_value, green_value, blue_value){
	red_value = red_value.toInt();
	green_value = green_value.toInt();
	blue_value = blue_value.toInt();
	
	if ($type(red_value)   != 'number'){red_value = 0;}
	if ($type(green_value) != 'number'){green_value = 0;}
	if ($type(blue_value)  != 'number'){blue_value = 0;}
	
	var color = [red_value, green_value, blue_value].rgbToHex(); 
	alert('Converts to : ' + color); 
}

var changeColor_3 = function(red_value, green_value, blue_value){
	red_value   = red_value.toInt();
	green_value = green_value.toInt();
	blue_value  = blue_value.toInt();
	
	if ($type(red_value)   != 'number'){red_value = 0;}
	if ($type(green_value) != 'number'){green_value = 0;}
	if ($type(blue_value)  != 'number'){blue_value = 0;}
	
	red_value   = red_value.limit(0, 255);
	green_value = green_value.limit(0, 255);
	blue_value  = blue_value.limit(0, 255);
	
	var color = [red_value, green_value, blue_value].rgbToHex(); 
	alert('Конвертируется в : ' + color); 
}

var toIntDemo_1 = function(make_me_a_number){
	var number = make_me_a_number.toInt();
	alert ('Что получилось : ' + number);
}

var checkType = function(variable_to_check){
	var variable_type = $type(variable_to_check);
	alert("Данные являются типом : " + variable_type);
}

var toIntDemo_2 = function(make_me_a_number){
	var number = make_me_a_number.toInt();
	if ($type(number) != 'number'){number = 0;}
	alert('Что получилось : ' + number);
}


var limitDemo = function(number_to_limit){
	number_to_limit = number_to_limit.toInt();
	
	var limited_number = number_to_limit.limit(0, 255);
	alert("Ограничиваем до : " + limited_number);
}

window.addEvent('domready', function(){
	//1й пример
	$('change_color_1_good').addEvent('click', function(){changeColor_1('54', '41', '18')});
	$('change_color_1_bad' ).addEvent('click', function(){changeColor_1('54', '41', 'опля')});
	
	//2й
	$('to_int_1').addEvent('click', function(){toIntDemo_1('613.234')});
	$('to_int_2').addEvent('click', function(){toIntDemo_1('83_ура!')});
	$('to_int_3').addEvent('click', function(){toIntDemo_1('а_нет_ли_тут_83?')});
	
	//3й
	$('type_number' ).addEvent('click', function(){checkType(43)});
	$('type_string' ).addEvent('click', function(){checkType('a string')});
	$('type_boolean').addEvent('click', function(){checkType(false)});

	
	//4й
	$('to_int_4').addEvent('click', function(){toIntDemo_2('613.234')});
	$('to_int_5').addEvent('click', function(){toIntDemo_2('83_hooray!')});
	$('to_int_6').addEvent('click', function(){toIntDemo_2('cant_get_83')});
	
	//5й
	$('change_color_2_clean'  ).addEvent('click', function(){changeColor_2('28', '17', '47')});
	$('change_color_2_default').addEvent('click', function(){changeColor_2('28', '17', 'oops')});
	$('change_color_2_breaks' ).addEvent('click', function(){changeColor_2('428', '317', '265000')});

	//6й
	$('limit_demo').addEvent('click', function(){limitDemo(6535634);});
	
	//7й
	$('change_color_3_clean'  ).addEvent('click', function(){changeColor_3('28', '17', '47')});
	$('change_color_3_default').addEvent('click', function(){changeColor_3('28', '17', 'oops')});
	$('change_color_3_limit' ).addEvent('click', function(){changeColor_3('428', '317', '265000')});
});
</script>
</p>
<p>Привет, люди!</p>
<p>Продолжаем наши уроки Mootools и сегодня рассмотрим, как можно использовать Mootools для фильтрации пользовательских данных. Начнем с простой фильтрации чисел, а потом продолжим с фильтрацией текстовых строк в следующем уроке. </p>
<p><strong>Примечание</strong>:Фильтрация входящих данных в Javascript используется для того, чтобы обеспечить нормальную работу ваших скриптов. Не нужно использовать ее для полной замены серверной фильтрации, которая используется для защиты приложений от внешних атак.</p>
<p><span id="more-125"></span></p>
<h2>Числа</h2>
<p>Помните, в <a href="http://php.infoniac.ru/mootools-tutorial-day-4-functions.html">4-м уроке</a> мы брали значения текстовых полей, отображающих RGB значения цветов, и использовали их для замены фонового цвета страницы, а сегодня мы снова возьмем за основу этот код, приделав к нему небольшие модификации.</p>
<h3>rgbToHex()</h3>
<p>С точки зрения структуры, функция rgbToHex() принадлежит коллекции функции для работы с массивами. Но, т.к. эта функция для работы с числовыми массивами, мы будем рассматривать ее именно в этом уроке. С точки зрения предназначения и использования, функция rbgtoHex() вполне проста:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> changeColor<span style="color: #009900;">&#40;</span>red_value<span style="color: #339933;">,</span> green_value<span style="color: #339933;">,</span> blue_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  	<span style="color: #003366; font-weight: bold;">var</span> color <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>red_value<span style="color: #339933;">,</span> green_value<span style="color: #339933;">,</span> blue_value<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">rgbToHex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Конвертируется в : '</span> <span style="color: #339933;">+</span> color<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
     changeColor<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'5'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'41'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'18'</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p><button id="change_color_1_good" class="demo_button">changeColor(&#8217;54&#8242;, &#8216;41&#8242;, &#8216;18&#8242;);</button></p>
<p>Этот код идеально работает, если передавать в качестве аргументов цифры. Посмотрите, как поведет себя браузер, когда вместо одного из аргументов мы передадим текст:</p>
<p><button id="change_color_1_bad" class="demo_button">changeColor(&#8217;54&#8242;, &#8216;41&#8242;, &#8216;опля&#8217;);</button></p>
<p>&laquo;Nan&raquo; виднеющийся в конце сообщения имеет значение <strong>N</strong>ot <strong>a</strong> <strong>N</strong>umber (Не Число). Если именно вы вводите вручную массив цифр для значения цвета, такой ошибки может вы и не увидите. Но если используется какой-либо внешний источник, очень вероятно, что придется частенько почитывать такие ошибочки.</p>
<h3>toInt()</h3>
<p>Теперь нам нужно убедиться в том, что фукнция <strong>rgbToHex()</strong> получает в качестве аргумента, именно числа, а не данные в каком-либо другом формате. Для этого мы можем использовать функцию <strong>toInt()</strong> &#8211; это еще одна относительно простая и понятная функция. Ей можно передать любую переменную, а она позаботится о том, чтобы извлеч из данных этой переменной число.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> toIntDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>make_me_a_number<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> number <span style="color: #339933;">=</span> make_me_a_number.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">alert</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Что получилось : '</span> <span style="color: #339933;">+</span> number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="to_int_1">toIntDemo(’613.234&#8242;)</button><br />
<button id="to_int_2">toIntDemo(’83_ура!’)</button><br />
<button id="to_int_3">toIntDemo(’а_нет_ли_тут_26?&#8217;)</button></p>
<p>Ну вот! Как видно, toInt() несправляется с каждой неоднозначной ситуацией, но, благодяра другой классной вещи в Mootools, которая называется $type(), мы можем спокойно разобраться и с этой проблемкой!</p>
<h3>$type()</h3>
<p><strong>$type()</strong> &#8211; это еще одна вкусняшка нашей любимой библиотеки. Она анализирует переданную ей перменную и возвращает текстовую строку с названием типа данных, которому придлажала переменная. Что-то я тут запутал&#8230; Лучше разюерем на примере:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> checkType <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>variable_to_check<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> variable_type <span style="color: #339933;">=</span> $type<span style="color: #009900;">&#40;</span>variable_to_check<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Данные являются типом : &quot;</span> <span style="color: #339933;">+</span> variable_type<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="type_number" class="demo_button">checkType(43)</button><button id="type_string" class="demo_button">checkType(’a string’)</button><button id="type_boolean" class="demo_button">checkType(false)</button><br /><br />
<br /></p>
<p>На самом деле, <strong>функция $type()</strong> не ограничивается определением этих трех типов данных. <strong>$type()</strong> возвращает следующие значения в текстовой форме:</p>
<ul>
<li>&#8216;element&#8217; &#8211; Если переданный объект является элементом DOMa</li>
<li>&#8216;textnode&#8217; &#8211; текстовый элемент DOMa.</li>
<li>&#8216;whitespace&#8217; &#8211; пустое пространство DOMa.</li>
<li>&#8216;arguments&#8217; &#8211; аргумент.</li>
<li>&#8216;array&#8217; &#8211; массив.</li>
<li>&#8216;object&#8217; &#8211; объект.</li>
<li>&#8217;string&#8217; &#8211; текстовая строка.</li>
<li>&#8216;number&#8217; &#8211; число.</li>
<li>&#8216;date&#8217; &#8211; дата.</li>
<li>&#8216;boolean&#8217; &#8211; булев тип.</li>
<li>&#8216;function&#8217; &#8211; функция.</li>
<li>&#8216;regexp&#8217; &#8211; регулярной выражение.</li>
<li>&#8216;class&#8217; &#8211; класс (созданный с помощью new Class или является расширением другого класса).</li>
<li>&#8216;collection&#8217; &#8211; когда переданный объект &#8211; это набор из html-элементов, как при вызове <strong>childNodes</strong>, <strong>getElementsByTagName</strong>, и т.д.</li>
<li>&#8216;window&#8217; &#8211; окно.</li>
<li>&#8216;document&#8217; &#8211; документ.</li>
<li>false &#8211; (<em>булев тип</em> &#8211; единственный в своем роде при использовании <strong>$type()</strong>) Возвращается тогда, когда объект имеет тип undefined, null, NaN или ни один ииз вышеперечисленных.</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> toIntDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>make_me_a_number<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//попробуем сделать число из введенного текста</span>
	<span style="color: #003366; font-weight: bold;">var</span> number <span style="color: #339933;">=</span> make_me_a_number.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Если это не срабатывает, устанавливаем число ноль (0)</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>number <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Что получилось : '</span> <span style="color: #339933;">+</span> number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>  <button id="to_int_4">toIntDemo_2(’613.234?)</button><br />
  <button id="to_int_5">toIntDemo_2(’83_Ё_моЁ!’)</button><br />
  <button id="to_int_6">toIntDemo_2(’а_что_если_83?)</button></p>
<p>Если соединить все это воедино, получиться <strong>почти</strong> идеальная версия нашего скрипта по конвертированию цветов из формата RGB в шестнадцатиричный код &#8211; changeColor():</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> changeColor_2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>red_value<span style="color: #339933;">,</span> green_value<span style="color: #339933;">,</span> blue_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Убедимся в том, что у нас все данные - числа</span>
&nbsp;
    red_value <span style="color: #339933;">=</span> red_value.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    green_value <span style="color: #339933;">=</span> green_value.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    blue_value <span style="color: #339933;">=</span> blue_value.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//Устанавливаем значения по умолчанию на всё, что не является числом</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>red_value<span style="color: #009900;">&#41;</span>   <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>red_value <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>green_value<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>green_value <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> 
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>blue_value<span style="color: #009900;">&#41;</span>  <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>blue_value <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #006600; font-style: italic;">//Вычисляем шестнадцатиричное значение</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> color <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>red_value<span style="color: #339933;">,</span> green_value<span style="color: #339933;">,</span> blue_value<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">rgbToHex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Конвертируется в : '</span> <span style="color: #339933;">+</span> color<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="change_color_2_clean">changeColor(&#8217;208&#8242;, &#8216;127&#8242;, &#8216;74&#8242;);</button><br />
<button id="change_color_2_default">changeColor(&#8217;82&#8242;, &#8216;7&#8242;, &#8216;скунс&#8217;);</button><br />
<button id="change_color_2_breaks">changeColor(&#8217;522&#8242;, &#8216;847&#8242;, &raquo;);</button></p>
<p>Обратите внимание, что последняя кнопка передает числа куда более высокие, чем могут приминать цвета в формате RGB (0-255), а это, нужно сказать, делает шестнадцатиричное число не особо пригодным для обозначения цветов. К сожалению, это означает, что если мы получим число большее или меньшее диапазона 0-255, мы не получим шестнадцатиричного значения цвета. К счастью, Mootools поможет нам забыть и об этой проблеме.</p>
<h3>limit()</h3>
<p>Функция <strong>limit()</strong> не выдиляется сложностью, т.к. этим словом ее охарактеризовать нельзя. Она помогает удержать числа в заданном диапазоне:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//вызываем функцию</span>
limit<span style="color: #009900;">&#40;</span>n1<span style="color: #339933;">,</span> n2<span style="color: #009900;">&#41;</span>
<span style="color: #006600; font-style: italic;">//где n1 наименьшее число требуемого диапазона</span>
<span style="color: #006600; font-style: italic;">// а n2 - наивысшее</span></pre></div></div>

<p>Ничего сложного! Елинственное &laquo;но&raquo;, это то, что нужно иметь ввиду, что функция предполагает, что <em>n1</em> и <em>n2</em> &#8211; это числа. Поэтому крайне рекомендуется применять <strong>toInt()</strong> к данным, которые предположительно являются числами и которые предствоит передавать в функцию <strong>limit()</strong> (или любую другую функцию для работы с числами).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> limitDemo <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>number_to_limit<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Получаем число</span>
&nbsp;
	number_to_limit <span style="color: #339933;">=</span> number_to_limit.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//получаем число из требуемого диапазона</span>
	<span style="color: #003366; font-weight: bold;">var</span> limited_number <span style="color: #339933;">=</span> number_to_limit.<span style="color: #660066;">limit</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Ограничиваем до : &quot;</span> <span style="color: #339933;">+</span> limited_number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>  <button id="limit_demo">limitDemo(6535634);</button></p>
<h3>А вот и полный рецепт</h3>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> changeColor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>red_value<span style="color: #339933;">,</span> green_value<span style="color: #339933;">,</span> blue_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Убеждаемся, что все данные у нас - это числа</span>
&nbsp;
	red_value   <span style="color: #339933;">=</span> red_value.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	green_value <span style="color: #339933;">=</span> green_value.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	blue_value  <span style="color: #339933;">=</span> blue_value.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Устанавливаем значения по умолчанию на все, что не является числом</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>red_value<span style="color: #009900;">&#41;</span>   <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>red_value <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>green_value<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>green_value <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$type<span style="color: #009900;">&#40;</span>blue_value<span style="color: #009900;">&#41;</span>  <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'number'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>blue_value <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Ограничиваем все до диапазона значений RGB (0 - 255)</span>
&nbsp;
	red_value   <span style="color: #339933;">=</span> red_value.<span style="color: #660066;">limit</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	green_value <span style="color: #339933;">=</span> green_value.<span style="color: #660066;">limit</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	blue_value  <span style="color: #339933;">=</span> blue_value.<span style="color: #660066;">limit</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//Конвертируем в шестнадцатиричную систему</span>
	<span style="color: #003366; font-weight: bold;">var</span> color <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>red_value<span style="color: #339933;">,</span> green_value<span style="color: #339933;">,</span> blue_value<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">rgbToHex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Converts to : '</span> <span style="color: #339933;">+</span> color<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="change_color_3_clean" class="demo_button">changeColor(’28&#8242;, &#8216;17&#8242;, &#8216;47&#8242;);</button><button id="change_color_3_default" class="demo_button">changeColor(&#8217;28&#8242;, &#8216;17&#8242;, &#8216;oops&#8217;);</button><button id="change_color_3_limit" class="demo_button">changeColor(’428&#8242;, &#8216;317&#8242;, &#8216;265000&#8242;);</button></p>
<p>Обратите внимание, что функция <strong>.rgbToHex()</strong> нигде не принимает никаких атрибутов. Это все потому, что эта функция может принять 2 атрибута булев типа: <em>true</em>, <em>false</em>. По умолчанию установлен <em>false</em>, что и возвращает нам строку в таком виде, в котором она нам нужна для вставки в атрибут цвета, т.е. &laquo;#000000&#8243;. Если же передать атрибут <em>true</em>, функция вернет данные в виде массива.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-filtering-numbers.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Учимся работать в XAP.RU</title>
		<link>http://php.infoniac.ru/learn-to-work-in-xap-ru.html</link>
		<comments>http://php.infoniac.ru/learn-to-work-in-xap-ru.html#comments</comments>
		<pubDate>Mon, 20 Jul 2009 07:25:33 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Фриланс]]></category>
		<category><![CDATA[xap]]></category>
		<category><![CDATA[заработок в интернете]]></category>
		<category><![CDATA[заработок дома]]></category>
		<category><![CDATA[размножение текстов]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=135</guid>
		<description><![CDATA[Решил немного отвлечься от программирования и заняться небольшим фрилансом в системе xap.ru, а именно рерайтом текстов за местный деньги &#8211; ксапы. Будучи новичком там, не особо что понимал, спотыкался, получал плохие оценки, задания не принимались модераторами, в итоге &#8211; плохой рейтинг, нет оплаты и потраченные нервные клетки. Вот и решил  попробовать объяснить всем, кого [...]]]></description>
			<content:encoded><![CDATA[<p>Решил немного отвлечься от программирования и заняться небольшим фрилансом в системе <strong>xap.ru</strong>, а именно рерайтом текстов за местный деньги &#8211; ксапы. Будучи новичком там, не особо что понимал, спотыкался, получал плохие оценки, задания не принимались модераторами, в итоге &#8211; плохой рейтинг, нет оплаты и потраченные нервные клетки. Вот и решил  попробовать объяснить всем, кого это может заинтересовать, как делать первые шаги при работе с <strong>генератором текстов xap.ru</strong>.</p>
<p><span id="more-135"></span></p>
<p>Только что взял задание с таким описанием (оно довольно стандартно для заданий по составлению вариантов текста, поэтому и используем его как общее)</p>
<p>&laquo;Заказ на размножение от системы. Для каждого предложения [в квадратных скобках] нужно<br /><br />
  составить через знак | минимум по 6 рерайтов с изменением структуры предложения.<br /><br />
  Рерайты одного и того же предложения должны начинаться и заканчиваться по-разному,<br /><br />
  желательно изменять форму слов, склонения в разных рерайтах, не использовать одинаковую<br /><br />
  последовательность слов. В каждом из этих шести рерайтов должно быть минимум по 85 вариантов<br /><br />
  (максимум по 1000).Не забывайте предварительно дробить длинные предложения на несколько!<br /><br />
  Предложения более 15 слов не нужны.&raquo;</p>
<p>Теперь попробую перевести это с языка разработчиков системы на язык более приближенный к русскому:<br /><br />
  Используя спец. знаки &laquo;[|].&raquo; (квадратные скобки и вертикальный разделитель) для разделение предложений составляем варианты отдельных предложений, при этом разбивая длинные предложения (&gt; 15 слов) на короткие (&lt; 15 слов).</p>
<p><img src="/wp-content/uploads/panel.jpg" alt="панель исполнителя xap.ru" align="left">Итак, задание есть, мы его взяли, теперь у нас есть <strong>4 (четыре) часа</strong> на его выполнение. Заходим в панель исполнителя, находим ссылку &laquo;Мои задания&raquo; и переходим к списку с текущими заданиями. Кликаем по нужному и заходим уже, собственно, в один из самых главных инструментов xap.ru &#8211; генератор рерайтов. Тут у нас есть 4 закладки: &laquo;Задание&raquo;, &laquo;Работа над заданием&raquo;, &laquo;Сгенерированные тексты&raquo; и &laquo;Отправить на модерацию&raquo;.</p>
<p>В первой закладке выложено само задание, полный текст рерайта (т.е. реально полный текст из которого взят фрагмент, который и нужно рерайтить) для ознакомления и его рерайтить не нужно, а также комментарии заказчика. Комментарии могут быть разные &#8211; от &laquo;старайтесь использовать ключевые слова такие то&raquo;, до &laquo;хотелось бы чтобы такие то слова были разбросаны более тщательно по тексту&raquo;.</p>
<p align="center"><img src="/wp-content/uploads/panel1.jpg" alt="панель исполнителя xap.ru" align="center" width="600"/></p>
<p><br clear="all"></p>
<p>Далее переходим в закладку выполнения задания, где мы и начинаем работать над ним, используя спец. знаки, указанные ранее. В связи с этими специальными знаками, обращаю внимание на то, что знак точки (или любой другой знак окончания предложения) ставится уже <strong>ЗА</strong> закрывающей квадратной скобкой, т.е. посла составления ВСЕХ вариантов одного предложения, при этом внутри квадратных скобок знаков типа точки быть не должно вообще. Как я недавно узнал, разбивать отдельные варианты предложения на предложения более мелкие также крайне нежелательно, а лучше вообще не делать (хотя сам я, честно говоря, не понимаю почему).</p>
<p>Я обычно делаю минимально требуемое количество вариантов предложения, т.е. 6 в данном случае. Заключаем все 6 вариантов в спец символы, вот так:</p>
<pre class="code">[Вариант1|
  Вариант2|
  Вариант3|
  Вариант4|
  Вариант5|
  Вариант6]</pre>
<p>Каждый вариант начинаем с новой строки, чтоб абры-кадабры не было. Чуть позже будет больше понимания, где, что находится <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Из учета всех комментариев и отклоненных заданий, которые у меня были в <strong>системе xap.ru</strong>, могу сказать, что все 6 вариантов должны как можно сильнее отличаться друг от друга, т.к. модераторам тамошним не угодить <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  очень сильно придираются ко всему. Лучше всего использовать разные словоформы, чтобы уже в вариантах можно было использовать совсем разные синонимы &#8211; это важный пункт для хорошего рейтинга.</p>
<p>Небольшое отступление: недавно выполнил рерайт, написал текст, проверил, отправил. В ответ оценка 7 с комментарием &laquo;Опечатки&raquo;. Я еще раз проверил, еще раз сбросил в Ворд, попросил жену проверить&#8230; мы, безграмотные, опечаток не нашли (у меня они могут быть, я знаю, потому и проверял как можно тщательнее), отправил сообщение на форум сервиса, с просьбой к модератору, указать мне опечатки. Оказалось, что если смотреть на уже выполненное и отмодерированное задание, то там опечаток не будет, так как там откорректированное модером задание, а не тот текст, что мы отсылаем!!! Так что будьте внимательны с гневом, если что <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Обратно к теме. При составлении рерайтов, в задании чаще всего требуются минимум 6 вариантов, по 85 каждый. Это означает, что из каждого варианта система предлагает составить 85 вариантов посредством синонимов слов, которые заключаем в спец. символы &laquo;{|}&raquo; (в фигурных скобках указывать близкие по смыслу слова/словосочетания/варианты построения предложения, разделяя их вертикальным разделителем). Т.е. это должно выглядеть примерно так:</p>
<pre class="code">[Слово1 {слово2|синоним1|синоним2|синоним2} слово3 слово4|
  Слово1 слово2 слово3 {слово4|синоним1|синоним2|синоним3}|
  Слово1 {слово2|синоним1|синоним2|синоним3|синоним4} слово3 слово4|
  {Слово1|синоним1|синоним2|синоним3|синоним4} слово2 слово3 слово4|
  Слово1 слово2 {слово3||синоним1|синоним2|синоним3|синоним4} слово4|
  Слово1 {слово2|синоним1|синоним2|синоним3|синоним4} слово3 слово4]</pre>
<p>Для спец. символов можно использовать специальные кнопки на панели исполнителя (они видны на рисунке ниже) или же постоянно переключать раскладку клавиатуры, чтобы проставлять символы там, где надо. Частенько выпадает из внимания тот или иной символ и если упустить один (например, не закрыть фигурную скобку для синонимов) &#8211; это минус в рейтинге, а это не хорошо.</p>
<p>Еще советую убрать галочку с подсветки (при импорте текста из другой программы, типа ворда &#8211; текст убивается; плюс функция кушает бессмысленно память компа, как мне кажется&#8230; с другой стороны иногда и полезно видеть все спец. символы в цвете). Также рекомендую поставить галочку на подсчет вариантов &laquo;налету&raquo;, т.к. удобно постоянно контроллировать количество вариантов каждого рерайта (показано на рисунке, под текстовым полем на синем фоне).</p>
<p align="center"><img src="/wp-content/uploads/panel2.jpg" width="500px" alt="панель исполнителя xap.ru" align="center"></p>
<p><br clear="all"></p>
<p>В закладке &laquo;Сгенерированные варианты&raquo; можно посмотреть сгенерированные уникальные варианты текстов, которые были сделаны в соответствии со схемой [вариант1|вариант2|...]. Генерировать варианты обязательно, т.к. при генерации система подсчитывает количество сделанных уникальных вариантов и сравнивает с заданием. Если вариантов меньше, чем указано в задании, его даже не получится отправить на модерацию в следующей закладке.</p>
<p align="center"><img src="/wp-content/uploads/panel2.jpg" alt="панель исполнителя xap.ru" width="600px" align="center"></p>
<p><br clear="all"></p>
<p>Ну а в последней вкладке можно отправить задание на модерацию, если конечно было сгенерировано достаточное количество вариантов текста в предыдущей вкладке.</p>
<p><strong>UPD:</strong> Через неделю вспомнил еще один небольшой, но важный момент &#8211; перед тем, как продлить задание или сохранить его в черновик, ОБЯЗАТЕЛЬНО скопируйте весь текст в буфер обмена (Ctrl+C). Например, если вносить текст в поле генератора из сторонней программы, например из Ворда, то текст просто слетает!</p>
<p>В принципе, это, наверное, и есть то основное, что нужно знать человеку, который решил немного <strong>подзаработать в системе xap.ru</strong>. Все что нужно &#8211; это <strong>зарегистрироваться в xap.ru</strong> и можно начинать зарабатывать, причем сразу несколькими способами: размещением ссылок на сайте, выполнением различных заданий системы из таких категорий как &laquo;Составление семантического ядра&raquo;, &laquo;Размножение текстов&raquo; (самая распространенная категория), &laquo;Составление анкоров&raquo;, &laquo;Написание тематических текстов&raquo; и т.д.</p>
<p>А теперь, главное но: для регистрации, понадобится <strong>инвайт-код xap.ru</strong>. Инвайт-коды были введены после того, как система прошла первоначальное тестирование, потому теперь не каждый может зарегистрироваться на сайте, а <strong>регистрация по инвайт-кодам</strong> позволяет контролировать количество и качество участников.</p>
<p>Если Вы хотите <strong>зарегистрироваться на xap.ru</strong> напишите мне на e-mail, указанный в контактах, указав тему &laquo;xap&raquo;. Я вышлю код и проинструктирую Вас в дальнейших действиях.</p>
<p>Почему лучше получить инвайт у меня лично, а не по ссылке, на многочисленных сайтах?</p>
<p>Да потому, что пройдя по ссылке вы окажетесь мальком в океане без необходимых знаний и опыта работы в системе xap.ru. Я Вам помогу разобраться в системе и буду помогать разбираться и далее, отвечая на возникающие вопросы, что бы Вы не шли на форум, где вас буду игнорировать или отшивать модераторы.</p>
<p>Почему я это делаю?</p>
<p>Потому что сам когда-то прошел по ссылке инвайт-кода и пока разобрался с системой, потратил очень много времени, и попортил себе рейтинг, чего не желаю Вам.</p>
<p>Ну вот и все! Удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/learn-to-work-in-xap-ru.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
