String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }; function trim(str) { return str.trim(); } function strip_special_chars(str) { return str.replace(/[^a-zA-Z0-9\-]+/g,''); } function update_user_box(src) { if (once || isLoggedIn) return; if (src!=1) { var user_box = document.getElementById("authDiv"); user_box.innerHTML = "
" +"
" +"
" +"Logout of Facebook
 " +"
"; } FB.XFBML.Host.parseDomTree();//this line parses the fbml. remove this & fbml dont exec var setSrcFunc = function(result,exception) { if (src == null) src = 0; getInfo(result, exception, src); } fb_api.users_getInfo(fb_api.get_session().uid, ['first_name','last_name','name','sex','pic_small','timezone', 'proxied_email', 'profile_url', 'pic'], setSrcFunc); fb_api.users_hasAppPermission('email', function(result) { if (result == 0) { FB.Connect.showPermissionDialog('email'); } else {} }); } function getInfo(result,exception,src) { if (!once) { fb_login(fb_api.get_session().uid, result[0].first_name, result[0].sex.substring(0,1).toUpperCase(), result[0].profile_url, result[0].proxied_email, result[0].pic, src); once = true; } } function fb_login(fb_id, fb_display_name, fb_gender, fb_url, fb_email, fb_pic, src) { var sUrl = BASE_URL + 'm=getUserByFBId&web=1&fbid=' + fb_id + '&displayName=' + fb_display_name + '&gender=' + fb_gender + '&fbUrl=' + fb_url + '&uid=' + getUID() + '&email='+urlencode(fb_email) + '&picurl=' + fb_pic; var objInfo; var callback = { success: function(o) { isLoggedIn = true; var exdate=new Date(); if (expiredays==null) exdate.setDate(exdate.getDate()+30); else exdate.setDate(exdate.getDate()+expiredays); set_cookie("spidrfbid", fb_id, exdate.toGMTString()); if (src==1) window.location = 'weblist.php'; else if (src!=3){ joeInfo = eval('YAHOO.lang.JSON.parse(o.responseText).getUserByFBId'); isLoggedIn = true; Dom.get("signupLink").style.display='none'; Dom.get("settingsLink").style.display='block'; addUidToSess(); fetchPals(); fetchFavs(true); initInit(); } }, failure: function(o) {setStatus('the Spidr server is acting weird, please try again. Sorry about this :( .');}, argument: {} } var transaction = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, null); } function formatDate(spidrDate) { var dateTimeItems = spidrDate.split(" "); var dateStr = dateTimeItems[0]; var timeStr = dateTimeItems[1]; var dateItems = dateStr.split("-"); var timeItems = timeStr.split(":"); var localDate = new Date(); var localOffset = localDate.getTimezoneOffset(); var mins = parseInt(timeItems[1]) + (localOffset - 480)/60;//480 = PST offset var d = new Date(); d.setYear(dateItems[0]); d.setMonth(dateItems[1]-1); d.setDate(dateItems[2]); d.setHours(timeItems[0]); d.setMinutes(mins); d.setSeconds(timeItems[2]); return d; } function getReadableFormat(aDate, format) { var d = new Date(); var newFormat = format; var one_day = 1000*60*60*24; var diff = (d.getTime()-aDate.getTime())/(one_day); if (diff <= 1) { if (aDate.getDate()==d.getDate()) { newFormat = newFormat.replace(/"on" ddd, mmm dS/, '"Today"'); } else { newFormat = newFormat.replace(/"on" ddd, mmm dS/, '"Yesterday"'); } } return newFormat; } function setStatus(status, loading, stype) { if (stype!=2) document.getElementById('theStatus').className = 'statusDiv'; else document.getElementById('theStatus').className = "errorDiv"; Dom.get('theStatus').style.visibility = 'visible'; Dom.get('clearBar').style.visibility = 'visible'; if (loading==null || !loading) { Dom.get('theStatus').innerHTML = status; } else if (loading){ Dom.get('loadingBar').style.visibility = 'visible'; Dom.get('theStatus').innerHTML = ' '+status; } var t = YAHOO.lang.later(30000, null, clearStatus, null, true); } function clearStatus() { Dom.get('theStatus').innerHTML = ''; Dom.get('loadingBar').style.visibility = 'hidden'; Dom.get('theStatus').style.visibility = 'hidden'; Dom.get('clearBar').style.visibility = 'hidden'; } function getSpidrTime() { var currentTime = new Date(); var sep = '-'; var time = currentTime.getFullYear() + sep + (currentTime.getMonth() + 1) + sep + currentTime.getDate() + sep + currentTime.getHours() + sep + currentTime.getMinutes() + sep + currentTime.getSeconds(); return time; } function fbs_click(url, t) { var zurl = 'http://www.facebook.com/sharer.php?t='+encodeURIComponent(t) + '&u='+encodeURIComponent(url); alert(zurl); window.open(zurl,'sharer','toolbar=0,status=0,width=626,height=436'); return false; } function GetThis(T, C, U, L) { var targetUrl = 'http://www.myspace.com/index.cfm?fuseaction=postto&' + 't=' + encodeURIComponent(T) + '&c=' + encodeURIComponent(C) + '&u=' + encodeURIComponent(U) + '&l=' + L; window.open(targetUrl); } function delicious(url, title) { window.open('http://del.icio.us/post?v=2&url='+encodeURIComponent(url)+'&title='+encodeURIComponent(title)); } function stumbleUpon(url, title) { window.open('http://www.stumbleupon.com/submit?url='+encodeURIComponent(url)+'&title='+encodeURIComponent(title)); } function mixx(url) { window.open('http://www.mixx.com/submit?page_url='+url); return false; } function sharewebOnFB (wname, wurl, wpicurl) { var comment_data = {'web':wname, 'wurl': wurl, "images":[{'src': wpicurl, 'href': wurl},{'src': 'http://ispidr.com/i/spidr-s.gif', 'href': 'http://ispidr.com'}]}; FB.Connect.showFeedDialog(134399992392, comment_data, null, null, null, FB.RequireConnect.promptConnect); return false; } function sharenewebOnFB (wname, wurl, wpicurl) { var comment_data = {'web':wname, 'wurl': wurl, "images":[{'src': wpicurl, 'href': wurl},{'src': 'http://ispidr.com/i/spidr-s.gif', 'href': 'http://ispidr.com'}]}; FB.Connect.showFeedDialog(134399992392, comment_data, null, null, null, FB.RequireConnect.promptConnect); return false; } var postMsgOnFB = function(msgId) { setStatus('Launching facebook share..'); var postUrl = BASE_URL + 'm=getMsg&web=1&uid='+getUID()+'&msgId='+msgId; var loader = new YAHOO.util.YUILoader({require: ["connection","json"], loadOptional: true, timeout: 10000, combine: true, onSuccess: function() { var callback = { success: function(o) { var objInfo = YAHOO.lang.JSON.parse(o.responseText); var wurl = "http://ispidr.com/web/"+objInfo.getMsg.zoneUrl; if (objInfo.getMsg.msgPicId >0) { var comment_data = {"web":objInfo.getMsg.zoneDisplayName, "creator": objInfo.getMsg.userDisplayName, "post":objInfo.getMsg.messageText, "wurl" : wurl, "images":[{'src': "http://ispidr.com/service/viewImgForWeb?wid="+objInfo.getMsg.zoneId, 'href': wurl}, {'src': "http://ispidr.com/service/view?id="+objInfo.getMsg.msgPicId, 'href': wurl}, {'src': 'http://ispidr.com/i/spidr-s.gif', 'href': 'http://ispidr.com'}] } } else { var comment_data = {"web":objInfo.getMsg.zoneDisplayName, "creator": objInfo.getMsg.userDisplayName, "post":objInfo.getMsg.messageText, "wurl" : wurl , "images":[{'src': 'http://ispidr.com/i/spidr-s.gif', 'href': 'http://ispidr.com'}] } } FB.Connect.showFeedDialog(134409692392, comment_data, null, null, null, FB.RequireConnect.promptConnect); }, failure: function(o) {alert('Error communicating with the server. Sorry about that!');}, argument: {} } var transaction = YAHOO.util.Connect.asyncRequest('GET', postUrl, callback, null); }}); loader.insert(); } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "="); if (c_start!=-1) { c_start=c_start + c_name.length+1; c_end=document.cookie.indexOf(";",c_start); if (c_end==-1) c_end=document.cookie.length; return unescape(document.cookie.substring(c_start,c_end)); } } return ""; } function set_cookie(cookie_name, cookie_value, exDateString) { document.cookie= cookie_name + "=" + cookie_value + ";expires=" + exDateString; } function delete_cookie (cookie_name) { var cookie_date = new Date ( ); // current date & time cookie_date.setTime ( cookie_date.getTime() - 1 ); document.cookie = cookie_name + "=; expires=" + cookie_date.toGMTString(); } function CL() { // container } function rgcode(lat, lon, callback) { if (GBrowserIsCompatible()) { var latlng = new GLatLng(lat, lon); geocoder.getLocations(latlng, function(response) { if (response && response.Status.code == 200) { var adminArea = response.Placemark[0].AddressDetails.Country.AdministrativeArea; var cl = new CL(); cl.lat = lat; cl.lon = lon; cl.addr = ''; cl.st = adminArea.AdministrativeAreaName; var locality = adminArea.SubAdministrativeArea!=null ? adminArea.SubAdministrativeArea.Locality : adminArea.Locality; if (locality!=null) { cl.city = locality.LocalityName; cl.zip = locality.PostalCode!=null ? locality.PostalCode.PostalCodeNumber : ''; if (locality.Thoroughfare!=null) { addrStr = locality.Thoroughfare.ThoroughfareName;//no thoroughfare means no street addrArr = addrStr.split(" "); var num = addrArr[0].replace('-', ''); if (!isNaN(num)) { cl.addr = addrArr[0]; cl.str = addrStr.replace(cl.addr, '').replace(/^\s+|\s+$/, ''); } else { cl.str = addrStr; } } } cl.toString = response.Placemark[0].address.replace(cl.addr, ''); } callback(cl); }); } else setStatus('Spidr suggests you upgrade to Firefox'); } function preventAccess() { alert( 'Please log in or sign up for a new account' ); if (e!=null) YAHOO.util.Event.preventDefault(e); } function esc(str) { if (str!=null) return str.replace(/['"]/g,'\\\''); return ''; } function clean(theString) { if (theString!=null) { theString+=''; return empty_str(theString).replace(/(\\+\')/g,'\''); } else return theString; } function empty_str(str) { if (str == null || str == '' || str == 'undefined') return ''; str = ''+str; return str.replace(/\[object Object\]/g, ''); } function isset(str) { return (str!=null && str!=''); } function track(url) { try { if(pageTracker) { pageTracker._trackPageview(url); } } catch (e) {} } function urlencode (clearString) { var output = ''; var x = 0; clearString = clearString.toString(); var regex = /(^[a-zA-Z0-9_.]*)/; while (x < clearString.length) { var match = regex.exec(clearString.substr(x)); if (match != null && match.length > 1 && match[1] != '') { output += match[1]; x += match[1].length; } else { if (clearString[x] == ' ') output += '+'; else { var charCode = clearString.charCodeAt(x); var hexVal = charCode.toString(16); output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase(); } x++; } } return output; } var UTUBE_EMBED = '
'; var reg = /\S+youtube\.com\/watch\?v=(\S+)\&*\S*/; function utubePreview(theMsg, previewType) {//TODO previewType is for size, for now not used. if (reg.test(theMsg)) { var match = reg.exec(theMsg); var vLink = match[0]; var vId = match[1]; var embed = UTUBE_EMBED.replace('',vId); theMsg = theMsg.replace(vLink, embed); } return theMsg; } function getHeight(type) { if (!isIE) { if (type=='relatedW' || type == 'nearbyW') return "200px"; } else return ""; } function postToTwitter(recStr, type) { window.open('/twitterLogin.php?recstr=' + recStr+'&type='+type,'Twitter Login', 'left=200,top=100,width=750,height=380,toolbar=0,resizable=1'); } var handleMainTabClose = function(e, tab) { YAHOO.util.Event.preventDefault(e); tabView.removeTab(tab); var tabler = theMap['messages'+tab.wid]; if (tabler!=null) tabler.getDataSource().clearInterval(tabler.intervalId); theMap['tab' + tab.wid] = null; if (isLoggedIn) { var sUrl= BASE_URL + 'm=disconnect&uid='+ joeInfo.joeId + '&wid=' + tab.wid; var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl); } }; function openWeb(wid, displayName, update) { var theTab = theMap['tab' + wid]; if (theTab != null) { tabView.set('activeTab', theTab); return; } var webTab = new YAHOO.widget.Tab( { label: clean(displayName)+'   X', dataSrc: 'web.php?wid='+wid+'&displayName='+displayName, cacheData: true, active: true} ); webTab.wid = wid;//added tabView.addTab(webTab); theMap['tab' + wid] = webTab; connect(wid); YAHOO.util.Event.on(webTab.getElementsByClassName('close')[0], 'click', handleMainTabClose, webTab); YAHOO.plugin.Dispatcher.delegate(webTab); } //Creates a marker whose info window displays the letter corresponding //to the given index. function createMarker(point, index, netId, webDisplayName) { // Create a lettered icon for this point using our icon class var letter = String.fromCharCode("A".charCodeAt(0) + index); var letteredIcon = new GIcon(baseIcon); letteredIcon.image = "i/marker"+ letter+".png"; // Set up our GMarkerOptions object markerOptions = { icon:letteredIcon, title:webDisplayName }; var marker = new GMarker(point, markerOptions); GEvent.addListener(marker, "click", function() { openWeb(netId, esc(webDisplayName)); }); return marker; } function formatAddr(locationType, address, street, city, state, zipcode) { if (locationType>5) { zipcode = (empty_str(zipcode) == '') ? '' : zipcode; loc = trim(address+' '+street,',') + ', '+(city=='0'?'':city)+', '+(state=='0'?'':state)+' '+zipcode; } else loc = (city=='0'?'':city)+', '+(state=='0'?'':state); return trim(loc, ','); } function fetchPhysicalLoc() { var callback = { success: function(o) { var loc = YAHOO.lang.JSON.parse(o.responseText).getCurrentLocation; var locstr = ((loc.mytag!=null) && (empty_str(loc.mytag) !='')) ?clean(loc.mytag) + '@' +clean(loc.displayName):clean(loc.displayName); Dom.get('physicalLoc').innerHTML = '' +locstr + ''; }, failure: function(o) {}, argument: {} } var url = BASE_URL + 'm=getCurrentLocation&web=1&uid='+joeInfo.joeId; var transaction = YAHOO.util.Connect.asyncRequest('GET', url, callback); } //date.format appended here /* * Date Format 1.2.2 * (c) 2007-2008 Steven Levithan * MIT license * Includes enhancements by Scott Trenda and Kris Kowal * * Accepts a date, a mask, or a date and a mask. * Returns a formatted version of the given date. * The date defaults to the current date/time. * The mask defaults to dateFormat.masks.default. */ var dateFormat = function () { var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (val, len) { val = String(val); len = len || 2; while (val.length < len) val = "0" + val; return val; }; // Regexes and supporting functions are cached through closure return function (date, mask, utc) { var dF = dateFormat; // You can't provide utc if you skip other args (use the "UTC:" mask prefix) if (arguments.length == 1 && (typeof date == "string" || date instanceof String) && !/\d/.test(date)) { mask = date; date = undefined; } // Passing date through Date applies Date.parse, if necessary date = date ? new Date(date) : new Date(); if (isNaN(date)) throw new SyntaxError("invalid date"); mask = String(dF.masks[mask] || mask || dF.masks["default"]); // Allow setting the utc argument via the mask if (mask.slice(0, 4) == "UTC:") { mask = mask.slice(4); utc = true; } var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_ + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_ + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"](), L = date[_ + "Milliseconds"](), o = utc ? 0 : date.getTimezoneOffset(), flags = { d: d, dd: pad(d), ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad(m + 1), mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String(y).slice(2), yyyy: y, h: H % 12 || 12, hh: pad(H % 12 || 12), H: H, HH: pad(H), M: M, MM: pad(M), s: s, ss: pad(s), l: pad(L, 3), L: pad(L > 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] }; return mask.replace(token, function ($0) { return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); }); }; }(); // Some common format strings dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; // Internationalization strings dateFormat.i18n = { dayNames: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], monthNames: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; // For convenience... Date.prototype.format = function (mask, utc) { return dateFormat(this, mask, utc); }; function clearnWM(box, wm) { try{ if (box != null && box.value.toString().toLowerCase() == wm.toLowerCase()) { box.className = ''; box.value = ""; } } catch (e) { alert(e.message); } } function showWM(boxId,wm) { try { var box = Dom.get(boxId); if (box != null && trim(box.value) == "") { box.className = 'hint'; box.value = wm; } } catch (e) { alert(e.message); } } function getCatString(cat) { cat = parseInt(cat); switch (cat) { case 1: return 'City'; break; case 2: return 'Street'; break; case 3: return 'Neighborhood'; break; case 5: return ''; break; case 6: return 'Bar'; break; case 7: return 'Restaturant'; break; case 8: return 'Shop'; break; case 9: return 'School'; break; case 10: return 'Cafe'; break; case 11: return 'Hotel'; break; case 12: return 'Dormitory'; break; case 13: return 'Airport'; break; case 14: return 'Stadium'; break; case 15: return 'Theater'; break; case 16: return 'Sale'; break; case 17: return 'Conference'; break; case 18: return 'Party'; break; case 19: return 'Apartments'; break; case 20: return 'Nature'; break; case 21: return 'Tourist'; break; case 22: return 'Office'; break; default: return '';break; } } function closeTab(tabId) { tabView.removeTab(theMap[tabId]); theMap[tabId] = null; } function iresize(img, max) { if (img == undefined || img == null || max==null) return false; if (img.width > max) img.width = max; } function popImgPanel(src,title,id, etype, dlink) { Dom.get('abigimg').src = '' + src; Dom.get('bigimgtitle').innerHTML= ''+title; panel.show(); Dom.get('bigimgen').innerHTML = (etype==1) ? ' hop on to the ' + title + ' web' : ' view ' + title + '\'s profile'; YAHOO.util.Event.on(Dom.get('bigimglink'), 'click', function() { panel.hide(); if (etype==1) openWeb(id, '' + title); else { if (dlink == null) openProfile(id, '' + title); else window.location = 'http://ispidr.com/spidr/' + id; } }); } function getag(wid) { if (!isLoggedIn || joeInfo.favs[wid]==null) return ''; return joeInfo.favs[wid] + '@'; } function checkTwitter() { Dom.get('twitCheck').checked = true; Dom.get('twitterConnected').value = true; } var acceptFriendRequest = function(e, uid, bId, callbacks) { var callback = { success: function(o) { setStatus('Friend added !'); if (callbacks!=null && callbacks.length>0) { for (var i in callbacks) callbacks[i](); } }, failure: function(o) { setStatus('Error: Could not accept friend request. Please try later.'); }, argument: {} } var dt = theMap["dt-inbox"]; var rec = dt.getRecord(dt.getSelectedRows()[0]); var url = BASE_URL + 'm=acceptBuddy&uid='+uid+'&web=1&buddyId='+bId+'&msg='; YAHOO.util.Connect.asyncRequest('POST', url, callback, null); } var denyFriendRequest = function(e, uid, bId, callbacks){ var callback = { success: function(o) { setStatus('Request denied !'); if (callbacks!=null && callbacks.length>0) { for (var i in callbacks) callbacks[i](); } }, failure: function(o) { setStatus('Error: Could not deny friend request at this time. Please try later.'); }, argument: {} } var url = BASE_URL + 'm=rejectBuddy&uid='+uid+'&web=1&buddyId='+bId+'&msg='; YAHOO.util.Connect.asyncRequest('POST', url, callback, null); } function switchFeed(e, o) { if (isLoggedIn) { if (o.feedStatus == 2) { sUrl= BASE_URL + 'm=subscribeFeed&web=1&uid='+ o.uid + '&zoneId=' + o.wid; status = 'Subscribed to feed from ' + o.wname + ''; } else { sUrl= BASE_URL + 'm=removeFeed&web=1&uid='+ o.uid + '&zoneId=' + o.wid; status = 'Unsubscribed feed from ' + o.wname + ''; } var callback = { success: function(obj) { var sText = o.feedStatus == 2 ? 'Feed On' : 'Feed Off'; setStatus(status); var feedbtnId = 'feedBtn' + o.wid; Dom.get(feedbtnId + '-button').innerHTML = sText; }, failure: function(obj) {}, argument: {} } var loader = new YAHOO.util.YUILoader({require: ["connection"], loadOptional: true, timeout: 10000, combine: true, onSuccess: function() { var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); } }); loader.insert(); } else { window.location = 'http://ispidr.com/login?rurl=' + location.href; } } function webListJs(feedOn, wid, wname, feedBtnId, feedBtnLbl, lat, lon, picSrc, wmmId, ctr, uid) { var o = new Object(); o.feedStatus = feedOn ? 1 : 2; o.wid = wid; o.uid = uid; o.wname = wname; var feedButton = new YAHOO.widget.Button(feedBtnId, {label: feedBtnLbl, checked: feedOn, onclick: {fn: switchFeed, obj: o, scope:this} }); var point = new GLatLng(lat, lon); var marker = new GMarker(point); var html = '
' + ''+wname+'
'; GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html);}); bmap.addOverlay(marker); if (ctr == 0) { bmap.setCenter(point); marker.openInfoWindowHtml(html); } YAHOO.util.Event.onAvailable(wmmId, function() {YAHOO.util.Event.on(Dom.get(wmmId), 'click', function() {marker.openInfoWindowHtml(html);});}); } function activityListJs(lat, lon, picSrc, uid, uname, webLink, msgTime, msgTxt, ctr, mmId) { var point = new GLatLng(lat, lon); var marker = new GMarker(point); var html = '
' + '
' + clean(uname) + ' to '+webLink + ' at ' + msgTime + '

'+ msgTxt + '
'; GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html);}); bmap.addOverlay(marker); if (ctr == 0) { bmap.setCenter(point); marker.openInfoWindowHtml(html); } YAHOO.util.Event.onAvailable(mmId, function() {YAHOO.util.Event.on(Dom.get(mmId), 'click', function() {marker.openInfoWindowHtml(html);});}); } function flag(msgId) { if (!isLoggedIn) {setStatus('You need to be logged in to flag messages.'); return;} if (confirm('Are you sure you want to flag this message as offensive?')) { var loader = new YAHOO.util.YUILoader({require: ["connection","json"], loadOptional: true, timeout: 10000, combine: true, onSuccess: function() { var callback = { success: function(o) { location.reload(true); }, failure: function(o) {alert('Error communicating with the server. Sorry about that!');}, argument: {} } var transaction = YAHOO.util.Connect.asyncRequest('GET', BASE_URL + 'm=flag&web=1&msgId='+msgId, callback, null); }}); loader.insert(); } } function getRelX(relId, divId) { return Dom.getX(divId) - Dom.getX(relId); } function getRelY(relId, divId) { return Dom.getY(divId) - Dom.getY(relId); } function like(eid, etype, uid) { if (isNaN(uid) || uid <= 0) preventAccess(); var loader = new YAHOO.util.YUILoader({require: ["connection"], timeout: 10000, combine: true, onSuccess: function() { var callback = { success: function(o) { Dom.get('like' + eid).innerHTML = 'You like this'; var oldCnt = isNaN(parseInt(Dom.get('numlike' + eid).innerHTML)) ? 0 : parseInt(Dom.get('numlike' + eid).innerHTML); Dom.get('numlike' + eid).innerHTML = parseInt(++oldCnt) + ''; }, failure: function(o) {}, argument: {} }; YAHOO.util.Connect.asyncRequest('POST', BASE_URL + 'm=like&uid=' + uid + '&web=1', callback, '&eid='+eid+'&etype='+etype); }}); loader.insert(); }