var app=function(){var p;var f;var a=true;var y=null;var C=[{warning:"Hey! We highly recommend you launch this experiment in Google Chrome. It may run slower, or not at all, in other browsers.",button_text:"I'm willing to risk it"},{warning:"Honestly, you'd be better off running this experiment in Google Chrome.",button_text:"I'm gonna roll the dice"},{warning:"Sorry to keep popping up like this, but seriously, this experiment might not run properly in your current browser.",button_text:"I prefer to live dangerously"},{warning:"We recommend you launch this experiment in Google Chrome. It may run slower, or not at all, in other browsers.",button_text:"I'm willing to risk it"}];var G=function(){return !!window.WebGLRenderingContext};var F=function(){return navigator.userAgent.match(/Chrome\/(\d)+/)};var s=function(){return navigator.userAgent.match(/Chrome\/(\d)+/)};var d=function(){return navigator.userAgent.match(/Windows/)&&!F()};var j=function(){return navigator.userAgent.match(/Macintosh/)&&!F()};var I=function(M){var K=(M.target&&$(M.target).parents()[1])||$(M);var L=(M.data&&M.data.rating)||parseFloat($(K).find("input.ratings_average").val())||0;$(K).find(".rating").each(function(O,N){l(O,N,L)})};var l=function(M,L,K){if(M+1<=K){$(L).removeClass("off");$(L).removeClass("half")}else{if(M+0.5==K){$(L).removeClass("off");$(L).addClass("half")}else{$(L).addClass("off")}}};var B=function(K){if($.cookie("rating_key")){$("#ratings_notice").html("You have already rated this experiment.")}else{I(K)}};var H=function(K){if(!K.data.rating||$.cookie("rating_key")){return false}$("#rating").val(K.data.rating);$.ajax({url:"/detail/"+$("#slug").val()+"/rate/",data:{rating:$("#rating").val(),rating_key:$("#rating_key").val()},type:"post",dataType:"json",success:function(L){$.cookie("rating_key",L.key,{expires:365});$.cookie("rating",L.value,{expires:365});$("#rating_key").val(L.key);$("#rating").val($.cookie("rating")||0);$("#ratings_average").val(L.experiment.ratings_average);$("#ratings_count_display").html(L.experiment.ratings_count);$("#ratings_count_pluralization").html(L.experiment.ratings_count!=1?"s":"");$("#ratings_notice").html("Thank you for your rating!");I("#rateExperiment")},error:function(){}});return false};var m=function(K){$("#overlay").show();if(K){$("#"+K).show()}};var z=function(){$("div.dialog").hide();$("#overlay").hide()};var A=function(){$("#overlay").hide();for(var K=0;K<arguments.length;K++){$("#"+arguments[K]).hide()}};var b=function(){$.cookie("skipWarning","true",{expires:365,path:"/"});return false};var t=function(){$("#riskIt").bind("click",b);$("#downloadChrome").bind("click",b)};var g=function(P){v("outgoing","click",P);if(a){var K=(window.screenY||window.screenTop)+10;var Q=(window.screenX||window.screenLeft)+10;var N=(window.width||$(document).width())-10;var M=$(window).height()-20;var L="scrollbars=yes,resizable=yes,height="+M+",width="+N+",top="+K+",left="+Q;var O=window.open(P,"newWin",L);O.focus()}else{window.open(P)}};var o=function(){if(d()){$("#downloadSuggestion").show()}};var u=function(){if(!F()){$("#downloadSuggestion").css("display","inline")}return false};var c=function(){if(!F()){$("#downloadSuggestion").css("display","inline")}if(!F()&&!$.cookie("skipWarning")&&false){if(d()){if(!$.cookie("pcWarningNum")){$.cookie("pcWarningNum","0",{expires:365,path:"/"})}else{if(parseInt($.cookie("pcWarningNum"))<C.length-1){$.cookie("pcWarningNum",parseInt($.cookie("pcWarningNum"))+1,{expires:365,path:"/"})}}if(parseInt($.cookie("pcWarningNum"))>=C.length-1){t()}var K=parseInt($.cookie("pcWarningNum"));$("#warningMessage").html(C[K].warning);$("#riskIt").html(C[K].button_text)}else{if(j()){$("#downloadSuggestion").css("display","inline");t()}else{$("#warningMessage").html("Unfortunately, Google Chrome is not yet available for your operating system. This experiment may not run properly in your current browser.");$("#downloadChrome").hide();t()}}m("useChrome")}else{g(this.href)}return false};var w=function(){if(this.href.match(/google.com\/chrome/)){var K="warning-chromedownload"}else{var K=this.href}v("outgoing","click",K);window.open(this.href);A("useChrome");return false};var n=function(K){if(!E(K,{your_name:/.+/,friend_email:/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,comment:/.+/})){return false}$.ajax({url:"/detail/"+$("#slug").val()+"/share/",data:$(K.target).serialize(),type:"post",dataType:"json",success:function(L){A("share","useChrome");m("share_thankyou")},error:function(L){$(K.target).children(".error_message").html(L.responseText)}});return false};var e=function(M,N){var L=$("#submit_recaptcha");$("#submit_recaptcha").remove();$("#first-comment-form").hide();var K='<div id="comment_form_outer_'+M+'">                <form id="comment_form_'+M+'" action="#" name="comment" class="comment_form">                  <h4 class="error_message error"></h4>                  <div><input type="hidden" name="over" class="comment_input" value="'+M+'"/></div>                  <div><input type="hidden" name="level" class="comment_input" value="'+N+'"/></div>                  <div class="fieldset">                    <label>Name <span class="error"></span></label>                     <input type="text" name="name" class="text" />                  </div>                  <div class="fieldset">                    <label>Email <span class="error"></span></label>                     <input type="text" name="email" class="text" />                  </div>                  <div class="fieldset">                    <label>Comment (Must be under 2,000 characters)<span class="error"></span></label>                     <textarea name="body" rows="5" cols="60"></textarea>                  </div>                  <div class="fieldset">'+L.html()+'</div>                  <div class="fieldset"><input type="submit" id="submit_comment_'+M+'" class="bigButton" value="submit" /></div>                </form>              </div>      ';return K};var k=function(N){var K=$(N.target).parent()[0];var M=K.id.match(/_(\d+)$/)[1];var O=parseInt($(K).parent()[0].className.match(/level_(\d+)/)[1]);var L=e(M,O+1);Recaptcha.reload();y=$(N.target);y.replaceWith(L);$("#comment_form_"+M).bind("submit",x);return false};var x=function(P){if(!E(P,{name:/.+/,email:/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,body:/^.{1,2000}$/})){return false}var L=this.id.match(/_(\d+)$/);var O=L?L[1]:null;var N=O?"_"+O:"";$("#submit-text").html("our comment will appear shortly. Thank you.");var K=$("input#recaptcha_challenge_field").val();var M=$("input#recaptcha_response_field").val();$("#"+P.target.id+' input[type="submit"]').attr("disabled","disabled");$.ajax({url:"/detail/"+$("#slug").val()+"/comment/",data:$("#comment_form"+N).serialize(),type:"post",statusCode:{500:function(){$(P.target).find(".error_message").html("Invalid Captcha");$("#submit-text").html("");$("#"+P.target.id+' input[type="submit"]').removeAttr("disabled");Recaptcha.reload()}},success:function(S){setTimeout(function(){submitField.children("p").fadeOut()},10000);$("#"+P.target.id+' input[type="submit"]').removeAttr("disabled");var Q=$(S);Q.addClass("new_comment");if(!O){Q.insertAfter($("#comments h3"));$("#comment_form .text").val("");$("#comment_form textarea").val("")}else{var R=$('<a class="reply" href="#">Reply to this comment</a>');$("#comment_children"+N).prepend(Q);$("#comment_form_outer"+N).replaceWith(R);R.bind("click",k)}$(P.target).find(".error_message").html("");Q.find(".reply").bind("click",k);Q.children(".comment_body").bind("mouseover",function(T){$(this).children(".reply").css("visibility","visible")});Q.children(".comment_body").bind("mouseout",function(T){$(this).children(".reply").css("visibility","hidden")});$("#first_to_comment").hide();Recaptcha.reload()}});return false};var E=function(L,K){$(L.target).find("span.error").html("");$(L.target).find("input.error").removeClass("error");$(L.target).find("textarea.error").removeClass("error");var M=[];for(key in K){if(!$(L.target).find("[name="+key+"]").val().match(K[key])){M.push(key)}}if(M.length>0){$.each(M,function(){$(L.target).find("[name="+this+"]").addClass("error");$(L.target).find("[name="+this+"]").prev("label").children("span.error").html("invalid");$(L.target).find(".error_message").html("Please correct the errors below to continue.")});return false}return true};var i=function(){$("#submit_form .error").html("");$("#submit_form input.error").removeClass("error");if($("#experiment_url").val()!=""&&!$("#experiment_url").val().match(/^http:\/\//i)){$("#experiment_url").val("http://"+$("#experiment_url").val())}if($("#author_url").val()>""){var K=$("#author_url").val().split(",");K=$.map(K,function(N){N=N.replace(/^\s+|\s+$/g,"");if(!N.match(/^http:\/\//i)){N="http://"+N}return N});$("#author_url").val(K.join(","))}var L={author_name:/.+/,experiment_name:/.+/,experiment_url:/.+/,author_email:/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,author_url:/.*/,screenshot:/.+/};var M=[];for(key in L){if(!$("#"+key).val().match(L[key])){M.push(key)}}if(M.length>0){$.each(M,function(){$("#"+this+"_error").html("invalid");$("#"+this).addClass("error");$("#error_message").html("Please correct the errors below to continue.")});window.scrollTo(0,0);return false}$("#submit_button input").val("One moment, please...");return true};var J=function(){$("#submit_form .error").html("");$("#submit_form input.error").removeClass("error");if(!$("#globe_url").val().match(/^http:\/\//i)){$("#globe_url").val("http://"+$("#globe_url").val())}if($("#source_url").val()>""){var K=$("#source_url").val().split(",");source_urls=$.map(source_urls,function(N){N=N.replace(/^\s+|\s+$/g,"");if(!N.match(/^http:\/\//i)){N="http://"+N}return N});$("#source_url").val(source_urls.join(","))}var L={name:/.+/,globe_url:/.*/,email:/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i};var M=[];for(key in L){if(!$("#"+key).val().match(L[key])){M.push(key)}}if(M.length>0){$.each(M,function(){$("#"+this+"_error").html("invalid");$("#"+this).addClass("error");$("#error_message").html("Please correct the errors below to continue.")});window.scrollTo(0,0);return false}return true};var D=function(){var L=$("#screenshots input[type=file]").length;var K=L+1;$("#screenshots").append('<div class="fieldset"><label>Screenshot '+K+'</label><input type="file" name="experiment[screenshot]['+K+']" class="file" size="30" /></div>');if(K+1>3){$("#addScreenshotLink").html("")}return false};var q=function(P,K){var O=K.toLowerCase()+"_page";var N=$("#featured"+K+"Page");if(P[O]){var M=P[O];if(N.children("a").empty()){var L='<a href="/featured/'+M+'/">'+K+"</a> ";N.html(L);N.children("a").bind("click",h)}else{N.children("a").attr("href","/featured/"+M)}}else{N.html(K+" ")}};var h=function(){var M=this.href||"/featured/1/";var P=parseInt(M.match(/\/([0-9]+)\/$/)[1]);var O=((P*3)+1>p)?null:P+1;var K=((P*3)-1<0)?null:P-1;var N=(P==1)?0:(P-1)*3;var L=(N+3>p)?p:N+3;$("#featured_index").html(N+1);$("#featured_end").html(L);q({next_page:O,prev_page:K},"Prev");q({next_page:O,prev_page:K},"Next");$("#featuredExperiments").css("top",-(307*(P-1)));return false};var v=function(L,M,K){if(pageTracker){pageTracker._trackEvent(L,M,K.replace("http://",""))}};var r=function(L){var K=$("#searchbox input").val();if(K){K=K.replace(" ","+");window.location="/search/results.html?q="+K.toLowerCase()}else{$("#searchbox input").focus()}};return{home:function(K){$("#experimentPagination a").bind("click",h);$(".experimentBrowse").bind("click",function(L){$("#experimentsGrid").css("background","transparent url(/img/ajax-loader.gif) no-repeat center center");$("#experimentsGrid").load(this.href.replace(/\?(.*?)$/,"experiments/?$1"),function(){$("#experimentsGrid").css("background","")});return false});$(".sort_field a.sort").bind("click",function(L){var M=$("#filter_key").val();$("#experimentsGrid").load("/experiments/?q="+this.rel+"&f="+M);$("#experimentSection h2#sectionTitle").text("Experiments: "+$(this).text())});$(".sort_field a").bind("click",function(L){$(".sort_field a").removeClass("selected");$(this).addClass("selected")});$(".experiment").each(function(L,M){I(M)});f=K.featuredPages.featuredExperimentsEnd||3;p=K.featuredPages.featuredExperimentsCount||3;if(s()){$(".nonBetaWarning").hide()}},setRatingState:function(K){I(K)},detail:function(K){a=K.usePopupParams;$("#rating_key").val($.cookie("rating_key"));$("#rating").val($.cookie("rating")||0);$("#rateExperiment a.user").each(function(M,L){$(L).bind("click",{rating:M+1},H);$(L).bind("mouseover",{rating:M+1},B);$(L).bind("mouseout",{},I)});u();$("#appLaunchButton").bind("click",c);$("#overlay .shareClose").bind("click",z);$(".closeButton").bind("click",z);$("#share_form").bind("submit",n);$("#detail .offsiteLink").bind("click",w);I("#rateExperiment");o();$("#comment_form").bind("submit",x);$(".reply").bind("click",k);$(".comment").each(function(M,L){$(L).children(".comment_body").bind("mouseover",function(N){$(this).children(".reply").css("visibility","visible")});$(L).children(".comment_body").bind("mouseout",function(N){$(this).children(".reply").css("visibility","hidden")});if(M===0){$(L).addClass("first")}});if(s()&&G()){$(".nonBetaWarning").hide()}if(!s()&&G()){$("#webGLdownloadSuggestion").hide()}},allPages:function(){$("#tags-nav").hide();$("#tags-link").bind("mouseover",function(){$("#tags-nav").show()});$("#tags-link").bind("mouseleave",function(){$("#tags-nav").hide()});$("#subscribe-nav").hide();$("#subscribe-link").bind("mouseover",function(){$("#subscribe-nav").show()});$("#subscribe-link").bind("mouseleave",function(){$("#subscribe-nav").hide()});$("#searchbox button").bind("click",r);$("#searchbox button").bind("mouseover",function(){$("#searchbox input").focus()});$("#searchbox label").bind("mouseover",function(){$("#searchbox input").focus()});$("#searchbox input").bind("keydown",function(L){var K=(L.keyCode?L.keyCode:L.which);if(K==13){r()}else{if(K==27){$(this).val("")}}});$("#searchbox #clearsearch").bind("click",function(){$("#searchbox input").val("");return false})},submit:function(){$("#addScreenshotLink a").bind("click",D);$("#submit_form").bind("submit",i)},globeSubmit:function(){$("#submit_form").bind("submit",J)},globe:function(){if(F()||G()){$("#webGLdownloadSuggestion").hide()}},trackLink:function(L,M,K){v(L,M,K)}}}();
