// Generated by CoffeeScript 1.3.3 (function() { define(['backbone', 'marionette', 'vent', 'app.lib/router', 'app.lib/panningRegion', 'app.lib/realtimeController', 'app.lib/audioController', 'views/widgets/headerView', 'views/sidebar/sidebarView', 'models/mix/mixCollection'], function(Backbone, Marionette, vent, DssRouter, PanningRegion, RealtimeController, AudioController, HeaderView, SidebarView, MixCollection) { var App; App = new Marionette.Application(); App.audioController = new AudioController(); App.realtimeController = new RealtimeController(); App.realtimeController.startSocketIO(); App.vent.on("routing:started", function() { var enablePushState, pushState; console.log("App(vent): routing:started"); enablePushState = true; pushState = !!(enablePushState && window.history && window.history.pushState); Backbone.history.start({ pushState: pushState, hashChange: true }); return true; }); App.addRegions({ headerRegion: "#header", contentRegion: { selector: "#content" }, footerRegion: "#footer", sidebarRegion: "#sidebar" }); App.addInitializer(function() { console.log("App: routing starting"); App.Router = new DssRouter(); return App.vent.trigger("routing:started"); }); App.addInitializer(function() { $(document).on("click", "a[href]:not([data-bypass])", function(evt) { var href, root; href = { prop: $(this).prop("href"), attr: $(this).attr("href") }; root = location.protocol + "//" + location.host + (App.root || '/'); if (href.prop.slice(0, root.length) === root) { evt.preventDefault(); App.Router.navigate(href.attr, true); return true; } }); return true; }); App.addInitializer(function() { this.listenTo(vent, "mix:favourite", function(model) { console.log("App(vent): mix:favourite"); model.save('favourited', !model.get('favourited'), { patch: true }); return true; }); this.listenTo(vent, "mix:like", function(model) { console.log("App(vent): mix:like"); model.save('liked', !model.get('liked'), { patch: true }); return true; }); return this.listenTo(vent, "mix:share", function(mode, model) { console.log("App(vent): mix:share"); if (mode === "facebook") { social.sharePageToFacebook(model); } else if (mode === "twitter") { social.sharePageToTwitter(model); } return true; }); }); App.headerRegion.show(new HeaderView()); return App; }); }).call(this);