--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/wp-content/plugins/event-calendar/popup.js Wed Feb 03 15:37:20 2010 +0000
@@ -0,0 +1,216 @@
+/* EventCalendar. Copyright (C) 2005, Alex Tingle. $Revision: 65 $
+ * This file is licensed under the GNU GPL. See LICENSE file for details.
+ */
+
+/** class ec3_Popup */
+function ec3_Popup()
+{
+
+ WindowOnload( function()
+ {
+ var calendars=ec3.get_calendars();
+ if(!calendars)
+ return;
+ // Pre-load images.
+ ec3.imgShadow0=new Image(8,32);
+ ec3.imgShadow1=new Image(500,16);
+ ec3.imgShadow2=new Image(8,32);
+ ec3.imgShadow0.src=ec3.myfiles+'/shadow0.png';
+ ec3.imgShadow1.src=ec3.myfiles+'/shadow1.png';
+ ec3.imgShadow2.src=ec3.myfiles+'/shadow2.png';
+
+ // Generate the popup (but keep it hidden).
+ var table,tbody,tr,td;
+ ec3_Popup.popup=document.createElement('table');
+ ec3_Popup.popup.style.display='none';
+ ec3_Popup.popup.id='ec3_popup';
+ ec3_Popup.popup.className='ec3_popup';
+ tbody=ec3_Popup.popup.appendChild( document.createElement('tbody') );
+ tr=tbody.appendChild( document.createElement('tr') );
+ td=tr.appendChild( document.createElement('td') );
+ td.id='ec3_shadow0';
+ td.rowSpan=2;
+ td.appendChild( document.createElement('div') );
+ td=tr.appendChild( document.createElement('td') );
+ ec3_Popup.contents=td.appendChild( document.createElement('table') );
+ ec3_Popup.contents.style.width=500;
+ td=tr.appendChild( document.createElement('td') );
+ td.id='ec3_shadow2';
+ td.rowSpan=2;
+ td.appendChild( document.createElement('div') );
+ tr=tbody.appendChild( document.createElement('tr') );
+ td=tr.appendChild( document.createElement('td') );
+ td.id='ec3_shadow1';
+
+ document.body.appendChild(ec3_Popup.popup);
+
+ // Add event handlers to the calendars.
+ for(var i=0; i<calendars.length; i++)
+ add_tbody( ec3.get_child_by_tag_name(calendars[i],'tbody') );
+ } );
+
+ function add_tbody(tbody)
+ {
+ if(!tbody)
+ return;
+ var anchor_list=tbody.getElementsByTagName('a');
+ if(!anchor_list)
+ return;
+ for(var i=0; i<anchor_list.length; i++)
+ {
+ var a=anchor_list[i];
+ var td=a.parentNode;
+ // 'title' might have become 'nicetitle' if that plugin is being run.
+ var titleattr=a.getAttribute('nicetitle');
+ if(!titleattr)
+ titleattr=a.getAttribute('title');
+ if(titleattr && td.nodeName=='TD' && td.className!='pad')
+ {
+ td.setAttribute('ec3_title',titleattr);
+ a.removeAttribute('nicetitle');
+ a.removeAttribute('title');
+ addEvent(td,'mouseover',show);
+ addEvent(td,'mouseout',hide);
+ addEvent(td,'focus',show);
+ addEvent(td,'blur',hide);
+ }
+ }
+ }
+ ec3_Popup.add_tbody=add_tbody;
+
+ function show(e)
+ {
+ var n;
+ if(e.currentTarget)
+ n=e.currentTarget; // Mozilla/Safari/w3c
+ else if(window.event)
+ n=window.event.srcElement; // IE
+ else
+ return;
+
+ // Find the TD element and the calendar node.
+ // (IE will sometimes randomly give us a child instead).
+ var td,cal;
+ while(1)
+ {
+ if(!n || n==document.body)
+ {
+ return;
+ }
+ else if(n.tagName=='TABLE')
+ {
+ cal=n;
+ break;
+ }
+ else if(n.tagName=='TD')
+ {
+ td=n;
+ }
+ n=n.parentNode;
+ }
+
+ var ec3_title=td.getAttribute('ec3_title');
+ if(typeof ec3_title == 'undefined')
+ return;
+ if(ec3_Popup.just_hidden)
+ ec3_Popup.popup.style.display = "block";
+ else
+ ec3_Popup.show_timer=setTimeout(
+ function(){ec3_Popup.popup.style.display = "block";},
+ 600
+ );
+
+ ec3_Popup.contents.style.width=''+(cal.offsetWidth-2)+'px';
+ ec3_Popup.popup.style.top=''+(findPosY(cal)+cal.offsetHeight)+'px';
+ ec3_Popup.popup.style.left=''+(findPosX(cal)-8)+'px';
+
+ var tbody=ec3.get_child_by_tag_name(ec3_Popup.contents,'tbody');
+ if(tbody)
+ ec3_Popup.contents.removeChild(tbody);
+ tbody=ec3_Popup.contents.appendChild(document.createElement('tbody'));
+
+ var titles=ec3_title.split(', ');
+ for(var i=0; i<titles.length; i++)
+ {
+ tr=tbody.appendChild(document.createElement('tr'));
+ td=tr.appendChild(document.createElement('td'));
+ td.appendChild(document.createTextNode(titles[i]));
+ if(titles[i].indexOf('@')!=-1)
+ td.className='eventday';
+ }
+
+ // Let's put this event to a halt before it starts messing things up
+ window.event? window.event.cancelBubble=true: e.stopPropagation();
+ }
+
+ function hide()
+ {
+ if(ec3_Popup.show_timer)
+ clearTimeout(ec3_Popup.show_timer);
+ if(ec3_Popup.popup.style.display!='none')
+ {
+ ec3_Popup.just_hidden=1;
+ ec3_Popup.hide_timer=setTimeout(function(){ec3_Popup.just_hidden=0;},900);
+ }
+ ec3_Popup.popup.style.display='none';
+
+ }
+
+ //=====================================================================
+ // Event Listener
+ // by Scott Andrew - http://scottandrew.com
+ // edited by Mark Wubben, <useCapture> is now set to false
+ //=====================================================================
+ function addEvent(obj, evType, fn){
+ if(obj.addEventListener){
+ obj.addEventListener(evType, fn, false);
+ return true;
+ } else if (obj.attachEvent){
+ var r = obj.attachEvent('on'+evType, fn);
+ return r;
+ } else {
+ return false;
+ }
+ }
+
+ //=====================================================================
+ // From http://www.quirksmode.org/
+ //=====================================================================
+ function findPosX(obj)
+ {
+ var curleft = 0;
+ if (obj.offsetParent)
+ {
+ while(1)
+ {
+ curleft += obj.offsetLeft;
+ if(!obj.offsetParent) break;
+ obj = obj.offsetParent;
+ }
+ }
+ else if (obj.x)
+ curleft += obj.x;
+ return curleft;
+ }
+
+ function findPosY(obj)
+ {
+ var curtop = 0;
+ if (obj.offsetParent)
+ {
+ while(1)
+ {
+ curtop += obj.offsetTop;
+ if(!obj.offsetParent) break;
+ obj = obj.offsetParent;
+ }
+ }
+ else if (obj.y)
+ curtop += obj.y;
+ return curtop;
+ }
+
+} // end namespace ec3_Popup
+
+// Export public functions from ec3_Popup namespace.
+ec3_Popup();