<?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 &#187; Уроки новичка</title>
	<atom:link href="http://php.infoniac.ru/category/rookie-tuts/feed/" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Thu, 09 Feb 2012 11:09:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Создание собственных классов в Mootools &#8211; Урок 18 &#8211; Часть первая</title>
		<link>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html</link>
		<comments>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:12:51 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[классы]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1110</guid>
		<description><![CDATA[Доходим до самих программистских штук в программировании: классы и абстрактные объекты. Если овладеть этим предметом, то можно смело начинать творить свои проекты, т.к. классы незаменимы, когда речь доходит до сложных задач. Читаем урок, соатвляем отзывы.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><div style="text-align:center;width:100%;margin:10px 0px 10px 0px;"><div style="margin:auto;"><script type="text/javascript"><!--
google_ad_client = "pub-8205915997794532";
/* 728x90, создано 08.12.10 */
google_ad_slot = "3730215141";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></div><div style="width:100%;min-width:100%;"><p>Сегодня попробую рассказать об одном из самых сложных для меня предметов в программировании &#8211; о <strong>КЛАССАХ</strong>. Этот страшный КЛАСС &#8211; это некий контейнер, некое собрание переменных и функций, которые обрабатывают ранее упомянутые переменные, чтобы получить определённый результат. Классы очень полезны при работе над более сложными проектами.</p>
<h3>Переменные</h3>
<p>Мы уже говорили об использовании хеш-массивов, так что пример ниже не должен никому показаться сложным.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//Создаем новый класс с именем Klass_first</span>
	<span style="color: #006600; font-style: italic;">//класс содержит две внутренние переменные</span>
	<span style="color: #003366; font-weight: bold;">var</span> Klass_first <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		variable_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Я первая переменная&quot;</span><span style="color: #339933;">,</span>
		variable_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Я вторая переменная&quot;</span>
	<span style="color: #009900;">&#125;</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> run_demo_one <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;">//создадим объект на основне нашего класса Klass_first</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_1 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_first<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>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>demo_1.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>demo_1.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_1" class="pseudobutton">Запуск первой демки</span></p>
<h3>Методы и функции</h3>
<p><strong>Методы</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> Klass_second <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		variable_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Вот значение первой переменной&quot;</span><span style="color: #339933;">,</span>
		variable_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Вот значение второй переменной&quot;</span><span style="color: #339933;">,</span>
		function_one <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;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение первой переменной : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		function_two <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;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение второй переменной : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</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>

<p>Обратите внимание на использование ключевого слова <strong>this</strong>. По причине того, что все переменные работают во внутренней среде класса, получать доступ к знчению этих переменных можно только используя слово <strong>this</strong>, иначе результат работы метода будет значение <strong>undefined</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//работает</span>
	working_method <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;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Первое значение : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</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;">//не работает</span>
	broken_method <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;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Второе значение : '</span> <span style="color: #339933;">+</span> variable_two<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</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> run_demo_2 <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;">//создаем экземпляр класса Klass_second</span>
		<span style="color: #003366; font-weight: bold;">var</span> demo_2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_second<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">//вызываем функцию function_one</span>
		demo_2.<span style="color: #660066;">function_one</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;">//вызываем функцию function_two</span>
		demo_2.<span style="color: #660066;">function_two</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_2" class="pseudobutton">Запуск второй демки</span></p>
<h3>Метод initialize:</h3>
<p>Метод <strong>initialize:</strong> &#8211; это специальная функция класса, в которую можно сбросить все действия и параметры по настройке класса и определённые пользовательские опции и переменные. <strong>initialize:</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> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//определяем функцию инициализации класса с одним параметром</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>user_input<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;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> user_input<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p><strong>initialize:</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> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>true_false_value<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>true_false_value<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;">message</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Всё, что говориться в этом уроке - правдиво!&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">message</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Всё, что говориться в этом уроке - лживо!&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Этот экземпляр класса скажет, что</span>
<span style="color: #006600; font-style: italic;">//&quot;Всё, что говориться в этом уроке - правдиво!&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> myclass_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</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;">//&quot;Всё, что говориться в этом уроке - лживо!&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> myclass_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</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> Klass_third <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//запуск функции при определении экземпляра класса</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>one<span style="color: #339933;">,</span> two<span style="color: #339933;">,</span> true_false_option<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;">variable_one</span> <span style="color: #339933;">=</span> one<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span> <span style="color: #339933;">=</span> two<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>true_false_option<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;">boolean_option</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Выбрана опция TRUE&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">boolean_option</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Выбрана опция FALSE&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определения методов</span>
	function_one <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;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение первое: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	function_two <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;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение второе: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</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;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_3 <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> demo_3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Class_three<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Значение для первой переменной&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Значение для второй переменной&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_3.<span style="color: #660066;">function_one</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_3.<span style="color: #660066;">function_two</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_3" class="pseudobutton">Запуск третей демки</span></p>
<h3>Внедрение параметров</h3>
<p>При создании классов, часто необходимо задать некоторым переменным значения по умолчанию, чтобы, если пользователь не задает никаких значений, классу было бы с чем работать. Это можно сделать вручную, указав необходимые значения в функции инициализации и далее, проверяя кажду переменную на предмет того, было ей передано значение или нет и заменяя дефолтные значения, при необходимости. Но, можно просто подключить класс Options, который входит в состав модуля Mootools Class.extras.</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> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>По поводу <strong>Implements</strong> особо пока заморачиваться не будем, но более подробно остановимся на нём в следующих уроках. А сейчас, когда мы подключили функционал Options, нужно определить дефолтные значения параметров. Как и всегда, нужно всего-лишь добавить ещё одну пару ключ/значение в опции инициализации класса, но этот хеш-массив уже будет вложенным:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Значение первого параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Значение второго параметра&quot;</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>

<p>Итак, значения по умолчанию установлены, только теперь нужен способ перезаписи этих значений пользователем при создании экземпляра класса и этот способ заключается в добавлении всего нескольких строчек кода. Об остальном заботится класс Options.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение первого параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение второго параметра&quot;</span>
	<span style="color: #009900;">&#125;</span>
	initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<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;">setOptions</span><span style="color: #009900;">&#40;</span>options<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>

<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> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	options_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем первое дефолтное значение&quot;</span><span style="color: #339933;">,</span>
	options_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем второе дефолтное значение&quot;</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> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	options_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем второе дефолтное значение&quot;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Обратите внимание на использование метода <strong>setOptions</strong>, который вызывается в методе инициализации. Этот метод &#8211; это часть класса Options и он также позволяет устанавливать опции (параметры) после того, как был создан экземпляр класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<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>
	class_instance.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>options_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписать первый параметр&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>После того, как опци (параметры) были установлены, к ним можно обращаться через переменную <strong>options</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> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<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>
	<span style="color: #003366; font-weight: bold;">var</span> class_option <span style="color: #339933;">=</span> class_instance.<span style="color: #660066;">options</span>.<span style="color: #660066;">options_one</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//переменная class_option теперь имеет значение &quot;Дефолтное значение первого параметра&quot;</span></pre></div></div>

<p>Если же нужно обратиться к переменной изнутри класса, нельзя забывать про <strong>this</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> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Первое дефолтное значение&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Второе дефолтное значение&quot;</span>
	<span style="color: #009900;">&#125;</span>
	test <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;">//обратите внимание на использование this</span>
		<span style="color: #006600; font-style: italic;">//для обращения к классу</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">option_two</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;
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//Следующая строчка выведет сообщение &quot;Второе дефолтное значение&quot;</span>
class_instance.<span style="color: #660066;">test</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> Klass_fourth <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение Первого Параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение Второго Параметра&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<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;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	show_options <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;">//тут мы используем функцию print_r(), позаимсвованную из PHP</span>
		<span style="color: #006600; font-style: italic;">//немного о ней будет сказано чуть ниже</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</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: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение первого параметра&quot;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_4.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</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> run_demo_5 <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> demo_5 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение второго параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</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;">//Создадим новый экземпляр класса Klass_fourth</span>
<span style="color: #006600; font-style: italic;">//в который добавим новый параметр - new_option</span>
<span style="color: #003366; font-weight: bold;">var</span> run_demo_6 <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> demo_6 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>new_option <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Это значение нового, добавленного параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_6.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_4" class="pseudobutton">Запуск четвертой демки</span><br />
<span id="demo_5" class="pseudobutton">Запуск пятой демки</span><br />
<span id="demo_6" class="pseudobutton">Запуск шестой демки</span></p>
<h3>Вкусняшки!</h3>
<p>Наверняка многие знакомы с функцией <strong>print_r()</strong> из <a href="/category/php">PHP</a>, которая используется в методе show_options:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">   	show_options <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;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>print_r()</strong> &#8211; это не родная функция JavaScript, но она была ассимилирована в рамках проекта PHP2JS. Ну, а для тех, кто не знает, что такое PHP, объясню, что функция print_r() возвращает форматированную строку, созданную из пар ключ/значение. Это очень полезная функция для поиска и исправления ошибок. Кому интересен искодный код этой функции можно её найти в исходном коде страницы. Надеюсь все знают, как найти исходный код страницы? Подсказка.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_fifth <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Подключаем класс Options</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//Устанавливаем дефолтные опции</span>
	options <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение первого параметра пятого класса&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение второго параметра пятого класса&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//подключаем дефолтные значения</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<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;">setOptions</span><span style="color: #009900;">&#40;</span>options<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;">//определяем метод, выводящий сообщение</span>
	<span style="color: #006600; font-style: italic;">//с форматированной строкой из массива с параметрами</span>
   	show_options <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;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</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;">//определяем метод для обмена значений</span>
	<span style="color: #006600; font-style: italic;">//между двумя параметрами</span>
	swap_options <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;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
			option_one <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">option_two</span><span style="color: #339933;">,</span>
			option_two <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">option_one</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</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;
<span style="color: #003366; font-weight: bold;">function</span> demo_7<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> demo_7 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fifth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение первого параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">swap_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_7" class="pseudobutton">Запуск седьмой демки</span></p>
</div><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сортировка элементов списка через объект Sortables и введение в методы Mootools &#8211; Урок 16</title>
		<link>http://php.infoniac.ru/sortables-metody-urok16.html</link>
		<comments>http://php.infoniac.ru/sortables-metody-urok16.html#comments</comments>
		<pubDate>Wed, 01 Dec 2010 09:28:17 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[sortables]]></category>
		<category><![CDATA[методы]]></category>
		<category><![CDATA[перетаскивание]]></category>
		<category><![CDATA[списки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=888</guid>
		<description><![CDATA[Итак, настал тот день, настал тот час, когда пора продвигаться в наших уроках по Mootools. Сегодня пробежимся ещё по одному плагину стандартной комплектации библиотеки Mootools из раздела "more". <strong>Плагин Sortables</strong> - это очень мощный инструмент, позволяющий создавать сортируемые списки (элементы &#60;UL&#62; или &#60;OL&#62;, а точнее элементы &#60;LI&#62; внутри них) путем их перемещения/перетаскивания, тем самым серьезно расширяя возможности пользовательского интерфейса вашего сайта. В этот плагин, также входит функция "<strong>serialize</strong>", которая выдает массив со списком всех id элементов на странице - очень полезно для работы со скриптами на удаленном сервере. Так как это введение в данный урок, то сказать тут больше нечего: читайте урок, узнаете больше ;).]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Основы</h2>
<p><script type="text/javascript"><!--
google_ad_client = "pub-8205915997794532";
/* 728x90, создано 08.12.10 */
google_ad_slot = "3730215141";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Создание нового объекта Sortables</h3>
<p>Итак, вначале нам необходимо произвести обычную процедуру по передаче необходимых элементов нашей основной переменной. Если есть необходимость, чтобы несколько списков имели функционал сортировки, нужно добавить их ID через запятую:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortablesArray <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listA, #listB'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Этот код помещает 2 списка (элемент &lt;UL&gt;/ &lt;OL&gt;) в переменную, с помощью которой можно создать новый объект Sortables:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortablesArray<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;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;listA&quot;</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A4<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;listB&quot;</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B4<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span></pre></div></div>

<p>то сортируемые списки выглядели бы так:</p>
<ul id="listA">
<li>Элемент A1</li>
<li>Элемент A2</li>
<li>Элемент A3</li>
<li>Элемент A4</li>
</ul>
<ul id="listB">
<li>Элемент B1</li>
<li>Элемент B2</li>
<li>Элемент B3</li>
<li>Элемент B4</li>
</ul>
<h2>Параметры сортируемого списка</h2>
<p>Если есть необходимость расширить или уточнить функциональность вашего сортируемого списка, объект Sortables поддерживает целый ряд дополнительных параметров, которые окажут сильное подспорье в этом.</p>
<h3>constrain (false)</h3>
<p>Этот параметр определяет, можно ли будет переносить элементы списка из одного списка в другой. Скажем, в текущем объекте Sortables храняться 2 списка &lt;UL&gt;, а установив <em>constrain: true</em>, говорим обработчику, что выносить элемент за пределы его родительского тега нельзя.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    constrain<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значене по умолчанию: false</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>clone (false)</h3>
<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> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    clone<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию: false</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>handle (false)</h3>
<p>Параметр определяет элемент, который будет играть роль &#8220;ручки&#8221; определенного элемента списка. Назначение &#8220;ручки&#8221; становится полезным, когда нужно сохранить возможность выделять текст в элементах списка или же возможность совершать другие действия в элементе &lt;LI&gt;, а значение по умолчанию (<em>false</em>) делает весь элемент LI одной сплошной ручкой.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> handles <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.handlesClass'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> sortables <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortablesArray<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    handle<span style="color: #339933;">:</span> handles <span style="color: #666666; font-style: italic;">//по умолчанию false, но сейчас передаем массив с элементами handle</span></pre></div></div>

<h3>opacity (1)</h3>
<p>Определяет степень прозрачности элемента. Если <strong>clone</strong> был установлен на <em>true</em>, то <strong>opacity</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> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    opacity<span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span> <span style="color: #006600; font-style: italic;">//по умолчанию 1, т.е. вообще без прозрачности</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>revert (false)</h3>
<p>Принимает либо <em>false</em>, либо параметр объекта Fx.options. Если укажете Fx.options, при &#8220;установке&#8221; сортируемого элемента будут использоваться указанные параметры для создания мягких переходов и т.д. Например, можно установить &#8220;<strong>duration:long</strong>&#8221; и клону потребуется некоторое время для установки себя на выбранное место. В примере ниже используется похожий эффект, так что можете посмотреть, как это все действует.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    revert<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//по умолчанию</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> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    revert<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">50</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>snap (4)</h3>
<p>Как и в случае с <a href="http://php.infoniac.ru/mootools-drag-move-objects-tut12.html">перетаскиванием</a> и <a href="http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html">прокруткой</a>, параметр <strong>snap</strong> определяет, сколько пикселей должен пройти курсор мыши, чтобы элемент начал его &#8220;преследовать&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    snap<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span> <span style="color: #006600; font-style: italic;">//нужно провести курсором 10 пикселей, чтобы сортировка заработала</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>События Sortables</h2>
<p>События для объекта Sortables просты и понятны. Каждое из них работает с элементом, которые сортируется (не с его клоном, в случаях, когда clone: true).</p>
<ul>
<li><strong>onStart</strong> &#8211; запускается при начале перетаскивания;</li>
<li><strong>onSort</strong> &#8211; запускается при изменении порядка элементов списка;</li>
<li><strong>onComplete</strong> &#8211; запускается, когда перетаскиваемый элемент отпускается на новое место обитания.</li>
</ul>
<p>Немного подробнее остановимся на событиях, когда рассмотрим примеры.</p>
<h2>Методы объекта Sortables</h2>
<p>До сих пор как-то не заходил у нас разговор о методах вообще, несмотря на то, что мы их уже не раз использовали. По сути, методы &#8211; это функции, которые принадлежат классам.  Классы мы рассмотрим немного позже, но все-равно, рассмотрим основную идею, что такое классы. Этот плагин (и другие, которые мы уже использовали) использует примерно одну и ту же схему &#8211; инициализируется новый экземпляр класса с помощью ключевого слова &#8220;<strong>new</strong>&#8220;, определяются несколько параметров и опций, добавляются несколько событий и всё &#8211; вот вам новый объект Sortables или эффект Tween. Эта схема и является основой работы с классами. В своей основе, класс позволяет сохранять опции и функции, которые можно использовать тогда, когда это необходимо. Методы &#8211; это специальные функции, которые существуют внутри классов и добавляют определенный функционал этим классам. Например <strong>.set()</strong> и <strong>.get()</strong> &#8211; это методы, которые расширяют функциональность объектов <strong>Element</strong>. Если смотреть на класс Fx.Tween, <strong>.start()</strong> является его методом. Для более глубокого понимания методов, далее рассмотрим методы класса Sortables.</p>
<h3>.detach()</h3>
<p>Этот метод позволяет отключить все &#8220;ручки&#8221;, что сделает весь список не сортируемым. Метод полезен для отмены действия метода <strong>.attach();</strong></p>
<h3>.attach();</h3>
<p>Этот метод используется для присоединения &#8220;ручек&#8221; к сортируемому списку. Используется для возобновления &#8220;сортируемости&#8221; списков после использования метода <strong>.detach()</strong>.</p>
<h3>.addItems();</h3>
<p>Позволяет добавлять новые элементы в список. Скажем, к примеру, что имеется список, в который пользователь может добавить новый элемент, но тогда нужно будет включить &#8220;сортируемость&#8221; этого нового элемента.</p>
<h3>.removeItems();</h3>
<p>Этот метод позволяет удалить &#8220;сортируемость&#8221; с элемента в сортируемом списке. Полезно, когда нужно закрепить какой-то определенный элемент списка.</p>
<h3>.addLists();</h3>
<p>Вместо того, чтобы добавлять несколько элементов в список, возможно будет полезнее и быстрее вставить в объект Sortables сразу целый список? Именно это и делает метод <strong>.addLists();</strong>.</p>
<h3>.removeLists();</h3>
<p>Следующий метод в списке отвечает за удаление целых списков, в отличие от <strong>.removeItems();</strong>, который удаляет &#8220;сортируемость&#8221; с отдельных элементов. Эти методы предотвращают перемещение элементов, закрепляя их содержимое на одном месте.</p>
<h3>.serialize();</h3>
<p>Сортирование &#8211; это конечно хорошо, но а что, если появится необходимость произвести какие-нибудь действия над данными? Метод <strong>.serialize();</strong> возвращает два списка: один с id всех элементов списка и их порядковый номер в нем. С помощью этого метода можно выбирать из какого списка брать данные и лишь указав его индексное значение (порядковый номер) в обекте.</p>
<p>Чтобы полностью пройти по теме методов нужно намного больше времени и писанины, чем эти несколько строчек. Но эти строчки сойдут для того, чтобы можно было ознакомиться с этим новым в наших уроках принципах. Ну а дальше мы немного углубимся в эту тему.</p>
<h2>Вкуснотища!</h2>
<p>Итак, вот оно, самое сладкое (по крайней мере для меня) <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Вот примерик, в котором у нас будет несколько нумерованных списков, которые будут принадлежать объекту Sortables. Конечно же, используем все методы, описанные выше. Помните одно: весь код, указанный ниже, нужно вставить в <a href="http://php.infoniac.ru/what-is-domready.html">событие domready</a>.</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: #003366; font-weight: bold;">var</span> sortableListsArray <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listA, #listB'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> sortableLists <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortableListsArray<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> sortableListsArray <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#numberList, #letterList'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> sortableLists <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortableListsArray<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	clone<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	handle<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.handle'</span><span style="color: #339933;">,</span>
	revert<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
	    <span style="color: #006600; font-style: italic;">//принимают эффекты FX</span>
		duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">50</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	opacity<span style="color: #339933;">:</span> .5<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>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;">&#40;</span><span style="color: #3366CC;">'onStartEvent'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		el.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onSort<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;">&#40;</span><span style="color: #3366CC;">'onSortEvent'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</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>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;">&#40;</span><span style="color: #3366CC;">'onCompleteEvent'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> listOne <span style="color: #339933;">=</span> sortableLists.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> listTwo <span style="color: #339933;">=</span> sortableLists.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numberListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> listOne<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numberListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'letterListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> listTwo<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'letterListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</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: #660066;">detach</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: #003366; font-weight: bold;">var</span> addListoSort <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addListTest'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addList'</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> <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>
	sortableLists.<span style="color: #660066;">addLists</span><span style="color: #009900;">&#40;</span>addListoSort<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: #009900;">&#40;</span><span style="color: #3366CC;">'removeList'</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> <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>
	sortableLists.<span style="color: #660066;">removeLists</span><span style="color: #009900;">&#40;</span>addListoSort<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: #009900;">&#40;</span><span style="color: #3366CC;">'handlesON'</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> <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>
	sortableLists.<span style="color: #660066;">attach</span><span style="color: #009900;">&#40;</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: #009900;">&#40;</span><span style="color: #3366CC;">'handlesOFF'</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> <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>
	sortableLists.<span style="color: #660066;">detach</span><span style="color: #009900;">&#40;</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: #003366; font-weight: bold;">var</span> itemOne <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'one'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addItem'</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> <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>
	sortableLists.<span style="color: #660066;">addItems</span><span style="color: #009900;">&#40;</span>itemOne<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: #009900;">&#40;</span><span style="color: #3366CC;">'removeItem'</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> <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>
	sortableLists.<span style="color: #660066;">removeItems</span><span style="color: #009900;">&#40;</span>itemOne<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: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ручки не включены по умолчанию, как и указано в комментариях к коду. Для того, чтобы запустить &#8220;сортируемость&#8221; списка нужно будет поднажимать на кнопочки <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<div id="onStartEvent" class="events">событие onStart</div>
<div id="onSortEvent" class="events">событие onSort</div>
<div id="onCompleteEvent" class="events">событие onComplete</div>
<p>
<span class="pseudobutton" id="handlesON">Включить ручки</span><br />
<span class="pseudobutton" id="handlesOFF">Включить ручки</span></p>
<p><span class="pseudobutton" id="addItem">Добавить сортируемость элементу с id=&#8221;one&#8221;</span><br />
<span class="pseudobutton" id="removeItem">Убрать сортируемость этого элемента</span></p>
<div id="numberListOrder">Порядок верхнего списка: <span></span></div>
<ul id="numberList" class="sortlists">
<li id="one"><span class="handle"></span>1</li>
<li id="two"><span class="handle"></span>2</li>
<li id="three"><span class="handle"></span>3</li>
<li id="four"><span class="handle"></span>4</li>
<li id="five"><span class="handle"></span>5</li>
<li id="six"><span class="handle"></span>6</li>
</ul>
<div id="letterListOrder">Порядок нижнего списка: <span></span></div>
<ul id="letterList" class="sortlists">
<li id="letterA"><span class="handle"></span>A</li>
<li id="letterB"><span class="handle"></span>B</li>
<li id="letterC"><span class="handle"></span>C</li>
<li id="letterD"><span class="handle"></span>D</li>
<li id="letterE"><span class="handle"></span>E</li>
<li id="letterF"><span class="handle"></span>F</li>
</ul>
<p><span class="pseudobutton" id="addList">Добавить &#8220;сортируемость&#8221; списку</span><br />
<span class="pseudobutton" id="removeList">Убрать &#8220;сортируемость&#8221; у списока</span></p>
<ul id="addListTest" class="sortlists">
<li id=""><span class="handle"></span>добавить A</li>
<li id=""><span class="handle"></span>добавить B</li>
<li id=""><span class="handle"></span>добавить C</li>
<li id=""><span class="handle"></span>добавить D</li>
<li id=""><span class="handle"></span>добавить E</li>
<li id=""><span class="handle"></span>добавить F</li>
<li id=""><span class="handle"></span>добавить G</li>
</ul>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/sortables-metody-urok16.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Периодический запуск функций с помощью .periodical(); и введение в хеш-массивы &#8211; Урок 15</title>
		<link>http://php.infoniac.ru/periodical-i-hesh-massivy.html</link>
		<comments>http://php.infoniac.ru/periodical-i-hesh-massivy.html#comments</comments>
		<pubDate>Thu, 23 Sep 2010 05:33:40 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[periodical]]></category>
		<category><![CDATA[setinterval]]></category>
		<category><![CDATA[массивы]]></category>
		<category><![CDATA[периодичность]]></category>
		<category><![CDATA[уроки]]></category>
		<category><![CDATA[хеш-массивы]]></category>
		<category><![CDATA[хеши]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=700</guid>
		<description><![CDATA[В этом уроке мы рассмотрим две &#8220;полки&#8221; библиотеки: первая, это функция .periodical();, после которой мы проведем короткое введение в хеш-массивы. Periodical будет делать именно то, для чего её и придумали (вот так открытие!): она будет выполнять функцию с заданной периодичностью. Вторя &#8220;полка&#8221;, хеш-массивы &#8211; это наборы данных, состоящих из связки ключа и значения, записанных определенным [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>В этом уроке мы рассмотрим две &#8220;полки&#8221; библиотеки: первая, это функция <strong>.periodical();</strong>, после которой мы проведем короткое введение в хеш-массивы. Periodical будет делать именно то, для чего её и придумали (вот так открытие!): она будет выполнять функцию с заданной периодичностью. Вторя &#8220;полка&#8221;, хеш-массивы &#8211; это наборы данных, состоящих из связки ключа и значения, записанных определенным образом. Итак, далее представим краткое введение в хеш-массивы и, если Вы все правильно поймёте, а я уверен в этом на 100% (ведь я то понял <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), то эти знания окажутся весьма полезными.</p>
<h2>.periodical()</h2>
<h3>Основы</h3>
<p>Всё просто: добавляем .periodical(); к названию функции и эта функция будет периодически запускаться. Вроде бы всё, но не всё. Как и всегда, есть ещё несколько вещей, которые нужно упомянуть. Итак, нам нужна будет функция, которую будем выполнять, и периодичность, в миллисекундах, с которой эта функция будет выполняться.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> periodicalFunction <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;">alert</span><span style="color: #009900;">&#40;</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;">//в этом примере ф-ция periodical() запускаетя при загрузке страницы,</span>
    <span style="color: #006600; font-style: italic;">//но, как будет показано далее, не обязательно на этом ограничиваться</span>
    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> periodicalFunctionVar <span style="color: #339933;">=</span> periodicalFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</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>Встроенная привязка с .bind();</h3>
<p>.periodical позволяет делать одну очень полезную вещь: она автоматически подставит переменную в качестве второго параметра. Например, если есть необходимость передать переменную за пределы <a href="http://php.infoniac.ru/what-is-domready.html">domready</a>, можно просто привязать эту переменную как второй параметр к функции, к которой привязываем periodical.</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: #003366; font-weight: bold;">var</span> periodicalFunctionVar <span style="color: #339933;">=</span> periodicalFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> passedVar<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>
<h4>$clear()</h4>
<p>Для того, чтобы остановить выполнение функции, запущенной с помощью .periodical(), нужно использовать функцию $clear();. Тут все предельно просто:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//удаляем из памяти переменную, которая содержала функцию и ее использование с periodical();</span>
    $clear<span style="color: #009900;">&#40;</span>periodicalFunctionVar<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Пример</h3>
<p>Итак, подытожим&#8230; примером. Попробуем использовать несколько вещей, которые мы только что узнали (и немного до сели неизведанного), чтобы создать таймер. Вначале напишем 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;timer_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;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</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;timer_stop&quot;</span>&gt;</span>пауза<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</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;timer_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>
    <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;timer_bar&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;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;timer_display&quot;</span>&gt;</span>0<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<p>Код Mootools в студию!</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> timerFunction <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;">//переменная currentTime будет увеличиваться на 1</span>
    <span style="color: #006600; font-style: italic;">//дальше остановимся более подробно на этом</span>
    <span style="color: #006600; font-style: italic;">//также, обратите внимание на использование конструкции &quot;this.counter&quot;</span>
    <span style="color: #006600; font-style: italic;">//&quot;this&quot; - это хеш-массив</span>
    <span style="color: #006600; font-style: italic;">//и &quot;counter&quot; это ключ</span>
    <span style="color: #006600; font-style: italic;">//и снова, более подробно остановимся на этом позже</span>
	<span style="color: #003366; font-weight: bold;">var</span> currentTime <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">counter</span><span style="color: #339933;">++;</span>
    <span style="color: #006600; font-style: italic;">/*я изменил первоначальный счетчик:
    дело в том, что если оставить счетчик на долго включенным
    строка может вытянуться довольно далеко, потому, пришлось
    доавить проверку ширины родительского элемента, что делается
    с помощью функции .getParent(), параметром которой можно указать не только
    название родительского тега, но даже и класс этого самого родительского элемента,
    а в моем случае, родительский класс называется post.
    Также обратите внимание на использование функции toInt(). Я думаю вы читали
    пост про фильтрацию и обработку чисел?
    */</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>currentTime <span style="color: #339933;">==</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getParent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.post'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #009900;">&#41;</span>.<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: #CC0000;">1</span><span style="color: #009900;">&#41;</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_stop'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fireEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//тут изменяем содержимое блока div, с данными о текущем времени таймера</span>
	<span style="color: #000066; font-weight: bold;">else</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_display'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//тут изменяем ширину блока с графическим отображением длительности выполнения функции</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//устанавливаем атрибут disabled на true, чтобы выключить кнопку Пуска после самого пуска</span>
    <span style="color: #006600; font-style: italic;">//ниже я более подробно остановился на этом моменте</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</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;">&#125;</span>
<span style="color: #003366; font-weight: bold;">var</span> timerFunction <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> currentTime <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">counter</span><span style="color: #339933;">++;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_display'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
	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> currentCounter <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Hash<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>counter<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</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;">//запускаем периодическое выполнение</span>
    <span style="color: #006600; font-style: italic;">//и вторым параметром привязываем this к необходимой переменной</span>
    <span style="color: #003366; font-weight: bold;">var</span> simpleTimer <span style="color: #339933;">=</span> timerFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> currentCounter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//так как нам не нужно, чтобы таймер запускался при загрузке страницы, мы его и не запускаем</span>
    $clear<span style="color: #009900;">&#40;</span>simpleTimer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</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;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</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>
    	simpleTimer <span style="color: #339933;">=</span> timerFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> currentCounter<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>
    <span style="color: #006600; font-style: italic;">//следующая функция очищает периодичную функцию и подсвечивает строку таймера</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_stop'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</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>
    	$clear<span style="color: #009900;">&#40;</span>simpleTimer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#EFE02F'</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_reset'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</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;">//сброс вначале очищает периодичную функцию $clear(simpleTimer);</span>
        <span style="color: #006600; font-style: italic;">//устанавливая счетчик на 0</span>
        <span style="color: #006600; font-style: italic;">//немного далее немного более :)</span>
        currentCounter.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'counter'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #006600; font-style: italic;">//изменяем содержимое соответствующих элементов таймера</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_display'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> currentCounter.<span style="color: #660066;">counter</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</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>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Опробуем таймер в действии?</p>
<table>
  <tr>
    <td><button id="timer_start">пуск</button><br />
      <button id="timer_stop">пауза</button><br />
      <button id="timer_reset">обновить</button></td>
    <td><div id="timer_display">0</div></td>
  </tr>
</table>
<div id="timer_bar"></div>
<p>Небольшое объяснения того, почему я выключаю кнопку Пуска при ее нажатии (она включается обратно при Паузе и Сбросе). Дело в том, что если повторно нажать Пуск, предварительно не остановив, счетчик &#8220;забежит&#8221; в два раза быстрее и его уже не остановить. А если потом ещё и ещё нажимать, скорость будет увеличиваться. Как бороться с этим явлением, я без понятия&#8230; Почему так происходит? Это, видимо, нужно разбираться в недрах и логике программирования, а мне сейчас не до этого.</p>
<p>И еще один момент: почему я установил</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;">'timer_start'</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></pre></div></div>



<p>в саму функцию, а не в</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;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</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>
    	simpleTimer <span style="color: #339933;">=</span> timerFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> currentCounter<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>Тут получается довольно интересно и закручено, как в английском детективе. И тоже нужно разбираться в недрах, но в недрах функции .periodical(). Насколько я понимаю, все происходит примерно так: при клике на кнопку Пуск, мы повторно вызываем переменную <strong>simpleTimer</strong>, которая является хранителем периодичного запуска функции <strong>timerFunction</strong>. Итак, вызвав переменную simpleTimer, поделать уже ничего нельзя: определенная функция будет запускаться, пока ее не остановить. И вот, при каждом запуске функции она выполняет <code>$('timer_start').setStyle('disabled', 'true')</code>.</p>
<p>Кстати, просто использовать</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;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #009900;">&#41;</span></pre></div></div>



<p>вместо</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;">'timer_start'</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></pre></div></div>



<p>не получилось. Кнопка Пуск все равно работает, а почему, не могу себе даже представить <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  .</p>
<h2>Введение в хеш-массивы</h2>
<h3>Создание нового хеш-массива</h3>
<p>В примере, приведенном выше, возможно есть некоторые вещи, с которыми Вы еще не сталкивались (точнее я Вас с ними еще не сталкивал, а где-то еще вы с ними уже сталкивались). В некоторых местах мы используем хеш-массива. Хешы &#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> hashVar <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Hash<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'первыйКлюч'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'второйКлюч'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Итак, слева у нас получается ключ, которому присваивается значение справа (те из Вас, о читатели, которые все-таки знают что такое хеш-массива и уже задумываются о том, чтобы просмотреть другие посты моего блога, хочу лишь сообщить, что я рассматриваю сейчас только основы основ хеш-массивов. Написание функций для хранения данных с помощью хешей я оставлю на тот момент, когда можно будет поговорить о классах). Итак, существует много плюсов в том, чтобы использовать именно хеш-массивы. Во-первых, в одном объекте можно хранить многочисленные наборы данных, процесс обратного получения которых довольно прост, также как и хранение комплексных структур данных.</p>
<h3>.set() и .get()</h3>
<p>При работе с хеш-массивами можно использовать знакомые функции <strong>.set()</strong> и <strong>.get()</strong>. Если нужно задать ключу какое-либо значение, вначале нужно определить ключ, потом задать ему значение через <strong>.set()</strong>. Если нужно получить значение, просто нужно определить ключ и применить к нему <strong>.get()</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: #006600; font-style: italic;">//первому ключу можно дать значение 200 вот так</span>
    hashVar.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'первыйКлюч'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//с помощью .get() можно получить значение первого ключа</span>
    <span style="color: #006600; font-style: italic;">//после того, как мы дли ему значение 200, это значение мы и получим</span>
    <span style="color: #003366; font-weight: bold;">var</span> hashValue <span style="color: #339933;">=</span> hashVar.<span style="color: #660066;">get</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>Если использовать латинские буквы для назначение ключа, то значение этого ключа можно получить в формате имя_хеш_массива.имя_ключа. Вот так:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> hashValue <span style="color: #339933;">=</span> hashVar.<span style="color: #660066;">pervyi</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//что означает тоже самое, что и</span>
<span style="color: #003366; font-weight: bold;">var</span> hashValue <span style="color: #339933;">=</span> hashVar.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pervyi'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Добавляем новые данные в массив</h3>
<h4>.extend();</h4>
<p>Любой уже определенный хеш-массив можно дополнить новыми парами данных с помощью <strong>.extend()</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: #006600; font-style: italic;">//такой массив также состоит из пар ключ/значение</span>
    <span style="color: #006600; font-style: italic;">//но он не имеет возможностей хеша</span>
    <span style="color: #003366; font-weight: bold;">var</span> simpleObject <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'третий'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">450</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'четвертый'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">89</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Если есть необходимость добавить эти данные к уже существующему хеш-массиву, мы просто используем .extend(); для того, чтобы создать свободное место для этих данных.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//так хеш-массив hashVar пополняется всеми данными массива simpleObject</span>
    hashVar.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>simpleObject<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Очень важно помнить, что все дубликаты ключей будут переписаны вторым вариантом, т.е. тем, которым пополняем первый массив. Так, если у нас в первом массив была пара &#8220;первыйКлюч&#8221; : &#8220;буква А&#8221;, а в массиве, которым мы расширяем первый массив есть пара &#8220;первыйКлюч&#8221; : &#8220;буква Б&#8221;, то в окончательном массиве именно второй вариант выживет.</p>
<p>Если не хотите, чтобы второй вариант выжил, и вам нужно, что бы выжил именно первый вариант, нужно вместо <strong>.extend()</strong> использовать <strong>.combine()</strong>. В остальном функция <strong>.combine()</strong> работает также, как и <strong>.extend()</strong>.</p>
<h3>Удаляем пару данных из хеш-массива</h3>
<h4>.erase()</h4>
<p>Слово &#8220;erase&#8221; с английского переводится как &#8220;удалить&#8221;. Функция полностью оправдывает свое название: называете массив, добавляете <strong>.erase()</strong> и в скобках указываете ключ.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">hashVar.<span style="color: #660066;">erase</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>



<h3>Хеш-массивы и функция .each()</h3>
<p>С функцией <strong>.each()</strong> многие, скорее всего, уже знакомы из урока про массивы. Как и в случае с массивами, <strong>.each()</strong> перебирает каждую единицу данных хеш-массива, применяя к ней пользовательскую функцию.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">hashVar.<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>value<span style="color: #339933;">,</span> key<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: #006600; font-style: italic;">//вначале нужно передать значение, а потом уже и его ключ</span>
    <span style="color: #006600; font-style: italic;">//как и в случае с массивами: вначале item (значение), потом и index (его порядковый номер в массиве)</span>
    <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>key <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;:&quot;</span> <span style="color: #339933;">+</span> value<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>На этом, пожалуй, всё! Надеюсь, урок пригодится вам также, как и мне.</p><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/periodical-i-hesh-massivy.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Слайдеры &#8211; Урок 14 &#8211; Уроки Mootools</title>
		<link>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html</link>
		<comments>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 11:10:32 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[объекты mootools]]></category>
		<category><![CDATA[ползунки]]></category>
		<category><![CDATA[прокрутка]]></category>
		<category><![CDATA[слайдер]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=670</guid>
		<description><![CDATA[Введение в слайдеры Если вы прочитали предыдущие , то Вам должны быть уже более или менее понятны большинство объектов библиотеки Mootools. Объект Slider особо ничем не отличается от других: создаете новый слайдер (new Slider), определяете элементы слайдера и ручки, определяете параметры и создаете несколько функций для обратного вызова и, в принципе, всё. Но, несмотря на [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Введение в слайдеры</h2>
Если вы прочитали предыдущие <a href="http://php.infoniac.ru/category/mootools/">уроки Mootools</a>, то Вам должны быть уже более или менее понятны большинство объектов библиотеки Mootools. Объект Slider особо ничем не отличается от других: создаете новый слайдер (new Slider), определяете элементы слайдера и ручки, определяете параметры и создаете несколько функций для обратного вызова и, в принципе, всё. Но, несмотря на то, что объект Slider и создается примерно по такому шаблону, есть несколько  вещей, которые обязательно нужно нам пройти.
<h2>Основы</h2>
<h3>Создание нового объекта Slider</h3>
Давайте сразу начнем с кода HTML и CSS. Основным тут является создание длинного, прямоугольного блока div (насколько длинный, зависит от того, для чего слайдер будет использоваться) и его дочернего элемента div, который будет служить &#8220;захватом&#8221; слайдера &#8211; ручкой.


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!--Вертикальный слайдер--&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;slider&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;knob&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>



А код CSS будет выглядеть немного позамысловатее:


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">//полоса прокрутка или слайдер
<span style="color: #cc00cc;">#slider</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;">#00C</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">dashed</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">250px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
//<span style="color: #ff0000;">&quot;захват&quot;</span> или ручка
<span style="color: #cc00cc;">#knob</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;">#FF0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>



Теперь можно смело создавать новый объект Slider, для чего вначале создаем переменные с элементами и потом создаем новый (&#8220;<strong>new</strong>&#8220;) объект slider, также, как мы это делали с объектами <strong>tween</strong>, <strong>drag.move</strong> и <strong>morph</strong>:


<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> sliderObject <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> knobObject <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knob'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//создаем новый объект slider</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> SliderObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span>sliderObject <span style="color: #339933;">,</span> knobObject <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>
    range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
    snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
    offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
    wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'horizontal'</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//событие onchange запускается тогда, когда значение параметра step изменится</span>
    <span style="color: #006600; font-style: italic;">//и передаст текущее значение этому параметру</span>
    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//сюда вставляем код того, что должно произойти по событию onchange</span>
        <span style="color: #006600; font-style: italic;">//можно ссылаться на параметр step</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//событие onTick передвигается, когда пользователь передвигает захват</span>
    <span style="color: #006600; font-style: italic;">//и передаст текущее положение (относительно родительского элемента)</span>
    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<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;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'left'</span><span style="color: #339933;">,</span> pos<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;">//срабатывает, когда ползунок останавливается</span>
    <span style="color: #006600; font-style: italic;">//и пользователь &quot;отпускает&quot; его</span>
    onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//сюда вставляем код того, что должно произойти по событию onComplete</span>
        <span style="color: #006600; font-style: italic;">//можно ссылаться на параметр step</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>Параметры объекта Slider</h3>
<ul>
	<li><strong>snap</strong> &#8211; захват (по умолчанию &#8211; <em>false</em>): булев тип (думаю, все знают, что это такое). Определяет то, будет ли бегунок закрепляться за шагами по мере передвижения по слайдеру (тут немного запутано, но попробую объяснить этот пункт немного дальше).</li>
	<li><strong>offset</strong> &#8211; сбвиг (по умолчанию &#8211; <em>0</em>): относительный сдвиг захвата от первоначального положения. С этим параметром нужно поэкспериментировать, чтобы понять его назначение <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
	<li><strong>range</strong> &#8211; диапазон (по умолчанию &#8211; <em>false</em>): Очень полезный параметр. Можно назначить диапазон значений, на которые будут разбиваться шаги (параметр steps). Например, если был указан диапазон [0, 200], а параметр steps (шаги) имеет значение 10, то расстояние между шагами будет равно 20. Диапазон может также включать в себя отрицательные числа, например [-10, 0], что оказывается очень полезным при инвертировании скроллера (дальше больше© <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</li>
	<li><strong>wheel</strong> (по умолчанию &#8211; <em>false</em>): если установить параметр на true, то объект будет распознавать движения колеса мышки. При исползовании колёсика мышки, возможно нужно будет скорректировать диапазон, чтобы убедиться в том, что событие <em>mousewheel</em> не будет инвертировано (и снова дальше больше©).</li>
	<li><strong>steps</strong> &#8211; шаги (по умолчанию &#8211; <em>100</em>): Значение в 100 шагов очень удобно, так как его можно использовать как процентное соотношение. Однако, можно назначить столько, шагов, сколько душе угодно (в разумных пределах, конечно).</li>
	<li><strong>mode</strong> &#8211; режим (по умолчанию &#8211; &#8216;horizontal&#8217; &#8211; горизонтально): Режим определяет будет ли слайдер вертикальным или горизонтальным. Хотя, для того, чтобы сделать слайдер вертикальным или горизонтальным, нужно будет проделать еще несколько шагов.</li>
</ul>
<h3>Функции по событиям</h3>
<ul>
	<li><strong>onChange</strong>: это событие запускается, когда текущий шаг изменяет свое значение. Передает новое значение параметра &#8220;step&#8221;.</li>
	<li><strong>onTick</strong>: срабатывает, когда измеяется положение бегунка. Передает новое значение параметра &#8220;position&#8221;.</li>
	<li><strong>onComplete</strong>: запускается, когда пользователь отпускает бегунок. Передает новое значение параметра &#8220;step&#8221;.</li>
</ul>
Для лучшего понимания за что отвечает каждое событие и когда каждое из них изменяется, смотрите на пример ниже.
<h2>И самое вкусное &#8211; пример</h2>
Итак, давайте создадим, наконец, свой слайдер, который расставит все новые знания по полочкам.
<h3>.set();</h3>
Посмотрев на событие на элементе <strong>button</strong> и мы увидим метод <strong>.set()</strong> в действии. Он очень прост в использовании: просто вызываем слайдер, добавляем к нему метод .set() и шаг, с которым мы будем двигать бегунок.


<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> SliderObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider-h'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'knob-h'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
		steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
		offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'horizontal'</span><span style="color: #339933;">,</span>
	    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'change'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'steps_number'</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> step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tick'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knob_pos'</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> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'left'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	    <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>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'complete'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'steps_complete_number'</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> step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span>step<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;
	<span style="color: #003366; font-weight: bold;">var</span> SliderObjectV <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider-v'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'knob-v'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
		offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'vertical'</span><span style="color: #339933;">,</span>
	    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'changeV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepsV_number'</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> step<span style="color: #339933;">*-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tickV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knobV_pos'</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> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'top'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	    <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>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'completeV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepsV_complete_number'</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> step<span style="color: #339933;">*-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span>step<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;
	SliderObjectV.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'set_knob'</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> <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>
		SliderObject.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">7</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>		
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'set_knobV'</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> <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;">//чтобы установить ползунок на 5, нужно установить его на -5</span>
		<span style="color: #006600; font-style: italic;">//т.к. в нашем случае идет поднятие ползунка вверх, а это значит мы уходим</span>
		<span style="color: #006600; font-style: italic;">//по ту сторону нуля</span>
		SliderObjectV.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">5</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: #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;slider_wrap&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;change&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;">strong</span>&gt;</span>onChange<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт шаг, на котором Вы находитесь: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;steps_number&quot;</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;tick&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;">strong</span>&gt;</span>onTick<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт положение ползунка: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knob_pos&quot;</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;">strong</span>&gt;</span>onComplete<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт текущий шаг: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;steps_complete_number&quot;</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;slider-h&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;knob-h&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>
	<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;set_knob&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;b&quot;</span>&gt;</span>Установить ползунок на 7-й шаг<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;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;changeV&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;">strong</span>&gt;</span>onChange<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт шаг, на котором Вы находитесь: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stepsV_number&quot;</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;tickV&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;">strong</span>&gt;</span>onTick<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт положение ползунка: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knobV_pos&quot;</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;completeV&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;">strong</span>&gt;</span>onComplete<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт текущий шаг: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stepsV_complete_number&quot;</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;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;set_knobV&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;b&quot;</span>&gt;</span>Установить ползунок на 5-й шаг<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;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;slider-v&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;knob-v&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>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<!--start_raw-->
<div id="slider_wrap">
	<div id="change" class="indicator"><strong>onChange</strong> передаёт шаг, на котором Вы находитесь: <span id="steps_number"> </span></div>
	<div id="tick" class="indicator"><strong>onTick</strong> передаёт положение ползунка: <span id="knob_pos"> </span></div>
	<div id="complete" class="indicator"><strong>onComplete</strong> передаёт текущий шаг: <span id="steps_complete_number"> </span></div>
	<div id="slider-h">
		<div id="knob-h"></div>
	</div>
	<button id="set_knob" class="b">Установить ползунок на 7-й шаг</button>
	<div id="changeV" class="indicator"><strong>onChange</strong> передаёт шаг, на котором Вы находитесь: <span id="stepsV_number"> </span></div>
	<div id="tickV" class="indicator"><strong>onTick</strong> передаёт положение ползунка: <span id="knobV_pos"> </span></div>
	<div id="completeV" class="indicator"><strong>onComplete</strong> передаёт текущий шаг: <span id="stepsV_complete_number"> </span></div>
	<button id="set_knobV" class="b">Установить ползунок на 5-й шаг</button>
	<div id="slider-v">
		<div id="knob-v"></div>
	</div>
</div>
<!--end_raw-->
<p>Обратите внимание на пример с вертикальным слайдером: мы не только изменяем параметр &#8220;<em>mode</em>&#8221; (режим) на &#8220;<em>vertical</em>&#8221; (вертикальный), но мы также используем свойство стиля &#8220;<em>top</em>&#8221; вместо &#8220;<em>left</em>&#8221; в событии onTick, и передаем ему новое значение с помощью функции <strong>.setStyle()</strong>. Далее, при отображении числа для события onChange, мы умножаем его на -1 (минус один), что делает из отрицательного числа, положительное (если кто помнит базовую математику <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Это позволяет сделать две вещи: первое &#8211; заменить 10 на 0, где 0 &#8211; нижняя точка слайдера. Практически такого же результата, в принципе, можно добиться и установив параметр &#8220;range&#8221; на [10,0], но, при этом, колесо мышки будет работать наоборот. И это подводит нас ко второй вещи: только так можно заставить скрипт правильно понимать движение колеса мышки, ведь оно получает значения, а не слова (&#8220;vertical/horizontal&#8221;), а если пропустить первую &#8220;вещь&#8221; (с умножением на -1), то колесо прокрутки становится инвертированным. А проделав такой незамысловатый трюк, можно добиться правильного движения колеса прокрутки И получить правильные значения, где 0 (ноль) &#8211; минимальное значение, находящееся внизу.</p>

<p>К сожалению, не я это все придумал, а программист сайта ConsiderOpen.com, потому тут еще следует заметить, что этот трюк с умножением на -1 &#8211; это решение одного человека. Если Вам известен путь сделать тоже самое, но меньшими усилиями, все будут рады, если Вы этим поделитесь!</p><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools – Регулярные выражения – Урок 13</title>
		<link>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html</link>
		<comments>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html#comments</comments>
		<pubDate>Sun, 11 Jul 2010 05:22:15 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[contains]]></category>
		<category><![CDATA[escapeRegExp]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[поиск по регулярным выражениям]]></category>
		<category><![CDATA[регулярные выражения]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=596</guid>
		<description><![CDATA[Очень и очень трудно мне далось написание этого урока. Регулярные выражения вообще не самое простое, что есть в программировании, а уж для меня, так тем более. Например, пока я писал его, познакомился с функцией escapeRegExp(), которую хотел применить при доработке под свои нужды класса Mootools для поиска и подсветки текста на странице (аналог обычного поиска [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Очень и очень трудно мне далось написание этого урока. Регулярные выражения вообще не самое простое, что есть в программировании, а уж для меня, так тем более. Например, пока я писал его, познакомился с функцией <strong>escapeRegExp()</strong>, которую хотел применить при доработке под свои нужды <a href="http://davidwalsh.name/mootools-highlighter-search" rel="nofollow">класса Mootools для поиска и подсветки текста на странице</a> (аналог обычного поиска в Firefox и некоторых других браузерах, но не все ж умеют пользоваться встроенным поиском браузера…). Так вот там у меня ничего не получилось. Дебаггер ФФ всё твердил, что «escapeRegExp() is not a function» (не является функцией). Я так и не понял, что я делал не правильно. А здесь все получилось (<a href="#escape">в самом конце урока</a>).</p>
<p><span id="more-596"></span></p>
<h2>Основы</h2>
<h3>test()</h3>
<p>В своем самом простом выражении, регулярное выражение – это простой текст, который нужно найти в документе. Несмотря на то, что JavaScript уже имеет встроенный объект RegExp, который отвечает за формирование регулярных выражений, со своей собственной функцией <strong>test()</strong>, но функция test() в Mootools является более дружелюбной её версией, чем яваскриптовская.</p>
<p>Для начала, посмотрим на самый простой пример использования функции <strong>test()</strong>, в котором будем искать определенный текст, в более объемном тексте.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Текст или строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"Найти что-нибудь здесь"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Регулярное выражение, которое будем использовать для поиска</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regular_expression <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"здесь"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//применяем функцию test(), которая возвращает true или false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> result <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regular_expression<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//переменная result имеет значение true</span></pre>
</div>
</div>
<p>По сути, это такой же результат, если бы использовалась функция <strong>contains()</strong>. Однако, в то время, как <strong>contains()</strong> ищет целые слова, <strong>test()</strong> находит вхождения сочетания символов:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_match <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"слово"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт false</span>
string_to_match.<span style="color: rgb(102, 0, 102);">contains</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'лов'</span><span style="color: rgb(0, 153, 0);">)</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт true</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'лов'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>И ещё обращу внимание на то, что регулярное выражение не будет чувствительным к регистру, если этого явно не указать с помощью специального ключа. Потому, поиск по регулярному выражению «слово», в слове «Слово» вернёт false. Пример:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем функцию обработки</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo_1 <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем исходный текст</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем регулярное выражение</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//производим поиск в исходном тексте</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;

	<span style="color: rgb(0, 102, 0); font-style: italic;">//сообщаем пользователю о текущем положении дел</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть совпадение!"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Нет совпадения"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p>Обращаю внимание на то, что есть некоторые символы, использовать которые нужно очень осторожно. Если использовать один из нижеуказанных символов в примере ниже, это может привести к непредвиденной ошибке и потому, нужно будет перезагрузить страницу, чтобы все примеры страницы работали.</p>
<p>-  .  *  +  ?  ^  $  {  }  (  )  |  [  ]  /  \ </p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Текст, в котором производим поиск:</td>
<td>
<input id="regex_1_value" size="25" value="Ищем совпадения в этом тексте"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_1_match" size="25" value="тексте"/></td>
</tr>
<tr>
<td><button id="regex_1_button">Запуск теста</button></td>
<td>
<div id="regex_1_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h2>Игнорируем регистр</h2>
<p>Существует масса ситуаций, когда нет необходимости, чтобы регулярное выражение было чувствительным к регистру текста. Для того, чтобы это уточнить для функций, работающих с регулярными выражениями, нужно использовать параметр «i», как это указано в следующем примере.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"ИгнОр РЕгИстрУ"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт false</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"игнор"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт true</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"игнор"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Функции <strong>test()</strong> можно передать несколько параметров, но, так как JavaScript поддерживает только 3 параметра регулярного выражения (2 из которых включены по умолчанию в функции <strong>test()</strong>), параметр «i», вероятно, единственный, который нужно будет передавать. Ниже, в форме, можете протестировать функцию <strong>test()</strong> с параметром игнорирования регистра.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получить строку для тестирования из поля input</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получить регулярное выражение из поля input</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверить, требуется ли игнорирование регистра</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">""</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_param'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

		regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Произвести поиск и получить результат</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(51, 153, 51);">,</span> regex_param<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Обновить приготовленный контейнер для сообщения результатов поиска</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
       	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть находка! <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> "</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>
       	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Ничего нет! <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> "</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Строка, в которой будем искать:</td>
<td>
<input id="regex_2_value" value="ИгнОр РЕгИстрУ" type="text"/></td>
</tr>
<tr>
<td>Определим регулярное выражение:</td>
<td>
<input id="regex_2_match" value="игнор" type="text"/></td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_2_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_2_button">Запуск теста</button></td>
<td>
<div id="regex_2_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h2>Интересная часть</h2>
<p>Итак, мы уже просмотрели примеры простого поиска по регулярным выражениям, можно начать смотреть в сторону более сложных выражений. Охватить всю функциональность и возможности регулярных выражений сейчас не получится (да я и не претендую на это), но ознакомиться то «самое, самое», что можно будет использовать в своих простых приложениях, у нас получится. Даже этого должно будет хватить для решения простых задач (меня регуляри не раз спасали – некоторые до сих пор использую в DreamWeaver-е).</p>
<h3>Находим начало строки с помощью оператора «^»</h3>
<p>Оператор «^» при использовании в регулярных выражениях, помогает найти текст в начале строки, вне зависимости от того, существует ли этот текст далее в строке поиска. Установите оператор в начале строки для поиска, вот так:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поищем в начале текста"</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//тестирует верхний текст на предмет того, начинается ли он с данной строки</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает true</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^поищем"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Далее, если выражение не находится в начале текста, этот поиск<br />
вернет, соотвественно, false:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поищем в начале текста"</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//тестирует верхний текст на предмет того, начинается ли он с данной строки</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает (удивление) false</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^начал"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Эти два примера можно и протестировать здесь:</p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Строка, в которой будем искать:</td>
<td>
<input id="regex_3_value" size="30" value="будем проверять только начало" type="text"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_3_match" value="^будем" type="text"/></td>
</tr>
<tr>
<td>Регистру игнор?</td>
<td>
<input id="regex_3_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_3_button">Пуск…</button></td>
<td>
<div id="regex_3_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h3>Поиск по концам с помощью оператора «$»</h3>
<p>Этот оператор работает также, как и предыдущий («^»), только с двумя исключениями:</p>
<ol>
<li>Поиск только по концу строк</li>
<li>Устанавливается в конце регулярного выражения</li>
</ol>
<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: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поиск по концам строк"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//проверяет, заканчивается ли строка на слово "строк"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и возвращает "true"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"строка$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//проверяет, заканчивается ли строка на слово "металлика"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и вовращает "false"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_false <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"металлика$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Используя оба этих оператора, можно протестировать исходный текст на полное совпадение с регулярным выражением:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Исходная строка</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"проверим на полное совпадение"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет на полное совпадение со строкой "проверим на полное совпадение"</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает true</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^проверим на полное совпадение$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет на полное совпадение со строкой "проверим на полное совпадение"</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_false <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^проверим на совпадение$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Исходная строка:</td>
<td>
<input id="regex_4_value" value="проверим на полное соответствие" size="30" type="text"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_4_match" value="^проверим на полное соответствие$" size="30" type="text"/></td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_4_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_4_button">Запуск теста…</button></td>
<td>
<div id="regex_4_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h3>Классы символов</h3>
<p>Классы символов – это ещё один инструмент регулярных выражений (жутко полезный, нужно заметить), позволяющий производить поиск нескольких определенных символов («А» или «Я», «f» или «r») или символов из определенного диапазона (от «A» до «Z» или от «r» до «z»). Если, например, есть необходимость проверить строку на наличие слов «бее» или «мее», мы заключаем две первые буквы этих слов в [квадратные] скобки, таким образом формируя класс символов и использовать следующее регулярное выражение:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать слово "мее"</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> first_string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"овцы разговаривают словом мее"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать слово "бее"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> second_string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"козы разговаривают словом бее"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//это выражение найдет совпадение в первой строке, но не во второй</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> returns_true <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"мее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> returns_false <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"мее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//следующее найдет совпадение во второй строке, но не в первой</span>
returns_false <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"бее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"бее"</span><span style="color: rgb(0, 153, 0);">)</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//следующее найдет совпадение в обеих строках</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[мб]ее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[мб]ее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Первая строка, в которой будем искать:</td>
<td>
<input id="regex_5_value_1" size="30" value="овцы разговаривают словами мее" type="text"/></td>
<td>
<div id="regex_5_result_1">&nbsp;</div>
</td>
</tr>
<tr>
<td>Вторая строка, в которой будем искать:</td>
<td>
<input id="regex_5_value_2" size="30" value="козы разговаривают словами бее" type="text"/></td>
<td>
<div id="regex_5_result_2">&nbsp;</div>
</td>
</tr>
<tr>
<td>РегЭксп:</td>
<td>
<input id="regex_5_match" value="[мб]ее" type="text"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_5_param" type="checkbox"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><button id="regex_5_button">Пуск…</button></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<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: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">" b, д или 3"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск символов a, b, c, или d. Вернёт true.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[a-d]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск по символам г, д, е, ж или з. Вернёт true.</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//Обратите внимание, "ё" в списке нет. "ё" не находится. Почему, пока не знаю...</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[г-з]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск 1, 2, 3, 4 или 5. Вернёт true.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[1-5]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Если необходимо искать несколько классов символов, нужно будет заключить такие классы в свои собственные [квадратные] скобки и разделить их логическим оператором «|» (OR – или). Таким образом, у нас появляется регулярное выражение с использованием вложенных квадратных скобок.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"b, д или 3"</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//Вернёт true, так как все три выражения верны.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[a-d] | [г-з] | [1-5]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Вот пример, в котором можно немного поиграться с полями: воодите туда любой текст, кликайте по соответствующим кнопка регЭкспа и следите за тем, что возвращает true, а что false. «Да прибудет с тобой сила!» <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Первая строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_1" size="30" value="b" type="text"/></td>
<td>
<div id="regex_6_result_1">&nbsp;</div>
</td>
</tr>
<tr>
<td>Вторая строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_2" size="30" value="3" type="text"/></td>
<td>
<div id="regex_6_result_2">&nbsp;</div>
</td>
</tr>
<tr>
<td>Третья строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_3" size="30" value="д" type="text"/></td>
<td>
<div id="regex_6_result_3">&nbsp;</div>
</td>
</tr>
<tr>
<td>РегЭксп:</td>
<td>
<input id="regex_6_match" value="[a-d]" type="text"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_6_param" type="checkbox"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><button id="regex_6_button">Поехали…</button></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">
<form id="searchWhat_6" action="">
<input value="[a-d]" name="regexp_demo_6" id="eng" type="radio"/><label for="eng">[a-d]</label>&nbsp;</p>
<input value="[г-з]" name="regexp_demo_6" id="rus" type="radio"/><label for="rus">[г-з]</label>&nbsp;</p>
<input value="[1-5]" name="regexp_demo_6" id="num" type="radio"/><label for="num">[1-5]</label>&nbsp;</p>
<input value="[a-d]|[г-з]|[1-5]" name="regexp_demo_6"  id="searchAll" type="radio"/><label for="searchAll">[a-d]|[г-з]|[1-5]</label><br />
      </form>
</td>
</tr>
</tbody>
</table>
<h3><a name="escape"></a> escapeRegExp()</h3>
<p>Если ты, о читатель моего поста про регулярные выражения, дочитал до сего момента, и о тебе можно сказать, что ты человек с логическим типом мышления, то ты наверняка заметил, использование многочиленных специальных символов в определении регулярного выражения, например классов символов или его логики (ИЛИ – «<strong>|</strong>«, в начале строки – «<strong>^</strong>«, в конце строки – «<strong>$</strong>» и т.д.). Ты ведь наверняка уже понял, что все эти символы сильно затрудняют поиск самих специальных символов в определенной строке… На первый взгляд. А на второй взгляд, все что нужно сделать, это экранировать специальные символы другим специальным символом – обратный слэш «<strong>\</strong>«, а если нужно искать сам обратный слэш, то используются два обратных слэша «<strong>\\</strong>«. Логика проста, если не думатьо ней <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: rgb(0, 102, 0); font-style: italic;">//Строка для поиска. Обратите внимание на специальные символы [ ] - и $</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_match <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[всякий-разный-текст] или $300"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Было бы неправильно составить такое регулярное выражение</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//потому что движок будет их воспринимать, как специальные символы</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а нам этого не нужно</span>

string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[всякий-разный-текст]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"$300"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Правильно было бы так:</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на обратный слэш \ перед символами [ ] - и $</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"<span style="color: rgb(0, 0, 153); font-weight: bold;">\[</span>stuff<span style="color: rgb(0, 0, 153); font-weight: bold;">\-</span>in<span style="color: rgb(0, 0, 153); font-weight: bold;">\-</span>here<span style="color: rgb(0, 0, 153); font-weight: bold;">\]</span>"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"<span style="color: rgb(0, 0, 153); font-weight: bold;">\$</span>300"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Когда регулярное выражение не большое, не составит особого труда экранировать каждый спец. символ. Но с другой стороны никто не отменял банальной человеческой невнимательности (которая у меня, например, хроническая), и такой специальный символ можно просто упустить из виду, или же, на стадиях своего обучения, можно и не подозревать, что ты пропустил специальный символ, не экранировал его и регЭксп не дает нужного результата. На всякий случай, если запомните сразу, вот специальные, рабочие символы регулярных выражений, которые <strong>НУЖНО</strong> экранировать:</p>
<p style="text-align: center;">- . * + ? ^ $ { } ( ) | [ ] / \</p>
<p>К счастью, Mootools – это не та библиотека, которая позволит своему пользователю бездарно убивать время на экранирование каждого рабочего символа, когда есть такая функция, как <strong>escapeRegExp()</strong>, чья работа – это избавить тебя, о начинающий программист, от экранирования специальных символов в регулярном выражении. Эта функция работает с любой строкой, потому ее можно использовать всегда, когда нужно произвести поиск какого-либо текста.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Нужно экранировать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unescaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[текст-регулярного-выражения]"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Экранируем строку</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> escaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> unescaped_regex_string.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//escaped_regex_string стала такой: "\[текст\-регулярного\-выражения\]"</span></pre>
</div>
</div>
<p>Обратите внимание, что это значит, что любой специальный символ, который нужно использовать в регулярном выражении, нужно добавить к регулярному выражению после использования функции <strong>escapeRegExp()</strong>:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, которую нужно экранировать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unescaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[текст-регулярного-выражения]"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Экранировать строку, для поиска по началу строки</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> escaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"^"</span> <span style="color: rgb(51, 153, 51);">+</span> unescaped_regex_string.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//переменная escaped_regex_string стала такой:  "^\[текст\-регулярного\-выражения\]"</span></pre>
</div>
</div>
<p>Ниже представлен пример, в котором видна разница между использованием и неиспользованием функции escapeRegExp():</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем строку для проверки</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем регулярное выражение</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяем, нужно ли экранировать текст</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_escape'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">//Если да, применяем соотв. функцию</span>
		regex_value <span style="color: rgb(51, 153, 51);">=</span> regex_value.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;

	<span style="color: rgb(0, 102, 0); font-style: italic;">//Определяем параметры регулярного выражения</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">""</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет, нужно ли игнорировать регистр</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_param'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

		regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Запуск теста</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string_1.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(51, 153, 51);">,</span> regex_param<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span>      <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть совпадения"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Нет совпадений!"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<table>
<tbody>
<tr>
<td>Строка, в которой будем производить поиск:</td>
<td>
<input id="regex_7_value" value="[слово] или $400" type="text"/></td>
</tr>
<tr>
<td>Регялурное выражение: </td>
<td>
<input id="regex_7_match" value="$400" type="text"/></td>
</tr>
<tr>
<td>использовать escapeRegExp():</td>
<td>
<input id="regex_7_escape" type="checkbox"/></td>
</tr>
<tr>
<td>Игнор регистру:</td>
<td>
<input id="regex_7_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_7_button">Запуск теста…</button></td>
<td>
<div id="regex_7_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<p>Помните, что все примеры можно «сломать», если использовать неэкранированные специальные символы. Потому, если вдруг случается, что что-то перестало работать, после того, как только что это работало – не удивляйтесь, а просто перезагрузите страницу <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<p>Если все пойдет по плану, то у меня на готовке еще несколь интересных материалов и уроков, потому не забудьте <a href="http://feeds.feedburner.com/Beginners-Programming-Training">подписаться на мою RSS ленту</a>.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Перемещение/Передвижение с помощью класса Drag.Move – Урок 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:17 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[drag]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[интерактив]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=592</guid>
		<description><![CDATA[По моему мнению, верх интерактивности, это когда пользователь сайта может не просто ввести текст в определенную форму, а когда он сам может изменять дизайн, например, сам определять те или иные параметры внешнего вида сайта или использовать перетаскивание для заполнения своей покупательской корзины, например. Перетаскивание - один из самых мощных инструментов JavaScript и библиотек на его основе. Поклонники "высшего пилотажа", те кто стремится сделать свои скрипты супер быстрыми и оптимизированными, скажут, что нужно всегда использовать Javascript для создания кода, но библиотеки сделаны не просто для развлечения. Да, написав код на JavaScript, вы сделаете свой скрипт самым быстрым насколько это возможно (конечно, в зависимости от уместности использования тех или иных функций/методов), но такие библиотеки, как Mootools, jQuery, Prototype и др. призваны облегчить жизнь веб-программиста: они сделали создание специальных эффектов и интерактивности на сайте довольно простым, что и должен будет доказать этот урок. Итак, учимся создавать перетаскиваемые объекты с помощью классов Drag и Drag.Move.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Drag.Move – Перемещение с помощью Mootools 1.2</h2>
<p>С 10-го урока я начал публиковать уроки, посвященные спец. эффектам, которые можно создавать с помощью библиотеки Mootools. Если Вы еще не взглянули в эти уроки, очень рекомендую <a href="http://php.infoniac.ru/fx-morph-fx-options-fx-events-day11.html">посмотреть</a>.</p>
<p>В сегодняшнем уроке мы поставим под прицел класс Drag.Move – очень сильный инструмент, который позволяет добавить возможность перемещения/перетаскивания элементов на странице. Вообще, эта возможность – это одна из моих самых любимых функций JavaScript и всех библиотек на его основе.</p>
<p>Используется этот класс также, как и все остальные плагины библиотеки: создается новый (<em>«new»</em>) объект Drag.Move и назначается переменной. Далее назначаются параметры и события объекта. В принципе, это и есть вся основа. Кстати, объекты Drag и Drag.Move не определены в основной библиотеке, потом нужно будет создавать свою собственную сборку Mootools с помощью <a title="Mootools More Builder" href="http://mootools.net/more" target="_blank">онлайн инструмента</a> на сайте разработчиков.</p>
<h2>Основы</h2>
<h3>Drag.Move</h3>
<p>Установка перетаскиваемого элемента довольно проста. Давайте рассмотрим пример ниже. Обратите внимание, как отделяются параметры и события класса <em>Drag.Move</em> от событий и параметров класса <em>Drag</em>. Drag.Move расширяет и дополняет класс Drag, потому он будет принимать не только свои параметры и события, но и те, что относятся к классу Drag. Сегодня мы не будем углубляться в работу Drag, но мы взглянем на несколько его интересных параметров и событий.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	        <span style="color: rgb(0, 102, 0); font-style: italic;">// параметры класса Drag.Move</span>
		droppables<span style="color: rgb(51, 153, 51);">:</span> dropElement<span style="color: rgb(51, 153, 51);">,</span>
		container<span style="color: rgb(51, 153, 51);">:</span> dragContainer<span style="color: rgb(51, 153, 51);">,</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">// параметры класса Drag</span>
		handle<span style="color: rgb(51, 153, 51);">:</span> dragHandle<span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// событие класса Drag.Move</span>
		onDrop<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

                        <span style="color: rgb(0, 102, 0); font-style: italic;">// вызовет предупреждение с атрибутом id сброшенного элемента</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// в элемент, принимающий сброшенные элементы</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// (это может показаться запутанным, на первый взглад, но, надеюсь,</span>
                        <span style="color: rgb(0, 102, 0); font-style: italic;">// далее все проясниться</span>
                        <span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span>dr.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'id'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">// События Drag</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">// передаются перетаскиваемому элементу</span>
                onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

			<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span>el.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'id'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
		<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Разберем всё это по полочкам…</p>
<h3>Параметры Drag.Move</h3>
<p>Параметры Drag.Move позволяют назначить два основных типа элементов:</p>
<ul>
<li><strong>droppables</strong> – опеределяет элементы, которые будут способны «принять» сброшенный элемент</li>
<li><strong>container</strong> – установить контейнер перетаскиваемого элемента (будет удерживать элемент внутри этого элемента-контейнера)</li>
</ul>
<p>Установка параметров доволно проста:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем один элемент по id, который можно будет перетаскивать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем массив элементов по их классу, которые смогут принят сброшенный элемент</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dropElements <span style="color: rgb(51, 153, 51);">=</span> $$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.drag_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем контейнер</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragContainer <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_container'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем объект Drag.Move</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag.Move</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">// назначаем элементу droppables массив элементов, определённых немного выше</span>
		droppables<span style="color: rgb(51, 153, 51);">:</span> dropElements <span style="color: rgb(51, 153, 51);">,</span>
               <span style="color: rgb(0, 102, 0); font-style: italic;">// назначаем элементу container элемент, определенный немного выше</span>
		container<span style="color: rgb(51, 153, 51);">:</span> dragContainer
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Теперь наш перетаскиваемый элемент имеет свой контейнер, а также у нас имеется класс элементов, который будет принимать сбросы других элементов. Тут можно провести аналогию с современными аэропортами: не все аэропорты предназначены для принятия и обслуживания определенных типов самолётов. Так и в нашем случае: необходимо определить, какой класс сможет принимать «на посадку» перетаскиваемые элементы.</p>
<h3>События объекта Drag.Move</h3>
<p>События этого объекта дают возможность запускать определенные заранее функции в определенные этапы существования объекта, как например в тот момент, когда пользователь «совершил захват» передвигаемого элемента, когда он начинает его передвигать или когда он его сбрасывает. События объекта Drag.Move передаются каждому перетаскиваемому и сбрасывамому элементу в качестве параметров.</p>
<ul>
<li><strong>onDrop</strong> – запускается при сбросе элемента в соответствующий принимающий элемент;</li>
<li><strong>onLeave</strong> – запускается когда перетаскиваемый элемент покидает границы элемента, способного принимать перетаскиваемые элементы;</li>
<li><strong>onEnter</strong> – запускается при входе перетаскиваемого элемента в зону принимающего элемента.</li>
</ul>
<p>Как и <a href="http://php.infoniac.ru/mootools-tutorial-day-5-events.html">любые другие события</a>, которые мы до этого обсуждали, события объекта Drag.Move вызывают функцию, которая выполняется когда событие исполняется.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragContainer <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_container'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag.Move</span>

	droppables<span style="color: rgb(51, 153, 51);">:</span> dropElements <span style="color: rgb(51, 153, 51);">,</span>
	container<span style="color: rgb(51, 153, 51);">:</span> dragContainer <span style="color: rgb(51, 153, 51);">,</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// События Drag.Move</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">// функции Drag.Move передадут перетаскиваемый элемент (в данном случае 'el')</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">// принимающему элементу, с которым перетаскиваемый взаимодействует (у нас 'dr')</span>
	onDrop<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">// на русском: "если элемента, на который происходит сброс НЕ ЯВЛЯЕТСЯ принимающий"</span>
		<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 153, 51);">!</span>dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			<span style="color: rgb(0, 102, 0); font-style: italic;">//ничего не делать</span>
		<span style="color: rgb(0, 153, 0);">}</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">// в противном случае, т.е. элемент принимающий</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// делать то-то, то-то</span>
		<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>
			<span style="color: rgb(0, 102, 0); font-style: italic;">// действия, который произойдут,</span>
			<span style="color: rgb(0, 102, 0); font-style: italic;">// когда элемента будет сброшен на принимающий элемент</span>

		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
	onLeave<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">// эта функция будет запущена, когда перетаскиваемый элемент</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// покинет границы принимающего элемента</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
	onEnter<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">// эта функция будет запущена, когда перетаскиваемый элемент</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// входит в границы принимающего элемента</span>
	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>Несколько событий объекта Drag</h3>
<p>У объекта Drag есть совсем немного событий и параметров, но и я не все буду рассматривать:</p>
<h4>Параметр – snap</h4>
<p>Параметр <strong>snap</strong> позволяет определить, на сколько пикселей пользователь должен передвинуть курсор прежде чем начнется сам процесс перемещения элемента. Значение по умолчанию – 6, но можно указать любое число или переменную, содержащую число. Конечно же, существуют некие логические рамки (установив это значение на 1000, никакой пользы не принесешь своему приложению), но все-таки этот параметр может сослужить хорошую службу разработчику при улучшении своего приложения.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		snap<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">10</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Параметр – handle</h4>
<p>Данный параметр добавляет &#8220;ручку&#8221; к вашему перетаскиваемому элементу. Эта «ручка» определяет единственную область элемента, которой можно воспользоваться для &#8220;захвата&#8221; перетаскиваемого элемента, что позволяет использовать оставшуюся часть элемента для других целей. Для определения &#8220;ручки&#8221;, просто вызовите элемент.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">// определяет массив элементов по классу</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">// это позволит нам добавить несколько "ручек",</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">// если нам нужно будет определять несколько передвигаемых элементов</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragHandle <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_handle'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// параметры Drag</span>

		handle<span style="color: rgb(51, 153, 51);">:</span> dragHandle
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Событие onStart</h4>
<p>Событие <strong>onStart</strong> определяет функцию, которая будет запускаться при начале перетаскивания. Если значение параметра <strong>snap</strong> установлено большое, то событие не начнется до тех пор, пока заданное количество пикселей не будет пройдено.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                    <span style="color: rgb(0, 102, 0); font-style: italic;">// сюда вставляем всё, что должно произойти вначале перетаскивания</span>

               <span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Событие – onDrag</h4>
<p>Событие <strong>onDrag</strong> будет работать постоянно во время перетаскивания элемента.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>

		onDrag<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                    <span style="color: rgb(0, 102, 0); font-style: italic;">// сюда вставляем всё, что должно происходить во время перетаскивания</span>
               <span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h4>Событие onComplete</h4>
<p>Событие <strong>onComplete</strong> запускается когда происходит сброс перетаскиваемого элемента и оно будет запущено вне зависимости от того, будет этот элемент приземлен в элементе droppable или нет.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement <span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	        <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
                    <span style="color: rgb(0, 102, 0); font-style: italic;">// сюда вставляем всё, что должно произойти при сбросе элемента</span>

               <span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h2>Примеры</h2>
<p>Снова подошло время моей любимой части любого урока: Пример!</p>
<p>Давайте, для упрощения процесса переваривания всей информации этого урока, соорудим пример, который бы содержал максимум из представленных параметров, событий и т.д. Поехали!</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;">window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_me'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragContainer <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_cont'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragHandle <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_me_handle'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dropElement <span style="color: rgb(51, 153, 51);">=</span> $$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.draggable'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> startEl <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'start'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> completeEl <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'complete'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dragIndicatorEl <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drag_ind'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> enterDrop <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'enter'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> leaveDrop <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'leave'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> dropDrop <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'drop_in_droppable'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> 

&nbsp;
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> myDrag <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Drag.<span style="color: rgb(102, 0, 102);">Move</span><span style="color: rgb(0, 153, 0);">(</span>dragElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	    <span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag.Move</span>
		droppables<span style="color: rgb(51, 153, 51);">:</span> dropElement<span style="color: rgb(51, 153, 51);">,</span>
		container<span style="color: rgb(51, 153, 51);">:</span> dragContainer<span style="color: rgb(51, 153, 51);">,</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">// Параметры Drag</span>
		handle<span style="color: rgb(51, 153, 51);">:</span> dragHandle<span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// События Drag.Move</span>
		onDrop<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

			<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 153, 51);">!</span>dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
        	        <span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>

				dropDrop.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
				el.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#fff'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает белым</span>

				dr.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#667C4A'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает зеленым</span>
			<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">;</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>

		onLeave<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			leaveDrop.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>

		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onEnter<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(51, 153, 51);">,</span> dr<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

			enterDrop.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>
		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(0, 102, 0); font-style: italic;">// Drag Events</span>

		onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			startEl.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>

		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onDrag<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			dragIndicatorEl.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>

		<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
		onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>el<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
			completeEl.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#FB911C'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> <span style="color: rgb(0, 102, 0); font-style: italic;">//мигает оранжевым</span>

		<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>В этом примере, в отличие от большинства ранее представленных, мы будем серьезно использовать CSS, потому нужно добавить некоторые пояснения к таблице CSS. Для того, чтобы контейнер Drag.Move нормально определялся в IE, нужно будет подробно объяснить позиционирование элементов этому популярному браузеру. Очень важно определить элементу-контейнеру «position:relative», а перетаскиваемому элементу «position:absolute». Далее нужно удостовериться в том, что знаяения «left» и «top» для этого элемента тажке установлены. Ну, а если вы создаете приложение с перетаскиваемыми элементами, которое никоим образом не предназначается для IE, можете вообще не обращать внимание на эту часть.</p>
<div class="wp_syntax">
<div class="code">
<pre class="css" style="font-family: monospace;">body <span style="color: rgb(0, 170, 0);">{</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">margin</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">padding</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;

<span style="color: rgb(128, 128, 128); font-style: italic;">/* убедитесь в том, что перетаскиваемый элемент умеет "position: absolute"
 а параметры top и left установлены на значения для первоначального положения элемента*/</span>
<span style="color: rgb(204, 0, 204);">#drag_me</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#333</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">position</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">absolute</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">top</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">left</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(204, 0, 204);">#drop_here</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#eee</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;

<span style="color: rgb(128, 128, 128); font-style: italic;">/* убедитесь в том, что элемент-контейнер имеет "position:relative" */</span>
<span style="color: rgb(204, 0, 204);">#drag_cont</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#ccc</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">600px</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">500px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">position</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">relative</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">margin-top</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">margin-left</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">100px</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(204, 0, 204);">#drag_me_handle</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);"><span style="color: rgb(204, 102, 204);">100</span>%</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">auto</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#666</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">cursor</span><span style="color: rgb(0, 170, 0);">:</span>move<span style="color: rgb(0, 170, 0);">;</span>

<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(204, 0, 204);">#drag_me_handle</span> span <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">display</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">block</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">padding</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">5px</span><span style="color: rgb(0, 170, 0);">;</span>

<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(102, 102, 255);">.indicator</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);"><span style="color: rgb(204, 102, 204);">100</span>%</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">auto</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(204, 0, 204);">#0066FF</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">border-bottom</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">1px</span> <span style="color: rgb(153, 51, 51);">solid</span> <span style="color: rgb(204, 0, 204);">#eee</span><span style="color: rgb(0, 170, 0);">;</span>

<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(102, 102, 255);">.indicator</span> span <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">padding</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">10px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">font-size</span><span style="color: rgb(0, 170, 0);">:</span><span style="color: rgb(153, 51, 51);">14px</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">display</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">block</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span>
&nbsp;
<span style="color: rgb(102, 102, 255);">.draggable</span> <span style="color: rgb(0, 170, 0);">{</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">width</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>

	<span style="color: rgb(0, 0, 0); font-weight: bold;">height</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(153, 51, 51);">200px</span><span style="color: rgb(0, 170, 0);">;</span>
	<span style="color: rgb(0, 0, 0); font-weight: bold;">background-color</span><span style="color: rgb(0, 170, 0);">:</span> <span style="color: rgb(0, 0, 0); font-weight: bold;">blue</span><span style="color: rgb(0, 170, 0);">;</span>
<span style="color: rgb(0, 170, 0);">}</span></pre>
</p></div>
</div>
<p>Далее следует HTML код, который создаст нам плацдарм для восхощения возможностями Mootools.</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_cont"</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"start"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Начало<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_ind"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Перетаскивание<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"complete"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Завершен<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"enter"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Вход в принимающий элемент<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"leave"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Выход из принимающего элемента<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drop_in_droppable"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"indicator"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>Сброшен в принимающий элемент<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_me"</span>&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drag_me_handle"</span>&gt;&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;</span>ручка<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">span</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"drop_here"</span> <span style="color: rgb(0, 0, 102);">class</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"draggable"</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span></pre>
</p></div>
</div>
<div id="drag_cont">
<div style="background-color: rgb(0, 102, 255);" id="start" class="indicator"><span>Начало</span></div>
<div style="background-color: rgb(0, 102, 255);" id="drag_ind" class="indicator"><span>Перетаскивание</span></div>
<div style="background-color: rgb(0, 102, 255);" id="complete" class="indicator"><span>Завершен</span></div>
<div style="background-color: rgb(0, 102, 255);" id="enter" class="indicator"><span>Вход в принимающий элемент</span></div>
<div style="background-color: rgb(0, 102, 255);" id="leave" class="indicator"><span>Выход из принимающего элемента</span></div>
<div style="background-color: rgb(0, 102, 255);" id="drop_in_droppable" class="indicator"><span>Сброшен в принимающий элемент</span></div>
<div style="position: absolute; left: 59px; top: 279px; background-color: rgb(51, 51, 51);" id="drag_me">
<div id="drag_me_handle"><span>ручка</span></div>
</p></div>
<div style="background-color: rgb(238, 238, 238);" id="drop_here" class="draggable"></div>
</div>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-drag-move-objects-tut12.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools – Использование Fx.Morph, Fx.Options и Fx.Events – Урок 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 19:09:59 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></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=586</guid>
		<description><![CDATA[Mootools 1.2 Fx.Morph, Fx.Options, и Fx.Events Сегодня продолжим исследовать раздел спец. эффектов нашей любимой библиотеки. Вначале, мы научимся тому, как использовать библиотеку Fx.Morph (которая, по сути, позволяет изменять несколько свойств объектов), после чего посмотрим на несколько примеров использования общих параметров спец. эффектов, применимых как к Fx.Tween и Fx.Morph. Ну а в конце, рассмотрим такие события [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Mootools 1.2 Fx.Morph, Fx.Options, и Fx.Events</h2>
<p>Сегодня продолжим исследовать раздел спец. эффектов нашей любимой библиотеки. Вначале, мы научимся тому, как использовать библиотеку Fx.Morph (которая, по сути, позволяет изменять несколько свойств объектов), после чего посмотрим на несколько примеров использования общих параметров спец. эффектов, применимых как к Fx.Tween и Fx.Morph. Ну а в конце, рассмотрим такие события раздела Fx как &#8220;<strong>onComplete</strong>&#8221; и &#8220;<strong>onStart</strong>&#8220;. Все эти параметры и события позволят нам получить больше контроля над анимированными переходами.</p>
<h3>Fx.Morph</h3>
<h4>Создание нового эффекта Fx.Morph</h4>
<p>Запуск нового превращения (<em>morph</em> с англ. – превращение) происходит примерно также, как и запуск нового <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: rgb(0, 102, 0); font-style: italic;">//вначале, назначим нашему элементу переменную</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//теперь создаем объект превращения</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//далее задаем параметры свойств, также как в случае с Fx.Tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//только сейчас можно будет устанавливать несколько свойств</span>
morphObject.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>

    <span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>
    <span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#eeeeee'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//еще можно начать превращение также, как и в случае с tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//с помощью функции start, но назначить изменения в нескольких свойствах</span>
morphObject.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>

    <span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>
    <span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#d3715c'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Вот это и есть тот минимум, который необходим для создания, настройки и запуска эффекта morph – превращения.</p>
<p>Ну, а для того, что бы сделать всё по-хорошему, нужно создать еще несколько переменных, отделить функции друг от друга, создать несколько событий и прослушек для хорошего контроля всего процесса:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphSet <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//далее задаем параметры свойств стилей, также как в случае с Fx.Tween</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//только сейчас можно будет устанавливать несколько свойств стилей</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>

		<span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">100</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#eeeeee'</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphStart <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//еще можно начать превращение также, как и в случае с tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//с помощью функции start, но назначить изменения в нескольких свойствах</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">300</span><span style="color: rgb(51, 153, 51);">,</span>

		<span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#d3715c'</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphReset <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//устанавливаем первоначальные значения</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
		<span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span>

		<span style="color: rgb(51, 102, 204);">'height'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span>
		<span style="color: rgb(51, 102, 204);">'background-color'</span><span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'#ffffff'</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_element'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//тут добавляем прослушку соответствующим кнопкам</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//и соединяем переменную morphObject с функцией</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//что позволяет нам использовать "this"</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_set'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> morphSet.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>morphObject<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_start'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> morphStart.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>morphObject<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'morph_reset'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> morphReset.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>morphObject<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_element"</span>&gt;&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_set"</span>&gt;</span>Установить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_start"</span>&gt;</span>Запустить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span>
<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"morph_reset"</span>&gt;</span>Сбросить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<div id="morph_element"></div>
<p>
  <button id="morph_set">Установить</button><br />
  <br />
  <button id="morph_start">Запустить</button><br />
  <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: rgb(0, 102, 0); font-style: italic;">//объявляем объекты morph и tween</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а все параметры вставляем в фигурные скобки</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале объявляем название параметра</span>

    <span style="color: rgb(0, 102, 0); font-style: italic;">//потом двоеточие - :</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//и значение параметра</span>
    duration<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'long'</span><span style="color: rgb(51, 153, 51);">,</span>
    transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'sine:in'</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>fps (frames per second) – кадры в секунду</h3>
<p>Данный параметр определяет скорость анимации. По умолчанию скорость анимации установлена на 50 кадров в секунду и этот параметр может принимать данные в виде чисел и переменные, содержащие числа.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем объект, а параметры в фигурные скобки { }</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

    fps<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">60</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//или</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> framesPerSecond <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">60</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>tweenElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    fps<span style="color: rgb(51, 153, 51);">:</span> framesPerSecond

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>unit</h3>
<p>Параметр <strong>unit</strong> определяет единицу измерения. Например, нужно, чтобы число 100 означало px – пиксели, % – проценты или что-лобо еще.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//все как и выше</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

    unit<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'%'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>link</h3>
<p>Параметр <strong>link</strong> позволяет управлять несколькими вызовами эффекта. Например, если имеется объект с эффектом mouseover, вы же не хотите начинать его каждый раз, как пользователь наводит на него указатель? Или, если пользователь наводит мышь на объект дважды, нужно ли игнорировать следующий вызов эффекта или его нужно поставить в очередь и запустить сразу по окончании первого вызова? У параметра link есть 3 возможных значения: </p>
<ul>
<li>&#8216;ignore&#8217; (по умолчанию) – это значение игнорирует все вызовы пока предыдущее выполнение эффекта не выполнено.</li>
<li>&#8216;calcel&#8217; – отменяет текущее выполнение эффекта и запускает его с начала.</li>
<li>&#8216;chain&#8217; – позволяет чередовать вызовы эффектов и выполнять каждый из них по очереди.</li>
</ul>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//и снова назначаем объект в переменную</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

    link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'chain'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>duration – длительность</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>&#8216;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: rgb(0, 102, 0); font-style: italic;">//определяем объект и вставляем его параметры в фигурные скобки</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

    duration<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'long'</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//или</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> morphObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Morph</span><span style="color: rgb(0, 153, 0);">(</span>morphElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

    duration<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(204, 0, 0);">1000</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>transition – переход</h3>
<p>И последний параметр, который мы рассмотрим, это параметр <strong>transition</strong>, который определяет тип перехода. Например, это должен быть плавный переход или он должен начинаться плавно, а потом ускориться под конец. В полиграфии есть штука под названием «пантонница». Предлагаю вашему вниманию <em>«транзитницу»</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: rgb(0, 51, 102); font-weight: bold;">var</span> tweenObject <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>tweenElement<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
    transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'quad:in'</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p><strong><em>Примечание</em></strong>: Первая полоса перехода оснащена зарядом красного highlight, переходящий в оранжевый highlight (мы о нем говорили <a href="http://php.infoniac.ru/mootorials-special-effects-day10.html" title="Спец. Эффекты в Mootools – Уроки Mootools – Урок 10">в прошлом уроке</a>). А вот и она, «транзитница», собственно:</p>
<div style="width: 300px; background-color: rgb(102, 102, 102);" id="quadin" class="trans">&#8216;quad:in&#8217;</div>
<div style="width: 300px;" id="quadout" class="trans stripe">&#8216;quad:out&#8217;</div>
<div style="width: 300px;" id="quadinout" class="trans">&#8216;quad:in:out&#8217;</div>
<div style="width: 300px;" id="cubicin" class="trans stripe">&#8216;cubic:in&#8217;</div>
<div style="width: 300px;" id="cubicout" class="trans">&#8216;cubic:out&#8217;</div>
<div style="width: 300px;" id="cubicinout" class="trans stripe">&#8216;cubic:in:out&#8217;</div>
<div style="width: 300px;" id="quartin" class="trans">&#8216;quart:in&#8217;</div>
<div style="width: 300px;" id="quartout" class="trans stripe">&#8216;quart:out&#8217;</div>
<div style="width: 300px;" id="quartinout" class="trans">&#8216;quart:in:out&#8217;</div>
<div style="width: 300px;" id="quintin" class="trans stripe">&#8216;quint:in&#8217;</div>
<div style="width: 300px;" id="quintout" class="trans">&#8216;quint:out&#8217;</div>
<div style="width: 300px;" id="quintinout" class="trans stripe">&#8216;quint:in:out&#8217;</div>
<div style="width: 300px;" id="expoin" class="trans">&#8216;expo:in&#8217;</div>
<div style="width: 300px;" id="expoout" class="trans stripe">&#8216;expo:out&#8217;</div>
<div style="width: 300px;" id="expoinout" class="trans">&#8216;expo:in:out&#8217;</div>
<div style="width: 300px;" id="circin" class="trans stripe">&#8216;circ:in&#8217;</div>
<div style="width: 300px;" id="circout" class="trans">&#8216;circ:out&#8217;</div>
<div style="width: 300px;" id="circinout" class="trans stripe">&#8216;circ:in:out&#8217;</div>
<div style="width: 300px;" id="sinein" class="trans">&#8216;sine:in&#8217;</div>
<div style="width: 300px;" id="sineout" class="trans stripe">&#8216;sine:out&#8217;</div>
<div style="width: 300px;" id="sineinout" class="trans">&#8216;sine:in:out&#8217;</div>
<div style="width: 300px;" id="backin" class="trans stripe">&#8216;back:in&#8217;</div>
<div style="width: 300px;" id="backout" class="trans">&#8216;back:out&#8217;</div>
<div style="width: 300px;" id="backinout" class="trans stripe">&#8216;back:in:out&#8217;</div>
<div style="width: 300px;" id="bouncein" class="trans">&#8216;bounce:in&#8217;</div>
<div style="width: 300px;" id="bounceout" class="trans stripe">&#8216;bounce:out&#8217;</div>
<div style="width: 300px;" id="bounceinout" class="trans">&#8216;bounce:in:out&#8217;</div>
<div style="width: 300px;" id="elasticin" class="trans stripe">&#8216;elastic:in&#8217;</div>
<div style="width: 300px;" id="elasticout" class="trans">&#8216;elastic:out&#8217;</div>
<div style="width: 300px;" id="elasticinout" class="trans stripe">&#8216;elastic:in:out&#8217;</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 нашей «транзитницы» при наведении курсора и при его заборе с объекта). <strong>InOut</strong>, соответственно, определяет использование спец. эффекта перехода, в обоих случаях, т.е. как при увеличении определенных свойств, так и при их уменьшении.</p>
<h3>Fx Events – события</h3>
<p>События спец. эффектов позволяют выполнять определенный код в различные стадии анимационного эффекта. Эти события могут быть очень полезны для создания обратной связи с пользователями и создает еще один уровень управления над своими эффектами:</p>
<ul>
<li>onStart – срабатывает при начале эффекта</li>
<li>onCancel – срабатывает при отмене эффекта</li>
<li>onComplete – срабатывает при завершении эффекта</li>
<li>onChainComplete – срабатывает при завершении поочередных эффектов.</li>
</ul>
<p>При создании эффекта tween или morph, события определяются по тому же принципу, что и параметры эффекта, только в качестве значения событию передается функция:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//определяем новый объект переменной</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и объявляем его новым объектом класса Fx.Tween</span>
quadIn <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут выставляем опции</span>
	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> 'quad<span style="color: rgb(51, 153, 51);">:</span><span style="color: rgb(0, 0, 102); font-weight: bold;">in</span>'<span style="color: rgb(51, 153, 51);">,</span>

&nbsp;
       <span style="color: rgb(0, 102, 0); font-style: italic;">//несколько событий</span>
	onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">//эти события применяются к нашему объекту</span>

                <span style="color: rgb(0, 102, 0); font-style: italic;">//потому эффект "highlight" применяется к</span>
                <span style="color: rgb(0, 102, 0); font-style: italic;">//началу анимации</span>
	        passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#C54641'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>

&nbsp;
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на разделители между функциями, в виде запятых,</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тогда как, после последнего параметра или события</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//запятые не ставятся</span>
        onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

                <span style="color: rgb(0, 102, 0); font-style: italic;">//а тут мы применяем эффекст highlight к завершению анимации </span>
	        passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#C54641'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h2>Пример</h2>
<p>Попробуем сгенерировать все переходы, показанные выше и попробуем использовать наши функции немного другими методами, какими ранее еще не пользовались. Все элементы переходов используют по две функции: одна функция запускает анимацию по наведению курсора, другая при его отводе.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//эту функцию будем запускать по событию mouseenter</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> enterFunction <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'700px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//эту функцию будем запускать по событию mouseleave</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> leaveFunction <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//определим переменными некоторые элементы на странице</span>

    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> quadIn <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadin'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> quadOut <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadout'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> quadInOut <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadinout'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//потом создаем по одному элементу tween каждой переменной, объявленной выше</span>
    quadIn <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> Fx.<span style="color: rgb(102, 0, 102);">Transitions</span>.<span style="color: rgb(102, 0, 102);">Quad</span>.<span style="color: rgb(102, 0, 102);">easeIn</span><span style="color: rgb(51, 153, 51);">,</span>

	onStart<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#C54641'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(51, 153, 51);">,</span>
	onComplete<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>passes_tween_element<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
		passes_tween_element.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#E67F0E'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 153, 0);">}</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
   quadOut <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadOut<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>

	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>
	transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'quad:out'</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
    quadInOut <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>quadInOut<span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 153, 0);">{</span>
	link<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'cancel'</span><span style="color: rgb(51, 153, 51);">,</span>

	transition<span style="color: rgb(51, 153, 51);">:</span> <span style="color: rgb(51, 102, 204);">'quad:in:out'</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//теперь добавим каждому элементу по прослушке на события</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на использование функции .addEvents</span>

    <span style="color: rgb(0, 102, 0); font-style: italic;">//которая работает также, как и .addEvent</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//только можно добавлять несколько событий, используя определённый шаблон</span>
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadin'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvents</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале нужно объявить событие, поместив его в единичные кавычки,</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//отделить их двоеточием (":")</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и объявить функцию, которая будет выполняться при этом событии.</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//в данном случае, это функция, которая связана с эффектом tween</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//разделения событий производится с помощью запятой;</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//после последнего события запятая НЕ ИСПОЛЬЗУЕТСЯ</span>
        <span style="color: rgb(51, 102, 204);">'mouseenter'</span><span style="color: rgb(51, 153, 51);">:</span> enterFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span>

        <span style="color: rgb(51, 102, 204);">'mouseleave'</span><span style="color: rgb(51, 153, 51);">:</span> leaveFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadIn<span style="color: rgb(0, 153, 0);">)</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadout'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvents</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание, как мы снова используем те же функции в этом коде</span>
        <span style="color: rgb(51, 102, 204);">'mouseenter'</span><span style="color: rgb(51, 153, 51);">:</span> enterFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadOut<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span>
        <span style="color: rgb(51, 102, 204);">'mouseleave'</span><span style="color: rgb(51, 153, 51);">:</span> leaveFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadOut<span style="color: rgb(0, 153, 0);">)</span>

    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'quadinout'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvents</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы также используем те же функции</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//просто они каждый раз вызываются для работы с событием над разными элементами</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и привязаны они к разным объектам tween</span>
        <span style="color: rgb(51, 102, 204);">'mouseenter'</span><span style="color: rgb(51, 153, 51);">:</span> enterFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadInOut<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">,</span>

        <span style="color: rgb(51, 102, 204);">'mouseleave'</span><span style="color: rgb(51, 153, 51);">:</span> leaveFunction.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>quadInOut<span style="color: rgb(0, 153, 0);">)</span>
    <span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<!-- google_ad_section_end -->]]></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 – Уроки Mootools – Урок 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 18:26:24 +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=582</guid>
		<description><![CDATA[Библиотека Mootools, будучу основанной на Javascript, имеет довольно серьезные средвства для создание простынх и не очень спец. эффектов для придания красоты и удобства использования страницы пользователем. В этом уроке речь пойдет оь одной из самых интересных (мне лично) сторон Javascript и Mootools в частности - создание и управление спец. эффектами. Сейчас мы поговорим о самых простых эффектах, таких, как изменение размера, формы, цвета элемента, но чем дальше мы зайдем, тем больше всего интересного узнаем. Интрига? Тогда читаем дальше!]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Еще раз добро пожаловать в наш класс по изучению библиотеки Mootools 1.2. Если вы пришли сюда впервые, советую посмотреть и предыдущие уроки, особенно, если вы не совсем знакомы с этой библиотекой (внизу страницы, около комментариев есть специальная ссылка).</p>
<p>Итак, сегодня мы рассмотрим возможности создания спец. эффектов в Mootools из библиотеки эффектов Fx.Tween. Функции этого дополнения, как и многие другие функции библиотеки, очень просты в применении, но при этом дают разработчикам очень большую свободу действий, позволяя улучшить эстетичность веб-приложений и конечно же «юзабилити» (очень модное слово сегодня в интернете; в переводе с англицкого: <strong>usability</strong> – «<em>удобство (ис)пользования</em>«).</p>
<h2>Быстрые спец.эффекты</h2>
<p>Обычно я начинаю с основ той или иной темы, но функции работы со спец. эффектами так просты в использовании, что не могу удержаться от того, чтобы именно их поставить на передовую рассмотрения.</p>
<h3>.tween();</h3>
<p>Английское слово <em>tween</em> означает мягкий переход из одного свойства в другое. В нашем случае можно сказать, что переход осуществляется от одного значения свойства, к другому. Например можно сделать так, чтобы блок <strong>div</strong> мягко и красиво растянулся с ‘width:100px’ до ‘width:300px’. А фреймворк Mootools позаботился о том,<br />
  чтобы создание таких эффектов не занимало более секунды!</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//создаем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenerFunction  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//выбираем элемент, над которым будем издеваться</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и добавляем к нему .tween</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//а в качестве атрибутов добавляем свойство, которое будет изменяться</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//и значение на которое это свойство нужно мягко изменить</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">tween</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы добавляем прослушку на определенное событие (в нашем случае click)</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//к кнопке, которая должна вызвать эффект</span>
        $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_button'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenerFunction<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Ну а HTML код для этой функции выглядит так:</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"tween_button"</span>&gt;</span>растянуть до 300 px<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<h3>.fade();</h3>
<p>Еще одна потрясающая функция, которая позволяет тонко настроить прозрачность элемента. А настройка выглядит примерно также, как показано в коде выше:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//создаем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeFifty <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

       <span style="color: rgb(0, 102, 0); font-style: italic;">//выбираем объект</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//добавляем к нему .fade</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//и задаем значение между 0 и 1, к которому нужно привести прозрачность элемента</span>
       <span style="color: rgb(0, 102, 0); font-style: italic;">//(0 - невидимка, 1 - полный видимка)</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.5'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы добавляем прослушку на определенное событие (в нашем случае click)</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//к кнопке, которая должна вызвать эффект</span>
        $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_fifty'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeFifty<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Вот и HTML код:</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"tween_fade_fifty"</span>&gt;</span>Снижаем видимость до 50%<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></div>
</div>
<h3>.highlight();</h3>
<p>Снова не могу обойтись без слова «замечательная»! <strong>.highlight()</strong> – это замечательная функция! Она очень узконаправленная, при этом также очень полезна. Она имеет две функции:</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: rgb(0, 102, 0); font-style: italic;">//создаем функцию</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenHighlight <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>event<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут мы будем использовать конструкцию, которую пока еще не использовали - event.target</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//которая будет передаваться как параметр функции</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//на человеческом языке это звучит как "цель события"</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//а так как эффект применим к тому же элементу, к которому прикреплена прослушка на событие</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//не нужно будет снова создавать селектор.</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание, что addEvent автоматически передаст объект события в качестве параметра</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//в функцию, которую вызывает... оч полезно <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span>
	event.<span style="color: rgb(102, 0, 102);">target</span>.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#eaea16'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//создаем вторую функцию</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//тут нужно передать сразу параметр</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//так как функция будет вызываться при определенном событии</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и ей в параметры автоматически припишут событие (как в функции выше)</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а элемент можно вызывать с помощью конструкции .target</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//(цель события)</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenHighlightChange <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 102); font-weight: bold;">item</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//тут, вместо одного значения цвета, через запятую добавляем второй цвет</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//что установит первый цвет, и целевой цвет перехода</span>
        <span style="color: rgb(0, 0, 102); font-weight: bold;">item</span>.<span style="color: rgb(102, 0, 102);">target</span>.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#eaea16'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'#333333'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'mouseover'</span><span style="color: rgb(51, 153, 51);">,</span> tweenHighlight<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

    $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweenerChange'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'mouseover'</span><span style="color: rgb(51, 153, 51);">,</span> tweenHighlightChange<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>Вкусные примеры</h3>
<p>Вот она – самая интересная часть любого урока. Помните, еще со школы – все что там училка трындит, очень часто кажется бессмыслицей, но если правильно подобрать пример – все обретает очень четкий смысл. Вот они наши примеры. Понажимайте на кнопки в разном порядке и обратите внимание на поведение объекта:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenerFunction  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">tween</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>

&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenerGoBack  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">tween</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'100px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//функция .fade еще принимает ключевые слова 'out' и 'in',</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//что эквивалентно 0 и 1 соответственно</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeOut <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'out'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeFifty <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'.5'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenFadeIn <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">fade</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'in'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> tweenHighlight <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>event<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	event.<span style="color: rgb(102, 0, 102);">target</span>.<span style="color: rgb(102, 0, 102);">highlight</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'#eaea16'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_button'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenerFunction<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_reset'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenerGoBack<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_out'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeOut<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_fifty'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeFifty<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tween_fade_in'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> tweenFadeIn<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'tweener'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'mouseover'</span><span style="color: rgb(51, 153, 51);">,</span>tweenHighlight<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>При наведении курсора, кстати, работает первый тип функции <strong>.highlight()</strong>.</p>
</p>
<div id="tweener"></div>
<p><span class="pseudobutton" id="tween_button">Ширина 300</span> &#8212; <span class="pseudobutton" id="tween_reset">Ширина 100</span> &#8212; <span class="pseudobutton" id="tween_fade_out">В невидимку</span> &#8212; <span class="pseudobutton" id="tween_fade_fifty">На половину видно/невидно</span> &#8212; <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>И это еще не всё…</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: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале назначаем объект, над которым собираемся издеваться своим новым эффектом,</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и назначаем этот объект новой переменной</span>

        <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'newTween'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
       <span style="color: rgb(0, 102, 0); font-style: italic;">//теперь создаем новый эффект, которому передаем переменную с объектом в качестве параметра</span>
       <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTween <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>newTweenElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">div</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"newTween"</span>&gt;</span><span style="color: rgb(128, 128, 128); font-style: italic;">&lt;!-- это элемент, к которому применим новый Tween эффект--&gt;</span><span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">div</span>&gt;</span>
<span style="color: rgb(128, 128, 128); font-style: italic;">&lt;!-- а это кнопка, которая очень скоро сыграет свою главную роль --&gt;</span>

<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(0, 0, 0); font-weight: bold;">button</span> <span style="color: rgb(0, 0, 102);">id</span><span style="color: rgb(102, 204, 102);">=</span><span style="color: rgb(255, 0, 0);">"netTween_set"</span>&gt;</span>Назначить<span style="color: rgb(0, 153, 0);">&lt;<span style="color: rgb(102, 204, 102);">/</span><span style="color: rgb(0, 0, 0); font-weight: bold;">button</span>&gt;</span></pre>
</p></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: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenSet <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на использование ключевого слова "this"</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//немного далее рассмотрю более подробно использование этого слова</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</p></div>
</div>
<p>Когда-то, уже очень давно, я говорил, что определять функции нужно за пределами события domready, но в этом случае, мы создадим эффект внутри этого события, после чего сошлемся на него извне. Мы уже также как-то говорили о том, как можно передавать параметры извне события domready (путем созания анонимной функции).</p>
<h3>.bind()</h3>
<p>С помощью функции <strong>.bind();</strong> можно сделать любой параметр равным ключевому слову &#8220;<strong>this</strong>&#8221; в спектре работы определенной функции:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//вначале добавляем событие клика к кнопке, которую видели немного выше</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//потом, помимо простого вызова функции</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//мы добавляем к ней ".bind()"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и помещаем в скобки все, что мы хотим передать этой функции</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//и теперь, внутри функции "newTweenSet," ключевое слово "this"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//будет относиться к переменной "newTween"</span>
$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'netTween_set'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> newTweenSet.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>newTween<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Таким образом, если взглянем на функцию выше, &#8220;this&#8221; теперь ровняется тому, что мы говорим «newTween» (который, по совместительству, и является нашим объектом классса tween)</p>
<p>А теперь, соединим все это в единое целое:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//вот наша функция</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenSet <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>

        <span style="color: rgb(0, 102, 0); font-style: italic;">//так как мы использовали bind, "this" теперь относится к "newTween"</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//т.е. на самом деле мы говорим</span>
        <span style="color: rgb(0, 102, 0); font-style: italic;">//newTween.set('width', '300px')</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">this</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
window.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'domready'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//вначале назначаем нашему элементу переменную</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTweenElement <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'newTween'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//потом создаем новый эффект FX.Tween и назначаем его своей собственной переменной</span>
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> newTween <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">new</span> Fx.<span style="color: rgb(102, 0, 102);">Tween</span><span style="color: rgb(0, 153, 0);">(</span>newTweenElement<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
    <span style="color: rgb(0, 102, 0); font-style: italic;">//а сейчас добавляем наше событие, в котором связываем newTween и newTweenSet с помощью bind</span>
	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'netTween_set'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">addEvent</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'click'</span><span style="color: rgb(51, 153, 51);">,</span> newTweenSet.<span style="color: rgb(102, 0, 102);">bind</span><span style="color: rgb(0, 153, 0);">(</span>newTween<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<h3>Запуск эффекта tween</h3>
<p>А теперь, когда мы полностью настроили наш объект, наша функция находится вне события <em>domready</em> и мы помним, как с помощью функции <strong>.set();</strong> назначить параметр стиля, потому, давайте пройдем к, собственно, спец.эффектам. Запустить эффект – очень просто! Аналогично <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: rgb(0, 102, 0); font-style: italic;">//эта строчка изменит текущее значение свойства width на 300px</span>
newTween.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//эта строчка установит свойство width на 100px, потом сделает плавный переход на 300px</span>
newTween.<span style="color: rgb(102, 0, 102);">start</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'width'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'100px'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'300px'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</p></div>
</div>
<p>Теперь можно начать (с помощью функции <strong>.start();</strong>) выполнение эффекта из функции и спользовать «this», если была использована функция <strong>.bind();</strong> для связи с «newTween».</p>
<h3>По эффектам tween пока все&#8230;</h3>
<p>Несмотря на то что о эффектах tween еще можно долго говорить. Например, если нужно наложить спец. эффекты на несколько свойств стилей одновременно, можно использовать функцию <strong>.morph();</strong>. Можно использовать библиотеку эффектов и переходов для изменения тех самых переводов. Но этот урок и так получается довольно длинным, потому оставим это все на другие уроки.</p>
<p style="text-align: right;"><strong>Всем удачи и успехов!</strong></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootorials-special-effects-day10.html/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>«Фильтруй базар» или учимся фильтровать текст – Уроки Mootools – Урок 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 13:07:15 +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>
		<category><![CDATA[уроки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=562</guid>
		<description><![CDATA[В продолжении урока №9 о фильтрации чисел, продолжим в том же духе: расмотрим уструменты, посволяющие фильтровать текст. Как говорилось и в 9-м уроке, инструментами Mootools можно осуществлять превентивные действия по обороне сайта от атак и ошибок при вводе данных, однако, ключевое слово тут "превентивные" - ВСЕ Javascript инструменты можно использовать как оружие первой линии обороны, но полноценно оборняться и огрождаться от ошибок ввода нужно сервеными инструментами! А пока, нырнем в фильтрацию с помощью Mootools.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Привет, люди планеты Земля! 1) хочу перед всеми извинится, если это кому-либо важно, за много месяxный перерыв… Мне стыдно!!!! Сам не ожидал, что так получится, но свадьба – дело тонкое, трудоемкое, которое требует много времени. Да, я женился, отдохнул, и готов к новым урокам. Еще, в качестве оправдания хочу сказать, что все это время я не забывал о блоге, своем не развитом, и хотя бы записывал идеи постов, которые, как мне кажется, окажутся полезными. Некоторые темы уже даже наполовину готовы, осталось только их дописать и опубликовать – всего ничего! Ну а пока, внимание! Смотрим на доску!</p>
<p>Если кто не заметил, я перешел от вручную написанного моим знакомым программистом движка на более популярный вордпрес. Это не означает, что ЦМСка моего знакомого не хороша – наоборот, она хороша тем, что она заточена под определенные действия, а именно под продвижение. Но, так как эту систему управления написал не я, я в ней совсем не разбираюсь, а дергать человека постоянно не хочу, решил перейти на вордпрес. Благо, по этой тематике в интернете много всего понаписано, да и просто покопаться в коде вордпреса тоже полезно для развития. Итак, все старые посты перекинуты, теперь все по-прежнему. Продолжаю публиковать уроки Mootools. Вот он следующий урок, о фильтрации текста.</p>
<span id="more-562"></span>
<h2>Функции обработки строк</h2>
<p>В этом уроке поговорим о том, какие возможности нам предоставляет библиотека Mootools при работе с данными в виде строк. Сразу нужно отметить, что то, что будет показано в этом уроке – это лишь ничтожная часть того, что 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>
&nbsp;
<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>
&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> <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. И еще раз – все скрипты обеспечивающие безопасность должны выполняться на сервере, подальше от пользователя, а не с помощью JavaScript и всего к нему относящемуся!!!</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>
&nbsp;
<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>Если  вы еще не сталкивались с таким символом, как &#8220;\n&#8221;, сообщаю, что этот символ соответствует новой строке (от англ. &#8220;<em>Newline</em>&#8220;). Этот символ можно использовать в тексте, который нужно разбить на строки. Такой символ, или разрыв строк, фунцией <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>
&nbsp;
	<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>
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//тримируем</span>
&nbsp;
	<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>
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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>
&nbsp;
		  <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>Понятно, заваливать весь текст пробелами – нехорошо. Потому, разработчики Mootools пошли навстречу тем, кто так считает. Функция <strong>clean()</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> 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>
&nbsp;
<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> – это тотже <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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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>
<span style="color: #339933;">&amp;</span>nbsp<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>
&nbsp;
		  <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>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>



<p>
  <button id="clean">Чистка</button>
</p>
<h3>contains()</h3>
<p>Как и 2 предыдущие рассмотренные функции, функция Mootools <strong>contains()</strong> делает одну очень простую вещь, без особенностей и заморочек: она проверяет, содержиться ли в исходном тексте заданная строка. В качестве результата работы возвращается <strong>True</strong> если вхождения есть и <strong>False</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> string_to_match <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;В этом тексте ведем поиск?&quot;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
<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>
&nbsp;
	<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>
&nbsp;
			<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>
&nbsp;
	<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>
&nbsp;
	<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</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> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
   	<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>
&nbsp;
		<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>
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
			<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>
&nbsp;
		<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>
&nbsp;
    <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>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>



<p>
  <textarea cols="70" rows="4" id="textarea_1">Как-то раз ехал на своем BMW на фабрику Fererro Roche и тут меня подрезает какой-то мудак на своем Audi. Я ему вдогонку кричу «Ты что за хрень вытворяешь, мудак!!! Что за херня!»</textarea>
  <br />
  <button id="contains">Проверка на запрещенные слова</button>
</p>
<p>
  <textarea cols="70" rows="5" id="textarea_2" style="padding: 5px;">Как-то раз ехал на своем автомобиле на фабрику одной известной компании по производству всяких разных сладостей и тут меня подрезает какой-то нехороший человек на своем автомобиле. Я ему вдогонку кричу «Ты что за нехорошую вещь вытворяешь, нехороший человек!!! Ну как же так?! Что за люди то неприличные!?!»</textarea>
  <br />
  <button id="contains2">Проверка на запрещенные слова</button>
</p>
<h3>substitute()</h3>
<p>Функция <strong>substitute()</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: #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>
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//Далее содаем объекс, в котором содержаться правила замены</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> 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>
&nbsp;
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&amp;</span>nbsp<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> 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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
<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>
&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> 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>
&nbsp;
<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>
&nbsp;
	<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</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> 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>
&nbsp;
		первый  <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>
&nbsp;
		третий  <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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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;
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
<span style="color: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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>
&nbsp;
	$<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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: #339933;">&amp;</span>nbsp<span style="color: #339933;">;</span>
	<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>
&nbsp;
	$<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 id="substitute_span">|- {первый} — {второй} — {третий} -|</p>
<p>Первая замена: 
<input size="6" id="first_value" type="text"/>
Вторая замена:
<input size="6" id="second_value" type="text"/>
Третья замена:
<input size="6" id="third_value" type="text"/>
<button id="simple_substitute">Замена</button>
<button id="simple_sub_reset">Сброс</button>
</p><p>И, напоследок, еще немного теории. При приминении функции <strong>substitute()</strong> к строке, всегда нужно предоставлять функции объект со всеми парами «ключ : значение», так как иначе функция просто удалит все, что найдет между фигурными скобками (включая сами фигурные скобки). Потому, будьте осторожны, при использовании такой строки в качестве полигона действий:</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>В конечном итоге получится</p>
  <button id="last_warning">вот что</button><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/text-filtering-mootorial9.html/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools – Урок 8 – Учимся фильтровать числа</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 13:40:53 +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=551</guid>
		<description><![CDATA[В этом уроке я покажу методы фильтрации чисел с помощью Mootools. Такие методы хороши в качестве превентивных мер обороны, но обороняться нужно "тяжелой артиллерией", т.е. серверными инструментами (PHP, ASP и т.д. - в зависимости от предпочтений и умений программиста и возможностей сервера). Но часто, превентивные меры уже хорошо справляются с защитой, потому их тоже надо знать!]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Продолжаем наши уроки Mootools и сегодня рассмотрим, как можно использовать Mootools для фильтрации пользовательских данных. Начнем с простой фильтрации чисел, а потом продолжим с фильтрацией текстовых строк в следующем уроке.</p>
<p><strong>Примечание</strong>:Фильтрация входящих данных в Javascript используется для того, чтобы обеспечить нормальную работу ваших скриптов. Не нужно использовать ее для полной замены серверной фильтрации, которая используется для защиты приложений от внешних атак.</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: rgb(0, 51, 102); font-weight: bold;">function</span> changeColor<span style="color: rgb(0, 153, 0);">(</span>red_value<span style="color: rgb(51, 153, 51);">,</span> green_value<span style="color: rgb(51, 153, 51);">,</span> blue_value<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

  	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> color <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 153, 0);">[</span>red_value<span style="color: rgb(51, 153, 51);">,</span> green_value<span style="color: rgb(51, 153, 51);">,</span> blue_value<span style="color: rgb(0, 153, 0);">]</span>.<span style="color: rgb(102, 0, 102);">rgbToHex</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

   	<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'Конвертируется в : '</span> <span style="color: rgb(51, 153, 51);">+</span> color<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
   <span style="color: rgb(0, 153, 0);">}</span>
     changeColor<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'5'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'41'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">'18'</span><span style="color: rgb(0, 153, 0);">)</span></pre>
</div>
</div>
<p><button id="change_color_1_good" class="demo_button">changeColor(‘54′, ‘41′, ‘18′);</button></p>
<p>Этот код идеально работает, если передавать в качестве аргументов цифры. Посмотрите, как поведет себя браузер, когда вместо одного из аргументов мы передадим текст:</p>
<p><button id="change_color_1_bad" class="demo_button">changeColor(‘54′, ‘41′, ‘опля’);</button></p>
<p>«Nan» виднеющийся в конце сообщения имеет значение <strong>N</strong>ot <strong>a</strong> <strong>N</strong>umber (Не Число). Если именно вы вводите вручную массив цифр для значения цвета, такой ошибки может вы и не увидите. Но если используется какой-либо внешний источник, очень вероятно, что придется частенько почитывать такие ошибочки.</p>
<h3>toInt()</h3>
<p>Теперь нам нужно убедиться в том, что фукнция <strong>rgbToHex()</strong> получает в качестве аргумента, именно числа, а не данные в каком-либо другом формате. Для этого мы можем использовать функцию <strong>toInt()</strong> – это еще одна относительно простая и понятная функция. Ей можно передать любую переменную, а она позаботится о том, чтобы извлеч из данных этой переменной число.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> toIntDemo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>make_me_a_number<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> number <span style="color: rgb(51, 153, 51);">=</span> make_me_a_number.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 0, 102);">alert</span> <span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'Что получилось : '</span> <span style="color: rgb(51, 153, 51);">+</span> number<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p><button id="to_int_1">toIntDemo(’613.234′)</button><br />
<button id="to_int_2">toIntDemo(’83_ура!’)</button><br />
<button id="to_int_3">toIntDemo(’а_нет_ли_тут_26?’)</button></p>
<p>Ну вот! Как видно, toInt() несправляется с каждой неоднозначной ситуацией, но, благодяра другой классной вещи в Mootools, которая называется $type(), мы можем спокойно разобраться и с этой проблемкой!</p>
<h3>$type()</h3>
<p><strong>$type()</strong> – это еще одна вкусняшка нашей любимой библиотеки. Она анализирует переданную ей перменную и возвращает текстовую строку с названием типа данных, которому придлажала переменная. Что-то я тут запутал… Лучше разюерем на примере:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> checkType <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>variable_to_check<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> variable_type <span style="color: rgb(51, 153, 51);">=</span> $type<span style="color: rgb(0, 153, 0);">(</span>variable_to_check<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"Данные являются типом : "</span> <span style="color: rgb(51, 153, 51);">+</span> variable_type<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</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></p>
<p></p>
<p>На самом деле, <strong>функция $type()</strong> не ограничивается определением этих трех типов данных. <strong>$type()</strong> возвращает следующие значения в текстовой форме:</p>
<ul>
<li>&#8216;element&#8217; – Если переданный объект является элементом DOMa</li>
<li>&#8216;textnode&#8217; – текстовый элемент DOMa.</li>
<li>&#8216;whitespace&#8217; – пустое пространство DOMa.</li>
<li>&#8216;arguments&#8217; – аргумент.</li>
<li>&#8216;array&#8217; – массив.</li>
<li>&#8216;object&#8217; – объект.</li>
<li>&#8216;string&#8217; – текстовая строка.</li>
<li>&#8216;number&#8217; – число.</li>
<li>&#8216;date&#8217; – дата.</li>
<li>&#8216;boolean&#8217; – булев тип.</li>
<li>&#8216;function&#8217; – функция.</li>
<li>&#8216;regexp&#8217; – регулярной выражение.</li>
<li>&#8216;class&#8217; – класс (созданный с помощью new Class или является расширением другого класса).</li>
<li>‘collection’ – когда переданный объект – это набор из html-элементов, как при вызове <strong>childNodes</strong>, <strong>getElementsByTagName</strong>, и т.д.</li>
<li>‘window’ – окно.</li>
<li>‘document’ – документ.</li>
<li>false – (<em>булев тип</em> – единственный в своем роде при использовании <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: rgb(0, 51, 102); font-weight: bold;">var</span> toIntDemo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>make_me_a_number<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//попробуем сделать число из введенного текста</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> number <span style="color: rgb(51, 153, 51);">=</span> make_me_a_number.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Если это не срабатывает, устанавливаем число ноль (0)</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>number<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>number <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'Что получилось : '</span> <span style="color: rgb(51, 153, 51);">+</span> number<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p>  <button id="to_int_4">toIntDemo_2(’613.234?)</button></p>
<p>  <button id="to_int_5">toIntDemo_2(’83_Ё_моЁ!’)</button><br />
  <button id="to_int_6">toIntDemo_2(’а_что_если_83?)</button></p>
<p>Если соединить все это воедино, получиться <strong>почти</strong> идеальная версия нашего скрипта по конвертированию цветов из формата RGB в шестнадцатиричный код – changeColor():</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> changeColor_2 <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>red_value<span style="color: rgb(51, 153, 51);">,</span> green_value<span style="color: rgb(51, 153, 51);">,</span> blue_value<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//Убедимся в том, что у нас все данные - числа</span>
&nbsp;
    red_value <span style="color: rgb(51, 153, 51);">=</span> red_value.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
    green_value <span style="color: rgb(51, 153, 51);">=</span> green_value.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

    blue_value <span style="color: rgb(51, 153, 51);">=</span> blue_value.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
    <span style="color: rgb(0, 102, 0); font-style: italic;">//Устанавливаем значения по умолчанию на всё, что не является числом</span>
&nbsp;
    <span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>red_value<span style="color: rgb(0, 153, 0);">)</span>   <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>red_value <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

    <span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>green_value<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>green_value <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>
    <span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>blue_value<span style="color: rgb(0, 153, 0);">)</span>  <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>blue_value <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

    <span style="color: rgb(0, 102, 0); font-style: italic;">//Вычисляем шестнадцатиричное значение</span>
&nbsp;
    <span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> color <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 153, 0);">[</span>red_value<span style="color: rgb(51, 153, 51);">,</span> green_value<span style="color: rgb(51, 153, 51);">,</span> blue_value<span style="color: rgb(0, 153, 0);">]</span>.<span style="color: rgb(102, 0, 102);">rgbToHex</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

    <span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'Конвертируется в : '</span> <span style="color: rgb(51, 153, 51);">+</span> color<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p><button id="change_color_2_clean">changeColor(‘208′, ‘127′, ‘74′);</button><br />
<button id="change_color_2_default">changeColor(‘82′, ‘7′, ‘скунс’);</button></p>
<p><button id="change_color_2_breaks">changeColor(‘522′, ‘847′, »);</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: rgb(0, 102, 0); font-style: italic;">//вызываем функцию</span>
limit<span style="color: rgb(0, 153, 0);">(</span>n1<span style="color: rgb(51, 153, 51);">,</span> n2<span style="color: rgb(0, 153, 0);">)</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//где n1 наименьшее число требуемого диапазона</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">// а n2 - наивысшее</span></pre>
</div>
</div>
<p>Ничего сложного! Елинственное «но», это то, что нужно иметь ввиду, что функция предполагает, что <em>n1</em> и <em>n2</em> – это числа. Поэтому крайне рекомендуется применять <strong>toInt()</strong> к данным, которые предположительно являются числами и которые предствоит передавать в функцию <strong>limit()</strong> (или любую другую функцию для работы с числами).</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> limitDemo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>number_to_limit<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем число</span>
&nbsp;
	number_to_limit <span style="color: rgb(51, 153, 51);">=</span> number_to_limit.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//получаем число из требуемого диапазона</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> limited_number <span style="color: rgb(51, 153, 51);">=</span> number_to_limit.<span style="color: rgb(102, 0, 102);">limit</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(204, 0, 0);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"Ограничиваем до : "</span> <span style="color: rgb(51, 153, 51);">+</span> limited_number<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 153, 0);">}</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: rgb(0, 51, 102); font-weight: bold;">var</span> changeColor <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span>red_value<span style="color: rgb(51, 153, 51);">,</span> green_value<span style="color: rgb(51, 153, 51);">,</span> blue_value<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//Убеждаемся, что все данные у нас - это числа</span>
&nbsp;
	red_value   <span style="color: rgb(51, 153, 51);">=</span> red_value.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	green_value <span style="color: rgb(51, 153, 51);">=</span> green_value.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	blue_value  <span style="color: rgb(51, 153, 51);">=</span> blue_value.<span style="color: rgb(102, 0, 102);">toInt</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Устанавливаем значения по умолчанию на все, что не является числом</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>red_value<span style="color: rgb(0, 153, 0);">)</span>   <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>red_value <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>green_value<span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>green_value <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$type<span style="color: rgb(0, 153, 0);">(</span>blue_value<span style="color: rgb(0, 153, 0);">)</span>  <span style="color: rgb(51, 153, 51);">!=</span> <span style="color: rgb(51, 102, 204);">'number'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>blue_value <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Ограничиваем все до диапазона значений RGB (0 - 255)</span>
&nbsp;
	red_value   <span style="color: rgb(51, 153, 51);">=</span> red_value.<span style="color: rgb(102, 0, 102);">limit</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(204, 0, 0);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	green_value <span style="color: rgb(51, 153, 51);">=</span> green_value.<span style="color: rgb(102, 0, 102);">limit</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(204, 0, 0);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
	blue_value  <span style="color: rgb(51, 153, 51);">=</span> blue_value.<span style="color: rgb(102, 0, 102);">limit</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 0, 0);">0</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(204, 0, 0);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Конвертируем в шестнадцатиричную систему</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> color <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 153, 0);">[</span>red_value<span style="color: rgb(51, 153, 51);">,</span> green_value<span style="color: rgb(51, 153, 51);">,</span> blue_value<span style="color: rgb(0, 153, 0);">]</span>.<span style="color: rgb(102, 0, 102);">rgbToHex</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 0, 102);">alert</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'Converts to : '</span> <span style="color: rgb(51, 153, 51);">+</span> color<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span> 

<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p><button id="change_color_3_clean" class="demo_button">changeColor(’28′, ‘17′, ‘47′);</button><button id="change_color_3_default" class="demo_button">changeColor(‘28′, ‘17′, ‘oops’);</button><button id="change_color_3_limit" class="demo_button">changeColor(’428′, ‘317′,<br />
‘265000′);</button></p>
<p>Обратите внимание, что функция <strong>.rgbToHex()</strong> нигде не принимает никаких атрибутов. Это все потому, что эта функция может принять 2 атрибута булев типа: <em>true</em>, <em>false</em>. По умолчанию установлен <em>false</em>, что и возвращает нам строку в таком виде, в котором она нам нужна для вставки в атрибут цвета, т.е. &#8220;#000000&#8243;. Если же передать атрибут <em>true</em>, функция вернет данные в виде массива.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> rgb2HexTrue <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>r<span style="color: #339933;">,</span> g<span style="color: #339933;">,</span> b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> rgbArray <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>r<span style="color: #339933;">,</span> g<span style="color: #339933;">,</span> b<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">rgbToHex</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> rgbHex <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>r<span style="color: #339933;">,</span> g<span style="color: #339933;">,</span> b<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;">'rgbToHex с параметром TRUE: '</span> <span style="color: #339933;">+</span> rgbArray <span style="color: #339933;">+</span> <span style="color: #3366CC;">'и с параметром FALSE: '</span> <span style="color: #339933;">+</span> rgbHex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><button id="rgb2hexTrue">rgb2Hex(&#8217;34&#8242;, &#8217;117&#8242;, &#8217;247&#8242;)</button></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-filtering-numbers.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

