| 23 | | YAHOO.util.Event.addListener("groupSelection", "change", groupSelectHandler); // Depreicated |
|---|
| 24 | | // Buzz Events Widget |
|---|
| 25 | | if(document.getElementById('buzzTrigger')){ |
|---|
| 26 | | var buzzTrigger = document.getElementById('buzzTrigger'); |
|---|
| 27 | | var buzzLoaded = false; |
|---|
| 28 | | buzzTrigger.onclick = function() { |
|---|
| 29 | | if(!buzzLoaded) { |
|---|
| 30 | | var baseurl = 'http://calendar.duke.edu/feed/buzz_list/1/jsonp?'; |
|---|
| 31 | | var surl = baseurl + '&callback=?'; |
|---|
| 32 | | $.getJSON(surl); |
|---|
| 33 | | buzzLoaded = true; |
|---|
| 34 | | } |
|---|
| 35 | | var buzzTriggerObj = new AnimateDiv; |
|---|
| 36 | | buzzTriggerObj.initialize('buzzResult', 'buzzTrigger'); |
|---|
| 37 | | buzzTriggerObj.actuate();; |
|---|
| 38 | | return false; |
|---|
| 39 | | }; |
|---|
| 40 | | }; |
|---|
| 41 | | // Left nav menu initialization |
|---|
| 42 | | var initMenu = new Menu; |
|---|
| 43 | | initMenu.activate('artsSub', 'artsClicker', 170); // target DOM id to toggle, DOM id of button to activate, max height of target |
|---|
| 44 | | initMenu.activate('athleticsSub', 'athleticsClicker', 75); |
|---|
| 45 | | initMenu.activate('lecturesSub', 'lecturesClicker', 75); |
|---|
| 46 | | initMenu.activate('lifeSub', 'lifeClicker', 135); |
|---|
| 47 | | initMenu.activate('otherSub', 'otherClicker', 470); |
|---|
| 48 | | initMenu.activate('additionalOptionsSub', 'additionalOptionsClicker', 60); |
|---|
| 49 | | initMenu.activate('additionalUnivSub', 'additionalUnivClicker', 125); |
|---|
| 50 | | // Link header graphic |
|---|
| 51 | | var headerHomeClick = document.getElementById('head-top'); |
|---|
| 52 | | headerHomeClick.onclick = function () { window.location.href = 'http://calendar.duke.edu' }; |
|---|
| 53 | | // RSS widget |
|---|
| 54 | | popUpRss(); |
|---|
| 120 | | |
|---|
| 121 | | return; |
|---|
| 122 | | } |
|---|
| 123 | | // Menu logic - requires YUI animation library |
|---|
| 124 | | function Menu() { // Enables the toggling of menu items with submenus via animating the height of the html element. |
|---|
| 125 | | this.viewId = 'All'; |
|---|
| 126 | | this.triggerId = undefined; |
|---|
| 127 | | this.duration = .5; |
|---|
| 128 | | } |
|---|
| 129 | | |
|---|
| 130 | | Menu.prototype.activate = function(viewId, triggerId, targetHeight) { // Assumes toggle button will be text "+" or "-" |
|---|
| 131 | | this.viewId = viewId; |
|---|
| 132 | | this.triggerId = triggerId; |
|---|
| 133 | | var menuButton = document.getElementById(this.triggerId); |
|---|
| 134 | | menuButton.targetId = this.viewId; |
|---|
| 135 | | menuButton.targetHeight = targetHeight; |
|---|
| 136 | | menuButton.duration = this.duration; |
|---|
| 137 | | if (document.getElementById(menuButton.targetId).style.height !== '0px') { |
|---|
| 138 | | var toggleSym = new AlterSymbol; |
|---|
| 139 | | toggleSym.activate(triggerId, '-'); |
|---|
| 140 | | toggleSym = undefined; // destroy object |
|---|
| 141 | | } |
|---|
| 142 | | |
|---|
| 143 | | menuButton.onclick = function() { |
|---|
| 144 | | var alterSymbol = function(sym) { |
|---|
| 145 | | var toggleSym = new AlterSymbol; |
|---|
| 146 | | toggleSym.activate(triggerId, sym); |
|---|
| 147 | | |
|---|
| 148 | | return; |
|---|
| 149 | | } |
|---|
| 150 | | |
|---|
| 151 | | if (this.targetHeight > 200) { |
|---|
| 152 | | this.duration = 1; |
|---|
| 153 | | } |
|---|
| 154 | | try{ |
|---|
| 155 | | var myId = document.getElementById(this.targetId); |
|---|
| 156 | | var menuItemOff = new YAHOO.util.Anim(this.targetId, { |
|---|
| 157 | | height: { to: 0 } |
|---|
| 158 | | }, 1, YAHOO.util.Easing.easeOut); |
|---|
| 159 | | var menuItemOn = new YAHOO.util.Anim(this.targetId, { |
|---|
| 160 | | height: { to: this.targetHeight } |
|---|
| 161 | | }, 1, YAHOO.util.Easing.easeOut); |
|---|
| 162 | | if (myId.style.height === '0px') { |
|---|
| 163 | | menuItemOn.duration = this.duration; |
|---|
| 164 | | menuItemOn.animate(); |
|---|
| 165 | | menuItemOn.onComplete.subscribe(function(){ alterSymbol('-'); }); |
|---|
| 166 | | } else { |
|---|
| 167 | | menuItemOff.duration = this.duration; |
|---|
| 168 | | menuItemOff.animate(); |
|---|
| 169 | | menuItemOff.onComplete.subscribe(function(){ alterSymbol('+'); }); |
|---|
| 170 | | } |
|---|
| 171 | | |
|---|
| 172 | | } catch(e) { |
|---|
| 173 | | alert('The menu controls have malfunctioned.'); |
|---|
| 174 | | } |
|---|
| 175 | | |
|---|
| 176 | | } |
|---|
| 177 | | |
|---|
| 178 | | return; |
|---|
| 179 | | } |
|---|
| 180 | | |
|---|
| 181 | | function popUpRss() { |
|---|
| 182 | | var theTrigger = document.getElementById('rssRequest'); |
|---|
| 183 | | theTrigger.onclick = function() { |
|---|
| 184 | | var findPos = function(obj){ // for positioning menu on link click |
|---|
| 185 | | var curleft = curtop = 0; |
|---|
| 186 | | if (obj.offsetParent) { |
|---|
| 187 | | do { |
|---|
| 188 | | curleft += obj.offsetLeft; |
|---|
| 189 | | curtop += obj.offsetTop; |
|---|
| 190 | | } |
|---|
| 191 | | while (obj = obj.offsetParent); |
|---|
| 192 | | } else { |
|---|
| 193 | | alert('Your browser does not support offsetParent so we cannot position the menu.') |
|---|
| 194 | | }; |
|---|
| 195 | | |
|---|
| 196 | | return [curleft, curtop]; |
|---|
| 197 | | }; |
|---|
| 198 | | |
|---|
| 199 | | var posArr = findPos(this); |
|---|
| 200 | | var theHost = document.getElementById('rssPopUp'); |
|---|
| 201 | | var rssValueObj = document.getElementById('rssValue'); |
|---|
| 202 | | rssValueObj.value = this.href; //RSS URL with params |
|---|
| 203 | | theHost.style.left = (posArr[0] + 15) + 'px'; |
|---|
| 204 | | theHost.style.top = posArr[1] + 'px'; |
|---|
| 205 | | if (theHost.style.display === 'none') { |
|---|
| 206 | | theHost.style.display = 'block'; |
|---|
| 207 | | }; |
|---|
| 208 | | // Format dialogue to reflect current settigns of Group and Category |
|---|
| 209 | | if(document.getElementById('currGroupName')) { |
|---|
| 210 | | var groupDisplay = document.getElementById('rssDetailGroup'); |
|---|
| 211 | | var currentGroup = document.createTextNode(document.getElementById('currGroupName').childNodes[0].nodeValue); |
|---|
| 212 | | var removeDefault = groupDisplay.childNodes[0]; |
|---|
| 213 | | var deleteDefault = groupDisplay.replaceChild(currentGroup, removeDefault); |
|---|
| 214 | | } |
|---|
| 215 | | if(document.getElementById('currCategories')) { |
|---|
| 216 | | var catDisplay = document.getElementById('rssDetailCategory'); |
|---|
| 217 | | var currentCat = document.createTextNode(document.getElementById('currCategories').childNodes[0].nodeValue); |
|---|
| 218 | | var removeDefaultCat = catDisplay.childNodes[0]; |
|---|
| 219 | | var deleteDefaultCat = catDisplay.replaceChild(currentCat, removeDefaultCat); |
|---|
| 220 | | } |
|---|
| 221 | | return false; |
|---|
| 222 | | |
|---|
| 223 | | }; |
|---|
| 224 | | |
|---|
| 225 | | return; |
|---|
| 226 | | }; |
|---|
| 227 | | |
|---|
| 228 | | function AnimateDiv() { |
|---|
| 229 | | this.divId = undefined; |
|---|
| 230 | | this.triggerId = undefined; |
|---|
| 231 | | }; |
|---|
| 232 | | AnimateDiv.prototype.initialize = function(divId, triggerId) { |
|---|
| 233 | | this.divId = divId; |
|---|
| 234 | | this.triggerId = triggerId; |
|---|
| 235 | | }; |
|---|
| 236 | | AnimateDiv.prototype.actuate = function() { |
|---|
| 237 | | var myDiv = document.getElementById(this.divId); |
|---|
| 238 | | var myTrigger = document.getElementById(this.triggerId); |
|---|
| 239 | | |
|---|
| 240 | | var showOrHide = function(targetEle, throwAway) { |
|---|
| 241 | | var opacity = YAHOO.util.Dom.getStyle(targetEle, 'opacity'); |
|---|
| 242 | | if(opacity < '1') { |
|---|
| 243 | | targetEle.style.display = 'none'; |
|---|
| 244 | | }; |
|---|
| 245 | | |
|---|
| 246 | | var currTextNode = myTrigger.firstChild; |
|---|
| 247 | | myTrigger.removeChild(currTextNode); |
|---|
| 248 | | var changeText = document.createTextNode(throwAway); |
|---|
| 249 | | myTrigger.appendChild(changeText); |
|---|
| 250 | | |
|---|
| 251 | | }; |
|---|
| 252 | | |
|---|
| 253 | | var hideEvents = new YAHOO.util.Anim(myDiv, { |
|---|
| 254 | | opacity: { |
|---|
| 255 | | to: 0 |
|---|
| 256 | | } |
|---|
| 257 | | }, 1, YAHOO.util.Easing.easeOut); |
|---|
| 258 | | var showEvents = new YAHOO.util.Anim(myDiv, { |
|---|
| 259 | | opacity: { |
|---|
| 260 | | to: 1 |
|---|
| 261 | | } |
|---|
| 262 | | }, 1, YAHOO.util.Easing.easeOut); |
|---|
| 263 | | if (myDiv.style.display === 'block') { |
|---|
| 264 | | newHTML = 'More >'; |
|---|
| 265 | | hideEvents.duration = .5; |
|---|
| 266 | | hideEvents.animate(); |
|---|
| 267 | | hideEvents.onComplete.subscribe(function(){ |
|---|
| 268 | | showOrHide(myDiv, newHTML); |
|---|
| 269 | | }); |
|---|
| 270 | | } |
|---|
| 271 | | else { |
|---|
| 272 | | myDiv.style.display = 'block'; |
|---|
| 273 | | newHTML = 'Less >'; |
|---|
| 274 | | showEvents.duration = .5 |
|---|
| 275 | | showEvents.animate(); |
|---|
| 276 | | showEvents.onComplete.subscribe(function(){ |
|---|
| 277 | | showOrHide(myDiv, newHTML); |
|---|
| 278 | | }); |
|---|
| 279 | | }; |
|---|
| 280 | | return; |
|---|
| 281 | | }; |
|---|
| 282 | | */ |
|---|