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],row[0])
s += "
"
return s
},
parseWords: function (raw,id)
{
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 +=
''+
'
'+
'
like'
}
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())
}
}