/*!
* Sketch (2015-02-23, 15:59)
*
* Copyright (C) 2011-2015 Hakim El Hattab, http://hakim.se
*/window.sketch={},sketch.IO=function(){function a(a,b){return a||0==a?a:b}var b="/php/sketch.php",c="/php/sketch.php",d="/php/gallery.php",e="x",f=null;return{initialize:function(){f=sketch.Main.linesToJSON()},hasUnsavedChanges:function(){return sketch.Main.linesToJSON()!==f},saveSketch:function(){var a=sketch.Main.linesToJSON();this.hasUnsavedChanges()?a.length>255?(sketch.LoadingOverlay.show("Saving sketch",100),$.post(b,"save="+a,function(b){sketch.LoadingOverlay.hide(),b.match(/error/gi)?alert("Uh-oh, the server replied with a no-no :( Wait a minute and try again."):(f=a,sketch.URL.writeID(b),sketch.Facebook.isConnected()&&FB.api("/me/sketchtoy:draw","post",{sketch:sketch.Main.getSketchShareURL()},function(a){!a||a.error}),sketch.ShareOverlay.show(),sketch.Related.update())})):alert("Please draw more before saving."):sketch.ShareOverlay.show()},loadSketch:function(a,b){$.get(c,{load:a},function(a,c){if(a.match(/error/gi))alert("There was an error loading your sketch."),b("error",{});else{f=a;var c="success";try{var d=sketch.IO.parseSketch($.parseJSON(a))}catch(e){c="error",alert("Uh-oh, an error occured while trying to load this sketch.")}b(c,d)}})},parseSketch:function(b){for(var c=a(b.p,b.perspective),d=a(b.a,b.amplitude),f=a(b.l,b.lines),g=0;g
").text("Sketches you save are automatically published to your Facebook stream.").appendTo(c),$('').text("Disconnect?").appendTo(c).on("click",o)}t.removeClass("loading").addClass("connected")}):t.removeClass("loading").removeClass("connected")}function g(a,b,c){FB.ui({method:"send",name:b,link:a,description:c})}function h(a,b,c){FB.ui({method:"feed",name:b,link:a,description:c})}function i(){function a(){q&&q.abort();var a=new FormData;a.append("file",f),a.append("access_token",FB.getAccessToken()),a.append("message","Replay: "+sketch.Main.getSketchShareURL()),q=$.ajax({url:"https://graph.facebook.com/me/photos",data:a,type:"POST",cache:!1,contentType:!1,processData:!1,timeout:3e4,statusCode:{400:function(){e()},401:function(){e()},403:function(){e()},500:function(){e()}},complete:function(a,b){var c;try{c=$.parseJSON(a.responseText)}catch(f){e(b)}c&&0===c.success?e():"OK"===a.statusText&&c&&c.id?d():e()}})}function d(){sketch.LoadingOverlay.hideSuccess("Photo uploaded!"),sketch.Main.trackEvent("Facebook","Photo Upload Success")}function e(){sketch.LoadingOverlay.hideError("Failed to upload photo"),sketch.Main.trackEvent("Facebook","Photo Upload Error")}sketch.LoadingOverlay.show("Uploading photo...");var f=sketch.Main.getSketchAsBlob();f&&c("publish_actions",function(c){c&&FB.getAccessToken()?a():b(function(b){b?a():(sketch.LoadingOverlay.hide(),sketch.Main.trackEvent("Facebook","Photo Upload Cancel"))},{scope:"publish_actions"})})}function j(){return u}function k(a){sketch.URL.readID()?sketch.Facebook.share(sketch.Main.getSketchShareURL(),sketch.Locale.string("promotion-title"),sketch.Locale.string("promotion-body")):sketch.Facebook.share(window.location.protocol+"//"+window.location.host+"/",sketch.Locale.string("promotion-title"),sketch.Locale.string("promotion-body")),sketch.Main.trackEvent("Toolbar","Facebook Share"),a.preventDefault()}function l(a){sketch.URL.readID()?sketch.Facebook.send(sketch.Main.getSketchShareURL(),sketch.Locale.string("sketch-fb"),sketch.Locale.string("promotion-body")):sketch.Facebook.send(window.location.protocol+"//"+window.location.host+"/",sketch.Locale.string("promotion-title"),sketch.Locale.string("promotion-body")),sketch.Main.trackEvent("Toolbar","Facebook Send"),a.preventDefault()}function m(a){FB.ui({method:"apprequests",message:"Sketch with me",filters:[]},function(a){return a&&a.to?void sketch.Main.trackEvent("Header","Facebook Invite Sent"):(sketch.Main.trackEvent("Header","Facebook Invite Cancel"),!1)}),sketch.Main.trackEvent("Header","Facebook Invite"),a.preventDefault()}function n(a){t.hasClass("loading")||t.hasClass("connected")||(j()||sketch.Facebook.login(function(a){a?d(null,!0):f(!1)},{scope:"publish_actions"}),sketch.Main.trackEvent("Header","Facebook Connect")),a.preventDefault()}function o(a){e(function(a){a&&f(!1)}),sketch.Main.trackEvent("Header","Facebook Disconnect"),a.preventDefault()}var p,q,r,s,t,u=!1;return{initialize:a,login:b,send:g,share:h,upload:i,connect:d,isConnected:j}}(),sketch.ShareOverlay=function(){function a(){m.val(sketch.Main.getSketchShareURL());var a=encodeURIComponent("An animated sketch"),b=encodeURIComponent("Check out this sketch: "+sketch.Main.getSketchShareURL());n.attr("href","mailto:?body="+b+"&subject="+a);var c=l.find(".share-download");c.length&&"undefined"!=typeof c.get(0).download&&l.find(".share-download").off().attr({href:sketch.Main.getSketchAsImage(),download:"sketch-"+sketch.URL.readID()+".png",target:""})}function b(a){a.preventDefault(),sketch.ShareOverlay.hide()}function c(a){a.target===l.get(0)&&(a.preventDefault(),sketch.ShareOverlay.hide())}function d(a){a.preventDefault(),m.select()}function e(a){a.preventDefault(),sketch.Facebook.share(sketch.Main.getSketchShareURL(),p),sketch.Main.trackEvent("Share","Facebook")}function f(a){a.preventDefault(),sketch.Facebook.send(sketch.Main.getSketchShareURL(),p),sketch.Main.trackEvent("Share","Facebook Message")}function g(a){a.preventDefault(),sketch.Facebook.upload(),sketch.Main.trackEvent("Share","Facebook Photo")}function h(a){a.preventDefault(),sketch.Social.tweet(sketch.Main.getSketchShareURL(),o,"sketchtoy","sketchtoy"),sketch.Main.trackEvent("Share","Twitter")}function i(){sketch.Main.trackEvent("Share","Email")}function j(a){a.preventDefault(),sketch.Main.saveSketchAsImage(),sketch.Main.trackEvent("Share","Download")}function k(a){27===a.keyCode&&(a.preventDefault(),sketch.ShareOverlay.hide())}var l=$(".share-overlay"),m=l.find(".url input"),n=l.find(".share-email"),o="",p="";return l.find(".close").on("click",b),l.find(".share-facebook").on("click",e),l.find(".share-facebook-message").on("click",f),l.find(".share-facebook-photo").on("click",g),l.find(".share-twitter").on("click",h),l.find(".share-email").on("click",i),l.find(".share-download").on("click",j),l.on("click",c),m.on("click",d),{show:function(){l.toggleClass("empty",sketch.Main.isEmpty()),l.show(),sketch.Main.isEmpty()?(p=sketch.Locale.string("promotion-title"),o=sketch.Locale.string("promotion-body")):(p=sketch.Locale.string("sketch-fb"),o=sketch.Locale.string("sketch-tweet")),a(),m.select(),$(document).on("keydown",k)},hide:function(){l.hide(),$(document).off("keydown",k)}}}(),sketch.LoadingOverlay=function(){{var a=$(".loading-overlay");a.find(".status")}return loadingMessage=a.find(".message"),timeout=-1,{show:function(b,c){clearTimeout(timeout),"number"==typeof c?timeout=setTimeout(function(){sketch.LoadingOverlay.show(b)},c):(a.addClass("visible"),a.removeClass("success-state error-state").addClass("loading-state"),loadingMessage.text(b||""))},hide:function(){clearTimeout(timeout),a.removeClass("visible")},hideSuccess:function(b){a.removeClass("loading-state error-state").addClass("success-state"),loadingMessage.text(b||""),clearTimeout(timeout),timeout=setTimeout(sketch.LoadingOverlay.hide,2e3)},hideError:function(b){a.removeClass("success-state loading-state").addClass("error-state"),loadingMessage.text(b||""),clearTimeout(timeout),timeout=setTimeout(sketch.LoadingOverlay.hide,3e3)}}}(),sketch.Main=function(){function a(a){$(document.body).addClass("loading"),sketch.IO.loadSketch(a,function(a,b){$(document.body).removeClass("loading"),"success"===a?_.injectSketch(b):qb=[]})}function b(a){replayProgressBefore=tb||0,tb=Math.max(0,Math.min(a,1));var b=Math.ceil(tb*sb),c=0;g(),qb=[];a:for(var d=0,e=rb.length;e>d;d++){var f=qb[d]=qb[d]||{color:rb[d].color,thickness:rb[d].thickness,perspective:rb[d].perspective,dashed:rb[d].dashed,eraser:rb[d].eraser,points:[]};xb=f.perspective;var h=rb[d].points.concat();if(c+h.lengthi;i++){var k=h[i];if(f.points.push(k),c++>b)break a}}1===tb&&(xb=yb)}function c(){wb=!0,$("html").addClass("replaying"),clearInterval(ub),ub=setInterval(function(){var a=lb;sb>3e4?a*=2:sb>15e3&&(a*=1.5);var c=Math.ceil(tb*sb)+a;b(c/sb)},kb)}function d(){clearInterval(ub)}function e(){c()}function f(){$("html").removeClass("replaying"),clearInterval(ub),wb&&(wb=!1,tb=1,qb=rb,Db=yb,xb=yb,r())}function g(){Mb.replayControlsProgress.css("width",100*tb+"%")}function h(){if(!navigator.userAgent.match(/ipod|ipad|iphone|android/gi)){var a=!1;try{a="localStorage"in window&&null!==window.localStorage}catch(b){a=!1}}}function i(){colorDropdown=new sketch.Dropdown.create($(".color-dropdown")),colorDropdown.setValue(Bb),colorDropdown.onChanged=function(a){j(a),_.trackEvent("Toolbar","Color",a)},sizeDropdown=new sketch.Dropdown.create($(".size-dropdown")),sizeDropdown.setValue(Cb),sizeDropdown.onChanged=function(a){_.trackEvent("Toolbar","Size",a)},vibrationDropdown=new sketch.Dropdown.create($(".vibration-dropdown")),vibrationDropdown.setValue(1),vibrationDropdown.onChanged=function(a){zb=db*a,_.trackEvent("Toolbar","Vibration",a)}}function j(a){var b=$(".color-dropdown .dropdown-title"),c=sketch.Util.hexToRGB(a),d="rgb("+Math.round(.8*c.r)+","+Math.round(.8*c.g)+","+Math.round(.8*c.b)+")";b.toggleClass("light",c.r+c.g>500||c.r+c.b>500||c.b+c.g>500),b.css({"background-color":a,"box-shadow":"1px 1px 0 "+d+", 2px 2px 0 "+d+", 3px 3px 0 "+d})}function k(){Gb=Y.offset(),Gb.left-=$(window).scrollLeft(),Gb.top-=$(window).scrollTop()}function l(a){m();var b=$('")},_.getSketchAsBlob=function(){var a=W.toDataURL("image/png");if(!a||!window.Blob||!window.atob)return null;var b,c=window.atob(a.split(",")[1]),d=a.split(",")[0].split(":")[1].split(";")[0],e=new ArrayBuffer(c.length),f=new Uint8Array(e);for(b=c.length;b--;)f[b]=c.charCodeAt(b);try{if(window.DataView)return new Blob([new DataView(e)],{type:d})}catch(g){}try{return new Blob([f],{type:d})}catch(g){}return null},_.injectSketch=function(a){a.perspective&&(Db=a.perspective,yb=a.perspective),a.amplitude&&(zb=a.amplitude,vibrationDropdown.setValue(Math.round(a.amplitude/db))),rb=a.lines,tb=0,sb=0;for(var b=0;b