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

<channel>
	<title>christopherreding.com &#187; javascript</title>
	<atom:link href="http://christopherreding.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://christopherreding.com</link>
	<description>jQuery PHP Coldfusion MySql ASP.NET XSLT and Flash - with some added random thoughts</description>
	<lastBuildDate>Mon, 02 Aug 2010 19:59:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>jailbreakme.com javascript file beautified iphone ios 4</title>
		<link>http://christopherreding.com/jailbreakme-com-javascript-file-beautified-iphone-ios-4/</link>
		<comments>http://christopherreding.com/jailbreakme-com-javascript-file-beautified-iphone-ios-4/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 19:48:45 +0000</pubDate>
		<dc:creator>Christopher Reding</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[code share]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Iphone]]></category>
		<category><![CDATA[jailbreakme.com]]></category>
		<category><![CDATA[jailbreal]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://christopherreding.com/?p=212</guid>
		<description><![CDATA[For those like me who want to know the code before I run the code on my precious phone, here is the javascript from the jailbreakme.com page beautified for your viewing pleasure.It looks like this code is detecting the device and version of that device then redirecting users to a pdf here http://www.jailbreakme.com/_/ which may [...]]]></description>
			<content:encoded><![CDATA[<p>For those like me who want to know the code before I run the code on my precious phone, here is the javascript from the jailbreakme.com page beautified for your viewing pleasure.It looks like this code is detecting the device and version of that device then redirecting users to a pdf here http://www.jailbreakme.com/_/ which may complete the process through a vulnerability.  If any one out there can shed light on what is happening within the pdf I&#8217;d be interested to know.</p>
<p>-let me know if I missed anything</p>
<div id="_mcePaste">
<div id="_mcePaste">var agent = navigator.userAgent;</div>
<div id="_mcePaste">var index = agent.indexOf(&#8220;OS &#8220;);</div>
<div id="_mcePaste">function goto_faq() {</div>
<div id="_mcePaste">if (!String(window.location).match(/faq/)) {</div>
<div id="_mcePaste">window.location = &#8220;faq.html&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">model = null</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (index == -1) {</div>
<div id="_mcePaste">goto_faq()</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">firmware = agent.slice(index + &#8220;OS &#8220;.length);</div>
<div id="_mcePaste">firmware = firmware.slice(0, firmware.indexOf(&#8221; &#8220;));</div>
<div id="_mcePaste">firmware = firmware.replace(/_/g, &#8220;.&#8221;);</div>
<div id="_mcePaste">if (agent.indexOf(&#8220;iPad&#8221;) != -1) {</div>
<div id="_mcePaste">model = &#8220;iPad1,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (agent.indexOf(&#8220;iPod&#8221;) != -1) {</div>
<div id="_mcePaste">var ssi = getSunSpiderInterval();</div>
<div id="_mcePaste">window.location = &#8220;#&#8221; + ssi;</div>
<div id="_mcePaste">if (ssi &gt; 1625) {</div>
<div id="_mcePaste">model = &#8220;iPod1,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (ssi &gt;= (firmware.indexOf(&#8220;4.0&#8243;) != -1 ? 800 : 1000)) {</div>
<div id="_mcePaste">model = &#8220;iPod2,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">model = &#8220;iPod3,1&#8243;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (agent.indexOf(&#8220;iPhone&#8221;) != -1) {</div>
<div id="_mcePaste">if (window.devicePixelRatio == 2) {</div>
<div id="_mcePaste">model = &#8220;iPhone3,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">var ssi = getSunSpiderInterval();</div>
<div id="_mcePaste">window.location = &#8220;#&#8221; + ssi;</div>
<div id="_mcePaste">if (ssi &gt;= (firmware.indexOf(&#8220;4.0&#8243;) != -1 ? 1100 : 1600)) {</div>
<div id="_mcePaste">model = &#8220;iPhone1,x&#8221;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">model = &#8220;iPhone2,1&#8243;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">goto_faq()</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function get_page() {</div>
<div id="_mcePaste">return model == null ? null : (&#8220;/_/&#8221; + model + &#8220;_&#8221; + firmware + &#8220;.pdf&#8221;)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">window.page = get_page();</div>
<div id="_mcePaste">if (window.page.indexOf(&#8220;iPod3,1_3&#8243;) != -1) {</div>
<div id="_mcePaste">alert(&#8220;Warning: This version is known to crash.  You can try it, but you might have better luck if you upgrade to 4.0 first.&#8221;)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var valid = ["3.1.2", "3.1.3", "3.2", "3.2.1", "4.0", "4.0.1"];</div>
<div id="_mcePaste">var vmismatch = 0;</div>
<div id="_mcePaste">if (valid.indexOf(firmware) == -1) {</div>
<div id="_mcePaste">vmismatch = parseInt(firmware.substring(0, 1)) &lt;= 3 ? -1 : 1</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (window.page != null) {</div>
<div id="_mcePaste">_ = new Image(window.page)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function arm_version() {</div>
<div id="_mcePaste">var c = device_type();</div>
<div id="_mcePaste">var b = device_firmware();</div>
<div id="_mcePaste">var a = _sunSpiderInterval;</div>
<div id="_mcePaste">var d = 7;</div>
<div id="_mcePaste">if (c == &#8220;ipod&#8221;) {</div>
<div id="_mcePaste">if (b.indexOf(&#8220;4.0&#8243;) != -1) {</div>
<div id="_mcePaste">if (a &gt; 800) {</div>
<div id="_mcePaste">d = 6</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">d = 7</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (a &gt; 1250) {</div>
<div id="_mcePaste">d = 6</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">arm_versions = 7</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (c == &#8220;iphone&#8221;) {</div>
<div id="_mcePaste">if (b.indexOf(&#8220;4.0&#8243;) != -1) {</div>
<div id="_mcePaste">if (a &gt;= 1100) {</div>
<div id="_mcePaste">d = 6</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">d = 7</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (a &gt; 1625) {</div>
<div id="_mcePaste">d = 6</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">d = 7</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (c == &#8220;ipad&#8221;) {</div>
<div id="_mcePaste">d = 7</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return d</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function armv6_faster() {</div>
<div id="_mcePaste">var a = _sunSpiderInterval;</div>
<div id="_mcePaste">if (a &gt; 1625) {</div>
<div id="_mcePaste">return false</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function device_is_iphone() {</div>
<div id="_mcePaste">var a = navigator.userAgent;</div>
<div id="_mcePaste">return a.indexOf(&#8220;iPhone OS&#8221;) != -1 || a.indexOf(&#8220;OS 3_2&#8243;) != -1</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function device_type() {</div>
<div id="_mcePaste">var b = navigator.userAgent;</div>
<div id="_mcePaste">var a = &#8220;unknown&#8221;;</div>
<div id="_mcePaste">if (device_is_iphone()) {</div>
<div id="_mcePaste">if (b.indexOf(&#8220;iPad&#8221;) != -1) {</div>
<div id="_mcePaste">a = &#8220;ipad&#8221;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (b.indexOf(&#8220;iPod&#8221;) != -1) {</div>
<div id="_mcePaste">a = &#8220;ipod&#8221;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (b.indexOf(&#8220;iPhone&#8221;) != -1) {</div>
<div id="_mcePaste">a = &#8220;iphone&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return a</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function device_firmware() {</div>
<div id="_mcePaste">var c = navigator.userAgent;</div>
<div id="_mcePaste">var b = &#8220;unknown&#8221;;</div>
<div id="_mcePaste">if (device_is_iphone()) {</div>
<div id="_mcePaste">var a = c.indexOf(&#8220;OS &#8220;) + &#8220;OS &#8220;.length;</div>
<div id="_mcePaste">b = c.slice(a);</div>
<div id="_mcePaste">b = b.slice(0, b.indexOf(&#8221; &#8220;));</div>
<div id="_mcePaste">b = b.replace(/_/g, &#8220;.&#8221;)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return b</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function device_model() {</div>
<div id="_mcePaste">var a = device_type();</div>
<div id="_mcePaste">if (a == &#8220;ipad&#8221;) {</div>
<div id="_mcePaste">return &#8220;iPad1,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (a == &#8220;iphone&#8221;) {</div>
<div id="_mcePaste">if (window.devicePixelRatio == 2) {</div>
<div id="_mcePaste">return &#8220;iPhone3,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (arm_version() == 7) {</div>
<div id="_mcePaste">return &#8220;iPhone2,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">return &#8220;iPhone1,x&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (a == &#8220;ipod&#8221;) {</div>
<div id="_mcePaste">if (arm_version() == 7) {</div>
<div id="_mcePaste">return &#8220;iPod3,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (armv6_faster()) {</div>
<div id="_mcePaste">return &#8220;iPod2,1&#8243;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">return &#8220;iPod1,1&#8243;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return &#8220;unknown&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var df = device_firmware();</div>
<div id="_mcePaste">var valid = ["3.1.2", "3.1.3", "3.2", "3.2.1", "4.0", "4.0.1"];</div>
<div id="_mcePaste">var vmismatch = 0;</div>
<div id="_mcePaste">if (valid.indexOf(df) == -1) {</div>
<div id="_mcePaste">vmismatch = parseInt(df.substring(0, 1)) &lt;= 3 ? -1 : 1</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">page_for_device = &#8220;/_/&#8221; + device_model() + &#8220;_&#8221; + df + &#8220;.pdf&#8221;;</div>
<div id="_mcePaste">new Image(page_for_device)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var step;</div>
<div id="_mcePaste">var unlock4 = document.getElementById(&#8220;unlock_text&#8221;);</div>
<div id="_mcePaste">var unlock1 = document.getElementById(&#8220;unlock1&#8243;);</div>
<div id="_mcePaste">var ival = null;</div>
<div id="_mcePaste">function get_gradient(k) {</div>
<div id="_mcePaste">var j = -10000;</div>
<div id="_mcePaste">var a = -10000;</div>
<div id="_mcePaste">var d = &#8220;-webkit-gradient(linear, left bottom, right bottom, &#8220;;</div>
<div id="_mcePaste">var l = &#8220;&#8221;;</div>
<div id="_mcePaste">var e = false;</div>
<div id="_mcePaste">for (var c = 0; c &lt; k.length; c += 2) {</div>
<div id="_mcePaste">var f = k[c];</div>
<div id="_mcePaste">var b = k[c + 1];</div>
<div id="_mcePaste">if (!e &amp;&amp; f &gt;= 0) {</div>
<div id="_mcePaste">var h = (b * (0 &#8211; last_pos) &#8211; a * (0 &#8211; f)) / (f &#8211; last_pos);</div>
<div id="_mcePaste">d += &#8220;from(rgba(0,0,0,&#8221; + h + &#8220;)), &#8220;;</div>
<div id="_mcePaste">e = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (e) {</div>
<div id="_mcePaste">if (f &gt;= 1) {</div>
<div id="_mcePaste">var g = (b * (1 &#8211; last_pos) &#8211; a * (1 &#8211; f)) / (f &#8211; last_pos);</div>
<div id="_mcePaste">d += &#8220;to(rgba(0,0,0,&#8221; + g + &#8220;))&#8221;;</div>
<div id="_mcePaste">d += l;</div>
<div id="_mcePaste">break</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">l += &#8220;, color-stop(&#8221; + f + &#8220;, rgba(0,0,0,&#8221; + b + &#8220;))&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">last_pos = f;</div>
<div id="_mcePaste">a = b</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return d + &#8220;)&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function turn_on() {</div>
<div id="_mcePaste">if (ival) {</div>
<div id="_mcePaste">return</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">step = -0.15;</div>
<div id="_mcePaste">ival = setInterval(window.stepp = function () {</div>
<div id="_mcePaste">step = (step + 0.05) % 1.55;</div>
<div id="_mcePaste">var c = step &#8211; 0.15;</div>
<div id="_mcePaste">var d = step;</div>
<div id="_mcePaste">var e = c &#8211; 0.2;</div>
<div id="_mcePaste">var a = d + 0.2;</div>
<div id="_mcePaste">var b = get_gradient([-1000, 0.5, e, 0.5, c, 0.9, d, 0.9, a, 0.5, 1000, 0.5]);</div>
<div id="_mcePaste">unlock4.style.WebkitMaskImage = b</div>
<div id="_mcePaste">}, 50)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function turn_off() {</div>
<div id="_mcePaste">if (!ival) {</div>
<div id="_mcePaste">return</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">clearInterval(ival);</div>
<div id="_mcePaste">ival = null;</div>
<div id="_mcePaste">unlock4.style.WebkitMaskImage = &#8220;&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var left = 0;</div>
<div id="_mcePaste">function set_left(a) {</div>
<div id="_mcePaste">left = a;</div>
<div id="_mcePaste">slider.style.left = a + &#8220;px&#8221;;</div>
<div id="_mcePaste">unlock4.style.opacity = 1 &#8211; (left / 40)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var startX = null,</div>
<div id="_mcePaste">startLeft, maxLeft;</div>
<div id="_mcePaste">slider.ontouchstart = function (a) {</div>
<div id="_mcePaste">startX = a.targetTouches[0].clientX;</div>
<div id="_mcePaste">startLeft = left;</div>
<div id="_mcePaste">turn_off();</div>
<div id="_mcePaste">slider.style.WebkitTransitionProperty = &#8220;&#8221;;</div>
<div id="_mcePaste">slider.style.WebkitTransitionDuration = &#8220;0s&#8221;;</div>
<div id="_mcePaste">unlock4.style.WebkitTransitionProperty = &#8220;&#8221;;</div>
<div id="_mcePaste">unlock4.style.WebkitTransitionDuration = &#8220;0s&#8221;;</div>
<div id="_mcePaste">maxLeft = slider.parentNode.clientWidth &#8211; slider.clientWidth &#8211; 5;</div>
<div id="_mcePaste">return false</div>
<div id="_mcePaste">};</div>
<div id="_mcePaste">slider.ontouchmove = function (b) {</div>
<div id="_mcePaste">var a = b.targetTouches[0].clientX &#8211; startX;</div>
<div id="_mcePaste">if (a &lt; 0) {</div>
<div id="_mcePaste">a = 0</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (a &gt;= maxLeft) {</div>
<div id="_mcePaste">a = maxLeft</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">set_left(a + startLeft)</div>
<div id="_mcePaste">};</div>
<div id="_mcePaste">window.ontouchend = function () {</div>
<div id="_mcePaste">if (startX == null) {</div>
<div id="_mcePaste">return</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">startX = null;</div>
<div id="_mcePaste">if (maxLeft &#8211; left &lt; 15) {</div>
<div id="_mcePaste">jailbreak();</div>
<div id="_mcePaste">return false</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">turn_on();</div>
<div id="_mcePaste">unlock4.style.WebkitTransitionProperty = &#8220;opacity&#8221;;</div>
<div id="_mcePaste">unlock4.style.WebkitTransitionDuration = &#8220;0.5s&#8221;;</div>
<div id="_mcePaste">var a = left;</div>
<div id="_mcePaste">set_left(0);</div>
<div id="_mcePaste">slider.style.WebkitTransform = &#8220;translateX(&#8221; + a + &#8220;px)&#8221;;</div>
<div id="_mcePaste">setTimeout(function () {</div>
<div id="_mcePaste">slider.style.WebkitTransitionProperty = &#8220;-webkit-transform&#8221;;</div>
<div id="_mcePaste">slider.style.WebkitTransitionDuration = &#8220;0.5s&#8221;;</div>
<div id="_mcePaste">slider.style.WebkitTransform = &#8220;translateX(0px)&#8221;</div>
<div id="_mcePaste">}, 0);</div>
<div id="_mcePaste">return false</div>
<div id="_mcePaste">};</div>
<div id="_mcePaste">set_left(0);</div>
<div id="_mcePaste">turn_on();</div>
<div id="_mcePaste">var onetext = &#8216;&lt;div class=&#8221;ttitle ttop&#8221;&gt;Oops&#8230;&lt;/div&gt;&lt;div class=&#8221;ttext&#8221;&gt;It looks like the installer crashed last time you tried to jailbreak. <img src='http://christopherreding.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &lt;/div&gt;&lt;div class=&#8221;ttext&#8221;&gt;It might work if you try again.&lt;/div&gt;&#8217;;</div>
<div id="_mcePaste">var twotext = &#8216;&lt;div class=&#8221;ttitle ttop&#8221;&gt;It worked!&lt;/div&gt;&lt;div class=&#8221;ttext&#8221;&gt;Tap the &lt;b&gt;Cydia&lt;/b&gt; icon to get started with your jailbreak.&lt;/div&gt;&lt;div class=&#8221;ttext&#8221;&gt;(If you restored from a backup, you might be seeing this even though you\&#8217;re not jailbroken yet.)&lt;/div&gt;&#8217;;</div>
<div id="_mcePaste">var toooldtext = &#8216;&lt;div class=&#8221;ttitle ttop&#8221;&gt;JailbreakMe&lt;/div&gt;&lt;div class=&#8221;ttext&#8221;&gt;Version too old.  You need to upgrade using iTunes before you can use this site.&lt;/div&gt;&#8217;;</div>
<div id="_mcePaste">var toonewtext = &#8216;&lt;div class=&#8221;ttitle ttop&#8221;&gt;Welp.&lt;/div&gt;&lt;div class=&#8221;ttext&#8221;&gt;Version too new.  You need to downgrade before you can use this site, which is probably impossible.&lt;/div&gt;&#8217;;</div>
<div id="_mcePaste">function add_animations(a) {</div>
<div id="_mcePaste">a.style.webkitTransitionProperty = &#8220;-webkit-transform, opacity&#8221;;</div>
<div id="_mcePaste">a.style.webkitTransitionDuration = &#8220;0.4s, 0.4s&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function get_progress() {</div>
<div id="_mcePaste">var f = 0;</div>
<div id="_mcePaste">var b = 0;</div>
<div id="_mcePaste">var e = document.cookie.match(/progress=[0-9]_[0-9\.]+/g);</div>
<div id="_mcePaste">if (e) {</div>
<div id="_mcePaste">for (var d = 0; d &lt; e.length; d++) {</div>
<div id="_mcePaste">var a = e[d];</div>
<div id="_mcePaste">var c = parseInt(a.substring(11));</div>
<div id="_mcePaste">if (c &gt; f) {</div>
<div id="_mcePaste">f = c;</div>
<div id="_mcePaste">b = parseInt(a.substring(9, 10))</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return b</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var my_progress = 0;</div>
<div id="_mcePaste">window.onload = function () {</div>
<div id="_mcePaste">if (vmismatch == -1) {</div>
<div id="_mcePaste">document.getElementById(&#8220;texts&#8221;).innerHTML = toooldtext;</div>
<div id="_mcePaste">return</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (vmismatch == 1) {</div>
<div id="_mcePaste">document.getElementById(&#8220;texts&#8221;).innerHTML = toonewtext;</div>
<div id="_mcePaste">return</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var a = get_progress();</div>
<div id="_mcePaste">if (a == 1) {</div>
<div id="_mcePaste">document.getElementById(&#8220;texts&#8221;).innerHTML = onetext</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (a == 2) {</div>
<div id="_mcePaste">document.getElementById(&#8220;texts&#8221;).innerHTML = twotext</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">};</div>
<div id="_mcePaste">function jailbreak() {</div>
<div id="_mcePaste">var b = document.getElementsByClassName(&#8220;middle_wrapper&#8221;)[0];</div>
<div id="_mcePaste">add_animations(b);</div>
<div id="_mcePaste">b.style.opacity = &#8220;0&#8243;;</div>
<div id="_mcePaste">var c = document.getElementsByClassName(&#8220;tool_bar&#8221;)[0];</div>
<div id="_mcePaste">add_animations(c);</div>
<div id="_mcePaste">c.style.opacity = &#8220;0&#8243;;</div>
<div id="_mcePaste">c.style.webkitTransform = &#8220;translateY(96px)&#8221;;</div>
<div id="_mcePaste">var a = document.getElementsByClassName(&#8220;top_bar&#8221;)[0];</div>
<div id="_mcePaste">add_animations(a);</div>
<div id="_mcePaste">a.style.opacity = &#8220;0&#8243;;</div>
<div id="_mcePaste">a.style.webkitTransform = &#8220;translateY(-96px)&#8221;;</div>
<div id="_mcePaste">jailbreak_real()</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function jailbreak_real() {</div>
<div id="_mcePaste">document.cookie = &#8220;progress=1_&#8221; + (new Date().getTime() / 1000) + &#8220;;domain=jailbreakme.com;path=/;expires=Sat, 01 Feb 2020 05:00:00 GMT&#8221;;</div>
<div id="_mcePaste">if (!window.page) {</div>
<div id="_mcePaste">alert(&#8220;There was no page&#8230; &#8221; + navigator.userAgent)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var a = document.createElement(&#8220;iframe&#8221;);</div>
<div id="_mcePaste">a.setAttribute(&#8220;src&#8221;, page);</div>
<div id="_mcePaste">a.style.position = &#8220;absolute&#8221;;</div>
<div id="_mcePaste">a.style.opacity = &#8220;0.000001&#8243;;</div>
<div id="_mcePaste">a.style.width = &#8220;100px&#8221;;</div>
<div id="_mcePaste">a.style.height = &#8220;100px&#8221;;</div>
<div id="_mcePaste">a.style.zIndex = &#8220;-9999&#8243;;</div>
<div id="_mcePaste">document.body.appendChild(a);</div>
<div id="_mcePaste">pival = setInterval(function () {</div>
<div id="_mcePaste">var b = get_progress();</div>
<div id="_mcePaste">if (b == 2) {</div>
<div id="_mcePaste">clearInterval(pival);</div>
<div id="_mcePaste">window.location = &#8220;faq.html&#8221;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">if (b == 3) {</div>
<div id="_mcePaste">clearInterval(pival);</div>
<div id="_mcePaste">window.location = window.location</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}, 500)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var old = window.orientation;</div>
<div id="_mcePaste">function ooc(a) {</div>
<div id="_mcePaste">if (old != window.orientation) {</div>
<div id="_mcePaste">window.scrollTo(0, 1)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">old = window.orientation</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function loaded() {</div>
<div id="_mcePaste">setTimeout(function () {</div>
<div id="_mcePaste">window.scrollTo(0, 1)</div>
<div id="_mcePaste">}, 10)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">window.addEventListener(&#8220;load&#8221;, function (a) {</div>
<div id="_mcePaste">loaded();</div>
<div id="_mcePaste">setInterval(ooc, 100)</div>
<div id="_mcePaste">}, false);</div>
<div id="_mcePaste">window.addEventListener(&#8220;onorientationchange&#8221;, ooc, false);</div>
<div id="_mcePaste">document.addEventListener(&#8220;touchmove&#8221;, function (a) {</div>
<div id="_mcePaste">a.preventDefault()</div>
<div id="_mcePaste">}, false);</div>
<div id="_mcePaste">var _sunSpiderInterval = 0;</div>
<div id="_mcePaste">function getSunSpiderInterval() {</div>
<div id="_mcePaste">if (_sunSpiderInterval) {</div>
<div id="_mcePaste">return _sunSpiderInterval</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var d = new Date,</div>
<div id="_mcePaste">g = [],</div>
<div id="_mcePaste">r = [],</div>
<div id="_mcePaste">m = [],</div>
<div id="_mcePaste">l = [],</div>
<div id="_mcePaste">v = {},</div>
<div id="_mcePaste">x = {},</div>
<div id="_mcePaste">t, p = {};</div>
<div id="_mcePaste">p.Width = 300;</div>
<div id="_mcePaste">p.Height = 300;</div>
<div id="_mcePaste">function n(L, J) {</div>
<div id="_mcePaste">var I = L.V[0],</div>
<div id="_mcePaste">K = J.V[0],</div>
<div id="_mcePaste">H = L.V[1],</div>
<div id="_mcePaste">G = J.V[1],</div>
<div id="_mcePaste">F = Math.abs(K &#8211; I),</div>
<div id="_mcePaste">E = Math.abs(G &#8211; H),</div>
<div id="_mcePaste">A = I,</div>
<div id="_mcePaste">i = H,</div>
<div id="_mcePaste">C, D, B;</div>
<div id="_mcePaste">if (K &gt;= I) {</div>
<div id="_mcePaste">K = I = 1</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">K = I = -1</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (G &gt;= H) {</div>
<div id="_mcePaste">G = H = 1</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">G = H = -1</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (F &gt;= E) {</div>
<div id="_mcePaste">G = I = 0;</div>
<div id="_mcePaste">C = F;</div>
<div id="_mcePaste">D = F / 2;</div>
<div id="_mcePaste">B = E;</div>
<div id="_mcePaste">F = F</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">H = K = 0;</div>
<div id="_mcePaste">C = E;</div>
<div id="_mcePaste">D = E / 2;</div>
<div id="_mcePaste">B = F;</div>
<div id="_mcePaste">F = E</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">F = Math.round(g.LastPx + F);</div>
<div id="_mcePaste">for (E = g.LastPx; E &lt; F; E++) {</div>
<div id="_mcePaste">D += B;</div>
<div id="_mcePaste">if (D &gt;= C) {</div>
<div id="_mcePaste">D -= C;</div>
<div id="_mcePaste">A += I;</div>
<div id="_mcePaste">i += H</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">A += K;</div>
<div id="_mcePaste">i += G</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">g.LastPx = F</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function q(i, B) {</div>
<div id="_mcePaste">var A = [];</div>
<div id="_mcePaste">A[0] = i[1] * B[2] &#8211; i[2] * B[1];</div>
<div id="_mcePaste">A[1] = i[2] * B[0] &#8211; i[0] * B[2];</div>
<div id="_mcePaste">A[2] = i[0] * B[1] &#8211; i[1] * B[0];</div>
<div id="_mcePaste">return A</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function b(A, E, D) {</div>
<div id="_mcePaste">for (var i = [], C = [], B = 0; B &lt; 3; B++) {</div>
<div id="_mcePaste">i[B] = A[B] &#8211; E[B];</div>
<div id="_mcePaste">C[B] = D[B] &#8211; E[B]</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">i = q(i, C);</div>
<div id="_mcePaste">A = Math.sqrt(i[0] * i[0] + i[1] * i[1] + i[2] * i[2]);</div>
<div id="_mcePaste">for (B = 0; B &lt; 3; B++) {</div>
<div id="_mcePaste">i[B] /= A</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">i[3] = 1;</div>
<div id="_mcePaste">return i</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function f(i, B, A) {</div>
<div id="_mcePaste">this.V = [i, B, A, 1]</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function e(A, D) {</div>
<div id="_mcePaste">for (var C = [</div>
<div id="_mcePaste">[],</div>
<div id="_mcePaste">[],</div>
<div id="_mcePaste">[],</div>
<div id="_mcePaste">[]</div>
<div id="_mcePaste">], i = 0, B = 0; i &lt; 4; i++) {</div>
<div id="_mcePaste">for (B = 0; B &lt; 4; B++) {</div>
<div id="_mcePaste">C[i][B] = A[i][0] * D[0][B] + A[i][1] * D[1][B] + A[i][2] * D[2][B] + A[i][3] * D[3][B]</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return C</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function j(A, C) {</div>
<div id="_mcePaste">for (var B = [], i = 0; i &lt; 4; i++) {</div>
<div id="_mcePaste">B[i] = A[i][0] * C[0] + A[i][1] * C[1] + A[i][2] * C[2] + A[i][3] * C[3]</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return B</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function k(A, C) {</div>
<div id="_mcePaste">for (var B = [], i = 0; i &lt; 3; i++) {</div>
<div id="_mcePaste">B[i] = A[i][0] * C[0] + A[i][1] * C[1] + A[i][2] * C[2]</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return B</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function h(A, D) {</div>
<div id="_mcePaste">for (var C = [</div>
<div id="_mcePaste">[],</div>
<div id="_mcePaste">[],</div>
<div id="_mcePaste">[],</div>
<div id="_mcePaste">[]</div>
<div id="_mcePaste">], i = 0, B = 0; i &lt; 4; i++) {</div>
<div id="_mcePaste">for (B = 0; B &lt; 4; B++) {</div>
<div id="_mcePaste">C[i][B] = A[i][B] + D[i][B]</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">return C</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function o(A, C, B, i) {</div>
<div id="_mcePaste">return e([</div>
<div id="_mcePaste">[1, 0, 0, C],</div>
<div id="_mcePaste">[0, 1, 0, B],</div>
<div id="_mcePaste">[0, 0, 1, i],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">], A)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function a(A, C) {</div>
<div id="_mcePaste">var B = C;</div>
<div id="_mcePaste">B *= Math.PI / 180;</div>
<div id="_mcePaste">var i = Math.cos(B);</div>
<div id="_mcePaste">B = Math.sin(B);</div>
<div id="_mcePaste">return e([</div>
<div id="_mcePaste">[1, 0, 0, 0],</div>
<div id="_mcePaste">[0, i, -B, 0],</div>
<div id="_mcePaste">[0, B, i, 0],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">], A)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function z(A, C) {</div>
<div id="_mcePaste">var B = C;</div>
<div id="_mcePaste">B *= Math.PI / 180;</div>
<div id="_mcePaste">var i = Math.cos(B);</div>
<div id="_mcePaste">B = Math.sin(B);</div>
<div id="_mcePaste">return e([</div>
<div id="_mcePaste">[i, 0, B, 0],</div>
<div id="_mcePaste">[0, 1, 0, 0],</div>
<div id="_mcePaste">[-B, 0, i, 0],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">], A)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function w(A, C) {</div>
<div id="_mcePaste">var B = C;</div>
<div id="_mcePaste">B *= Math.PI / 180;</div>
<div id="_mcePaste">var i = Math.cos(B);</div>
<div id="_mcePaste">B = Math.sin(B);</div>
<div id="_mcePaste">return e([</div>
<div id="_mcePaste">[i, -B, 0, 0],</div>
<div id="_mcePaste">[B, i, 0, 0],</div>
<div id="_mcePaste">[0, 0, 1, 0],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">], A)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function u() {</div>
<div id="_mcePaste">var i = [],</div>
<div id="_mcePaste">A = 5;</div>
<div id="_mcePaste">for (g.LastPx = 0; A &gt; -1; A&#8211;) {</div>
<div id="_mcePaste">i[A] = k(m, g.Normal[A])</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (i[0][2] &lt; 0) {</div>
<div id="_mcePaste">if (!g.Line[0]) {</div>
<div id="_mcePaste">n(g[0], g[1]);</div>
<div id="_mcePaste">g.Line[0] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[1]) {</div>
<div id="_mcePaste">n(g[1], g[2]);</div>
<div id="_mcePaste">g.Line[1] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[2]) {</div>
<div id="_mcePaste">n(g[2], g[3]);</div>
<div id="_mcePaste">g.Line[2] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[3]) {</div>
<div id="_mcePaste">n(g[3], g[0]);</div>
<div id="_mcePaste">g.Line[3] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (i[1][2] &lt; 0) {</div>
<div id="_mcePaste">if (!g.Line[2]) {</div>
<div id="_mcePaste">n(g[3], g[2]);</div>
<div id="_mcePaste">g.Line[2] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[9]) {</div>
<div id="_mcePaste">n(g[2], g[6]);</div>
<div id="_mcePaste">g.Line[9] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[6]) {</div>
<div id="_mcePaste">n(g[6], g[7]);</div>
<div id="_mcePaste">g.Line[6] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[10]) {</div>
<div id="_mcePaste">n(g[7], g[3]);</div>
<div id="_mcePaste">g.Line[10] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (i[2][2] &lt; 0) {</div>
<div id="_mcePaste">if (!g.Line[4]) {</div>
<div id="_mcePaste">n(g[4], g[5]);</div>
<div id="_mcePaste">g.Line[4] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[5]) {</div>
<div id="_mcePaste">n(g[5], g[6]);</div>
<div id="_mcePaste">g.Line[5] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[6]) {</div>
<div id="_mcePaste">n(g[6], g[7]);</div>
<div id="_mcePaste">g.Line[6] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[7]) {</div>
<div id="_mcePaste">n(g[7], g[4]);</div>
<div id="_mcePaste">g.Line[7] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (i[3][2] &lt; 0) {</div>
<div id="_mcePaste">if (!g.Line[4]) {</div>
<div id="_mcePaste">n(g[4], g[5]);</div>
<div id="_mcePaste">g.Line[4] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[8]) {</div>
<div id="_mcePaste">n(g[5], g[1]);</div>
<div id="_mcePaste">g.Line[8] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[0]) {</div>
<div id="_mcePaste">n(g[1], g[0]);</div>
<div id="_mcePaste">g.Line[0] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[11]) {</div>
<div id="_mcePaste">n(g[0], g[4]);</div>
<div id="_mcePaste">g.Line[11] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (i[4][2] &lt; 0) {</div>
<div id="_mcePaste">if (!g.Line[11]) {</div>
<div id="_mcePaste">n(g[4], g[0]);</div>
<div id="_mcePaste">g.Line[11] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[3]) {</div>
<div id="_mcePaste">n(g[0], g[3]);</div>
<div id="_mcePaste">g.Line[3] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[10]) {</div>
<div id="_mcePaste">n(g[3], g[7]);</div>
<div id="_mcePaste">g.Line[10] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[7]) {</div>
<div id="_mcePaste">n(g[7], g[4]);</div>
<div id="_mcePaste">g.Line[7] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (i[5][2] &lt; 0) {</div>
<div id="_mcePaste">if (!g.Line[8]) {</div>
<div id="_mcePaste">n(g[1], g[5]);</div>
<div id="_mcePaste">g.Line[8] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[5]) {</div>
<div id="_mcePaste">n(g[5], g[6]);</div>
<div id="_mcePaste">g.Line[5] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[9]) {</div>
<div id="_mcePaste">n(g[6], g[2]);</div>
<div id="_mcePaste">g.Line[9] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (!g.Line[1]) {</div>
<div id="_mcePaste">n(g[2], g[1]);</div>
<div id="_mcePaste">g.Line[1] = true</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">g.Line = [false, false, false, false, false, false, false, false, false, false, false, false];</div>
<div id="_mcePaste">g.LastPx = 0</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function c() {</div>
<div id="_mcePaste">if (!(x.LoopCount &gt; x.LoopMax)) {</div>
<div id="_mcePaste">for (var i = String(x.LoopCount); i.length &lt; 3;) {</div>
<div id="_mcePaste">i = &#8220;0&#8243; + i</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">r = o(l, -g[8].V[0], -g[8].V[1], -g[8].V[2]);</div>
<div id="_mcePaste">r = a(r, 1);</div>
<div id="_mcePaste">r = z(r, 3);</div>
<div id="_mcePaste">r = w(r, 5);</div>
<div id="_mcePaste">r = o(r, g[8].V[0], g[8].V[1], g[8].V[2]);</div>
<div id="_mcePaste">m = e(r, m);</div>
<div id="_mcePaste">for (i = 8; i &gt; -1; i&#8211;) {</div>
<div id="_mcePaste">g[i].V = j(r, g[i].V)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">u();</div>
<div id="_mcePaste">x.LoopCount++;</div>
<div id="_mcePaste">c()</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">function y(i) {</div>
<div id="_mcePaste">v.V = [150, 150, 20, 1];</div>
<div id="_mcePaste">x.LoopCount = 0;</div>
<div id="_mcePaste">x.LoopMax = 50;</div>
<div id="_mcePaste">x.TimeMax = 0;</div>
<div id="_mcePaste">x.TimeAvg = 0;</div>
<div id="_mcePaste">x.TimeMin = 0;</div>
<div id="_mcePaste">x.TimeTemp = 0;</div>
<div id="_mcePaste">x.TimeTotal = 0;</div>
<div id="_mcePaste">x.Init = false;</div>
<div id="_mcePaste">r = [</div>
<div id="_mcePaste">[1, 0, 0, 0],</div>
<div id="_mcePaste">[0, 1, 0, 0],</div>
<div id="_mcePaste">[0, 0, 1, 0],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">];</div>
<div id="_mcePaste">m = [</div>
<div id="_mcePaste">[1, 0, 0, 0],</div>
<div id="_mcePaste">[0, 1, 0, 0],</div>
<div id="_mcePaste">[0, 0, 1, 0],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">];</div>
<div id="_mcePaste">l = [</div>
<div id="_mcePaste">[1, 0, 0, 0],</div>
<div id="_mcePaste">[0, 1, 0, 0],</div>
<div id="_mcePaste">[0, 0, 1, 0],</div>
<div id="_mcePaste">[0, 0, 0, 1]</div>
<div id="_mcePaste">];</div>
<div id="_mcePaste">g[0] = new f(-i, -i, i);</div>
<div id="_mcePaste">g[1] = new f(-i, i, i);</div>
<div id="_mcePaste">g[2] = new f(i, i, i);</div>
<div id="_mcePaste">g[3] = new f(i, -i, i);</div>
<div id="_mcePaste">g[4] = new f(-i, -i, -i);</div>
<div id="_mcePaste">g[5] = new f(-i, i, -i);</div>
<div id="_mcePaste">g[6] = new f(i, i, -i);</div>
<div id="_mcePaste">g[7] = new f(i, -i, -i);</div>
<div id="_mcePaste">g[8] = new f(0, 0, 0);</div>
<div id="_mcePaste">g.Edge = [</div>
<div id="_mcePaste">[0, 1, 2],</div>
<div id="_mcePaste">[3, 2, 6],</div>
<div id="_mcePaste">[7, 6, 5],</div>
<div id="_mcePaste">[4, 5, 1],</div>
<div id="_mcePaste">[4, 0, 3],</div>
<div id="_mcePaste">[1, 5, 6]</div>
<div id="_mcePaste">];</div>
<div id="_mcePaste">g.Normal = [];</div>
<div id="_mcePaste">for (var A = 0; A &lt; g.Edge.length; A++) {</div>
<div id="_mcePaste">g.Normal[A] = b(g[g.Edge[A][0]].V, g[g.Edge[A][1]].V, g[g.Edge[A][2]].V)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">g.Line = [false, false, false, false, false, false, false, false, false, false, false, false];</div>
<div id="_mcePaste">g.NumPx = 18 * i;</div>
<div id="_mcePaste">for (A = 0; A &lt; g.NumPx; A++) {</div>
<div id="_mcePaste">f(0, 0, 0)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">r = o(r, v.V[0], v.V[1], v.V[2]);</div>
<div id="_mcePaste">m = e(r, m);</div>
<div id="_mcePaste">for (A = 0; A &lt; 9; A++) {</div>
<div id="_mcePaste">g[A].V = j(r, g[A].V)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">u();</div>
<div id="_mcePaste">x.Init = true;</div>
<div id="_mcePaste">c()</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">for (var s = 20; s &lt;= 160; s *= 2) {</div>
<div id="_mcePaste">y(s)</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">p = LoopTime = x = v = l = m = r = g = null;</div>
<div id="_mcePaste">return _sunSpiderInterval = new Date &#8211; d</div>
<div id="_mcePaste">};</div>
</div>
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fchristopherreding.com%2Fjailbreakme-com-javascript-file-beautified-iphone-ios-4%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fchristopherreding.com%2Fjailbreakme-com-javascript-file-beautified-iphone-ios-4%2F&amp;source=creding&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://christopherreding.com/jailbreakme-com-javascript-file-beautified-iphone-ios-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creating a page overlay with jQuery</title>
		<link>http://christopherreding.com/creating-a-page-overlay-with-jquery/</link>
		<comments>http://christopherreding.com/creating-a-page-overlay-with-jquery/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 12:57:16 +0000</pubDate>
		<dc:creator>Christopher Reding</dc:creator>
				<category><![CDATA[JQuery]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Modal]]></category>
		<category><![CDATA[Overlay]]></category>

		<guid isPermaLink="false">http://christopherreding.com/?p=43</guid>
		<description><![CDATA[Seems like everywhere you look websites are using pop-up modals with some kind of transparent overlay. While there are different hacks to maintain browser compatibility, there is a common thread in execution. One solution uses  jQuery to append a div to the body of the page, that div is styled as an absolute positioned element [...]]]></description>
			<content:encoded><![CDATA[<p>Seems like everywhere you look websites are using pop-up modals with some kind of transparent overlay. While there are different hacks to maintain browser compatibility, there is a common thread in execution. One solution uses  jQuery to append a div to the body of the page, that div is styled as an absolute positioned element with a transparent background which makes it appear to overlay the content below. The overlay also servers the function of disabling the links in the content it overlays. Here is the code to get this to work.</p>
<p><a href="http://demo.christopherreding.com/overlaydemo.html" target="_blank">Demo</a></p>
<p><strong>First the CSS:</strong></p>
<pre class="brush:[css]">#overlay
{
 position: absolute;
 z-index: 99998;
 top: 0px;
 left: 0px;
 width: 100%;
 height: 100%;
 background-color:#000;
 opacity:0.5;
 cursor:wait;
}    </pre>
<p><strong>Now the jQuery:</strong></p>
<pre class="brush:[javascript]">&lt;script type="text/javascript"&gt;
$(document).ready(function(){
      $("#mybutton").click(function(){
           $("body").append('&lt;div id="overlay"&gt;&lt;/div&gt;');
           return false;
      });
 })
&lt;/script&gt;</pre>
<p><strong>Finally add the the button element:</strong></p>
<pre class="brush:[html]">&lt;a href="some.html" id="mybutton"&gt;Hello there&lt;/a&gt;
</pre>
<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fchristopherreding.com%2Fcreating-a-page-overlay-with-jquery%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fchristopherreding.com%2Fcreating-a-page-overlay-with-jquery%2F&amp;source=creding&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://christopherreding.com/creating-a-page-overlay-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
