(function(){ var widgetWrapper, widgetIframe, widgetCloseBtn, widgetWrapperContent = '' + '' + '
', options = { badge : 1, lang : 'en', yes_text : null, maybe_text : null, bg_button : '#7ed40c', bg_button_selected : '#129d02', border_button : '#00FF00', border_button_selected : '#4C8400' }, getPosition = function (element, gravity) { var top = 0, left = 0, gravity = gravity || 'right', root = element; while(element) { top += element.offsetTop; left += element.offsetLeft; element = element.offsetParent; } if (gravity == 'right') { left = left - 390 + root.offsetWidth; } return left < 0 && gravity == 'right' ? getPosition(root, 'left') : {top: top + 'px', left: left + 'px', gravity: gravity}; }, widgetToggle = function(shown) { widgetWrapper.style.display = shown ? '' : 'none'; if (!shown) { newFrame = document.createElement('iframe'); newFrame.setAttribute('id', 'mixin-badge-event-window-iframe'); newFrame.setAttribute('frameborder', 0); newFrame.setAttribute('framescrolling', 'no'); if (widgetIframe) { widgetIframe.parentNode.removeChild(widgetIframe); } document.getElementById('mixin-badge-event-window') .appendChild(newFrame); widgetIframe = newFrame; } }, buildIntegrationUrl = function(event_id) { var url_tail = []; for (var o in options) { if (options[o]) { url_tail.push('&' + o + '=' + encodeURIComponent(options[o])); } } return 'http://www.mixin.com/integration/events/' + event_id + '/?c='+ +new Date + url_tail.join(''); }, openEventDetail = function(event_id, trigger, openComments){ if (!widgetWrapper) { widgetWrapper = document.getElementById('mixin-badge-event-window-wrapper'); if (!widgetWrapper) { widgetWrapper = document.createElement('div'); widgetWrapper.setAttribute('id', 'mixin-badge-event-window-wrapper'); widgetWrapper.className = 'mixin-badge-event-window-wrapper'; widgetWrapper.innerHTML = widgetWrapperContent; document.body.appendChild(widgetWrapper); } widgetCloseBtn = document.getElementById('mixin-badge-event-window-close') widgetCloseBtn.onclick = function(e) { updateBadgeCounters(getHrefEventId(widgetIframe.getAttribute('src'))); widgetToggle(0); return false; }; } widgetToggle(0); var links = trigger.getElementsByTagName('a'), pos = getPosition(trigger, 'right'); widgetCloseBtn.style.width = links[0].offsetWidth + links[1].offsetWidth + links[2].offsetWidth + 'px'; widgetCloseBtn.style.marginLeft = pos.gravity == 'right' ? 'auto': '0px'; widgetWrapper.style.left = pos.left; widgetWrapper.style.top = pos.top; var framebody = (widgetIframe.contentDocument || widgetIframe.contentWindow.document).body; framebody.innerHTML = 'Loading...'; framebody.style.backgroundColor = '#D8DDE1'; widgetIframe.src = buildIntegrationUrl(event_id) + (openComments ? '#comments': ''); widgetToggle(1); }, bindBadgeEvents = function(element) { element.onclick = function(e) { var target = e && e.target || window.event.srcElement, elTagName = target.tagName.toLowerCase(); if (target.tagName.toLowerCase() == 'span') target = target.parentNode; if (target.tagName.toLowerCase() != 'a') return; // target must be badge link only for positioning - nico's rule ... var event_id = getHrefEventId(target.getAttribute('href')); openEventDetail(event_id, document.getElementById('mixin-event-counters-' + event_id), target.getAttribute('id') && target.getAttribute('id').indexOf('comments')+1); return false; }; }, getHrefEventId = function(href) { return href.match(/\/(\d+)\//)[1]; }, updateBadgeCounters = function(event_id) { var script = document.createElement('script'); script.setAttribute('id', 'mixin-badge-scriptlet-' + event_id); script.setAttribute('src', 'http://www.mixin.com/integration/events/' + event_id + '/counters/jsonp/?callback=mixin_badge.updateCounters&nc=' + (+new Date)); document.getElementsByTagName('head')[0].appendChild(script); }, mixin_badge = { updateCounters : function(json) { var scriptlet = document.getElementById('mixin-badge-scriptlet-' + json.event_id); scriptlet.parentNode.removeChild(scriptlet); document.getElementById('mixin-badge-total-users-counter-' + json.event_id) .innerHTML = json.rsvp_count; document.getElementById('mixin-badge-total-comments-counter-' + json.event_id) .innerHTML = json.comments_count; } }; function loadBadge(){ var link = document.createElement('link'); link.setAttribute('rel', 'stylesheet'); link.setAttribute('href', 'http://d46eyxjpj8cuf.cloudfront.net/14673/gzip/badge.css'); link.setAttribute('type', 'text/css'); link.setAttribute('media', 'screen'); document.getElementsByTagName('head')[0].appendChild(link); // inline css var css = '\x0A #mxbadge{\x0A font\x2Dsize:95%\x3B\x0A padding:8px\x3B\x0A border: 1px solid #FFFFFF\x3B\x0A background:#FFFFFF\x3B\x0A color:#333333\x3B\x0A }\x0A \x0A #mxbadge a{\x0A color:#008AD5\x3B\x0A }\x0A \x0A '; var style = document.createElement('style'); style.setAttribute('id', 'mxbadge-style-week-tl-criscj'); document.getElementsByTagName('head')[0].appendChild(style); if(!!window.ActiveXObject) { document.styleSheets[document.styleSheets.length-1].cssText = css; } else { var styleTxt = document.createTextNode(css); style.appendChild(styleTxt); } // insert badge var container = document.getElementById('mxbadge-week-tl-criscj'); container.innerHTML = "\x3Cdiv id\x3D\x22mxbadge\x22\x3E\x0A \x3Cspan class\x3D\x22mxwhatis\x22\x3E\x0A \x0A \x3Ca href\x3D\x22http://www.mixin.com/users/criscj/\x22\x3Ecriscj\x27s\x3C/a\x3E week on \x3Ca href\x3D\x22http://www.mixin.com\x22\x3Emixin\x3C/a\x3E\x0A \x0A \x3C/span\x3E\x0A \x3Ca href\x3D\x22http://www.mixin.com/users/criscj/\x22 title\x3D\x22criscj\x27s agenda for this week\x22\x3E\x0A \x3Cimg src\x3D\x22http://www.mixin.com/users/134591/timeline/png/badge/timeline.png\x22 border\x3D\x220\x22 alt\x3D\x22\x22\x3E\x0A\x3C/a\x3E\x0A\x3C/div\x3E\x0A"; bindBadgeEvents(container); }; /* DOMContentLoaded: http://www.kryogenix.org/days/2007/09/26/shortloaded */ (function(i) {u = navigator.userAgent; e = /*@cc_on!@*/false; st = setTimeout; if(/webkit/i.test(u)){st(function(){dr = document.readyState;if(dr=="loaded"|| dr=="complete"){i();}else{st(arguments.callee,10);}},10);}else if((/mozilla/i. test(u)&&!/(compati)/.test(u))||(/opera/i.test(u))){document.addEventListener( "DOMContentLoaded",i,false);} else if(e){(function(){t=document.createElement( 'doc:ready');try{t.doScroll('left');i();t= null;}catch(e){st(arguments.callee, 0);}})();}else{window.onload = i;}} (loadBadge)); })();