Liomans Blog - scripthttps://lioman.de/42 ist die Antwort – aber wie lautet die Frage?Wed, 12 Jan 2011 14:52:00 +0100Skript: mp3 in ogg konvertierenhttps://lioman.de/2011/01/skript-mp3-in-ogg-konvertieren/<p><a class="reference external image-reference" href="https://lioman.de/images/mp3tovorbis.png"><img alt="image0" class="alignleft size-full" src="https://lioman.de/images/mp3tovorbis.png" style="width: 236px; height: 76px;" /></a>Unter Linux gibt es immer mal wieder Probleme mit dem dem Audioformat <a class="reference external" href="http://de.wikipedia.org/wiki/MP3"><span class="caps">MP3</span></a>. Schuld sind Patentstreitigkeiten und die eingeschränkende&nbsp;Lizenzierung. Als Alternative bietet sich das Format <a class="reference external" href="http://de.wikipedia.org/wiki/Vorbis">Ogg-Vorbis</a> an. Es ist quelloffen und kann mit Mp3 durchaus mithalten. Möchte man also diesen Codec nutzen, muss man die vorhandenen MP3s einfach konvertieren. Entsprechende Programme sind schnell installiert und so ist das Ganze komfortabel zu erledigen. Arbeitet man jedoch auf einem eingeschränkten System, bei dem die Installation von neuen Programmen nicht möglich ist (z.B. in der Uni) - muss man mit dem Arbeiten was vorhanden ist und auch mal einen Umweg&nbsp;gehen.</p> <p>Hier also ein kleines Skript, welches alle Mp3 in dem Ordner in dem es sich befindet in Ogg konvertiert. Benötigt wird mplayer und oggenc (bei vielen Distributionen mit&nbsp;dabei).</p> <pre class="literal-block"> #!/bin/bash # # Dump mp3 to ogg #Alle Leerzeichen und Sonderzeichen aus Dateinamen enfernen rename &quot;s/ *//g&quot; * rename &quot;s/ä/ae/g&quot; * rename &quot;s/ö/oe/g&quot; * rename &quot;s/ü/ue/g&quot; * rename &quot;s/ß/ss/g&quot; * rename &quot;s/é/e/g&quot; * rename &quot;s/è/e/g&quot; * for i in *.mp3 do #Alten Audiodump entfernen rm -fv audiodump.wav #Titelinformationen auslesen Title=`mplayer -identify $i -ao null -vo null -frames 0 2&gt;/dev/null | grep Title: | cut -c9- |tr &quot; &quot; &quot;_&quot;` Album=`mplayer -identify $i -ao null -vo null -frames 0 2&gt;/dev/null | grep Album: | cut -c9- |tr &quot; &quot; &quot;_&quot;` Artist=`mplayer -identify $i -ao null -vo null -frames 0 2&gt;/dev/null | grep Artist: | cut -c10- |tr &quot; &quot; &quot;_&quot;` Track=`mplayer -identify $i -ao null -vo null -frames 0 2&gt;/dev/null | grep Track: | cut -c9- |tr &quot; &quot; &quot;_&quot;` #mp3 --&gt; wav mplayer -quiet -vo null -vc null -ao pcm:waveheader $i #mp3 --&gt; ogg mit Titelinformationen oggenc -q5 -n &quot;%a-%l-%n-%t.ogg&quot; -a &quot;$Artist&quot; -N &quot;$Track&quot; -t &quot;$Title&quot; -l &quot;$Album&quot; audiodump.wav #mp3 + wav entfernen rm -fv audiodump.wav rm -fv $i done exit 0 </pre> <p>Dieses Skript behält nichts. Alle alten Daten werden gelöscht. Möchte man das nicht muss man <em>rm -fv $i</em>&nbsp;entfernen.</p> LiomanWed, 12 Jan 2011 14:52:00 +0100tag:lioman.de,2011-01-12:/2011/01/skript-mp3-in-ogg-konvertieren/DigitalOpen SourceLinuxmp3oggscriptSkriptGravatar Hovercards einbindenhttps://lioman.de/2010/10/gravatar-hovercards-einbinden/<ul class="simple"> <li><strong>Update2: Einfacher geht es in Wordpress mit dem Plugin:</strong> <a class="reference external" href="http://jetpack.me/">Jetpack</a></li> <li><strong>Update: Der Minimierte Code geht noch nicht!!! Nur die ungepackte Version&nbsp;funktioniert!!!</strong></li> </ul> <p><a class="reference external image-reference" href="https://lioman.de/images/hovercard.jpg"><img alt="Screenshot einer Wordpress-Hovercard" class="alignleft size-full" src="https://lioman.de/images/hovercard.jpg" style="width: 521px; height: 240px;" /></a> Schon länger ist der Dienst <a class="reference external" href="http://www.gravatar.com">Gravatar</a> in diversen Blogs eingebaut. Sowohl bei wordpress.com als auch in vielen Privaten. Hat man also ein Bild mit einer Emailadresse verknüpft erscheint es überall wo man kommentiert (und der Dienst eingebunden ist). Seit einiger Zeit konnte man ein Erweitertes Profil gestalten und ein klick auf das Bild neben einem Kommentar führte zu diesem. Wenn man also möchte kann man so sein Facebook-Profil - Twitterstream oder andere Konten bekannt machen und verbreiten. Nun gibt es die Möglichkeit eben jene Informationen aus dem Profil schon beim mit der Maus über das Bild gehen sich kompakt anzeigen zu&nbsp;lassen.</p> <p>Das Ergebnis sieht man oben im Bild und eingebaut ist es in ein Theme mit wenigen&nbsp;Klicks.</p> <div class="section" id="so-wird-es-eingebaut"> <h2>So wird es&nbsp;eingebaut.</h2> <p>Einfach in die <em>functions.php</em> des Themes folgende Zeile&nbsp;einfügen:</p> <pre class="code php literal-block"> <span class="x">wp_enqueue_script( 'gprofiles', 'http://s.gravatar.com/js/gprofiles.js', array( 'jquery' ), 'e', TRUE );</span> </pre> <p>Möchte man das ganze noch mehr gestalten muss man sich ein kleines Plugin schreiben. Eine genaue Anleitung dazu gibt es <a class="reference external" href="http://blog.wordpress-deutschland.org/2010/10/10/gravatars-hovercard-verwenden.html">hier</a>. Daher habe ich auch die oben beschriebene&nbsp;Anleitung.</p> </div> <div class="section" id="verbessern"> <h2>Verbessern</h2> <p>In den Kommentaren hat <a class="reference external" href="http://toscho.de/">Thomas Scholz</a> geschrieben, dass das Skript erstens groß und zweitens mit einem Wordpresstracker versehen ist. Möchte man das umgehen, kann man sich das Skript herunterladen und bearbeiten. Ohne Tracker sieht es dann so aus (Wenn ich alles erwischt&nbsp;habe):</p> <pre class="code js literal-block"> <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">console</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">console</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="err">\</span><span class="nx">log</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">str</span><span class="p">){},</span><span class="w"> </span><span class="err">\</span><span class="nx">debug</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">str</span><span class="p">){}</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">Gravatar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* All loaded profiles, keyed off ghash */</span><span class="w"> </span><span class="err">\</span><span class="nx">profile_stack</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="c1">// Mapping of ghash to the \currently waiting\ dom_id of where to render it</span><span class="w"> </span><span class="err">\</span><span class="nx">profile_map</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="cm">/* Timeouts for hovering over and off Gravatar images */</span><span class="w"> </span><span class="err">\</span><span class="nx">overTimeout</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">outTimeout</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* If true, show_card will bail */</span><span class="w"> </span><span class="err">\</span><span class="nx">stopOver</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* The img element, hash and ID of the Gravatar that is being hovered over */</span><span class="w"> </span><span class="err">\</span><span class="nx">active_grav</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">active_hash</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">active_id</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* The clone of the Gravatar img element that is being hovered over. */</span><span class="w"> </span><span class="err">\</span><span class="nx">active_grav_clone</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Callback function for once a profile is loaded */</span><span class="w"> </span><span class="err">\</span><span class="nx">profile_cb</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Wating throbber */</span><span class="w"> </span><span class="err">\</span><span class="nx">throbber</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="cm">/* Has a custom background image been added to the card? */</span><span class="w"> </span><span class="err">\</span><span class="nx">has_bg</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">disabled</span><span class="err">\</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="err">\</span><span class="nx">mouseOut</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">stopImmediatePropagation</span><span class="p">();</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.debug( ':set out' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">outTimeout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">setTimeout</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( ':do out' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_card</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">300</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">init</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ca</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">cookie</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="w"> </span><span class="s1">';'</span><span class="w"> </span><span class="p">),</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">c</span><span class="p">;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="nx">ca</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">ca</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">c</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="nx">c</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="nx">c</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">c</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="w"> </span><span class="s1">'nohovercard=1'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* Locate all Gravatar images and attach profile links to them. */</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">attach_profiles</span><span class="p">();</span><span class="w"> </span><span class="cm">/* Add CSS */</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">add_card_css</span><span class="p">();</span><span class="w"> </span><span class="cm">/* Find and show a hovercard when hovering over a Gravatar. */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-hashed'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'mouseenter.gravatar mouseleave.gravatar'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">disabled</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">stopPropagation</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'mouseleave'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="s1">'mouseout'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( 'grav out' );</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">mouseOut</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">,</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.debug( 'grav enter' );</span><span class="w"> </span><span class="cm">/* Get and store the hash and ID for the active Gravatar */</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'id'</span><span class="p">);</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">'-'</span><span class="p">)[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">untilt_gravatar</span><span class="p">();</span><span class="w"> </span><span class="c1">// console.debug( ':clear over1' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">overTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// No profile data - see fetch_profile_error</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">profile_map</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// console.debug( ':clear out' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">outTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">tilt_gravatar</span><span class="p">();</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">fetch_profile_by_hash</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.debug( ':set over' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">overTimeout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">setTimeout</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">show_card</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">600</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="cm">/* Maintain hovercard state when rolling over a hovercard or cloned image */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'div.gcard, img.grav-clone'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'mouseenter.gravatar mouseleave.gravatar'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">disabled</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">stopPropagation</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'mouseenter'</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'mouseover'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.debug( 'clone enter' );</span><span class="w"> </span><span class="c1">// console.debug( ':clear out2' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">outTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( 'clone out' );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">mouseOut</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">,</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="cm">/* Cancel a hovercard when scrolling. */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="w"> </span><span class="s1">'scroll'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_card</span><span class="p">();</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">attach_profiles</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* Locate all Gravatar images and add profiles to them */</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="err">\</span><span class="nx">body</span><span class="err">\</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">container</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="nx">container</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' img[src*=gravatar.com/avatar]'</span><span class="w"> </span><span class="p">).</span><span class="nx">not</span><span class="p">(</span><span class="w"> </span><span class="s1">'.no-grav, .no-grav img'</span><span class="w"> </span><span class="p">).</span><span class="nx">each</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">extract_hash</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Add unique ID to image so we can reference it directly */</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#grav-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#grav-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">uniq</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* Remove the hover titles for sanity */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">g</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'id'</span><span class="p">,</span><span class="w"> </span><span class="s1">'grav-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">uniq</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">).</span><span class="nx">removeAttr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">g</span><span class="p">.</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">g</span><span class="p">.</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'href'</span><span class="p">,</span><span class="w"> </span><span class="s1">'http://gravatar.com/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">).</span><span class="nx">removeAttr</span><span class="p">(</span><span class="w"> </span><span class="s1">'title'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">g</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="s1">'grav-hashed'</span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">show_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">stopOver</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_map</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="c1">// Close any existing cards</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'.gcard'</span><span class="w"> </span><span class="p">).</span><span class="nx">hide</span><span class="p">();</span><span class="w"> </span><span class="c1">// Bail if we're waiting on a fetch</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'fetching'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">show_throbber</span><span class="p">();</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="s1">'show_card'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( 'still fetching ' + hash );</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// If we haven't fetched this profile yet, do it now and do this later</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'undefined'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">show_throbber</span><span class="p">();</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="s1">'show_card'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( 'need to start fetching ' + hash + '&#64;' + dom_id );</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">fetch_profile_by_hash</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_throbber</span><span class="p">();</span><span class="w"> </span><span class="c1">// console.log( 'show_card: hash: ' + hash + ', DOM ID: ' + dom_id );</span><span class="w"> </span><span class="c1">// No HTML? build it</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w">&nbsp; </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">build_card</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="p">,</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">render_card</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_grav</span><span class="p">,</span><span class="w"> </span><span class="s1">'profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">hide_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.debug( ':clear over3' );</span><span class="w"> </span><span class="nx">clearTimeout</span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">overTimeout</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Untilt the Gravatar image */</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">untilt_gravatar</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'div.gcard'</span><span class="w"> </span><span class="p">).</span><span class="nx">filter</span><span class="p">(</span><span class="w"> </span><span class="s1">'#profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">).</span><span class="nx">fadeOut</span><span class="p">(</span><span class="mf">120</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-large'</span><span class="p">).</span><span class="nx">stop</span><span class="p">().</span><span class="nx">remove</span><span class="p">();</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">).</span><span class="nx">end</span><span class="p">().</span><span class="nx">not</span><span class="p">(</span><span class="w"> </span><span class="s1">'#profile-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">active_hash</span><span class="w"> </span><span class="p">).</span><span class="nx">hide</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">render_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">grav</span><span class="p">,</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_el</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_id</span><span class="w">&nbsp; </span><span class="p">).</span><span class="nx">stop</span><span class="p">();</span><span class="w"> </span><span class="c1">// console.log( 'render_card for ' + grav_id + ', ' + card_id );</span><span class="w"> </span><span class="c1">// Change CSS positioning based on where grav_id is in the page</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_el</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="nx">grav</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_pos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_el</span><span class="p">.</span><span class="nx">offset</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_width</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_el</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_space</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="mf">5</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_width</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">.4</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_width</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="nx">card_el</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card_el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_width</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_width</span><span class="w">&nbsp; </span><span class="o">=</span><span class="w"> </span><span class="mf">400</span><span class="p">;</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">200</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* console.log( grav_pos ); console.log( 'grav_width = ' + grav_width + \\n\ + 'grav_height = ' + grav_height + \\n\ + 'grav_space = ' + grav_space + \\n\ + 'card_width = ' + card_width + \\n\ + 'card_height = ' + card_height + \\n\ ); */</span><span class="w"> </span><span class="cm">/* Position to the right of the element */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_space</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">top</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">top</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'pos-right'</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Position to the left of the element if space on the right is not enough. */</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_space</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_width</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">scrollLeft</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_space</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'pos-left'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* Reposition the card itself */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">top_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">.25</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">).</span><span class="nx">removeClass</span><span class="p">(</span><span class="w"> </span><span class="s1">'pos-right pos-left'</span><span class="w"> </span><span class="p">).</span><span class="nx">addClass</span><span class="p">(</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">top</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">top_offset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="nx">left</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Position of the small arrow in relation to the Gravatar */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">6</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card_height</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">6</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">53</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">53</span><span class="p">;</span><span class="w"> </span><span class="c1">// Max</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">has_bg</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">8</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// Min</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">css</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1.5</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">top_offset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'pos-right'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">grav_pos_class</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'right'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'auto'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'left'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'-7px'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'background-position'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'0px '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'right'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'-10px'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'left'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'auto'</span><span class="p">;</span><span class="w"> </span><span class="nx">css</span><span class="p">[</span><span class="s1">'background-position'</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'0px '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">arrow_offset</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-cardarrow'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="nx">css</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card_el</span><span class="p">.</span><span class="nx">stop</span><span class="p">().</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">opacity</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">).</span><span class="nx">show</span><span class="p">().</span><span class="nx">animate</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">opacity</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">150</span><span class="p">,</span><span class="w"> </span><span class="s1">'linear'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="w"> </span><span class="p">).</span><span class="nx">stop</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">build_card</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="nx">key</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span><span class="w"> </span><span class="nx">size</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="c1">// console.log( 'Build profile card for: ' + hash );</span><span class="w"> </span><span class="c1">// console.log( profile );</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'urls'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">photos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'photos'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">services</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'accounts'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">100</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">3</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">90</span><span class="p">;</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">20</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">services</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mf">30</span><span class="p">;</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'aboutMe'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="w"> </span><span class="sr">/&amp;lt;[^&amp;gt;]+&amp;gt;/ig</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">toString</span><span class="p">().</span><span class="nx">substr</span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">limit</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">'&lt;span class=&quot;removed_link&quot; title=&quot;\'&quot;&gt;&amp;amp;#8230;&lt;/span&gt;'</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'grav-inner'</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( Gravatar.my_hash, hash );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">my_hash</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">my_hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' grav-is-user'</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">description</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">\</span><span class="o">&lt;</span><span class="err">/pre&gt;</span><span class="w"> </span><span class="nx">Want</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="nx">better</span><span class="w"> </span><span class="nx">profile</span><span class="o">?</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">a</span><span class="w"> </span><span class="kd">class</span><span class="o">=</span><span class="s2">&quot;grav-edit-profile&quot;</span><span class="w"> </span><span class="nx">href</span><span class="o">=</span><span class="s2">&quot;http://gravatar.com/profiles/edit/&quot;</span><span class="w"> </span><span class="nx">target</span><span class="o">=</span><span class="s2">&quot;_blank&quot;</span><span class="o">&gt;</span><span class="nx">Click</span><span class="w"> </span><span class="nx">here</span><span class="o">&lt;</span><span class="err">/a&gt;.</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">pre</span><span class="w"> </span><span class="nx">lang</span><span class="o">=</span><span class="s2">&quot;js&quot;</span><span class="o">&gt;</span><span class="err">\</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">description</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' gcard-about'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'&lt;/pre&gt; &lt;div id=&quot;\profile-'</span><span class="s2">&quot;&gt; \ &lt;div&gt; \ &lt;div&gt; \ &lt;h4&gt;&lt;span class=&quot;</span><span class="nx">removed_link</span><span class="s2">&quot; title=&quot;</span><span class="err">\</span><span class="s1">'&quot;&gt;'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'displayName'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'&lt;/span&gt;&lt;/h4&gt; \\ '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">description</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' \ \ &lt;/div&gt; \ &lt;div&gt; '</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nb">Object</span><span class="p">.</span><span class="nx">size</span><span class="p">(</span><span class="w"> </span><span class="nx">services</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_class</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' gcard-links'</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' &lt;h5&gt;Personal Links&lt;/h5&gt; \ &lt;ul&gt; &lt;ul&gt;'</span><span class="p">;</span><span class="w"> </span><span class="nx">url_count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">u</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">urls</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">urls</span><span class="p">[</span><span class="nx">u</span><span class="p">][</span><span class="s1">'value'</span><span class="p">]</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="nx">urls</span><span class="p">[</span><span class="nx">u</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">url_count</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' &lt;li&gt;&lt;span class=&quot;removed_link&quot; title=&quot;\'&quot;&gt; + '</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">urls</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">url_count</span><span class="w"> </span><span class="p">)</span><span class="w">&nbsp; </span><span class="o">+</span><span class="w"> </span><span class="s1">' more&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/ul&gt; '</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' &lt;ul&gt; &lt;ul&gt; &lt;li&gt;&lt;span class=&quot;removed_link&quot; title=&quot;\'&quot;&gt;'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">urls</span><span class="p">[</span><span class="nx">u</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/ul&gt; '</span><span class="p">;</span><span class="w"> </span><span class="nx">url_count</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">' '</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'Services to include in card:' ); // console.log( services ); if ( Object.size( services ) ) { card_class += ' gcard-services'; } card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="s1">'; services_out = 0; for ( var s in services ) { if ( !services[s]['</span><span class="nx">url</span><span class="s1">'] ) continue; if ( services_out &amp;gt;= 6 ) break; card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="err">/li&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="s1">'; services_out++; } card += '</span><span class="w"> </span><span class="s1">'; card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="s1">'; // right col if ( Object.size( photos ) &amp;gt; 1 ) { card_class += '</span><span class="w"> </span><span class="nx">gcard</span><span class="o">-</span><span class="nx">gallery</span><span class="s1">'; } card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;</span><span class="w"> </span><span class="err">\</span><span class="w"> </span><span class="nx">Previous</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">ul</span><span class="o">&gt;</span><span class="s1">'; for ( var p in photos ) { if ( !photos[p]['</span><span class="nx">value</span><span class="s1">'] ) continue; card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="err">/li&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/ul&gt;</span><span class="w"> </span><span class="s1">'; } card += '</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="err">\</span><span class="w"> </span><span class="nx">Next</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="s1">'; // gallery card += '</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;&lt;</span><span class="err">/div&gt;</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;&lt;</span><span class="nx">a</span><span class="w"> </span><span class="nx">title</span><span class="o">=</span><span class="s2">&quot;\Powered&quot;</span><span class="w"> </span><span class="nx">href</span><span class="o">=</span><span class="s2">&quot;\http://gravatar.com/\&quot; target=&quot;</span><span class="err">\</span><span class="nx">_blank</span><span class="err">\</span><span class="s2">&quot;&gt;&amp;amp;nbsp;&lt;/a&gt;&lt;/div&gt; \ &lt;div style=&quot;</span><span class="err">\</span><span class="nx">clear</span><span class="o">:</span><span class="w"> </span><span class="nx">both</span><span class="err">\</span><span class="p">;;</span><span class="s2">&quot;&gt;&lt;/div&gt; '; card += 'Turn off hovercards '; card += ' &lt;/div&gt; &lt;/div&gt; &lt;pre lang=&quot;</span><span class="nx">js</span><span class="s2">&quot;&gt;'; // .grav-inner, .gcard // console.log( 'Finished building card for ' + dom_id ); jQuery( 'body' ).append( jQuery( card ) ); jQuery( '#profile-' + hash + ' .grav-inner' ).addClass( card_class ); // Custom Background this.has_bg = false; bg = GProfile.get( 'profileBackground' ); if ( Object.size( bg ) ) { this.has_bg = true; var bg_css = { padding: '8px 0' }; if ( bg.color ) bg_css['background-color'] = bg.color; if ( bg.url ) bg_css['background-image'] = 'url(' + bg.url + ')'; if ( bg.position ) bg_css['background-position'] = bg.position; if ( bg.repeat ) bg_css['background-repeat'] = bg.repeat; jQuery( '#profile-' + hash ).css( bg_css ); } // Resize card based on what's visible if ( !jQuery( '#profile-' + hash + ' .gcard-links' ).length &amp;amp;&amp;amp; !jQuery( '#profile-' + hash + ' .gcard-services' ).length ) jQuery( '#profile-' + hash + ' .grav-rightcol' ).css( { 'width': 'auto' } ); if ( !jQuery( '#profile-' + hash + ' .gcard-about' ).length ) jQuery( '#profile-' + hash + ' .grav-leftcol' ).css( { 'width': 'auto' } ); // Trigger callback if defined if ( jQuery.isFunction( Gravatar.profile_cb ) ) { Gravatar.loaded_js( hash, 'profile-' + hash ); } }, \tilt_gravatar\: function() { /* Set the active gravatar */ this.active_grav = jQuery('img#' + this.active_id); if ( jQuery('img#grav-clone-' + this.active_hash).length ) return; /* Clone the image */ this.active_grav_clone = this.active_grav.clone().attr( 'id', 'grav-clone-' + this.active_hash ).addClass('grav-clone'); var top = this.active_grav.offset().top; var left = this.active_grav.offset().left; /* top&nbsp; -= 2; left -= 2; */ /* Style clone */ var fancyCSS = { '-webkit-transform': 'rotate(-4deg) scale(1.3)', '-moz-transform': 'rotate(-4deg) scale(1.3)', '-o-transform': 'rotate(-4deg) scale(1.3)', 'transform': 'rotate(-4deg) scale(1.3)', '-webkit-box-shadow': '0 0 4px #aaa', '-moz-box-shadow': '0 0 4px #aaa', 'box-shadow': '0 0 4px #aaa', 'border-width': '2px 2px ' + ( this.active_grav.height() / 5 ) + 'px 2px', 'border-color': '#fff', 'border-style': 'solid', 'padding': '0px' }; if ( jQuery.browser.msie &amp;amp;&amp;amp; 9 &amp;gt; jQuery.browser.version ) { fancyCSS['filter'] = \progid:DXImageTransform.Microsoft.Matrix(M11='1.29683327', M12='0.0906834159', M21='-0.0906834159', M22='1.29683327', SizingMethod='auto expand') progid:DXImageTransform.Microsoft.Glow(Color='#aaaaaa', strength='2'\; top&nbsp; -= 5; left -= 6; } var appendix = this.active_grav_clone.css( fancyCSS ).wrap( '' ).parent().css( { 'position': 'absolute', 'top': top + 'px', 'left': left + 'px', 'z-index': 15, 'border': 'none', 'text-decoration': 'none' } ); /* Append the clone on top of the original */ jQuery('body').append( appendix ); this.active_grav_clone.removeClass('grav-hashed'); }, \untilt_gravatar\: function() { jQuery('img.grav-clone, a.grav-clone-a').remove(); Gravatar.hide_throbber(); }, \show_throbber\: function() { // console.log( 'throbbing...' ); if ( !Gravatar.throbber ) { Gravatar.throbber = jQuery( '&lt;/pre&gt; &lt;div id=&quot;</span><span class="err">\</span><span class="nx">grav</span><span class="o">-</span><span class="nx">throbber</span><span class="err">\</span><span class="s2">&quot;&gt;&lt;img src=&quot;</span><span class="err">\</span><span class="nx">http</span><span class="o">:</span><span class="c1">//s.gravatar.com/images/throbber.gif\&quot; alt=&quot;\.\&quot; width=&quot;\15\&quot; height=&quot;\15\&quot; /&gt;&lt;/div&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="nx">pre</span><span class="w"> </span><span class="nx">lang</span><span class="o">=</span><span class="s2">&quot;js&quot;</span><span class="o">&gt;</span><span class="s1">' ); } jQuery( '</span><span class="nx">body</span><span class="s1">' ).append( Gravatar.throbber ); var offset = jQuery('</span><span class="err">#</span><span class="s1">' + Gravatar.active_id).offset(); Gravatar.throbber.css( { top: offset.top + 2 + '</span><span class="nx">px</span><span class="s1">', left: offset.left + 1 + '</span><span class="nx">px</span><span class="s1">' } ); }, \hide_throbber\: function() { // Remove the throbber if it exists. if ( !Gravatar.throbber ) { return; } // console.log( '</span><span class="nx">stopped</span><span class="w"> </span><span class="nx">throbbing</span><span class="p">.</span><span class="s1">' ); Gravatar.throbber.remove(); }, /*** * Helper Methods */ \fetch_profile_by_email\: function( email ) { // console.debug( '</span><span class="nx">fetch_profile_by_email</span><span class="s1">' ); return this.fetch_profile_by_hash( this.md5( email ) ); }, \fetch_profile_by_hash\: function( hash, dom_id ) { // This is so that we know which specific Grav is waiting on us this.profile_map[ '</span><span class="nx">g</span><span class="s1">' + hash ] = dom_id; // console.log( this.profile_map ); // If we already have it, no point getting it again, so just return it and notify any listeners if ( this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ] &amp;amp;&amp;amp; '</span><span class="nx">object</span><span class="s1">' == typeof( this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ] ) ) return this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ]; // console.log( '</span><span class="nx">fetch_profile_by_hash</span><span class="o">:</span><span class="w"> </span><span class="s1">' + hash, dom_id ); this.profile_stack[ '</span><span class="nx">g</span><span class="s1">' + hash ] = '</span><span class="nx">fetching</span><span class="s1">'; // Not using $.getJSON because it won'</span><span class="nx">t</span><span class="w"> </span><span class="nx">call</span><span class="w"> </span><span class="nx">an</span><span class="w"> </span><span class="nx">error</span><span class="w"> </span><span class="nx">handler</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">remote</span><span class="w"> </span><span class="nx">URLs</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">load_js</span><span class="p">(</span><span class="w"> </span><span class="s1">'http://en.gravatar.com/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'.json?callback=Gravatar.fetch_profile_callback'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">fetch_profile_error</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">fetch_profile_callback</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">profile</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="s1">'object'</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'Received profile via callback:' );</span><span class="w"> </span><span class="c1">// console.log( profile );</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">profile</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">profile</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify</span><span class="p">(</span><span class="w"> </span><span class="nx">profile</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">fetch_profile_error</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">profile_map</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav</span><span class="p">.</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a[href=http://gravatar.com/'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">']'</span><span class="w"> </span><span class="p">).</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav</span><span class="p">.</span><span class="nx">unwrap</span><span class="p">();</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// console.debug( dom_id, Gravatar.active_id );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">active_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">hide_card</span><span class="p">();</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">listen</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">key</span><span class="p">,</span><span class="w"> </span><span class="nx">callback</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{};</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"> </span><span class="c1">// Force valid first char</span><span class="w"> </span><span class="c1">// console.log( 'listening for: ' + key );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span><span class="w"> </span><span class="c1">// Make sure it's not already queued</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">callback</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( 'already' );</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">callback</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'added listener: ' + key + ' =&amp;gt; ' + callback );</span><span class="w"> </span><span class="c1">// console.log( this.notify_stack );</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">notify</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( 'trigger notification: ' + key );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{};</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"> </span><span class="c1">// Force valid first char</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span><span class="w"> </span><span class="c1">// Reverse it so that notifications are sent in the order they were queued</span><span class="w"> </span><span class="c1">// console.log( 'notifying key: ' + key + ' (with ' + this.notify_stack[ key ].length + ' listeners)' );</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">a</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( 'send notification to: ' + this.notify_stack[ key ][ a ] );</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">[</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">](</span><span class="w"> </span><span class="nx">key</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">notify_stack</span><span class="p">[</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">extract_hash</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Get hash from img src</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sr">/gravatar.com\/avatar\/([0-9a-f]{32})/</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="err">\</span><span class="nx">object</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">hash</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">hash</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sr">/gravatar_id\=([0-9a-f]{32})/</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="err">\</span><span class="nx">object</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">hash</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">hash</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">hash</span><span class="p">;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">load_js</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">src</span><span class="p">,</span><span class="w"> </span><span class="nx">error_handler</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="p">[</span><span class="w"> </span><span class="nx">src</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">loaded_scripts</span><span class="p">[</span><span class="w"> </span><span class="nx">src</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">new_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="w"> </span><span class="s1">'script'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">new_script</span><span class="p">.</span><span class="nx">src</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">src</span><span class="p">;</span><span class="w"> </span><span class="nx">new_script</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'text/javascript'</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">isFunction</span><span class="p">(</span><span class="w"> </span><span class="nx">error_handler</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">new_script</span><span class="p">.</span><span class="nx">onerror</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">error_handler</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// console.log( src );</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="w"> </span><span class="s1">'head'</span><span class="w"> </span><span class="p">)[</span><span class="mf">0</span><span class="p">].</span><span class="nx">appendChild</span><span class="p">(</span><span class="w"> </span><span class="nx">new_script</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">loaded_js</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">profile_cb</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="nx">dom_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">add_card_css</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#gravatar-card-css'</span><span class="w"> </span><span class="p">).</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">urlS</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'script[src*=gravatar.com/js/gprofiles.js]'</span><span class="w"> </span><span class="p">),</span><span class="w"> </span><span class="nx">url</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">urlS</span><span class="p">.</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">urlS</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="w"> </span><span class="sr">/\/js\/gprofiles\.js.*$/</span><span class="p">,</span><span class="w"> </span><span class="s1">''</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'http://s.gravatar.com'</span><span class="p">;</span><span class="w"> </span><span class="nx">new_css</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">\\</span><span class="p">;</span><span class="w"> </span><span class="nx">new_css</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="err">\\</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'head'</span><span class="w"> </span><span class="p">).</span><span class="nx">append</span><span class="p">(</span><span class="w"> </span><span class="nx">new_css</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( 'Added CSS for profile cards to DOM' );</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">md5</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">hex_md5</span><span class="p">(</span><span class="w"> </span><span class="nx">str</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">autofill</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">email</span><span class="p">,</span><span class="w"> </span><span class="nx">map</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log('autofill');</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">email</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">email</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="w"> </span><span class="s1">'&#64;'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">map</span><span class="p">;</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">md5</span><span class="p">(</span><span class="w"> </span><span class="nx">email</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( this.profile_stack[ 'g' + hash ] );</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">\</span><span class="kc">undefined</span><span class="err">\</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="p">,</span><span class="w"> </span><span class="s1">'autofill_data'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">fetch_profile_by_hash</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( 'stack: ' + this.profile_stack[ 'g' + hash ] );</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_data</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">autofill_data</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( this.autofill_map );</span><span class="w"> </span><span class="c1">// console.log( this.profile_stack[ 'g' + hash ] );</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">init</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">profile_stack</span><span class="p">[</span><span class="w"> </span><span class="s1">'g'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">hash</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// console.log( m );</span><span class="w"> </span><span class="c1">// console.log( this.autofill_map[ m ] );</span><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'url'</span><span class="o">:</span><span class="w"> </span><span class="nx">link</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'urls'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log( link );</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">link</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="w"> </span><span class="s1">'value'</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'urls'</span><span class="o">:</span><span class="w"> </span><span class="nx">links</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="s1">'urls'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">links_str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span><span class="w"> </span><span class="c1">// console.log( links );</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">l</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">l</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="nx">links</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">l</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">links_str</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">links</span><span class="p">[</span><span class="w"> </span><span class="nx">l</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="s1">'value'</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">\\</span><span class="nx">n</span><span class="err">\</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">links_str</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="k">default</span><span class="o">:</span><span class="w"> </span><span class="nx">parts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">m</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="w"> </span><span class="sr">/\./</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'ims'</span><span class="o">:</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'phoneNumbers'</span><span class="o">:</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">val</span><span class="p">.</span><span class="nx">value</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'emails'</span><span class="o">:</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">val</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">value</span><span class="p">;</span><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="s1">'accounts'</span><span class="o">:</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">val</span><span class="p">.</span><span class="nx">url</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">val</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">autofill_map</span><span class="p">[</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">).</span><span class="nx">val</span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="w"> </span><span class="nx">m</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="err">\</span><span class="nx">whee</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">whee</span><span class="p">.</span><span class="nx">didWhee</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">whee</span><span class="p">.</span><span class="nx">didWhee</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">styleSheets</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">addRule</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">styleSheets</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">addRule</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-tag a'</span><span class="p">,</span><span class="w"> </span><span class="s1">'background-position: 22px 100% !important'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-tag a'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="s1">'background-position'</span><span class="p">,</span><span class="w"> </span><span class="s1">'22px 100%'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'img[src*=gravatar.com/]'</span><span class="w"> </span><span class="p">).</span><span class="nx">addClass</span><span class="p">(</span><span class="w"> </span><span class="s1">'grav-whee'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'-webkit-box-shadow'</span><span class="o">:</span><span class="w"> </span><span class="s1">'1px 1px 3px #aaa'</span><span class="p">,</span><span class="w"> </span><span class="s1">'-moz-box-shadow'</span><span class="o">:</span><span class="w"> </span><span class="s1">'1px 1px 3px #aaa'</span><span class="p">,</span><span class="w"> </span><span class="s1">'box-shadow'</span><span class="o">:</span><span class="w"> </span><span class="s1">'1px 1px 3px #aaa'</span><span class="p">,</span><span class="w"> </span><span class="s1">'border'</span><span class="o">:</span><span class="w"> </span><span class="s1">'2px white solid'</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">setInterval</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-whee'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s1">'-webkit-transform'</span><span class="o">:</span><span class="w"> </span><span class="s1">'rotate(-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'deg) scale(1.3)'</span><span class="p">,</span><span class="w"> </span><span class="s1">'-moz-transform'</span><span class="o">:</span><span class="w"> </span><span class="s1">'rotate(-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'deg) scale(1.3)'</span><span class="p">,</span><span class="w"> </span><span class="s1">'transform'</span><span class="o">:</span><span class="w"> </span><span class="s1">'rotate(-'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'deg) scale(1.3)'</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">360</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">6</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">Gravatar</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="cm">/** * Provides an interface for acceseing profile data returned from Gravatar.com. * Use GProfile.init() to set up data, based on the JSON returned from Gravatar, * then GProfile.get() to access data more easily. */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">GProfile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="err">\</span><span class="nx">data</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="err">\</span><span class="nx">init</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'fetching'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'undefined'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="ow">typeof</span><span class="p">(</span><span class="w"> </span><span class="nx">data</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">data</span><span class="p">.</span><span class="nx">entry</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="cm">/** * Returns a value from the profile data. * &#64;param string attr The name of the attribute you want * &#64;param int num (Optional) 0-based array index of the value from this attribute. Use 0 if you're not sure * &#64;return Mixed value of the attribute, or empty string. */</span><span class="w"> </span><span class="err">\</span><span class="nx">get</span><span class="err">\</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Handle x.y references</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">attr</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="w"> </span><span class="s1">'.'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">parts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">attr</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="w"> </span><span class="sr">/\./</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// console.log(parts);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">].</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="nx">s</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">type</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">type</span><span class="w"> </span><span class="c1">// phoneNumbers | ims</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">shortname</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">shortname</span><span class="w"> </span><span class="c1">// accounts</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">].</span><span class="nx">primary</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'primary'</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// emails</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">parts</span><span class="p">[</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">][</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// Handle \top-level\ elements</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">];</span><span class="w"> </span><span class="c1">// And some \aliases\</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s1">'url'</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">attr</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">urls</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">GProfile</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">urls</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">value</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s1">''</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">};</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_resize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">card_id</span><span class="o">:</span><span class="w"> </span><span class="s1">''</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_height</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_top</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">orig_left</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">current_image</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nx">init</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card_id</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card_id</span><span class="p">;</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">bind_enlarge</span><span class="p">();</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">enlarge</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">el</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* Remove any enlarged images */</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-large'</span><span class="p">).</span><span class="nx">stop</span><span class="p">().</span><span class="nx">remove</span><span class="p">().</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Preload the larger version of the image */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-tag a'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="s1">'background-position'</span><span class="p">,</span><span class="w"> </span><span class="s1">'22px 100%'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">fullsize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'&lt;img alt=&quot;&quot; /&gt;'</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="w"> </span><span class="s1">'src'</span><span class="p">,</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'&amp;amp;size=400'</span><span class="w"> </span><span class="p">).</span><span class="nx">load</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-tag a'</span><span class="w"> </span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="w"> </span><span class="s1">'background-position'</span><span class="p">,</span><span class="w"> </span><span class="s1">'22px 0'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Clone the image */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">the_clone</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">clone</span><span class="p">();</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">css</span><span class="p">({</span><span class="w"> </span><span class="s1">'position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'absolute'</span><span class="p">,</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_top</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">,</span><span class="w"> </span><span class="s1">'background-color'</span><span class="o">:</span><span class="w"> </span><span class="s1">'#333'</span><span class="p">,</span><span class="w"> </span><span class="s1">'width'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_width</span><span class="p">,</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_height</span><span class="p">,</span><span class="w"> </span><span class="s1">'border-color'</span><span class="o">:</span><span class="w"> </span><span class="s1">'#555'</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">appendTo</span><span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">parent</span><span class="p">());</span><span class="w"> </span><span class="cm">/* Get the image ratio */</span><span class="w"> </span><span class="kd">var</span><span class="w">&nbsp;&nbsp; &nbsp;</span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w">&nbsp;&nbsp; &nbsp;</span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">border_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6</span><span class="p">;</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="w"> </span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-inner'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerWidth</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// if height it too big resize it width wise.</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerWidth</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">width</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerHeight</span><span class="p">();</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">ratio</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">.</span><span class="nx">outerWidth</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">stop</span><span class="p">().</span><span class="nx">animate</span><span class="p">({</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'width'</span><span class="o">:</span><span class="w"> </span><span class="nx">width</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">border_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="nx">height</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">border_width</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'z-index'</span><span class="o">:</span><span class="w"> </span><span class="mf">99</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-left'</span><span class="o">:</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-right'</span><span class="o">:</span><span class="w"> </span><span class="nx">horiz_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-top'</span><span class="o">:</span><span class="w"> </span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-bottom'</span><span class="o">:</span><span class="w"> </span><span class="nx">vert_padding</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">250</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* Make the clone the fullsize image that was preloaded */</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">addClass</span><span class="p">(</span><span class="s1">'grav-large'</span><span class="p">);</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'src'</span><span class="p">,</span><span class="w"> </span><span class="nx">fullsize</span><span class="p">.</span><span class="nx">attr</span><span class="p">(</span><span class="s1">'src'</span><span class="p">)</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Add the close button */</span><span class="w"> </span><span class="nx">the_clone</span><span class="p">.</span><span class="nx">parent</span><span class="p">().</span><span class="nx">append</span><span class="p">(</span><span class="s1">'&lt;/pre&gt; &lt;div&gt;X&lt;/div&gt; &lt;pre lang=&quot;js&quot;&gt;'</span><span class="p">);</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'.grav-large-close'</span><span class="p">).</span><span class="nx">hide</span><span class="p">().</span><span class="nx">fadeIn</span><span class="p">(</span><span class="mf">100</span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="o">+</span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="o">+</span><span class="s1">' .grav-gallery img'</span><span class="p">).</span><span class="nx">unbind</span><span class="p">(</span><span class="s1">'click'</span><span class="p">);</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'.grav-large-close'</span><span class="w"> </span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'click'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="w"> </span><span class="nx">the_clone</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="nx">the_clone</span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="w"> </span><span class="nx">the_clone</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">reduce</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">el</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'.grav-large-close'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span><span class="w"> </span><span class="nx">el</span><span class="p">.</span><span class="nx">stop</span><span class="p">().</span><span class="nx">animate</span><span class="p">({</span><span class="w"> </span><span class="s1">'top'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_top</span><span class="p">,</span><span class="w"> </span><span class="s1">'left'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">,</span><span class="w"> </span><span class="s1">'width'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_width</span><span class="p">,</span><span class="w"> </span><span class="s1">'height'</span><span class="o">:</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_height</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-left'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-right'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-top'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="s1">'padding-bottom'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">250</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'img.grav-large'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">bind_enlarge</span><span class="p">(</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">bind_enlarge</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">card_id</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery img'</span><span class="p">).</span><span class="nx">parent</span><span class="p">(</span><span class="w"> </span><span class="s1">'a'</span><span class="w"> </span><span class="p">).</span><span class="nx">click</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">browser</span><span class="p">.</span><span class="nx">msie</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">.</span><span class="nx">browser</span><span class="p">.</span><span class="nx">version</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="mf">9.0</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">current_image</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">img</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">find</span><span class="p">(</span><span class="w"> </span><span class="s1">'img'</span><span class="w"> </span><span class="p">).</span><span class="nx">not</span><span class="p">(</span><span class="w"> </span><span class="s1">'.grav-large'</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">position</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">img</span><span class="p">.</span><span class="nx">position</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">img</span><span class="p">.</span><span class="nx">width</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">img</span><span class="p">.</span><span class="nx">height</span><span class="p">();</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_top</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">position</span><span class="p">.</span><span class="nx">top</span><span class="p">;</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">position</span><span class="p">.</span><span class="nx">left</span><span class="p">;</span><span class="w"> </span><span class="nx">grav_resize</span><span class="p">.</span><span class="nx">enlarge</span><span class="p">(</span><span class="w"> </span><span class="nx">img</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">orig_left</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">pos</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">init</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">bind_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="cm">/* Also recheck the arrows are correct once the user hovers over the gallery section, in case the images took a while to load */</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery'</span><span class="p">).</span><span class="nx">mouseover</span><span class="p">(</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">bind_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">bind_arrows</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="nx">reset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">gallery_el</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul'</span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="o">!</span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">css</span><span class="p">(</span><span class="s1">'margin-left'</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'px'</span><span class="p">,</span><span class="s1">''</span><span class="p">);</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">pos</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="w"> </span><span class="s1">'li:last'</span><span class="p">).</span><span class="nx">position</span><span class="p">();</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-next'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'click'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">pos</span><span class="p">.</span><span class="nx">left</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="w"> </span><span class="mf">275</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">animate</span><span class="p">({</span><span class="s1">'margin-left'</span><span class="o">:</span><span class="w"> </span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">314</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">},</span><span class="w"> </span><span class="mf">300</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">highlight_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-prev'</span><span class="p">).</span><span class="nx">live</span><span class="p">(</span><span class="w"> </span><span class="s1">'click'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">gallery_el</span><span class="p">.</span><span class="nx">animate</span><span class="p">({</span><span class="s1">'margin-left'</span><span class="o">:</span><span class="w"> </span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">314</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">'px'</span><span class="p">},</span><span class="w"> </span><span class="mf">300</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">highlight_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"> </span><span class="p">});</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">reset</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'margin-left'</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">});</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">highlight_arrows</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="nx">highlight_arrows</span><span class="o">:</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul'</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="s1">'margin-left'</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'px'</span><span class="p">,</span><span class="s1">''</span><span class="p">);</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">last</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' .grav-gallery ul li:last'</span><span class="p">);</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">last</span><span class="p">.</span><span class="nx">position</span><span class="p">().</span><span class="nx">left</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="w"> </span><span class="mf">275</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-next'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'-39px 0'</span><span class="p">});</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-next'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'-26px 0'</span><span class="p">});</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nx">grav_gallery</span><span class="p">.</span><span class="nx">orig_left</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-prev'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'0 0'</span><span class="p">});</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">jQuery</span><span class="p">(</span><span class="s1">'#'</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">card</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">' a.grav-gallery-prev'</span><span class="p">).</span><span class="nx">css</span><span class="p">({</span><span class="s1">'background-position'</span><span class="o">:</span><span class="w"> </span><span class="s1">'-13px 0'</span><span class="p">});</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="cm">/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * Distributed under the BSD License * See http://pajhome.org.uk/crypt/md5 for more info. */</span><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">hexcase</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">b64pad</span><span class="o">=</span><span class="err">\\</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">chrsz</span><span class="o">=</span><span class="mf">8</span><span class="p">;</span><span class="kd">function</span><span class="w"> </span><span class="nx">hex_md5</span><span class="p">(</span><span class="nx">s</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2hex</span><span class="p">(</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">b64_md5</span><span class="p">(</span><span class="nx">s</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2b64</span><span class="p">(</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">str_md5</span><span class="p">(</span><span class="nx">s</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2str</span><span class="p">(</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">s</span><span class="p">),</span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">hex_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2hex</span><span class="p">(</span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">b64_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2b64</span><span class="p">(</span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">str_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">binl2str</span><span class="p">(</span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_vm_test</span><span class="p">(){</span><span class="k">return</span><span class="w"> </span><span class="nx">hex_md5</span><span class="p">(</span><span class="err">\</span><span class="nx">abc</span><span class="err">\</span><span class="p">)</span><span class="o">==</span><span class="err">\</span><span class="mf">900150983</span><span class="nx">cd24fb0d6963f7d28e17f72</span><span class="err">\</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="nx">e</span><span class="p">){</span><span class="nx">x</span><span class="p">[</span><span class="nx">e</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">5</span><span class="p">]</span><span class="o">|=</span><span class="mh">0x80</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;((</span><span class="nx">e</span><span class="p">)</span><span class="o">%</span><span class="mf">32</span><span class="p">);</span><span class="nx">x</span><span class="p">[(((</span><span class="nx">e</span><span class="o">+</span><span class="mf">64</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">9</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="mf">4</span><span class="p">)</span><span class="o">+</span><span class="mf">14</span><span class="p">]</span><span class="o">=</span><span class="nx">e</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="o">=</span><span class="mf">1732584193</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=-</span><span class="mf">271733879</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=-</span><span class="mf">1732584194</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">d</span><span class="o">=</span><span class="mf">271733878</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">x</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="nx">i</span><span class="o">+=</span><span class="mf">16</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">f</span><span class="o">=</span><span class="nx">a</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">g</span><span class="o">=</span><span class="nx">b</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">h</span><span class="o">=</span><span class="nx">c</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">j</span><span class="o">=</span><span class="nx">d</span><span class="p">;</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="o">-</span><span class="mf">680876936</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="o">-</span><span class="mf">389564586</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="mf">606105819</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="o">-</span><span class="mf">1044525330</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="o">-</span><span class="mf">176418897</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="mf">1200080426</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="o">-</span><span class="mf">1473231341</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="o">-</span><span class="mf">45705983</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="mf">1770035416</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="o">-</span><span class="mf">1958414417</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="o">-</span><span class="mf">42063</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="o">-</span><span class="mf">1990404162</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">7</span><span class="p">,</span><span class="mf">1804603682</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">12</span><span class="p">,</span><span class="o">-</span><span class="mf">40341101</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">17</span><span class="p">,</span><span class="o">-</span><span class="mf">1502002290</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">22</span><span class="p">,</span><span class="mf">1236535329</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="o">-</span><span class="mf">165796510</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="o">-</span><span class="mf">1069501632</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="mf">643717713</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="o">-</span><span class="mf">373897302</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="o">-</span><span class="mf">701558691</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="mf">38016083</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="o">-</span><span class="mf">660478335</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="o">-</span><span class="mf">405537848</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="mf">568446438</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="o">-</span><span class="mf">1019803690</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="o">-</span><span class="mf">187363961</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="mf">1163531501</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">5</span><span class="p">,</span><span class="o">-</span><span class="mf">1444681467</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">9</span><span class="p">,</span><span class="o">-</span><span class="mf">51403784</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">14</span><span class="p">,</span><span class="mf">1735328473</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">20</span><span class="p">,</span><span class="o">-</span><span class="mf">1926607734</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="o">-</span><span class="mf">378558</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="o">-</span><span class="mf">2022574463</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="mf">1839030562</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="o">-</span><span class="mf">35309556</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="o">-</span><span class="mf">1530992060</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="mf">1272893353</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="o">-</span><span class="mf">155497632</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="o">-</span><span class="mf">1094730640</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="mf">681279174</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="o">-</span><span class="mf">358537222</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="o">-</span><span class="mf">722521979</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="mf">76029189</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">4</span><span class="p">,</span><span class="o">-</span><span class="mf">640364487</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">11</span><span class="p">,</span><span class="o">-</span><span class="mf">421815835</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">16</span><span class="p">,</span><span class="mf">530742520</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">23</span><span class="p">,</span><span class="o">-</span><span class="mf">995338651</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">0</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="o">-</span><span class="mf">198630844</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">7</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="mf">1126891415</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">14</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="o">-</span><span class="mf">1416354905</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">5</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="o">-</span><span class="mf">57434055</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">12</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="mf">1700485571</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">3</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="o">-</span><span class="mf">1894986606</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">10</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="o">-</span><span class="mf">1051523</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">1</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="o">-</span><span class="mf">2054922799</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">8</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="mf">1873313359</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">15</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="o">-</span><span class="mf">30611744</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">6</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="o">-</span><span class="mf">1560198380</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">13</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="mf">1309151649</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">4</span><span class="p">],</span><span class="mf">6</span><span class="p">,</span><span class="o">-</span><span class="mf">145523070</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">11</span><span class="p">],</span><span class="mf">10</span><span class="p">,</span><span class="o">-</span><span class="mf">1120210379</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">2</span><span class="p">],</span><span class="mf">15</span><span class="p">,</span><span class="mf">718787259</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mf">9</span><span class="p">],</span><span class="mf">21</span><span class="p">,</span><span class="o">-</span><span class="mf">343485551</span><span class="p">);</span><span class="nx">a</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">f</span><span class="p">);</span><span class="nx">b</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="nx">g</span><span class="p">);</span><span class="nx">c</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">h</span><span class="p">);</span><span class="nx">d</span><span class="o">=</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">d</span><span class="p">,</span><span class="nx">j</span><span class="p">)}</span><span class="k">return</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">(</span><span class="nx">q</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">bit_rol</span><span class="p">(</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">q</span><span class="p">),</span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="nx">t</span><span class="p">)),</span><span class="nx">s</span><span class="p">),</span><span class="nx">b</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_ff</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">((</span><span class="nx">b</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">c</span><span class="p">)</span><span class="o">|</span><span class="p">((</span><span class="o">~</span><span class="nx">b</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">d</span><span class="p">),</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_gg</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">((</span><span class="nx">b</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">d</span><span class="p">)</span><span class="o">|</span><span class="p">(</span><span class="nx">c</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;(</span><span class="o">~</span><span class="nx">d</span><span class="p">)),</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_hh</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">(</span><span class="nx">b</span><span class="o">^</span><span class="nx">c</span><span class="o">^</span><span class="nx">d</span><span class="p">,</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">md5_ii</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">c</span><span class="p">,</span><span class="nx">d</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">){</span><span class="k">return</span><span class="w"> </span><span class="nx">md5_cmn</span><span class="p">(</span><span class="nx">c</span><span class="o">^</span><span class="p">(</span><span class="nx">b</span><span class="o">|</span><span class="p">(</span><span class="o">~</span><span class="nx">d</span><span class="p">)),</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">,</span><span class="nx">x</span><span class="p">,</span><span class="nx">s</span><span class="p">,</span><span class="nx">t</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">core_hmac_md5</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">a</span><span class="p">);</span><span class="k">if</span><span class="p">(</span><span class="nx">c</span><span class="p">.</span><span class="nx">length</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="nx">c</span><span class="o">=</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">c</span><span class="p">,</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">);</span><span class="kd">var</span><span class="w"> </span><span class="nx">d</span><span class="o">=</span><span class="nb">Array</span><span class="p">(</span><span class="mf">16</span><span class="p">),</span><span class="nx">opad</span><span class="o">=</span><span class="nb">Array</span><span class="p">(</span><span class="mf">16</span><span class="p">);</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="mf">16</span><span class="p">;</span><span class="nx">i</span><span class="o">++</span><span class="p">){</span><span class="nx">d</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">=</span><span class="nx">c</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">^</span><span class="mh">0x36363636</span><span class="p">;</span><span class="nx">opad</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">=</span><span class="nx">c</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="o">^</span><span class="mh">0x5C5C5C5C</span><span class="p">}</span><span class="kd">var</span><span class="w"> </span><span class="nx">e</span><span class="o">=</span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">d</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">b</span><span class="p">)),</span><span class="mf">512</span><span class="o">+</span><span class="nx">b</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">);</span><span class="k">return</span><span class="w"> </span><span class="nx">core_md5</span><span class="p">(</span><span class="nx">opad</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">e</span><span class="p">),</span><span class="mf">512</span><span class="o">+</span><span class="mf">128</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">safe_add</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="nx">y</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">a</span><span class="o">=</span><span class="p">(</span><span class="nx">x</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xFFFF</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nx">y</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xFFFF</span><span class="p">);</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="p">(</span><span class="nx">x</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nx">y</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">16</span><span class="p">);</span><span class="k">return</span><span class="p">(</span><span class="nx">b</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="mf">16</span><span class="p">)</span><span class="o">|</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xFFFF</span><span class="p">)}</span><span class="kd">function</span><span class="w"> </span><span class="nx">bit_rol</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="nx">b</span><span class="p">){</span><span class="k">return</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">b</span><span class="p">)</span><span class="o">|</span><span class="p">(</span><span class="nx">a</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;(</span><span class="mf">32</span><span class="o">-</span><span class="nx">b</span><span class="p">))}</span><span class="kd">function</span><span class="w"> </span><span class="nx">str2binl</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="nb">Array</span><span class="p">();</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="p">(</span><span class="mf">1</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">chrsz</span><span class="p">)</span><span class="o">-</span><span class="mf">1</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="nx">chrsz</span><span class="p">;</span><span class="nx">i</span><span class="o">+=</span><span class="nx">chrsz</span><span class="p">)</span><span class="nx">b</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">5</span><span class="p">]</span><span class="o">|=</span><span class="p">(</span><span class="nx">a</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="o">/</span><span class="nx">chrsz</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">c</span><span class="p">)</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;(</span><span class="nx">i</span><span class="o">%</span><span class="mf">32</span><span class="p">);</span><span class="k">return</span><span class="w"> </span><span class="nx">b</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">binl2str</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="err">\\</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="p">(</span><span class="mf">1</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">chrsz</span><span class="p">)</span><span class="o">-</span><span class="mf">1</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="mf">32</span><span class="p">;</span><span class="nx">i</span><span class="o">+=</span><span class="nx">chrsz</span><span class="p">)</span><span class="nx">b</span><span class="o">+=</span><span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">((</span><span class="nx">a</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">5</span><span class="p">]</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;(</span><span class="nx">i</span><span class="o">%</span><span class="mf">32</span><span class="p">))</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="nx">c</span><span class="p">);</span><span class="k">return</span><span class="w"> </span><span class="nx">b</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">binl2hex</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="nx">hexcase</span><span class="o">?</span><span class="err">\</span><span class="mo">01234567</span><span class="mf">89</span><span class="nx">ABCDEF</span><span class="err">\</span><span class="o">:</span><span class="err">\</span><span class="mo">01234567</span><span class="mf">89</span><span class="nx">abcdef</span><span class="err">\</span><span class="p">;</span><span class="kd">var</span><span class="w"> </span><span class="nx">c</span><span class="o">=</span><span class="err">\\</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">lt</span><span class="p">;</span><span class="nx">a</span><span class="p">.</span><span class="nx">length</span><span class="o">*</span><span class="mf">4</span><span class="p">;</span><span class="nx">i</span><span class="o">++</span><span class="p">){</span><span class="nx">c</span><span class="o">+=</span><span class="nx">b</span><span class="p">.</span><span class="nx">charAt</span><span class="p">((</span><span class="nx">a</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">2</span><span class="p">]</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;((</span><span class="nx">i</span><span class="o">%</span><span class="mf">4</span><span class="p">)</span><span class="o">*</span><span class="mf">8</span><span class="o">+</span><span class="mf">4</span><span class="p">))</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xF</span><span class="p">)</span><span class="o">+</span><span class="nx">b</span><span class="p">.</span><span class="nx">charAt</span><span class="p">((</span><span class="nx">a</span><span class="p">[</span><span class="nx">i</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="mf">2</span><span class="p">]</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;</span><span class="o">&amp;</span><span class="nx">gt</span><span class="p">;((</span><span class="nx">i</span><span class="o">%</span><span class="mf">4</span><span class="p">)</span><span class="o">*</span><span class="mf">8</span><span class="p">))</span><span class="o">&amp;</span><span class="nx">amp</span><span class="p">;</span><span class="mh">0xF</span><span class="p">)}</span><span class="k">return</span><span class="w"> </span><span class="nx">c</span><span class="p">}</span><span class="kd">function</span><span class="w"> </span><span class="nx">binl2b64</span><span class="p">(</span><span class="nx">a</span><span class="p">){</span><span class="kd">var</span><span class="w"> </span><span class="nx">b</span><span class="o">=</span><span class="err">\</span><span class="nx">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</span><span class="o">+</span><span class="err">/\;var c=\\;for(var i=0;i&amp;lt;a.length*4;i+=3){var d=(((a[i&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;8*(i%4))&amp;amp;0xFF)&amp;lt;&amp;lt;16)|(((a[i+1&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;8*((i+1)%4))&amp;amp;0xFF)&amp;lt;&amp;lt;8)|((a[i+2&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;8*((i+2)%4))&amp;amp;0xFF);for(var j=0;j&amp;lt;4;j++){if(i*8+j*6&amp;gt;a.length*32)c+=b64pad;else c+=b.charAt((d&amp;gt;&amp;gt;6*(3-j))&amp;amp;0x3F)}}return c};</span> </pre> <div class="line-block"> <div class="line">Minimiert man das ganze noch mit einem JSMinifier wie <a class="reference external" href="http://fmarcia.info/jsmin/test.html">diesem</a>, schrumpft das ganz noch einmal deutlich ein.</div> <div class="line">Die so erhaltene Datei (Hier zum Download: <a class="reference external" href="https://lioman.de/2010/10/gravatar-hovercards-einbinden/Hovercard.js.gz">Hovercard.js.gz</a> )</div> <div class="line">Läd man z.B. in <span class="caps">MEINBLOG</span>/wp-includes/js und trägt folgendes in die <em>funtions.php</em> des Themes ein:</div> </div> <pre class="literal-block"> //Gravatar wp_enqueue_script( 'gprofiles', '/wp-includes/js/Hovercard.js', array( 'jquery' ), 'e', TRUE ); ?&gt; </pre> </div> LiomanTue, 12 Oct 2010 13:26:00 +0200tag:lioman.de,2010-10-12:/2010/10/gravatar-hovercards-einbinden/DigitalBlogGravatarHoverJavascriptKommentarescriptOpenlike in Wordpress einbindenhttps://lioman.de/2010/04/openlike-in-wordpress-einbinden/<p><em>Viele verschiedene Blogs haben über den Like-Button von Facebook</em> <a class="reference external" href="http://netzwertig.com/2010/04/22/like-button-facebooks-version-der-thank-you-economy/">geschrieben</a> <em>. Per Social-Plugin kann man den bekannten Like-Button einfügen. Ist man bei Facebook eingeloggt kann man auf den eingebundenen Button klicken und die Daten werden an Facebook übertragen. Gibt es Alternativen und wie bindet man sie&nbsp;ein?</em></p> <p>Nutzt man diesen kleinen Knopf häufig kann man daraus natürlich wieder entsprechende Profile erstellen und nutzbar machen (finanziell). Außerdem lässt sich beim einbinden leicht <a class="reference external" href="http://olbertz.de/blog/2010/04/22/i-like-it-boese/">Missbrauch</a> treiben. Alternativen gibt es schon. Openlike ist eine Solche. Das Ziel der&nbsp;Entwickler:</p> <blockquote> An <strong>open protocol</strong> to allow sharing the things people like in a <strong>simple</strong> and <strong>standard</strong> method between web applications.</blockquote> <p>Das einbinden ist relativ&nbsp;einfach.</p> <p>In den Header&nbsp;kommt:</p> <div class="highlight"><pre><span></span><span class="p">&lt;</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">\text/javascript\</span> <span class="na">src</span><span class="o">=</span><span class="s">\http://openlike.org/v1/openlike.js\</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span> </pre></div> <p>Und nun muss man noch das Widget in das Template einfügen. Das ist bei jedem Template unterschiedlich. Nutzt man wie ich das Theme Atahualpa geht es unter: Atahualpa Theme Options &gt;Style <span class="amp">&amp;</span> Edit Center Column&gt;&nbsp; The <span class="caps">LOOP</span></p> <p>direkt nach der&nbsp;Zeile</p> <div class="highlight"><pre><span></span><span class="x">&#39;,&#39;&#39;); ?&gt;</span> </pre></div> <p>fügt man folgenden Code&nbsp;ein.</p> <div class="highlight"><pre><span></span><span class="x">OPENLIKE.Widget({url:</span><span class="cp">&lt;?php</span> <span class="k">echo</span> <span class="s1">&#39;\&#39;.get_permalink().&#39;</span><span class="nx">\</span><span class="s1">&#39;; ?&gt;,title:&lt;?php the_title(&#39;</span><span class="nx">\</span><span class="s1">&#39;, &#39;</span><span class="nx">\</span><span class="err">&#39;</span><span class="p">);</span> <span class="cp">?&gt;</span><span class="x">})</span> </pre></div> <p>Hat man alles richtig gemacht sieht es aus wie bei mir und man kann auf einen der Buttons&nbsp;klicken</p> <p><strong>Update:</strong> Buttons sind nicht mehr verfügbar in diesem&nbsp;Blog.</p> LiomanTue, 27 Apr 2010 13:30:00 +0200tag:lioman.de,2010-04-27:/2010/04/openlike-in-wordpress-einbinden/DigitalOpen SourceButtonFacebooklikeopenlikescriptWidgetScript: Videos in XVID encodierenhttps://lioman.de/2009/11/script-videos-in-xvid-encodieren/<p><strong>*Platzsparende Videocodecs wie*</strong> <a class="reference external" href="http://de.wikipedia.org/wiki/X264">x264</a> <strong>*verpackt in einem <span class="caps">MP4</span>-Container bieten hochqualitative Videos bei kleiner Größe. So ist es nicht verwunderlich, dass Videos mit diesem Format im Netz weit verbreitet sind. Das Problem dabei: Viele Standaloneplayer können es nicht lesen. Man muss also&nbsp;umencodieren.*</strong></p> <p>Da ich immer mal wieder Videos in verschiedensten Formaten aus dem Netz lade, sie aber mit dem <span class="caps">DVD</span>-Recorder anschauen möchte, habe ich ein kleines Script geschrieben, dass alles automatisch&nbsp;erledigt.</p> <p>Der Player kann wie die meisten <span class="caps">XVID</span>/<span class="caps">DIVX</span> - Avicontainer lesen. Es sollen also alle Videos in dieses Format überführt werden. Das Problem: Es gibt viele verschiedene Quellen und Qualitätsstufen. <span class="caps">HDTV</span>-Videos wie <a class="reference external" href="http://www.home-2009.com/"><span class="caps">HOME</span></a>über <a class="reference external" href="http://www.legaltorrents.com/torrents/547-home-2009">Legaltorrents.com</a> (Sehr groß, mp4, aac), Youtube/ Vimeo videos (kleine flv, zT. <span class="caps">HQ</span>-Videos/mp4) , Streammitschnitte (unterschiedlicher Ausführung) und natürlich <span class="caps">TV</span>-Mitschnitte in <span class="caps">DVD</span>-Qualität. Die verschieden Quellen sollen alle jeweils so optimal wie möglich verarbeitet werden und von Hand ist es viel zu viel&nbsp;Arbeit.</p> <p>Ich möchte als Ergebnis eine möglichst hohe Qualität haben, bei vernünftiger Videogröße und natürlich absoluter&nbsp;Kompatibilität.</p> <p>Dazu folgende Erkenntnis: Das Ergebnis wird nie besser als die Quelle werden. Es macht also keinen Sinn aus einem kleinen *.flv-Video ein 1280x720-Video mit ac3-Sound und einer Bitrate von 1000 zu machen. Andererseits kann der Player nicht mit zu Großen Bildern umgehen und ich will ja auch Platz&nbsp;sparen.</p> <p>Was macht das&nbsp;Script:</p> <ol class="arabic simple"> <li>Quelle&nbsp;prüfen</li> <li>Qualität festsetzen nicht besser als Quelle aber höchstens 720 in der Breite bei einer Bitrate von&nbsp;750</li> <li>2-pass-Encodieren und danach&nbsp;aufräumen</li> </ol> <p>Wie nutzt man das&nbsp;Script?</p> <ol class="arabic"> <li><p class="first">runterladen</p> </li> <li><p class="first">entpacken</p> </li> <li><pre class="first literal-block"> chmod +x #(Ausfuehrbar machen) </pre> </li> <li><pre class="first literal-block"> ./Video2xvid video1 video2 video3 </pre> <p></li> <li><p class="first">Das Script Encodiert alle Videos&nbsp;nacheinander</p> </li> </ol> <p>Über Vorschläge zur verbesserung des Scriptes oder Fragen nach Hilfe freue ich&nbsp;mich.</p> <p>Nun das Script, ich hoffe ich habe es ausreichend&nbsp;kommentiert:</p> <p>(Weiter unten nochmal als&nbsp;Download)</p> <pre class="literal-block"> #!/bin/bash #Lösche logdatei um Störungen zu vermeiden rm -v divx2pass.log Gesamtdauer=0 while [ ${1} != '' ] do #Bestimme Breite BREITE=`mplayer -identify \$1\ -ao null -vo null -frames 0 2&gt;/dev/null | grep ^ID_VIDEO_WIDTH | cut -c16-`; echo \Orginalbreite= $BREITE\ if [ $BREITE -le 720 ]; then VBREITE=$BREITE else VBREITE=720 fi # Bestimme Audio-Codec ACODEC=`mplayer -identify \$1\ -ao null -vo null -frames 0 2&gt;/dev/null | grep ^ID_AUDIO_CODEC | cut -c16-`; echo \Audiocodec= $ACODEC\ if [ \$ACODEC\ == \a52\ -o \$ACODEC\ == \faad\ ]; then AOPTS=\lavc -lavcopts acodec=ac3 -af volnorm=1\ else AOPTS=\mp3lame -lameopts abr:br=196 -af lavcresample=44100,volnorm=1\ fi #Bestime Bitrate RATE=`mplayer -identify \$1\ -ao null -vo null -frames 0 2&gt;/dev/null | grep ^ID_VIDEO_BITRATE | cut -c18-`; echo \Orginalbitrate= $RATE\ if [ $RATE == 0 ]; then BRATE=750 else if [ $RATE -le 800000 ]; then BRATE=$((RATE/1000)) else BRATE=750 fi fi # Bestimme Namen NAME=`echo \$1\ | sed 's/\.[^\.]*$//'`; echo $NAME #Bestimme Startzeit START=$(date +\%s\); #Starte Codieren echo \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ echo \Encodiere $1 in $NAME-xvid.avi\ echo echo \Beginne mit erstem Durchgang\ echo echo \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ mencoder -ffourcc XVID -oac $AOPTS -ovc xvid -xvidencopts pass=1:trellis:hq_ac -vf scale=$VBREITE:-3 -o /dev/null $1 echo \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ echo \Nun folgt Durchgang Nummer Zwei\ echo \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ mencoder -ffourcc XVID -oac $AOPTS -af lavcresample=44100,volnorm=1 -ovc xvid -xvidencopts pass=2:bitrate=$BRATE:hq_ac:trellis:chroma_opt:vhq=2:bvhq=1:quant_type=mpeg -vf scale=$VBREITE:-3 -o $NAME-xvid.avi $1 #Berechne Dauer ENDE=$(date +\%s\); DAUER=$(((ENDE-START)/60)); echo \************************************\ echo \**Encodieren in XVID abgeschlossen**\ echo \** **\ echo \** es dauerte ca. $DAUER Minuten **\ echo \************************************\ echo Gesamtdauer=$((Gesamtdauer+DAUER)) # Aufräumen echo -e \Logdatei wird gelöscht\ rm -v divx2pass.log # Auswahl anzeigen echo \Soll Orginaldatei gelöscht werden [y/n]\ echo \Nach 15 Sekunden ohne Eingabe wird ohne Löschen beendet\ read -t 15 -n 1 TASTE if [ \$TASTE\ == \y\ ] ; then echo \Lösche $1\ rm -f $1 shift else shift fi done # Beenden echo \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ echo echo \Encodieren beendet\ echo echo \Gesamtdauer ca. $Gesamtdauer Minuten\ echo \~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ </pre> <p>Und hier die Datei zum Download: <a class="reference external" href="https://lioman.de/2009/11/script-videos-in-xvid-encodieren/Video2xvid.tar.gz">Video2xvid.tar.gz</a></p> LiomanMon, 09 Nov 2009 18:40:00 +0100tag:lioman.de,2009-11-09:/2009/11/script-videos-in-xvid-encodieren/Wissenschaft und TechnikbashencodierenLinuxscriptVideovideocodecsxvid