diff options
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r-- | app/assets/javascripts/twitter.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/app/assets/javascripts/twitter.js b/app/assets/javascripts/twitter.js new file mode 100644 index 0000000..05993f2 --- /dev/null +++ b/app/assets/javascripts/twitter.js @@ -0,0 +1,43 @@ +(function() { + if (window.__twitterIntentHandler) return; + var intentRegex = /twitter\.com(\:\d{2,4})?\/intent\/(\w+)/, + windowOptions = 'scrollbars=yes,resizable=yes,toolbar=no,location=yes', + width = 550, + height = 420, + winHeight = screen.height, + winWidth = screen.width; + + function handleIntent(e) { + e = e || window.event; + var target = e.target || e.srcElement, + m, left, top; + + while (target && target.nodeName.toLowerCase() !== 'a') { + target = target.parentNode; + } + + if (target && target.nodeName.toLowerCase() === 'a' && target.href) { + m = target.href.match(intentRegex); + if (m) { + left = Math.round((winWidth / 2) - (width / 2)); + top = 0; + + if (winHeight > height) { + top = Math.round((winHeight / 2) - (height / 2)); + } + + window.open(target.href, 'intent', windowOptions + ',width=' + width + + ',height=' + height + ',left=' + left + ',top=' + top); + e.returnValue = false; + e.preventDefault && e.preventDefault(); + } + } + } + + if (document.addEventListener) { + document.addEventListener('click', handleIntent, false); + } else if (document.attachEvent) { + document.attachEvent('onclick', handleIntent); + } + window.__twitterIntentHandler = true; +}()); |