2015-05-01 09:32:37 -04:00
// Simulate the bare minimum of the view that exists on the main site
var Scratch = Scratch || { } ;
Scratch . FlashApp = Scratch . FlashApp || { } ;
function handleEmbedStatus ( e ) {
$ ( '#scratch-loader' ) . hide ( ) ;
2015-05-01 15:50:11 -04:00
var scratch = $ ( '#editor' ) ;
2015-05-01 09:32:37 -04:00
if ( ! e . success ) {
scratch . css ( 'marginTop' , '10' ) ;
scratch . find ( 'IMG.proj_thumb' ) . css ( 'width' , '179px' ) ;
scratch . find ( 'DIV.scratch_unsupported' ) . show ( ) ;
scratch . find ( 'DIV.scratch_loading' ) . hide ( ) ;
} else {
Scratch . FlashApp . ASobj = scratch [ 0 ] ;
}
}
// enables the SWF to log errors
function JSthrowError ( e ) {
if ( window . onerror ) window . onerror ( e , 'swf' , 0 ) ;
else console . error ( e ) ;
}
function JSeditorReady ( ) {
try {
handleParameters ( ) ;
return true ;
} catch ( error ) {
console . error ( error . message , "\n" , error . stack ) ;
throw error ;
}
}
function JSprojectLoaded ( ) {
loadExtensionQueue ( ) ;
}
var extensionQueue = [ ] ;
function handleParameters ( ) {
var project ;
var queryString = window . location . search . substring ( 1 ) ;
var queryVars = queryString . split ( /[&;]/ ) ;
for ( var i = 0 ; i < queryVars . length ; i ++ ) {
var nameVal = queryVars [ i ] . split ( '=' ) ;
switch ( nameVal [ 0 ] ) {
case 'ext' :
extensionQueue . push ( nameVal [ 1 ] ) ;
break ;
case 'proj' :
project = nameVal [ 1 ] ;
break ;
}
}
if ( project ) {
Scratch . FlashApp . ASobj . ASloadSBXFromURL ( project ) ;
}
else {
loadExtensionQueue ( ) ;
}
}
function loadExtensionQueue ( ) {
for ( var i = 0 ; i < extensionQueue . length ; ++ i ) {
var extensionURL = extensionQueue [ i ] ;
ScratchExtensions . loadExternalJS ( extensionURL ) ;
}
extensionQueue = [ ] ;
}
var flashVars = {
autostart : 'false' ,
extensionDevMode : 'true' ,
server : encodeURIComponent ( location . host ) ,
cloudToken : '4af4863d-a921-4004-b2cb-e0ad00ee1927' ,
cdnToken : '34f16bc63e8ada7dfd7ec12c715d0c94' ,
urlOverrides : {
sitePrefix : "http://scratch.mit.edu/" ,
siteCdnPrefix : "http://cdn.scratch.mit.edu/" ,
assetPrefix : "http://assets.scratch.mit.edu/" ,
assetCdnPrefix : "http://cdn.assets.scratch.mit.edu/" ,
projectPrefix : "http://projects.scratch.mit.edu/" ,
projectCdnPrefix : "http://cdn.projects.scratch.mit.edu/" ,
internalAPI : "internalapi/" ,
siteAPI : "site-api/" ,
staticFiles : "scratchr2/static/"
} ,
inIE : ( navigator . userAgent . indexOf ( 'MSIE' ) > - 1 )
} ;
var params = {
allowscriptaccess : 'always' ,
allowfullscreen : 'true' ,
wmode : 'direct' ,
menu : 'false'
} ;
$ . each ( flashVars , function ( prop , val ) {
if ( $ . isPlainObject ( val ) )
flashVars [ prop ] = encodeURIComponent ( JSON . stringify ( val ) ) ;
} ) ;
swfobject . switchOffAutoHideShow ( ) ;
2015-05-01 15:50:11 -04:00
swfobject . embedSWF ( 'Scratch.swf' , 'editor' , '100%' , '100%' , '11.7.0' , 'libs/expressInstall.swf' ,
2015-05-01 09:32:37 -04:00
flashVars , params , null , handleEmbedStatus ) ;
2015-05-05 16:53:44 -04:00
2015-05-06 10:18:15 -04:00
/* File uploads */
function sendFileToFlash ( ) {
var file = this . files [ 0 ] ;
console . log ( "Got file for Flash" , file ) ;
}
$ ( "[data-action='load-file']" ) . click ( function ( e ) {
$ ( '<input type="file" />' ) . on ( 'change' , sendFileToFlash ) . click ( ) ;
} ) ;
function sendURLtoFlash ( url ) {
console . log ( "Got URL for Flash" , url )
}
$ ( "[data-action='load-url'] button" ) . click ( function ( e ) {
sendURLtoFlash ( $ ( e . target ) . siblings ( 'input[type="text"]' ) . val ( ) ) ;
} ) ;
2015-05-06 10:17:51 -04:00
/* Page switching */
$ ( "[data-staticlink]" ) . click ( function ( e ) {
e . preventDefault ( ) ;
showPage ( $ ( this ) . attr ( "data-staticlink" ) ) ;
} ) ;
2015-05-05 16:53:44 -04:00
function showPage ( path ) {
var toHide = "body > main, body > main > article, #editor" ;
var toShow = "#" + path ;
$ ( toHide ) . hide ( ) ;
2015-05-06 09:53:59 -04:00
$ ( "body > main, body > main > article" ) . has ( toShow ) . show ( ) ;
2015-05-05 16:53:44 -04:00
$ ( toShow ) . show ( ) ;
}
2015-05-06 09:53:59 -04:00
var initialID = "home" ;
function initPage ( ) {
if ( window . location . hash ) initialID = window . location . hash . substr ( 1 ) ;
showPage ( initialID ) ;
}
$ ( initPage ) ;