var VIMEOregexp = /^(\bhttps?:\/\/)(www.)?vimeo.com\/([0-9]+).*$/i var Chat = { timer: null, oldChat: {}, oldVideo: {}, lastPoll: 0, delay: 1000, delayShort: 1000, delayLong: 5000, messages: {}, callback: false, parse: function (row) { var s = '' + row[2] + " " s += Chat.parseWords(row[3]) s += "
" return s }, parseWords: function (raw) { if (! raw) return "" var words = raw.split(" ") var s = "" for (i in words) { var word = words[i] if (word.indexOf("http") !== -1) { if (word.indexOf("youtube.com/watch?") !== -1) { var ytid = "youtube_"+Youtube.getYtid(word) var txt if (ytid in Player.videos) txt = Player.videos[ytid].title else txt = word s += ''+txt+' ' } else if (word.indexOf("youtube.com/v/") !== -1) { var index = word.indexOf("/v/") var ytid = "youtube_"+word.substr(index+3,11) var txt if (ytid in Player.videos) txt = Player.videos[ytid].title else txt = word s += ''+txt+' ' } else if (word.indexOf("youtu.be") !== -1) { var ytid = "youtube_"+word.substr(16,11) var txt if (ytid in Player.videos) txt = Player.videos[ytid].title else txt = word s += ''+txt+' ' } // http://www.youtube.com/user/ahchachachacha#p/f/28/1GSBekxLR1E else if (word.indexOf("youtube.com/user") !== -1) { var ytid = "youtube_"+word.substr(-11) var txt if (ytid in Player.videos) txt = Player.videos[ytid].title else txt = word s += ''+txt+' ' } else if (word.indexOf("vimeo.com") !== -1) { var vimeoid = word.replace(VIMEOregexp, "vimeo_$3") if (vimeoid in Player.videos) txt = Player.videos[vimeoid].title else txt = word s += ''+txt+' ' } else if (word.indexOf("soundcloud.com") !== -1) { var scid = "soundcloud_" + $.md5(word) if (scid in Player.videos) txt = Player.videos[scid].title else txt = word s += ''+txt+' ' } else if (word.indexOf(".jpeg") !== -1 || word.indexOf(".JPG") !== -1 || word.indexOf(".GIF") !== -1 || word.indexOf(".PNG") !== -1 || word.indexOf(".JPEG") !== -1 || word.indexOf(".jpg") !== -1 || word.indexOf(".gif") !== -1 || word.indexOf(".png") !== -1) { s += '' } else if (word.indexOf("scannerjammer.com/profile") !== -1) { var username = word.substr( word.indexOf("profile")+8 ).replace("/","") s += '@'+username+'' } // else if (word.indexOf("@") === 0 && word.length > 2) // { // } else { var poffset = word.indexOf('//') var linktext = word.substr(poffset+2, word.indexOf('/', poffset+2) - 2).replace("www.","").replace(/\/+$/,"") s += ''+linktext+' ' } } else if (word.indexOf(".com") !== -1 || word.indexOf(".net") !== -1 || word.indexOf(".org") !== -1 || word.indexOf(".us") !== -1 || word.indexOf(".nu") !== -1 || word.indexOf(".uk") !== -1 || word.indexOf(".fr") !== -1 || word.indexOf(".de") !== -1 || word.indexOf(".fm") !== -1) { var txt = word.replace("www.","") s += ''+txt+' ' } else s += word + " " } return s }, store: function (lines) { var newVideos = [] var newChat = [] var postponeScroll = false for (i in lines) { if (! lines[i]) continue row = lines[i].split("\t") if (row[0] === 'VIDEO') { row.shift() if (row[0] in Chat.oldVideo) continue Chat.oldVideo[row[0]] = row Playlist.enqueueOldVideoFormat([row]) } else if (row[0] === 'ROOM') { Room.updateSetting(row[1],row[2]) } else if (row[0] === 'LIKE') { username = row[1] Like.enqueue(username) } else if (row[0] === 'CAM') { VideoChat.updateCount(row[1]) } else { // 0 id 1 date 2 user 3 msg if (row[0] in Chat.oldChat) continue Chat.oldChat[row[0]] = row var c = Chat.parse(row) if (c.indexOf("> POSTPONING") } if (row[2] === Auth.username && $.md5(row[3]) in Chat.messages) continue newChat.push(c) } } if (newChat.length) { $("#chat").append(newChat.join("")) if (postponeScroll) setTimeout('d.scrollToBottom("#chat")', 2000) else d.scrollToBottom("#chat") } }, say: function () { d.act("+ sent message") var msg = d.sanitize( $("#chat-message").val() ) $("#chat-message").val("") if (! msg) return if (msg === "debug=1") { $("#msg").show(); d.scrollToBottom("#msg"); return } if (msg === "debug=0") { $("#msg").hide(); return } if (msg === "poll=0") { d.error("+ DISABLED POLLING"); clearTimeout(Chat.timer); return} var hash = $.md5(msg) Chat.messages[hash] = true var newrow = [0, 0, Auth.username, msg] var newdiv = Chat.parse(newrow) $("#chat").append(newdiv) // if (Chat.callback) // Chat.callback(1) if (newdiv.indexOf(""+names[i]+"" } $("#lastlog").html(s) $("#lastlogbg").css("height", $("#lastlogbox").height()) } }