var Menu = {} var Room = { loaded: false, ops: {}, settings: {}, settingsButtonBound: false, updateSettingMethods: { bg: function (url) { if (url === Room.settings.bg) return d.warn("clearing bg") $("#bg").fadeOut(500, function () { if (url) { d.warn("updating bg to "+url) $("#bg img").attr('src', url).bind("load", function(){$("#bg").fadeIn(2000);d.warn("bg updated")}) } }) }, title: function (s) { if (s.length === 0) s = " " $("#heading").html( s.replace(">",">").replace("<","<") ) }, topic: function (s) { if (s.length === 0) s = " " $("#topic").html( d.linkify(s.replace(">",">").replace("<","<")) ) }, phase: function (s) { if (s === 'light') { // turn on lookit stylesheet } else { // turn off lookit stylesheet } }, bgcolor: function (s) { if (s) $('body').css("background-color", s) } }, updateSetting: function (k, v) { d.warn( "update setting: "+k ) $("room-"+k).val(v) if (k in Room.updateSettingMethods) var f = Room.updateSettingMethods[k](v) Room.settings[k] = v }, settingsOpen: function () { d.warn("ROOM SETTINGS LOAD") $("#room-id").html(Room.id) $("#room-name").html(Room.name) $("#room-path").html(Room.path) $("#room-title").val(Room.settings['title']) $("#room-topic").val(Room.settings['topic']) $("#room-phase").val(Room.settings['phase']) $("#room-bg").val(Room.settings['bg']) $("#room-bgcolor").val(Room.settings['bgcolor']) $("#room-plant").val(Room.settings['plant']) $("#room-flower").val(Room.settings['flower']) $("#room-updater").html(Room.settings['updater']) if (! Room.settingsButtonBound) { Room.settingsButtonBound = true $("#room-settings-save").bind("click", Room.settingsSaveClick) } $("#room-settings-unload").bind("click", Room.settingsClose) if (Auth.access > 0) $("#room-mod-tag").html("Moderate room") else $("#room-mod-tag").html("") d.warn("LOADED") }, settingsClose: function () { d.warn("ROOM SETTINGS UNLOAD") Room.settingsButtonBound = false $("#room-settings-save").unbind("click") }, settingsKeys: ["title","topic","bg"], last_bg: "", settingsSaveClick: function () { $("#room-settings-save").unbind("click") var set = [] if (Room.ops !== false) { if (Auth.access < 1 && !(Auth.username in Room.ops)) { Menu.settings.close() return } } Room.last_bg = Room.settingsKeys['bg'] for (i in Room.settingsKeys) { var k = Room.settingsKeys[i] var v = d.sanitize( $("#room-"+k).val() ) Room.updateSetting(k, v) set.push(k+"\t"+v) } set.push("updater\t"+Auth.username) var s = set.join("\n") $.post(API.URL.room.settings, {room: Room.name, session: Auth.session, settings: s}, Room.settingsCallback) Menu.settings.close() }, settingsCallback: function (raw) { var lines = API.parse("/room/say", raw) if (! lines) return if (lines[0].indexOf("OK") !== -1) { d.warn("settings updated: "+lines.shift()) $("#room-updater").hide().html("you!").fadeIn(500) } else if (lines[0].indexOf("BG_SIZE") !== -1) { var partz = lines[0].split("\t") setTimeout('Room.updateSettingMethods.bg(Room.last_bg)', 2000) alert("Background too large!\n\nYour image: "+ partz[2]+" bytes\nMax size: " + partz[3] + " bytes") } else if (lines[0].indexOf("BG_DATA") !== -1) { setTimeout('Room.updateSettingMethods.bg(Room.last_bg)', 2000) alert("Unable to retrieve background image") } $("#room-settings-save").bind("click", Room.settingsSaveClick) }, connect: function () { var videoKey = '' var hash = document.location.hash if (hash.indexOf("#") !== -1) hash = hash.substr(1) var partz = hash.split("&") for (i in partz) { var pair = partz[i].split("=") if (pair[0] === "v") videoKey = pair[1] } d.warn("JOINING ROOM "+Room.name) $.ajax({ type: 'POST', url: API.URL.room.join, data: {'room':Room.name,'session':Auth.session,'enqueue':videoKey}, timeout: 2000, }).success(Room.joinCallback).error(Room.joinErrorCallback) }, joinErrorCallback: function (jqXHR, textStatus, errorThrown) { d.warn("JOIN ERROR") if (Room.loaded) return if (textStatus === "timeout") Room.connect() else Auth.load() }, joinCallback: function (raw) { var lines = API.parse("/room/join", raw) if (!lines){ d.error("UNABLE TO LOAD ROOM"); setTimeout(Room.load, 500); return; } var u = lines.shift().split("\t") if (u[0] === '0') return Auth.load() d.warn("JOINED ROOM") Auth.unload() Auth.userid = u[0] Auth.username = u[1] Auth.access = u[2] d.joy("logged in as "+Auth.username) Lastlog.update(lines.shift()) Chat.store(lines) d.warn("__________") d.warn("__________") d.warn("__________") Room.load() d.warn("__________") d.warn("__________") d.warn("__________") }, load: function () { d.warn("LOAD ROOM") $("#loading").fadeOut(500, function() { Background.load() Player.init() VideoChat.init() Chat.poll() }) $("#loading").fadeOut(1500, Room.loadFinish) }, loadFinish: function () { setTimeout("d.scrollToBottom('#chat')", 500) $("#logo").show() $("#logobg,#logobar").show() $("#likebutton").css("display", "inline-block") $("#player").show() $("#playlist").show() $("#playlistbg").show() $("#form").show() $("#formbg").show() $("#chat").fadeIn(200) d.scrollToBottom("#chat") $("#chatbg").show() $("#lastlogbox").show() $("#lastlogbg").show() Keyboard.enter = Chat.say $("#chat-message").bind("focus", Keyboard.focusTextarea) $("#chat-message").bind("blur", Keyboard.blurTextarea) $("#chat-message").focus() Keyboard.focusTextarea() $("#chat-send").bind("click", Chat.say) $("#fullscreen").bind("click", Viewport.fullscreenOn) $("#sitez").show() $("#logout").click(Auth.logout) if (Room.name === "feederbleeder") { $("#heading").css({ "color": "#ff3333" }) // Viewport.fullscreenOn() } //else Viewport.standardResize() // $(".ytlink").live("click", Player.ytLinkClick, false) if (Auth.access > 0) { // var div = $("