src/cm/media/js/lib/yui/yui3.0.0/examples/dd/photo-browser.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
<html>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
<head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
	<title>YUI Library Examples: Drag &amp; Drop: Photo Browser</title>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
    	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
<style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
    /*Supplemental CSS for the YUI distribution*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    #custom-doc { width: 95%; min-width: 950px; }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    #pagetitle {background-image: url(../../assets/bg_hd.gif);}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
/*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
<link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
<!--there is no custom header content for this example-->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
</head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
<body id="yahoo-com" class=" yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
<div id="custom-doc" class="yui-t2">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
<div id="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
	<div id="ygunav">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
		<p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
            <em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
                <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
            </em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
		</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
		<form action="http://search.yahoo.com/search" id="sitesearchform">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
            <input name="vs" type="hidden" value="developer.yahoo.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
            <input name="vs" type="hidden" value="yuiblog.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
		    <div id="sitesearch">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
			    <input type="text" id="searchinput" name="p">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
		    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
		</form>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
	<div id="pagetitle"><h1>YUI Library Examples: Drag &amp; Drop: Photo Browser</h1></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
<div id="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
	<div id="yui-main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
		<div class="yui-b">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
		  <div class="yui-ge">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
			  <div class="yui-u first example" id="main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
	<h2>Drag &amp; Drop: Photo Browser</h2>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
	<div id="example" class="promo">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
	<div class="example-intro">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
	<p>Photo Browser built with YUI3 and <a href="http://developer.yahoo.com/yql/">YQL</a>. This example was part of the YUI3 presentation by <a href="http://blog.davglass.com/">Dav Glass</a> at <a href="http://openhacklondon.pbworks.com/">Open Hack : London</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
	</div>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
	<div class="module example-container  newWindow">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
			<div id="example-canvas" class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
		<p class="newWindowButton yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
        <span id="newWindowLink">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
            <span class="first-child">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
                <a href="photo-browser_source.html" target="_blank">View example in new window.</a>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
            </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
        </span>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
    </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
	</div>			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
	<h3>YQL</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
<p>This example uses the YQL YUI3 plugin: <a href="http://github.com/davglass/yui-yql">http://github.com/davglass/yui-yql</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
<p>Here is the Flickr YQL query used in this example.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
<style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
.sql  {font-family:monospace;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
.sql .imp {font-weight: bold; color: red;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
.sql .kw1 {color: #993333; font-weight: bold;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
.sql .co1 {color: #808080; font-style: italic;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
.sql .co2 {color: #808080; font-style: italic;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
.sql .coMULTI {color: #808080; font-style: italic;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
.sql .es0 {color: #000099; font-weight: bold;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
.sql .br0 {color: #66cc66;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
.sql .sy0 {color: #66cc66;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
.sql .st0 {color: #ff0000;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
.sql .nu0 {color: #cc66cc;}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
.sql span.xtra { display:block; }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
<div id="syntax1" class="yui-syntax-highlight"><div class="numbers"><pre class="sql" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> flickr<span class="sy0">.</span>photos<span class="sy0">.</span>search<span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span> <span class="kw1">WHERE</span> </div></li><li class="li1"><div class="de1">   <span class="br0">&#40;</span>text<span class="sy0">=</span><span class="st0">&quot;openhacklondon&quot;</span><span class="br0">&#41;</span> </div></li><li class="li1"><div class="de1">   <span class="kw1">AND</span> <span class="br0">&#40;</span>safe_search <span class="sy0">=</span> <span class="nu0">1</span><span class="br0">&#41;</span> </div></li><li class="li1"><div class="de1">   <span class="kw1">AND</span> <span class="br0">&#40;</span>media <span class="sy0">=</span> <span class="st0">&quot;photos&quot;</span><span class="br0">&#41;</span> </div></li><li class="li2"><div class="de2">   <span class="kw1">AND</span> <span class="br0">&#40;</span>extras <span class="sy0">=</span> <span class="st0">&quot;o_dims&quot;</span><span class="br0">&#41;</span> </div></li><li class="li1"><div class="de1">   <span class="kw1">AND</span> <span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">       <span class="br0">&#40;</span>o_width <span class="sy0">=</span> <span class="st0">&quot;1600&quot;</span> <span class="kw1">AND</span> o_height <span class="sy0">=</span> <span class="st0">&quot;1200&quot;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">     <span class="kw1">OR</span> <span class="br0">&#40;</span>o_width <span class="sy0">=</span> <span class="st0">&quot;1200&quot;</span> <span class="kw1">AND</span> o_height <span class="sy0">=</span> <span class="st0">&quot;1600&quot;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">     <span class="kw1">OR</span> <span class="br0">&#40;</span>o_width <span class="sy0">=</span> <span class="st0">&quot;800&quot;</span> <span class="kw1">AND</span> o_height <span class="sy0">=</span> <span class="st0">&quot;600&quot;</span><span class="br0">&#41;</span></div></li><li class="li2"><div class="de2">   <span class="br0">&#41;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="sql" style="font-family:monospace;"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> flickr<span class="sy0">.</span>photos<span class="sy0">.</span>search<span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span> <span class="kw1">WHERE</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
   <span class="br0">&#40;</span>text<span class="sy0">=</span><span class="st0">&quot;openhacklondon&quot;</span><span class="br0">&#41;</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
   <span class="kw1">AND</span> <span class="br0">&#40;</span>safe_search <span class="sy0">=</span> <span class="nu0">1</span><span class="br0">&#41;</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
   <span class="kw1">AND</span> <span class="br0">&#40;</span>media <span class="sy0">=</span> <span class="st0">&quot;photos&quot;</span><span class="br0">&#41;</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
   <span class="kw1">AND</span> <span class="br0">&#40;</span>extras <span class="sy0">=</span> <span class="st0">&quot;o_dims&quot;</span><span class="br0">&#41;</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
   <span class="kw1">AND</span> <span class="br0">&#40;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
       <span class="br0">&#40;</span>o_width <span class="sy0">=</span> <span class="st0">&quot;1600&quot;</span> <span class="kw1">AND</span> o_height <span class="sy0">=</span> <span class="st0">&quot;1200&quot;</span><span class="br0">&#41;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
     <span class="kw1">OR</span> <span class="br0">&#40;</span>o_width <span class="sy0">=</span> <span class="st0">&quot;1200&quot;</span> <span class="kw1">AND</span> o_height <span class="sy0">=</span> <span class="st0">&quot;1600&quot;</span><span class="br0">&#41;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
     <span class="kw1">OR</span> <span class="br0">&#40;</span>o_width <span class="sy0">=</span> <span class="st0">&quot;800&quot;</span> <span class="kw1">AND</span> o_height <span class="sy0">=</span> <span class="st0">&quot;600&quot;</span><span class="br0">&#41;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
   <span class="br0">&#41;</span></pre></div><textarea id="syntax1-plain">SELECT * FROM flickr.photos.search(100) WHERE 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
   (text="openhacklondon") 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
   AND (safe_search = 1) 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
   AND (media = "photos") 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
   AND (extras = "o_dims") 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
   AND (
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
       (o_width = "1600" AND o_height = "1200")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
     OR (o_width = "1200" AND o_height = "1600")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
     OR (o_width = "800" AND o_height = "600")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
   )</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
<h3>Slider and StyleSheet</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
<p>In this example, we will use the Slider control to dynamically manipulate a CSS Style Rule.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
<p>First, we need to create the slider and render it.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
<div id="syntax2" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">//Create and render the slider</span></div></li><li class="li1"><div class="de1"><span class="kw2">var</span> sl <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Slider</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    railSize<span class="sy0">:</span> <span class="st0">'200px'</span><span class="sy0">,</span> value<span class="sy0">:</span> <span class="nu0">40</span><span class="sy0">,</span> max<span class="sy0">:</span> <span class="nu0">70</span><span class="sy0">,</span> min<span class="sy0">:</span> <span class="nu0">5</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    thumbImage<span class="sy0">:</span> assetsDir <span class="sy0">+</span> <span class="st0">'css/thumb-classic-x.png'</span></div></li><li class="li2"><div class="de2"><span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'.horiz_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">//Create and render the slider</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
<span class="kw2">var</span> sl <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Slider</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
    railSize<span class="sy0">:</span> <span class="st0">'200px'</span><span class="sy0">,</span> value<span class="sy0">:</span> <span class="nu0">40</span><span class="sy0">,</span> max<span class="sy0">:</span> <span class="nu0">70</span><span class="sy0">,</span> min<span class="sy0">:</span> <span class="nu0">5</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
    thumbImage<span class="sy0">:</span> assetsDir <span class="sy0">+</span> <span class="st0">'css/thumb-classic-x.png'</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
<span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'.horiz_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax2-plain">//Create and render the slider
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
var sl = new Y.Slider({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
    railSize: '200px', value: 40, max: 70, min: 5,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
    thumbImage: assetsDir + 'css/thumb-classic-x.png'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
}).render('.horiz_slider');</textarea></div><p>Now, we listen for the Slider's <code>valueChange</code> event. This event is fired when the value of the Slider has changed.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
<p>Next we use the StyleSheet utility to dynamically change a style rule to resize the images.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
The style rule that we want to change is <code>#yui-main .yui-g ul li</code>. When the Slider's value changes, we will take the value and divide it by 2, then use that as the percentage width of the li. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
This will give us the effect we want (resizing images) without touching all the images via the DOM.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
<div id="syntax3" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">//Listen for the change</span></div></li><li class="li1"><div class="de1">sl.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">'valueChange'</span><span class="sy0">,</span><span class="kw2">function</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Insert a dynamic stylesheet rule:</span></div></li><li class="li1"><div class="de1">    <span class="kw2">var</span> sheet <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">StyleSheet</span><span class="br0">&#40;</span><span class="st0">'image_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    sheet.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li'</span><span class="sy0">,</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        width<span class="sy0">:</span> <span class="br0">&#40;</span>e.<span class="me1">newVal</span> <span class="sy0">/</span> <span class="nu0">2</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'%'</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">//Listen for the change</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
sl.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">'valueChange'</span><span class="sy0">,</span><span class="kw2">function</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
    <span class="co1">//Insert a dynamic stylesheet rule:</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
    <span class="kw2">var</span> sheet <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">StyleSheet</span><span class="br0">&#40;</span><span class="st0">'image_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
    sheet.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
        width<span class="sy0">:</span> <span class="br0">&#40;</span>e.<span class="me1">newVal</span> <span class="sy0">/</span> <span class="nu0">2</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'%'</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax3-plain">//Listen for the change
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
sl.after('valueChange',function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
    //Insert a dynamic stylesheet rule:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
    var sheet = new Y.StyleSheet('image_slider');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
    sheet.set('#yui-main .yui-g ul li', {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
        width: (e.newVal / 2) + '%'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
});</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
<h3>Event Delegation</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
<p>This listener listens for all <code>mouseup</code> events on the <code>document</code> and it will only fire when the target element matches the <code>*</code> selector (which should be all elements).</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
<p>This way we can remove all the <code>selected</code> CSS classes from all the images in the browser when a <code>mouseup</code> occurs, only if the shift key was not pressed. We can then check to determine if the mouseup came from one of the images. If it has, add the selected class back to it.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
<div id="syntax4" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">//Listen for all mouseups on the document (selecting/deselecting images)</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>e.<span class="me1">shiftKey</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//No shift key - remove all selected images</span></div></li><li class="li2"><div class="de2">        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Check if the target is an image and select it.</span></div></li><li class="li1"><div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">target</span>.<span class="me1">test</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li img'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">target</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'mouseup'</span><span class="sy0">,</span> <span class="st0">'*'</span><span class="br0">&#41;</span><span class="sy0">;</span>    </div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">//Listen for all mouseups on the document (selecting/deselecting images)</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>e.<span class="me1">shiftKey</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
        <span class="co1">//No shift key - remove all selected images</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
    <span class="co1">//Check if the target is an image and select it.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
    <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">target</span>.<span class="me1">test</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li img'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
        e.<span class="me1">target</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
<span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'mouseup'</span><span class="sy0">,</span> <span class="st0">'*'</span><span class="br0">&#41;</span><span class="sy0">;</span>    </pre></div><textarea id="syntax4-plain">//Listen for all mouseups on the document (selecting/deselecting images)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
Y.on('delegate', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
    if (!e.shiftKey) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
        //No shift key - remove all selected images
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
        wrapper.queryAll('img.selected').removeClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
    //Check if the target is an image and select it.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
    if (e.target.test('#yui-main .yui-g ul li img')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
        e.target.addClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
}, document, 'mouseup', '*');    </textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
<p>This listener, listens for all <code>click</code> events on the album list <code>#photoList li</code>. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
First, it stops the click, so the href is not followed. Next, it removes all the <code>selected</code> classes from the list. Then, it adds the <code>selected</code> class to the item that was clicked on.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
<p>After that UI setup, it uses Selectors to change the view of the images in the browser. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
First, it checks if we are viewing "all" or a "sub album". If all is selected, it removes the <code>hidden</code> class from all the images.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
If it was an album, it adds the <code>hidden</code> class to all the images, then selects all the images with the class of its <code>id</code>, then it removes the hidden class from them.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
<p>Basically, it hides all the images, then determines the ones it needs to show and removes the <code>hidden</code> class from them.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
<div id="syntax5" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">//Listen for all clicks on the '#photoList li' selector</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Prevent the click</span></div></li><li class="li1"><div class="de1">    e.<span class="me1">halt</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="co1">//Remove all the selected items</span></div></li><li class="li1"><div class="de1">    e.<span class="me1">currentTarget</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Add the selected class to the one that one clicked</span></div></li><li class="li1"><div class="de1">    e.<span class="me1">currentTarget</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//The &quot;All Photos&quot; link was clicked</span></div></li><li class="li2"><div class="de2">    <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">currentTarget</span>.<span class="me1">hasClass</span><span class="br0">&#40;</span><span class="st0">'all'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Remove all the hidden classes</span></div></li><li class="li1"><div class="de1">        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Another &quot;album&quot; was clicked, get its id</span></div></li><li class="li2"><div class="de2">        <span class="kw2">var</span> c <span class="sy0">=</span> e.<span class="me1">target</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Hide all items by adding the hidden class</span></div></li><li class="li1"><div class="de1">        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Now, find all the items with the class name the same as the album id</span></div></li><li class="li1"><div class="de1">        <span class="co1">//and remove the hidden class</span></div></li><li class="li2"><div class="de2">        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.'</span> <span class="sy0">+</span> c<span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'click'</span><span class="sy0">,</span> <span class="st0">'#photoList li'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">//Listen for all clicks on the '#photoList li' selector</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
    <span class="co1">//Prevent the click</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
    e.<span class="me1">halt</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
    <span class="co1">//Remove all the selected items</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
    e.<span class="me1">currentTarget</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
    <span class="co1">//Add the selected class to the one that one clicked</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
    e.<span class="me1">currentTarget</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
    <span class="co1">//The &quot;All Photos&quot; link was clicked</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
    <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">currentTarget</span>.<span class="me1">hasClass</span><span class="br0">&#40;</span><span class="st0">'all'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
        <span class="co1">//Remove all the hidden classes</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
    <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
        <span class="co1">//Another &quot;album&quot; was clicked, get its id</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        <span class="kw2">var</span> c <span class="sy0">=</span> e.<span class="me1">target</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
        <span class="co1">//Hide all items by adding the hidden class</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
        <span class="co1">//Now, find all the items with the class name the same as the album id</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
        <span class="co1">//and remove the hidden class</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
        wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.'</span> <span class="sy0">+</span> c<span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
<span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'click'</span><span class="sy0">,</span> <span class="st0">'#photoList li'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax5-plain">//Listen for all clicks on the '#photoList li' selector
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
Y.on('delegate', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
    //Prevent the click
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
    e.halt();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
    //Remove all the selected items
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
    e.currentTarget.get('parentNode').queryAll('li.selected').removeClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
    //Add the selected class to the one that one clicked
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
    e.currentTarget.addClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
    //The "All Photos" link was clicked
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
    if (e.currentTarget.hasClass('all')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
        //Remove all the hidden classes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
        wrapper.queryAll('li').removeClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
    } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
        //Another "album" was clicked, get its id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
        var c = e.target.get('id');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
        //Hide all items by adding the hidden class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
        wrapper.queryAll('li').addClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
        //Now, find all the items with the class name the same as the album id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
        //and remove the hidden class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
        wrapper.queryAll('li.' + c).removeClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
}, document, 'click', '#photoList li');</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
<h3>Full Source</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
<p>Here is the full commented JavaScript source for this example.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
<div id="syntax6" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">YUI<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="kw2">use</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="sy0">,</span> <span class="st0">'anim'</span><span class="sy0">,</span> <span class="st0">'dd'</span><span class="sy0">,</span> <span class="st0">'yql'</span><span class="sy0">,</span> <span class="st0">'slider'</span><span class="sy0">,</span> <span class="st0">'stylesheet'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>Y<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Get a reference to the wrapper to use later and add a loading class to it.</span></div></li><li class="li1"><div class="de1">    <span class="kw2">var</span> wrapper <span class="sy0">=</span> Y.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Set its height to the height of the viewport so we can scroll it.</span></div></li><li class="li2"><div class="de2">    wrapper.<span class="me1">setStyle</span><span class="br0">&#40;</span><span class="st0">'height'</span><span class="sy0">,</span> <span class="br0">&#40;</span>wrapper.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'winHeight'</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="nu0">50</span> <span class="br0">&#41;</span><span class="sy0">+</span> <span class="st0">'px'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'windowresize'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> wrapper.<span class="me1">setStyle</span><span class="br0">&#40;</span><span class="st0">'height'</span><span class="sy0">,</span> <span class="br0">&#40;</span>wrapper.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'winHeight'</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="nu0">50</span> <span class="br0">&#41;</span><span class="sy0">+</span> <span class="st0">'px'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Make the YQL query.</span></div></li><li class="li1"><div class="de1">    <span class="kw2">new</span> Y.<span class="me1">yql</span><span class="br0">&#40;</span><span class="st0">'select * from flickr.photos.search(100) where text=&quot;openhacklondon&quot; and safe_search = 1 and media = &quot;photos&quot; and extras = &quot;o_dims&quot; and ((o_width = &quot;1600&quot; and o_height = &quot;1200&quot;) or (o_width = &quot;1200&quot; and o_height = &quot;1600&quot;) or (o_width = &quot;800&quot; and o_height = &quot;600&quot;) or (o_width = &quot;600&quot; and o_height = &quot;800&quot;))'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">query</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">            <span class="kw2">var</span> photos <span class="sy0">=</span> e.<span class="me1">query</span>.<span class="me1">results</span>.<span class="me1">photo</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Walk the returned photos array</span></div></li><li class="li1"><div class="de1">            Y.<span class="me1">each</span><span class="br0">&#40;</span>photos<span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>v<span class="sy0">,</span> k<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                <span class="co1">//Create our URL</span></div></li><li class="li1"><div class="de1">                <span class="kw2">var</span> url <span class="sy0">=</span> <span class="st0">'http:/'</span><span class="sy0">+</span><span class="st0">'/static.flickr.com/'</span> <span class="sy0">+</span> v.<span class="me1">server</span> <span class="sy0">+</span> <span class="st0">'/'</span> <span class="sy0">+</span> v.<span class="me1">id</span> <span class="sy0">+</span> <span class="st0">'_'</span> <span class="sy0">+</span> v.<span class="me1">secret</span> <span class="sy0">+</span> <span class="st0">'_m.jpg'</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">                    <span class="co1">//Create the image and the LI</span></div></li><li class="li1"><div class="de1">                    li <span class="sy0">=</span> Y.<span class="me1">Node</span>.<span class="me1">create</span><span class="br0">&#40;</span><span class="st0">'&lt;li class=&quot;loading&quot;&gt;&lt;img src=&quot;'</span> <span class="sy0">+</span> url <span class="sy0">+</span> <span class="st0">'&quot; title=&quot;'</span> <span class="sy0">+</span> v.<span class="me1">title</span> <span class="sy0">+</span> <span class="st0">'&quot;&gt;&lt;/li&gt;'</span><span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">                    <span class="co1">//Get the image from the LI</span></div></li><li class="li1"><div class="de1">                    img <span class="sy0">=</span> li.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'firstChild'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                <span class="co1">//Append the li to the wrapper</span></div></li><li class="li2"><div class="de2">                wrapper.<span class="me1">appendChild</span><span class="br0">&#40;</span>li<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                <span class="co1">//This little hack moves the tall images to the bottom of the list</span></div></li><li class="li1"><div class="de1">                <span class="co1">//So they float better ;)</span></div></li><li class="li1"><div class="de1">                img.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'load'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                    <span class="co1">//Is the height longer than the width?</span></div></li><li class="li2"><div class="de2">                    <span class="kw2">var</span> c <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'height'</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'width'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">?</span> <span class="st0">'tall'</span> <span class="sy0">:</span> <span class="st0">'wide'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                    <span class="kw1">this</span>.<span class="me1">addClass</span><span class="br0">&#40;</span>c<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                    <span class="kw1">if</span> <span class="br0">&#40;</span>c <span class="sy0">===</span> <span class="st0">'tall'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                        <span class="co1">//Move it to the end of the list.</span></div></li><li class="li1"><div class="de1">                        <span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode.parentNode'</span><span class="br0">&#41;</span>.<span class="me1">removeChild</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">                        wrapper.<span class="me1">appendChild</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">                    <span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">            <span class="co1">//Get all the newly added li's</span></div></li><li class="li1"><div class="de1">            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>node<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                <span class="co1">//Plugin the Drag plugin</span></div></li><li class="li1"><div class="de1">                <span class="kw1">this</span>.<span class="me1">plug</span><span class="br0">&#40;</span>Y.<span class="me1">Plugin</span>.<span class="me1">Drag</span><span class="sy0">,</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                    offsetNode<span class="sy0">:</span> <span class="kw2">false</span></div></li><li class="li2"><div class="de2">                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                <span class="co1">//Plug the Proxy into the DD object</span></div></li><li class="li1"><div class="de1">                <span class="kw1">this</span>.<span class="me1">dd</span>.<span class="me1">plug</span><span class="br0">&#40;</span>Y.<span class="me1">Plugin</span>.<span class="me1">DDProxy</span><span class="sy0">,</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                    resizeFrame<span class="sy0">:</span> <span class="kw2">false</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">                    moveOnEnd<span class="sy0">:</span> <span class="kw2">false</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">                    borderStyle<span class="sy0">:</span> <span class="st0">'none'</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Create and render the slider</span></div></li><li class="li1"><div class="de1">            <span class="kw2">var</span> sl <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Slider</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">                railSize<span class="sy0">:</span> <span class="st0">'200px'</span><span class="sy0">,</span> value<span class="sy0">:</span> <span class="nu0">40</span><span class="sy0">,</span> max<span class="sy0">:</span> <span class="nu0">70</span><span class="sy0">,</span> min<span class="sy0">:</span> <span class="nu0">5</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">                thumbImage<span class="sy0">:</span> assetsDir <span class="sy0">+</span> <span class="st0">'css/thumb-classic-x.png'</span></div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'.horiz_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Listen for the change</span></div></li><li class="li1"><div class="de1">            sl.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">'valueChange'</span><span class="sy0">,</span><span class="kw2">function</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">                <span class="co1">//Insert a dynamic stylesheet rule</span></div></li><li class="li1"><div class="de1">                <span class="kw2">var</span> sheet <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">StyleSheet</span><span class="br0">&#40;</span><span class="st0">'image_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">                sheet.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li'</span><span class="sy0">,</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                    width<span class="sy0">:</span> <span class="br0">&#40;</span>e.<span class="me1">newVal</span> <span class="sy0">/</span> <span class="nu0">2</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'%'</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">            <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Remove the DDM as a bubble target..</span></div></li><li class="li1"><div class="de1">            sl._dd.<span class="me1">removeTarget</span><span class="br0">&#40;</span>Y.<span class="me1">DD</span>.<span class="me1">DDM</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Remove the wrappers loading class</span></div></li><li class="li1"><div class="de1">            wrapper.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">            Y.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'#ft'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Listen for all mouseups on the document (selecting/deselecting images)</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>e.<span class="me1">shiftKey</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//No shift key - remove all selected images</span></div></li><li class="li1"><div class="de1">            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Check if the target is an image and select it.</span></div></li><li class="li2"><div class="de2">        <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">target</span>.<span class="me1">test</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li img'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            e.<span class="me1">target</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'mouseup'</span><span class="sy0">,</span> <span class="st0">'*'</span><span class="br0">&#41;</span><span class="sy0">;</span>    </div></li><li class="li1"><div class="de1">    <span class="co1">//Listen for all clicks on the '#photoList li' selector</span></div></li><li class="li2"><div class="de2">    Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Prevent the click</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">halt</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Remove all the selected items</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">currentTarget</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">        <span class="co1">//Add the selected class to the one that one clicked</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">currentTarget</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//The &quot;All Photos&quot; link was clicked</span></div></li><li class="li1"><div class="de1">        <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">currentTarget</span>.<span class="me1">hasClass</span><span class="br0">&#40;</span><span class="st0">'all'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Remove all the hidden classes</span></div></li><li class="li2"><div class="de2">            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Another &quot;album&quot; was clicked, get its id</span></div></li><li class="li1"><div class="de1">            <span class="kw2">var</span> c <span class="sy0">=</span> e.<span class="me1">currentTarget</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Hide all items by adding the hidden class</span></div></li><li class="li2"><div class="de2">            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Now, find all the items with the class name the same as the album id</span></div></li><li class="li1"><div class="de1">            <span class="co1">//and remove the hidden class</span></div></li><li class="li1"><div class="de1">            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.'</span> <span class="sy0">+</span> c<span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'click'</span><span class="sy0">,</span> <span class="st0">'#photoList li'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Stop the drag with the escape key</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">get</span><span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'keypress'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//The escape key was pressed</span></div></li><li class="li1"><div class="de1">        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>e.<span class="me1">keyCode</span> <span class="sy0">===</span> <span class="nu0">27</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="br0">&#40;</span>e.<span class="me1">charCode</span> <span class="sy0">===</span> <span class="nu0">27</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">            <span class="co1">//We have an active Drag</span></div></li><li class="li1"><div class="de1">            <span class="kw1">if</span> <span class="br0">&#40;</span>Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">activeDrag</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                <span class="co1">//Stop the drag</span></div></li><li class="li1"><div class="de1">                Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">activeDrag</span>.<span class="me1">stopDrag</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//On the drag:mouseDown add the selected class</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'drag:mouseDown'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">target</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//On drag start, get all the selected elements</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Add the count to the proxy element and offset it to the cursor.</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'drag:start'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//How many items are selected</span></div></li><li class="li2"><div class="de2">        <span class="kw2">var</span> count <span class="sy0">=</span> wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span>.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Set the style on the proxy node</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">target</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'dragNode'</span><span class="br0">&#41;</span>.<span class="me1">setStyles</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            height<span class="sy0">:</span> <span class="st0">'25px'</span><span class="sy0">,</span> width<span class="sy0">:</span> <span class="st0">'25px'</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'innerHTML'</span><span class="sy0">,</span> <span class="st0">'&lt;span&gt;'</span> <span class="sy0">+</span> count <span class="sy0">+</span> <span class="st0">'&lt;/span&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">        <span class="co1">//Offset the dragNode</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">target</span>.<span class="me1">deltaXY</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="nu0">25</span><span class="sy0">,</span> <span class="nu0">5</span><span class="br0">&#93;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//We dropped on a drop target</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'drag:drophit'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">        <span class="co1">//get the images that are selected.</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> imgs <span class="sy0">=</span> wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            <span class="co1">//The xy position of the item we dropped on</span></div></li><li class="li1"><div class="de1">            toXY <span class="sy0">=</span> e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">getXY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        imgs.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>node<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//Clone the image, position it on top of the original and animate it to the drop target</span></div></li><li class="li1"><div class="de1">            node.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span>e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="kw2">var</span> n <span class="sy0">=</span> node.<span class="me1">cloneNode</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="sy0">,</span> <span class="st0">''</span><span class="br0">&#41;</span>.<span class="me1">setStyle</span><span class="br0">&#40;</span><span class="st0">'position'</span><span class="sy0">,</span> <span class="st0">'absolute'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            Y.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'body'</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">            n.<span class="me1">setXY</span><span class="br0">&#40;</span>node.<span class="me1">getXY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">            <span class="kw2">new</span> Y.<span class="me1">Anim</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                node<span class="sy0">:</span> n<span class="sy0">,</span></div></li><li class="li1"><div class="de1">                to<span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                    height<span class="sy0">:</span> <span class="nu0">20</span><span class="sy0">,</span> width<span class="sy0">:</span> <span class="nu0">20</span><span class="sy0">,</span> opacity<span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">                    top<span class="sy0">:</span> toXY<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">,</span> left<span class="sy0">:</span> toXY<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">                from<span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                    width<span class="sy0">:</span> node.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'offsetWidth'</span><span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">                    height<span class="sy0">:</span> node.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'offsetHeight'</span><span class="br0">&#41;</span></div></li><li class="li2"><div class="de2">                <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">                duration<span class="sy0">:</span> .5</div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="co1">//Update the count</span></div></li><li class="li2"><div class="de2">        <span class="kw2">var</span> count <span class="sy0">=</span> wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.'</span> <span class="sy0">+</span> e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">query</span><span class="br0">&#40;</span><span class="st0">'span'</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'innerHTML'</span><span class="sy0">,</span> <span class="st0">'('</span> <span class="sy0">+</span> count <span class="sy0">+</span> <span class="st0">')'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//Add drop support to the albums</span></div></li><li class="li1"><div class="de1">    Y.<span class="me1">all</span><span class="br0">&#40;</span><span class="st0">'#photoList li'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>node<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>node.<span class="me1">hasClass</span><span class="br0">&#40;</span><span class="st0">'all'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            <span class="co1">//make all albums Drop Targets except the all photos.</span></div></li><li class="li1"><div class="de1">            node.<span class="me1">plug</span><span class="br0">&#40;</span>Y.<span class="me1">Plugin</span>.<span class="me1">Drop</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">YUI<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="kw2">use</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="sy0">,</span> <span class="st0">'anim'</span><span class="sy0">,</span> <span class="st0">'dd'</span><span class="sy0">,</span> <span class="st0">'yql'</span><span class="sy0">,</span> <span class="st0">'slider'</span><span class="sy0">,</span> <span class="st0">'stylesheet'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>Y<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
    <span class="co1">//Get a reference to the wrapper to use later and add a loading class to it.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
    <span class="kw2">var</span> wrapper <span class="sy0">=</span> Y.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
    <span class="co1">//Set its height to the height of the viewport so we can scroll it.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
    wrapper.<span class="me1">setStyle</span><span class="br0">&#40;</span><span class="st0">'height'</span><span class="sy0">,</span> <span class="br0">&#40;</span>wrapper.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'winHeight'</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="nu0">50</span> <span class="br0">&#41;</span><span class="sy0">+</span> <span class="st0">'px'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
    Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'windowresize'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> wrapper.<span class="me1">setStyle</span><span class="br0">&#40;</span><span class="st0">'height'</span><span class="sy0">,</span> <span class="br0">&#40;</span>wrapper.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'winHeight'</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="nu0">50</span> <span class="br0">&#41;</span><span class="sy0">+</span> <span class="st0">'px'</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
    <span class="co1">//Make the YQL query.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
    <span class="kw2">new</span> Y.<span class="me1">yql</span><span class="br0">&#40;</span><span class="st0">'select * from flickr.photos.search(100) where text=&quot;openhacklondon&quot; and safe_search = 1 and media = &quot;photos&quot; and extras = &quot;o_dims&quot; and ((o_width = &quot;1600&quot; and o_height = &quot;1200&quot;) or (o_width = &quot;1200&quot; and o_height = &quot;1600&quot;) or (o_width = &quot;800&quot; and o_height = &quot;600&quot;) or (o_width = &quot;600&quot; and o_height = &quot;800&quot;))'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
        <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">query</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
            <span class="kw2">var</span> photos <span class="sy0">=</span> e.<span class="me1">query</span>.<span class="me1">results</span>.<span class="me1">photo</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
            <span class="co1">//Walk the returned photos array</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
            Y.<span class="me1">each</span><span class="br0">&#40;</span>photos<span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>v<span class="sy0">,</span> k<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
                <span class="co1">//Create our URL</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
                <span class="kw2">var</span> url <span class="sy0">=</span> <span class="st0">'http:/'</span><span class="sy0">+</span><span class="st0">'/static.flickr.com/'</span> <span class="sy0">+</span> v.<span class="me1">server</span> <span class="sy0">+</span> <span class="st0">'/'</span> <span class="sy0">+</span> v.<span class="me1">id</span> <span class="sy0">+</span> <span class="st0">'_'</span> <span class="sy0">+</span> v.<span class="me1">secret</span> <span class="sy0">+</span> <span class="st0">'_m.jpg'</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
                    <span class="co1">//Create the image and the LI</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
                    li <span class="sy0">=</span> Y.<span class="me1">Node</span>.<span class="me1">create</span><span class="br0">&#40;</span><span class="st0">'&lt;li class=&quot;loading&quot;&gt;&lt;img src=&quot;'</span> <span class="sy0">+</span> url <span class="sy0">+</span> <span class="st0">'&quot; title=&quot;'</span> <span class="sy0">+</span> v.<span class="me1">title</span> <span class="sy0">+</span> <span class="st0">'&quot;&gt;&lt;/li&gt;'</span><span class="br0">&#41;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
                    <span class="co1">//Get the image from the LI</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
                    img <span class="sy0">=</span> li.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'firstChild'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
                <span class="co1">//Append the li to the wrapper</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
                wrapper.<span class="me1">appendChild</span><span class="br0">&#40;</span>li<span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
                <span class="co1">//This little hack moves the tall images to the bottom of the list</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
                <span class="co1">//So they float better ;)</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
                img.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'load'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
                    <span class="co1">//Is the height longer than the width?</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
                    <span class="kw2">var</span> c <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'height'</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'width'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">?</span> <span class="st0">'tall'</span> <span class="sy0">:</span> <span class="st0">'wide'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
                    <span class="kw1">this</span>.<span class="me1">addClass</span><span class="br0">&#40;</span>c<span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
                    <span class="kw1">if</span> <span class="br0">&#40;</span>c <span class="sy0">===</span> <span class="st0">'tall'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
                        <span class="co1">//Move it to the end of the list.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
                        <span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode.parentNode'</span><span class="br0">&#41;</span>.<span class="me1">removeChild</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
                        wrapper.<span class="me1">appendChild</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
                    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
                    <span class="kw1">this</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
            <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
            <span class="co1">//Get all the newly added li's</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>node<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
                <span class="co1">//Plugin the Drag plugin</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
                <span class="kw1">this</span>.<span class="me1">plug</span><span class="br0">&#40;</span>Y.<span class="me1">Plugin</span>.<span class="me1">Drag</span><span class="sy0">,</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
                    offsetNode<span class="sy0">:</span> <span class="kw2">false</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
                <span class="co1">//Plug the Proxy into the DD object</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
                <span class="kw1">this</span>.<span class="me1">dd</span>.<span class="me1">plug</span><span class="br0">&#40;</span>Y.<span class="me1">Plugin</span>.<span class="me1">DDProxy</span><span class="sy0">,</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
                    resizeFrame<span class="sy0">:</span> <span class="kw2">false</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
                    moveOnEnd<span class="sy0">:</span> <span class="kw2">false</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
                    borderStyle<span class="sy0">:</span> <span class="st0">'none'</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
            <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
            <span class="co1">//Create and render the slider</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
            <span class="kw2">var</span> sl <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Slider</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
                railSize<span class="sy0">:</span> <span class="st0">'200px'</span><span class="sy0">,</span> value<span class="sy0">:</span> <span class="nu0">40</span><span class="sy0">,</span> max<span class="sy0">:</span> <span class="nu0">70</span><span class="sy0">,</span> min<span class="sy0">:</span> <span class="nu0">5</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
                thumbImage<span class="sy0">:</span> assetsDir <span class="sy0">+</span> <span class="st0">'css/thumb-classic-x.png'</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
            <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'.horiz_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
            <span class="co1">//Listen for the change</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
            sl.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">'valueChange'</span><span class="sy0">,</span><span class="kw2">function</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
                <span class="co1">//Insert a dynamic stylesheet rule</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
                <span class="kw2">var</span> sheet <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">StyleSheet</span><span class="br0">&#40;</span><span class="st0">'image_slider'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
                sheet.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li'</span><span class="sy0">,</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
                    width<span class="sy0">:</span> <span class="br0">&#40;</span>e.<span class="me1">newVal</span> <span class="sy0">/</span> <span class="nu0">2</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'%'</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
            <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
            <span class="co1">//Remove the DDM as a bubble target..</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
            sl._dd.<span class="me1">removeTarget</span><span class="br0">&#40;</span>Y.<span class="me1">DD</span>.<span class="me1">DDM</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
            <span class="co1">//Remove the wrappers loading class</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
            wrapper.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
            Y.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'#ft'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'loading'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
        <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
    <span class="co1">//Listen for all mouseups on the document (selecting/deselecting images)</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
    Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>e.<span class="me1">shiftKey</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
            <span class="co1">//No shift key - remove all selected images</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
        <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
        <span class="co1">//Check if the target is an image and select it.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
        <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">target</span>.<span class="me1">test</span><span class="br0">&#40;</span><span class="st0">'#yui-main .yui-g ul li img'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
            e.<span class="me1">target</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
        <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
    <span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'mouseup'</span><span class="sy0">,</span> <span class="st0">'*'</span><span class="br0">&#41;</span><span class="sy0">;</span>    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
    <span class="co1">//Listen for all clicks on the '#photoList li' selector</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
    Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'delegate'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
        <span class="co1">//Prevent the click</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        e.<span class="me1">halt</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
        <span class="co1">//Remove all the selected items</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
        e.<span class="me1">currentTarget</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.selected'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
        <span class="co1">//Add the selected class to the one that one clicked</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
        e.<span class="me1">currentTarget</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        <span class="co1">//The &quot;All Photos&quot; link was clicked</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
        <span class="kw1">if</span> <span class="br0">&#40;</span>e.<span class="me1">currentTarget</span>.<span class="me1">hasClass</span><span class="br0">&#40;</span><span class="st0">'all'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
            <span class="co1">//Remove all the hidden classes</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
        <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
            <span class="co1">//Another &quot;album&quot; was clicked, get its id</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
            <span class="kw2">var</span> c <span class="sy0">=</span> e.<span class="me1">currentTarget</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
            <span class="co1">//Hide all items by adding the hidden class</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
            <span class="co1">//Now, find all the items with the class name the same as the album id</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
            <span class="co1">//and remove the hidden class</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
            wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.'</span> <span class="sy0">+</span> c<span class="br0">&#41;</span>.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'hidden'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
        <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
    <span class="br0">&#125;</span><span class="sy0">,</span> document<span class="sy0">,</span> <span class="st0">'click'</span><span class="sy0">,</span> <span class="st0">'#photoList li'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
    <span class="co1">//Stop the drag with the escape key</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
    Y.<span class="me1">get</span><span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'keypress'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
        <span class="co1">//The escape key was pressed</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>e.<span class="me1">keyCode</span> <span class="sy0">===</span> <span class="nu0">27</span><span class="br0">&#41;</span> <span class="sy0">||</span> <span class="br0">&#40;</span>e.<span class="me1">charCode</span> <span class="sy0">===</span> <span class="nu0">27</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
            <span class="co1">//We have an active Drag</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
            <span class="kw1">if</span> <span class="br0">&#40;</span>Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">activeDrag</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
                <span class="co1">//Stop the drag</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
                Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">activeDrag</span>.<span class="me1">stopDrag</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
        <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
    <span class="co1">//On the drag:mouseDown add the selected class</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
    Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'drag:mouseDown'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
        e.<span class="me1">target</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'selected'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
    <span class="co1">//On drag start, get all the selected elements</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
    <span class="co1">//Add the count to the proxy element and offset it to the cursor.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
    Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'drag:start'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
        <span class="co1">//How many items are selected</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
        <span class="kw2">var</span> count <span class="sy0">=</span> wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span>.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
        <span class="co1">//Set the style on the proxy node</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
        e.<span class="me1">target</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'dragNode'</span><span class="br0">&#41;</span>.<span class="me1">setStyles</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
            height<span class="sy0">:</span> <span class="st0">'25px'</span><span class="sy0">,</span> width<span class="sy0">:</span> <span class="st0">'25px'</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
        <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'innerHTML'</span><span class="sy0">,</span> <span class="st0">'&lt;span&gt;'</span> <span class="sy0">+</span> count <span class="sy0">+</span> <span class="st0">'&lt;/span&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
        <span class="co1">//Offset the dragNode</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
        e.<span class="me1">target</span>.<span class="me1">deltaXY</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="nu0">25</span><span class="sy0">,</span> <span class="nu0">5</span><span class="br0">&#93;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
    <span class="co1">//We dropped on a drop target</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
    Y.<span class="me1">DD</span>.<span class="me1">DDM</span>.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">'drag:drophit'</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
        <span class="co1">//get the images that are selected.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
        <span class="kw2">var</span> imgs <span class="sy0">=</span> wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'img.selected'</span><span class="br0">&#41;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
            <span class="co1">//The xy position of the item we dropped on</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
            toXY <span class="sy0">=</span> e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">getXY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
        imgs.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>node<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
            <span class="co1">//Clone the image, position it on top of the original and animate it to the drop target</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
            node.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'parentNode'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span>e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
            <span class="kw2">var</span> n <span class="sy0">=</span> node.<span class="me1">cloneNode</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="sy0">,</span> <span class="st0">''</span><span class="br0">&#41;</span>.<span class="me1">setStyle</span><span class="br0">&#40;</span><span class="st0">'position'</span><span class="sy0">,</span> <span class="st0">'absolute'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
            Y.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'body'</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
            n.<span class="me1">setXY</span><span class="br0">&#40;</span>node.<span class="me1">getXY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
            <span class="kw2">new</span> Y.<span class="me1">Anim</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
                node<span class="sy0">:</span> n<span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
                to<span class="sy0">:</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
                    height<span class="sy0">:</span> <span class="nu0">20</span><span class="sy0">,</span> width<span class="sy0">:</span> <span class="nu0">20</span><span class="sy0">,</span> opacity<span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
                    top<span class="sy0">:</span> toXY<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">,</span> left<span class="sy0">:</span> toXY<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
                <span class="br0">&#125;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
                from<span class="sy0">:</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
                    width<span class="sy0">:</span> node.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'offsetWidth'</span><span class="br0">&#41;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
                    height<span class="sy0">:</span> node.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'offsetHeight'</span><span class="br0">&#41;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
                <span class="br0">&#125;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
                duration<span class="sy0">:</span> .5
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
            <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
        <span class="co1">//Update the count</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
        <span class="kw2">var</span> count <span class="sy0">=</span> wrapper.<span class="me1">queryAll</span><span class="br0">&#40;</span><span class="st0">'li.'</span> <span class="sy0">+</span> e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'id'</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
        e.<span class="me1">drop</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">'node'</span><span class="br0">&#41;</span>.<span class="me1">query</span><span class="br0">&#40;</span><span class="st0">'span'</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">'innerHTML'</span><span class="sy0">,</span> <span class="st0">'('</span> <span class="sy0">+</span> count <span class="sy0">+</span> <span class="st0">')'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
    <span class="co1">//Add drop support to the albums</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
    Y.<span class="me1">all</span><span class="br0">&#40;</span><span class="st0">'#photoList li'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>node<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>node.<span class="me1">hasClass</span><span class="br0">&#40;</span><span class="st0">'all'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
            <span class="co1">//make all albums Drop Targets except the all photos.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
            node.<span class="me1">plug</span><span class="br0">&#40;</span>Y.<span class="me1">Plugin</span>.<span class="me1">Drop</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
        <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
    <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax6-plain">YUI().use('node', 'anim', 'dd', 'yql', 'slider', 'stylesheet', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
    //Get a reference to the wrapper to use later and add a loading class to it.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
    var wrapper = Y.get('#yui-main .yui-g ul').addClass('loading');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
    //Set its height to the height of the viewport so we can scroll it.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
    wrapper.setStyle('height', (wrapper.get('winHeight') - 50 )+ 'px');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
    Y.on('windowresize', function() { wrapper.setStyle('height', (wrapper.get('winHeight') - 50 )+ 'px'); });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
    //Make the YQL query.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
    new Y.yql('select * from flickr.photos.search(100) where text="openhacklondon" and safe_search = 1 and media = "photos" and extras = "o_dims" and ((o_width = "1600" and o_height = "1200") or (o_width = "1200" and o_height = "1600") or (o_width = "800" and o_height = "600") or (o_width = "600" and o_height = "800"))', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
        if (e.query) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
            var photos = e.query.results.photo;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
            //Walk the returned photos array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
            Y.each(photos, function(v, k) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
                //Create our URL
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
                var url = 'http:/'+'/static.flickr.com/' + v.server + '/' + v.id + '_' + v.secret + '_m.jpg',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
                    //Create the image and the LI
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
                    li = Y.Node.create('<li class="loading"><img src="' + url + '" title="' + v.title + '"></li>'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
                    //Get the image from the LI
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
                    img = li.get('firstChild');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
                //Append the li to the wrapper
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
                wrapper.appendChild(li);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
                //This little hack moves the tall images to the bottom of the list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
                //So they float better ;)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
                img.on('load', function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
                    //Is the height longer than the width?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
                    var c = ((this.get('height') > this.get('width')) ? 'tall' : 'wide');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
                    this.addClass(c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
                    if (c === 'tall') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
                        //Move it to the end of the list.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
                        this.get('parentNode.parentNode').removeChild(this.get('parentNode'));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
                        wrapper.appendChild(this.get('parentNode'));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
                    this.get('parentNode').removeClass('loading');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
            //Get all the newly added li's
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
            wrapper.queryAll('li').each(function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
                //Plugin the Drag plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
                this.plug(Y.Plugin.Drag, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
                    offsetNode: false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
                //Plug the Proxy into the DD object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
                this.dd.plug(Y.Plugin.DDProxy, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
                    resizeFrame: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
                    moveOnEnd: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
                    borderStyle: 'none'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
            //Create and render the slider
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
            var sl = new Y.Slider({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
                railSize: '200px', value: 40, max: 70, min: 5,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
                thumbImage: assetsDir + 'css/thumb-classic-x.png'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
            }).render('.horiz_slider');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
            //Listen for the change
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
            sl.after('valueChange',function (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
                //Insert a dynamic stylesheet rule
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
                var sheet = new Y.StyleSheet('image_slider');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
                sheet.set('#yui-main .yui-g ul li', {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
                    width: (e.newVal / 2) + '%'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
            //Remove the DDM as a bubble target..
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
            sl._dd.removeTarget(Y.DD.DDM);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
            //Remove the wrappers loading class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
            wrapper.removeClass('loading');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
            Y.get('#ft').removeClass('loading');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
    //Listen for all mouseups on the document (selecting/deselecting images)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
    Y.on('delegate', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
        if (!e.shiftKey) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
            //No shift key - remove all selected images
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
            wrapper.queryAll('img.selected').removeClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
        //Check if the target is an image and select it.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
        if (e.target.test('#yui-main .yui-g ul li img')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
            e.target.addClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
    }, document, 'mouseup', '*');    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
    //Listen for all clicks on the '#photoList li' selector
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
    Y.on('delegate', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
        //Prevent the click
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
        e.halt();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
        //Remove all the selected items
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
        e.currentTarget.get('parentNode').queryAll('li.selected').removeClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
        //Add the selected class to the one that one clicked
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
        e.currentTarget.addClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
        //The "All Photos" link was clicked
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
        if (e.currentTarget.hasClass('all')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
            //Remove all the hidden classes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
            wrapper.queryAll('li').removeClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
            //Another "album" was clicked, get its id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
            var c = e.currentTarget.get('id');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
            //Hide all items by adding the hidden class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
            wrapper.queryAll('li').addClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
            //Now, find all the items with the class name the same as the album id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
            //and remove the hidden class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
            wrapper.queryAll('li.' + c).removeClass('hidden');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
    }, document, 'click', '#photoList li');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
    //Stop the drag with the escape key
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
    Y.get(document).on('keypress', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
        //The escape key was pressed
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
        if ((e.keyCode === 27) || (e.charCode === 27)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
            //We have an active Drag
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
            if (Y.DD.DDM.activeDrag) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
                //Stop the drag
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
                Y.DD.DDM.activeDrag.stopDrag();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
    //On the drag:mouseDown add the selected class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
    Y.DD.DDM.on('drag:mouseDown', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
        e.target.get('node').queryAll('img').addClass('selected');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
    //On drag start, get all the selected elements
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
    //Add the count to the proxy element and offset it to the cursor.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
    Y.DD.DDM.on('drag:start', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
        //How many items are selected
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
        var count = wrapper.queryAll('img.selected').size();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
        //Set the style on the proxy node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
        e.target.get('dragNode').setStyles({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
            height: '25px', width: '25px'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
        }).set('innerHTML', '<span>' + count + '</span>');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
        //Offset the dragNode
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
        e.target.deltaXY = [25, 5];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
    //We dropped on a drop target
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
    Y.DD.DDM.on('drag:drophit', function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
        //get the images that are selected.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
        var imgs = wrapper.queryAll('img.selected'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
            //The xy position of the item we dropped on
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
            toXY = e.drop.get('node').getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
        imgs.each(function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
            //Clone the image, position it on top of the original and animate it to the drop target
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
            node.get('parentNode').addClass(e.drop.get('node').get('id'));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
            var n = node.cloneNode().set('id', '').setStyle('position', 'absolute');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
            Y.get('body').appendChild(n);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
            n.setXY(node.getXY());
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
            new Y.Anim({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
                node: n,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
                to: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
                    height: 20, width: 20, opacity: 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
                    top: toXY[1], left: toXY[0]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
                from: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
                    width: node.get('offsetWidth'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
                    height: node.get('offsetHeight')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
                duration: .5
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
            }).run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
        });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
        //Update the count
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
        var count = wrapper.queryAll('li.' + e.drop.get('node').get('id')).size();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
        e.drop.get('node').query('span').set('innerHTML', '(' + count + ')');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
    //Add drop support to the albums
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
    Y.all('#photoList li').each(function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
        if (!node.hasClass('all')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
            //make all albums Drop Targets except the all photos.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
            node.plug(Y.Plugin.Drop);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
});</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
				</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
				<div class="yui-u sidebar">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
					<div id="examples" class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
						<h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
    Drag &amp; Drop Examples:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
						<div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
							<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
								<li><a href='../dd/simple-drag.html'>Simple Drag</a></li><li><a href='../dd/drag-plugin.html'>Drag Node Plugin</a></li><li><a href='../dd/proxy-drag.html'>Proxy Drag</a></li><li><a href='../dd/constrained-drag.html'>Drag Constrained to a Region</a></li><li><a href='../dd/groups-drag.html'>Interaction Groups</a></li><li><a href='../dd/shim-drag.html'>Using the Drag Shim</a></li><li><a href='../dd/anim-drop.html'>Animated Drop Targets</a></li><li><a href='../dd/drop-code.html'>Drop Based Coding</a></li><li><a href='../dd/winscroll.html'>Window Scrolling</a></li><li><a href='../dd/list-drag.html'>List reorder w/Bubbling</a></li><li><a href='../dd/scroll-list.html'>List reorder w/Scrolling</a></li><li><a href='../dd/portal-drag.html'>Portal Style Example</a></li><li class='selected'><a href='../dd/photo-browser.html'>Photo Browser</a></li><li><a href='../stylesheet/stylesheet_theme.html'>Adjusting a page theme on the fly (included with examples for StyleSheet)</a></li>							</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
						</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
					<div class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
						<h4>More Drag &amp; Drop Resources:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
                        <div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
						<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
							<!-- <li><a href="http://developer.yahoo.com/yui/dd/">User's Guide</a> (external)</li> -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
<li><a href="../../api/module_dd.html">API Documentation</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
			  </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
<div class="yui-b toc3" id="tocWrapper">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
<!-- TABLE OF CONTENTS -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
<div id="toc">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
<li class="sect first">YUI 3 Resources</li><li class="item"><a title="YUI 3 -- Yahoo! User Interface (YUI) Library" href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site</a></li><li class="item"><a title="Examples of every YUI utility and control in action" href="../../examples/">YUI 3 Examples</a></li><li class="item"><a title="Instantly searchable API documentation for the entire YUI library." href="../../api/">YUI 3 API Docs</a></li><li class="item"><a title="YUI 3 Dependency Configurator -- configure your custom YUI implementation" href="http://developer.yahoo.com/yui/3/configurator">YUI 3 Dependency Configurator</a></li><li class="item"><a title="The YUI 3 Forum on YUILibrary.com" href="http://yuilibrary.com/forum/viewforum.php?f=15">YUI 3 Forums (external)</a></li><li class="item"><a title="Found a bug or a missing feature? Let us know on YUILibrary.com." href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/license.html">YUI License</a></li><li class="item"><a title="Download and fork the YUI project on GitHub" href="http://github.com/yui">YUI on Github</a></li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI Global Object - Functional Examples" href="../../examples/yui/index.html">YUI Global Object</a></li><li class="item"><a title="Event - Functional Examples" href="../../examples/event/index.html">Event</a></li><li class="item"><a title="Node - Functional Examples" href="../../examples/node/index.html">Node</a></li><li class="sect">YUI 3 Component Infrastructure - Examples</li><li class="item"><a title="Attribute - Functional Examples" href="../../examples/attribute/index.html">Attribute</a></li><li class="item"><a title="Plugin - Functional Examples" href="../../examples/plugin/index.html">Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Utilities - Examples</li><li class="item"><a title="Animation - Functional Examples" href="../../examples/anim/index.html">Animation</a></li><li class="item"><a title="AsyncQueue - Functional Examples" href="../../examples/async-queue/index.html">AsyncQueue</a></li><li class="item"><a title="Browser History - Functional Examples" href="../../examples/history/index.html">Browser History</a></li><li class="item"><a title="Cache - Functional Examples" href="../../examples/cache/index.html">Cache</a></li><li class="item"><a title="Cookie - Functional Examples" href="../../examples/cookie/index.html">Cookie</a></li><li class="item"><a title="DataSchema - Functional Examples" href="../../examples/dataschema/index.html">DataSchema <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="selected "><a title="Drag &amp; Drop - Functional Examples" href="../../examples/dd/index.html">Drag &amp; Drop</a></li><li class="item"><a title="Get - Functional Examples" href="../../examples/get/index.html">Get</a></li><li class="item"><a title="ImageLoader - Functional Examples" href="../../examples/imageloader/index.html">ImageLoader</a></li><li class="item"><a title="IO - Functional Examples" href="../../examples/io/index.html">IO</a></li><li class="item"><a title="JSON (JavaScript Object Notation) - Functional Examples" href="../../examples/json/index.html">JSON</a></li><li class="item"><a title="Stylesheet - Functional Examples" href="../../examples/stylesheet/index.html">Stylesheet</a></li><li class="sect">YUI 3 Widgets - Examples</li><li class="item"><a title="Overlay - Functional Examples" href="../../examples/overlay/index.html">Overlay <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Node Plugins - Examples</li><li class="item"><a title="FocusManager Node Plugin - Functional Examples" href="../../examples/node-focusmanager/index.html">FocusManager Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 CSS - Examples</li><li class="item"><a title="YUI CSS Reset - Functional Examples" href="../../examples/cssreset/index.html">CSS Reset</a></li><li class="item"><a title="YUI Fonts - Functional Examples" href="../../examples/cssfonts/index.html">CSS Fonts</a></li><li class="item"><a title="YUI Base - Functional Examples" href="../../examples/cssbase/index.html">CSS Base</a></li><li class="sect">YUI 3 Developer Tools - Examples</li><li class="item"><a title="Console - Functional Examples" href="../../examples/console/index.html">Console <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Console Filters Plugin- Functional Examples" href="../../examples/console-filters/index.html">Plugin.ConsoleFilters <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Profiler - Functional Examples" href="../../examples/profiler/index.html">Profiler</a></li><li class="item"><a title="Test - Functional Examples" href="../../examples/test/index.html">Test</a></li><li class="sect">Other Useful YUI 3 Resources</li><li class="item"><a title="Answers to Frequently Asked Questions about the YUI Library" href="http://developer.yahoo.com/yui/articles/faq/">YUI FAQ (external)</a></li><li class="item"><a title="Yahoo!'s philosophy of Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/">Graded Browser Support (external)</a></li><li class="item"><a title="Videos and podcasts from the YUI Team and from the Yahoo! frontend engineering community." href="http://developer.yahoo.com/yui/theater/">YUI Theater (external)</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
	</div><!--closes bd-->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
	<div id="ft">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
        <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
        <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
var yuiConfig = {base:"../../build/", timeout: 10000};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
<script src="../../assets/syntax.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
<script src="../../assets/dpSyntaxHighlighter.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
dp.SyntaxHighlighter.HighlightAll('code'); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
</body>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
</html>