//////////////////// //Hash table //////////////////// var chatIcons = new Array(); chatIcons[':)'] = "face-smile.png"; chatIcons[':('] = "face-sad.png"; chatIcons['(B)'] = "beer.png"; chatIcons['(C)'] = "clock.png"; chatIcons['(P)'] = "present.png"; chatIcons[':P']= "face-raspberry.png"; chatIcons[':Z']= "face-tired.png"; chatIcons['(R)']= "rain.png"; chatIcons['(S)']= "sun.png"; chatIcons[';)']= "face-wink.png"; /////////////////////////////////////////////////////// // Parser functions // Allow new features in chat msg like links, images, emoticons, ... /////////////////////////////////////////////////////// //Patterns var html_tag_pattern=/.*\<[^>]+>.*/g var simple_word_pattern=/^[aA-zZ0-9]+$/g var http_urls_pattern=/(http(s)?:\/\/)([aA-zZ0-9%=_&+?])+([./-][aA-zZ0-9%=_&+?]+)*[/]?/g var www_urls_pattern = /(www[.])([aA-zZ0-9%=_&+?])+([./-][aA-zZ0-9%=_&+?]+)*[/]?/g var icons_a_pattern=/\([A-Z]\)/g var icons_b_pattern=/((:|;)([()A-Z]))/g var youtube_video_pattern=/(http(s)?:\/\/)?(((youtu.be\/)([aA-zZ0-9]+))|((www.youtube.com\/watch\?v=)([aA-z0-9Z&=.])+))/g function getParsedContent(content,fromUser){ if (fromUser){ var chatTextclass = "ownChatText" } else { var chatTextclass = "guestChatText" } return ("" + parseContent(content) + ""); } function parseContent(content){ if (content.match(html_tag_pattern)!=null){ content = content.replace(/>/g, ">"); content = content.replace(/" + content + "" } words = content.split(" "); for(i=0; i"; } return icon } function buildUrlLink(url,name){ return "" + name + ""; } function buildImageLink(url){ return "" + "" + ""; } function buildYoutubeVideoLink(url){ //Get youtube video id var youtube_video_id=url.split(/v\/|v=|youtu\.be\//)[1].split(/[?&]/)[0]; var youtube_api_url = "http://gdata.youtube.com/feeds/api/videos/" + youtube_video_id //Get info from the video $.ajax({ type: "GET", url: youtube_api_url, cache: false, dataType:'jsonp', success: function(data){ var url_name = url; var youtube_video_thumbnail = ""; //Video title var video_title = $(data).find("media\\:title") if (video_title.length > 0) { //url_name = url + " (" + $(video_title).text() + ")"; url_name = $(video_title).text() } //Thumbnails var thumbnails = $(data).find("media\\:thumbnail") if (thumbnails.length>0){ var thumbnail_url = $(thumbnails[0]).attr("url") if (thumbnail_url!=null){ youtube_video_thumbnail = "

"; } } //Replace video link $("a[youtube_id=" + youtube_video_id + "]").html(buildUrlLink(url,url_name)+youtube_video_thumbnail); }, error: function(xOptions, textStatus){ //Handle errors } }); return "" + url + ""; } function buildRegex(word){ word = word.replace(")","\\)") word = word.replace("(","\\(") var pattern = "(" + word + ")"; pattern = buildPattern(pattern) return (new RegExp(pattern,'g')); } function buildPattern(pattern){ //Escape pattern special characters pattern = pattern.replace("+","\\+") pattern = pattern.replace("?","\\?") return pattern } function getUrlType(url){ if (url.match(youtube_video_pattern)!=null){ return "video-youtube" } var urlArray = url.split("."); if (urlArray!=null && urlArray.length>0){ var extension= urlArray[urlArray.length-1] } else { var extension = null; } switch(extension){ case "jpg": return "image" break; case "png": return "image" break; case "gif": return "image" break; default: return "link" } } /////////////////////////////////////////////////////// // Parsing user titles /////////////////////////////////////////////////////// function getParsedName(name, fromUser){ if (fromUser){ var chatTextclass = "ownName" } else { var chatTextclass = "guestName" } return ("" + name + ""); }