2014-01-03 13:32:13 -05:00
<!doctype html>
<!-- [if lt IE 7]> <html class="lt - ie10 lt - ie9 lt - ie8 lt - ie7" lang="en"> <![endif] -->
<!-- [if IE 7]> <html class="lt - ie10 lt - ie9 lt - ie8" lang="en"> <![endif] -->
<!-- [if IE 8]> <html class="lt - ie10 lt - ie9" lang="en"> <![endif] -->
<!-- [if IE 9]> <html class="lt - ie10" lang="en"> <![endif] -->
<!-- [if !IE]><! --> < html lang = "en" > <!-- <![endif] -->
< head >
<!-- [if IE]><meta http - equiv="X - UA - Compatible" content="IE=edge,chrome=1"><![endif] -->
<!-- <script src="http://ie.microsoft.com/TestDrive/HTML5/CompatInspector/inspector.js"></script> --> <!-- for testing IE compatibility issues -->
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
2014-03-21 20:06:51 -04:00
< title > CodeCombat - Learn how to code by playing a game< / title >
2014-01-03 13:32:13 -05:00
< meta name = "description" content = "Learn programming with a multiplayer live coding strategy game. You're a wizard, and your spells are JavaScript. Free, open source HTML5 game!" >
< meta property = "og:title" content = "CodeCombat: Multiplayer Programming" >
< meta property = "og:url" content = "http://codecombat.com" >
< meta property = "og:type" content = "game" >
< meta property = "og:image" content = "http://codecombat.com/images/pages/home/front_screenshot_01.png" >
< meta property = "og:site_name" content = "CodeCombat" >
< meta name = "twitter:card" content = "summary" >
< meta name = "twitter:title" content = "CodeCombat: Multiplayer Programming" >
< meta name = "twitter:url" content = "http://codecombat.com" >
< meta name = "twitter:site" content = "CodeCombat" >
< meta name = "twitter:image:src" content = "http://codecombat.com/images/pages/base/logo_square_250.png" >
< meta name = "twitter:description" content = "Learn programming with a multiplayer live coding strategy game. You're a wizard, and your spells are JavaScript. Free, open source HTML5 game!" >
< link href = "https://plus.google.com/115285980638641924488" rel = "publisher" / >
< link rel = "shortcut icon" href = "/images/favicon.ico" >
< link rel = "stylesheet" href = "/stylesheets/app.css" >
2014-03-19 00:11:11 -04:00
< script src = "/lib/ace/ace.js" > < / script >
2014-01-03 13:32:13 -05:00
<!-- [if IE 9]> <script src="/javascripts/vendor_with_box2d.js"></script> <![endif] -->
<!-- [if !IE]><! --> < script src = "/javascripts/vendor.js" > < / script > <!-- <![endif] -->
< script src = "/javascripts/app.js" > < / script > <!-- it's all Backbone! -->
2014-04-02 16:12:24 -04:00
< script >
window.userObject = "userObjectTag";
< / script >
2014-01-03 13:32:13 -05:00
< script > require ( 'initialize' ) ; < / script >
2014-04-23 14:25:36 -04:00
<!-- begin LinkedIn code -->
< script >
window.linkedInAsyncInit = function() {
Backbone.Mediator.publish('linkedin-loaded');
};
< / script >
< script type = "text/javascript" src = "http://platform.linkedin.com/in.js" >
api_key: 75v8mv4ictvmx6
onLoad: linkedInAsyncInit
authorize: true
< / script >
<!-- end LinkedIn code -->
2014-01-03 13:32:13 -05:00
<!-- begin segment.io code -->
< script type = "text/javascript" >
var analytics=analytics||[];(function(){var e=["identify","track","trackLink","trackForm","trackClick","trackSubmit","page","pageview","ab","alias","ready","group"],t=function(e){return function(){analytics.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var n=0;n< e.length ; n + + ) analytics [ e [ n ] ] = t ( e [ n ] ) } ) ( ) , analytics . load = function(e){var t = document.createElement("script");t.type="text/javascript",t.async=!0,t.src=("https:"===document.location.protocol?"https://":"http://")+"d2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/"+e+"/analytics.min.js";var n = document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};
analytics.load("jsjzx9n4d2");
< / script >
<!-- end segment.io code -->
<!-- begin olark code -->
< script data-cfasync = "false" type = 'text/javascript' > / * < ! [ C D A T A [ * / w i n d o w . o l a r k | | ( f u n c t i o n ( c ) { v a r f = w i n d o w , d = d o c u m e n t , l = f . l o c a t i o n . p r o t o c o l = = " h t t p s : " ? " h t t p s : " : " h t t p : " , z = c . n a m e , r = " l o a d " ; v a r n t = f u n c t i o n ( ) {
f[z]=function(){
(a.s=a.s||[]).push(arguments)};var a=f[z]._={
},q=c.methods.length;while(q--){(function(n){f[z][n]=function(){
f[z]("call",n,arguments)}})(c.methods[q])}a.l=c.loader;a.i=nt;a.p={
0:+new Date};a.P=function(u){
a.p[u]=new Date-a.p[0]};function s(){
a.P(r);f[z](r)}f.addEventListener?f.addEventListener(r,s,false):f.attachEvent("on"+r,s);var ld=function(){function p(hd){
hd="head";return["< ",hd,">< /",hd,">< ",i,' onl' + 'oad="var d=',g,";d.getElementsByTagName('head')[0].",j,"(d.",h,"('script')).",k,"='",l,"//",a.l,"'",'"',">< /",i,">"].join("")}var i="body",m=d[i];if(!m){
return setTimeout(ld,100)}a.P(1);var j="appendChild",h="createElement",k="src",n=d[h]("div"),v=n[j](d[h](z)),b=d[h]("iframe"),g="document",e="domain",o;n.style.display="none";m.insertBefore(n,m.firstChild).id=z;b.frameBorder="0";b.id=z+"-loader";if(/MSIE[ ]+6/.test(navigator.userAgent)){
b.src="javascript:false"}b.allowTransparency="true";v[j](b);try{
b.contentWindow[g].open()}catch(w){
c[e]=d[e];o="javascript:var d="+g+".open();d.domain='"+d.domain+"';";b[k]=o+"void(0);"}try{
var t=b.contentWindow[g];t.write(p());t.close()}catch(x){
b[k]=o+'d.write("'+p().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}a.P(2)};ld()};nt()})({
loader: "static.olark.com/jsclient/loader0.js",name:"olark",methods:["configure","extend","declare","identify"]});
/* custom configuration goes here (www.olark.com/documentation) */
olark.identify('1451-787-10-5544');/*]]>*/< / script >
<!-- end olark code -->
2014-04-23 14:25:36 -04:00
2014-01-03 13:32:13 -05:00
< / head >
2014-04-07 17:34:36 -04:00
< body class = "nano clearfix" >
2014-01-03 13:32:13 -05:00
< div id = "fb-root" > < / div >
<!-- begin facebook code -->
< script >
// Additional JS functions here
window.fbAsyncInit = function() {
2014-03-26 16:50:01 -04:00
Backbone.Mediator.publish('fbapi-loaded');
2014-01-03 13:32:13 -05:00
FB.init({
2014-03-20 20:02:25 -04:00
appId : document.location.origin === 'http://localhost:3000' ? '607435142676437' : '148832601965463', // App ID
channelUrl : document.location.origin +'/channel.html', // Channel File
2014-01-03 13:32:13 -05:00
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// This is fired for any auth related change, such as login, logout or session refresh.
FB.Event.subscribe('auth.authResponseChange', function(response) {
// Here we specify what we do with the response anytime this event occurs.
if (response.status === 'connected') {
// They have logged in to the app.
Backbone.Mediator.publish('facebook-logged-in', {response:response});
} else if (response.status === 'not_authorized') {
// The person is logged into Facebook, but not into the app.
} else {
// The person is not logged into Facebook
}
});
};
// Load the SDK asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
//js.src = "//connect.facebook.net/en_US/all/debug.js";
ref.parentNode.insertBefore(js, ref);
}(document));
< / script >
<!-- end facebook code -->
< header class = "header-container" id = "header-container" > < / header >
2014-04-02 17:40:06 -04:00
< div id = "page-container" class = "nano-content" > < / div >
2014-03-19 00:11:11 -04:00
2014-04-02 17:40:06 -04:00
< div id = "modal-wrapper" class = "modal-content" > < / div >
2014-01-03 13:32:13 -05:00
<!-- begin google api/plus code -->
< script type = "text/javascript" >
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js?onload=onGPlusLoaded';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
function onGPlusLoaded() {
Backbone.Mediator.publish('gapi-loaded');
}
function signinCallback(authResult) {
if (authResult['access_token']) {
Backbone.Mediator.publish('gplus-logged-in', authResult)
}
}
< / script >
<!-- end google api/plus code -->
<!-- begin twitter code -->
< script >
(function (d,s,id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if(!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + '://platform.twitter.com/widgets.js';
fjs.parentNode.insertBefore(js, fjs);
}
})(document, 'script', 'twitter-wjs');
< / script >
<!-- end twitter code -->
<!-- begin filepicker.io code -->
< script type = "text/javascript" >
(function(a){if(window.filepicker){return}var b=a.createElement("script");b.type="text/javascript";b.async=!0;b.src=("https:"===a.location.protocol?"https:":"http:")+"//api.filepicker.io/v1/filepicker.js";var c=a.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c);var d={};d._queue=[];var e="pick,pickMultiple,pickAndStore,read,write,writeUrl,export,convert,store,storeUrl,remove,stat,setKey,constructWidget,makeDropPane".split(",");var f=function(a,b){return function(){b.push([a,arguments])}};for(var g=0;g< e.length ; g + + ) { d [ e [ g ] ] = f ( e [ g ] , d . _queue ) } window . filepicker = d})(document);
< / script >
<!-- end filepicker.io code -->
< / body >
< / html >