YUI().use('node', 'event-custom', function(Y) {
	var cbsettings = $H({'activestate':-1});

	Y.Global.on('loadcontent:callback', function(page) {
		ajaxpageCallback(page);
	});
	
	Y.Global.on('ajaxlinks:callback', function(page) {
		ajaxpageCallback(page);
	});

	// init AJAX link system for global mediaplayer
	webkit.initAjaxLinks('menublock');
	webkit.initAjaxLinks('nm_header');	
	webkit.initAjaxLinks('homebanner_upper');			
	webkit.initAjaxLinks();
	webkit.playsong('random');
	webkit.modinit('contact');

	//webkit.initYUIHistoryold();

	initDropDown("menublock"  , {

		reveal : Effect.Appear.bindAsEventListener(Effect, {
			duration: .2,
			transition: Effect.Transitions.sinoidal
			}),

			disappear : Effect.BlindUp.bindAsEventListener(Effect, {
				duration: .5,
				delay: 0,
				transition: Effect.Transitions.sinoidal
				}),

				revealDelay: .1, // in seconds, defaults to .3 
				clickEffect : Effect.Pulsate.bindAsEventListener(Effect, {
					duration: .4,
					pulses: 2,

					// callbacks: (could also specify 'beforeStart' below)
					// 'e' is the event obj, and 'e.element' is the clicked <a> node:
					afterFinish: function(e) {
						// whatever effect for removing current dropdown:
						e.element.up( '.wrapper').fade({
							duration: .2
						});

						var page = e.element.pathname;
						if (page.match(/^\//)) {
							// remove leading slash
							var page = page.replace(/^\//,'');
						}						
						switch(e.element.id) {
							case 'nm_id_fanstuff':
							case 'nm_id_store':
							// external links from navigation
							window.location = e.element.href;
							break;

							default:
							webkit.recordHistory('page-' + page);		
							break;
						}

					}
				})
			});


		/*
		// advanced search link
		$('advancedsearchlink').observe('click', function(e) {
			e.stop();
			new Effect.SlideDown('advancedsearchwrapper', { duration:0.5});
		});
		// advanced search button in pulldown sheet
		$('asbutton').observe('click', function(e) {
			new Effect.SlideUp('advancedsearchwrapper', { duration:0.5});
		});
		$('search').observe('focus', function(e) {
			if ($('search').getValue() == "Search") {
				$('search').value = '';
			}
		});
		*/

		createObservers();

	// callbacks
	function calCustomObservers() {
	//	YUI().log('init custom observers');
		/*
		$$('#calendar_block .eventnoicon a').each(function(o) {
			o.stopObserving('mouseover');
			o.stopObserving('mouseout');				
			o.observe('mouseover', function() {
				o.parentNode.addClassName('eventnoicon_over');
			});
			o.observe('mouseout', function() {
				o.parentNode.removeClassName('eventnoicon_over');	
			});
			o.observe('click', function(e) {
				if (o.parentNode.hasClassName('eventnoicon_active')) {
					e.stop();
					return;
				}
				$$('#calendar_block .eventnoicon a').each(function(c) {
					c.parentNode.removeClassName('eventnoicon_active');
				});
				o.parentNode.addClassName('eventnoicon_active');
			});
		});
		*/
	}

	function calCustomInit() {
		if (typeof caloptions !== "undefined") {
			// enable feature in non-IE browsers
			caloptions.set('scrollToEvent',true);		
		}
	}

	function showMonth(month) {
		if ($('month_' + month).visible()) {
			new Effect.BlindUp('month_' + month, { duration:0.25, afterFinish:function() {
				$('widget_' + month).className = 'potwwidget potwshow';	
				potwConstrain();		
			}});
		}
		else {
			new Effect.BlindDown('month_' + month, { duration:0.25, afterFinish:function() {
				$('widget_' + month).className = 'potwwidget potwhide';	
				potwConstrain();				
			}});
		}
	}

	function potwConstrain() {
		// determine widest photo in set, set potw_entry width accordingly
		var photoWidth = 0;
		$$('#potw_wrapper .monthwrapper img').each(function(o) {
			if (o.getWidth() > photoWidth) {
				photoWidth = o.getWidth();
			}
		});

		$$('#potw_wrapper .potw_entry').each(function(o) {
			o.setStyle({width:photoWidth + 'px'});
		});
	}

	function initCBhomeBanners() {
		webkit.homeBanners();
	}

	function showYouTubeVideo(ID, caption) {
		$('stage').update('<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/' + ID + '&hl=en&fs=1&autoplay=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="autoplay" value="1"></param><embed src="http://www.youtube.com/v/' + ID + '&hl=en&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" autoplay="1" width="425" height="344"></embed></object>');
		$('caption').update(caption);
		if ($('stagewrapper').hasClassName('displaynone')) {
			$('stagewrapper').removeClassName('displaynone');			
		}
		new Effect.ScrollTo('stage', {duration:0.5});
	}

	function loadMemberBio(member) {
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			animateMemberState(member);			
		}
		else {			
			var pastmember = isPastMember(member);
			var emeritusmember = isEmeritusMember(member);					

			if (pastmember) {
				var memberheight = 40;
				var divsearch = ".anchors#pastmembers .li a";
				// var offset = 408;
				var offset = 405;
				$('activeanchor').setStyle({height:'31px'});
			}
			else if (emeritusmember) {
				var memberheight = 40;
				var divsearch = ".anchors#emeritusmembers .li a";
				// var offset = 408;
				var offset = 421;
				$('activeanchor').setStyle({height:'31px'});
			}
			else {
				var memberheight = 53
				var divsearch = ".anchors .li a";
				var offset = 0;
				$('activeanchor').setStyle({height:''});							
			}

			//YUI().log(divsearch);
			$$(divsearch).each(function(o,idx) {
				var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 
				if (thispath == member) {  
					o.addClassName('active');
					cbsettings.set('activestate',idx);					
					var startPos = (memberheight * idx) + offset;
					$('activeanchor').setStyle({top:startPos + 'px',display:'block'});
					loadMemberBioTrigger(member);
				}
			});
		}
	}

	function isPastMember(member) {
		var pastmember = false;
		$$('#pagecontent .anchors .li a').each(function(o, idx) {
			var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 

			if (thispath == member && o.parentNode.parentNode.id == 'pastmembers' && !isEmeritusMember(member)) {
				pastmember = true;
			}
		});

		return pastmember;
	}

	function isEmeritusMember(member) {
		var emeritusmember = false;
		$$('#pagecontent .anchors .li a').each(function(o, idx) {
			var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 

			if (thispath == member && o.parentNode.parentNode.id == 'emeritusmembers') {
				emeritusmember = true;
			}
		});		

		return emeritusmember;
	}

	function animateMemberState(clickpath) {
		// check to see if there is an active section to determine whether we trigger active state animation
		$$('#membersidebar .anchors .li').each(function(o) {
			o.removeClassName('active');
		});

		$$('#membersidebar .anchors .li a').each(function(o) {
			o.removeClassName('active');
		});

		var pastmember = isPastMember(clickpath);
		var emeritusmember = isEmeritusMember(clickpath);

		if (pastmember) {
			$('memberstitle').update('Past Members');
		}
		else if (emeritusmember) {
			$('memberstitle').update('Emeritus Members');			
		}
		else {
			$('memberstitle').update('Members');	
		}	

		if (pastmember) {
			var memberheight = 40;
			var divsearch = ".anchors#pastmembers .li a";
			//var offset = 408;
			var offset = 405;
			$('activeanchor').setStyle({height:'31px'});
		}
		else if (emeritusmember) {
			var memberheight = 40;
			var divsearch = ".anchors#emeritusmembers .li a";
			//var offset = 408;
			var offset = 421;
			$('activeanchor').setStyle({height:'31px'});
		}
		else {
			var memberheight = 53
			var divsearch = ".anchors .li a";
			var offset = 0;
			$('activeanchor').setStyle({height:''});			
		}

		$$(divsearch).each(function(o,idx) {
			var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 
			if (thispath == clickpath) {
				var thisPos = (memberheight * idx) + offset;
				new Effect.Move('activeanchor', { transition: Effect.Transitions.sinoidal, duration:0.5, fps:20, mode:'absolute', x:0, y:thisPos, afterFinish:function() {
					o.addClassName('active');
					cbsettings.set('activestate',idx);					
					new Effect.ScrollTo('memberscontentwrapper', { duration:0.5, afterFinish:function() {
						loadMemberBioTrigger(clickpath);		
					}})

					}});
				}
		});
	}

	pastMembersAnimation = false;
	function pastMembersTrigger() {
		if ($('pastmembers').hasClassName('displaynone') && pastMembersAnimation == true) {
			// already showed button animation, just fade in
			$('pastmembers').setStyle({display:'none'});
			$('pastmembers').removeClassName('displaynone');				
			new Effect.Appear('pastmembers', { duration:0.5, afterFinish:function() {
				$('pastmembers').setStyle({display:''});
				floatingSidebar('membersidebar');				
			}})

		}
		else if ($('pastmembers').hasClassName('displaynone')) {
			var timeoutVal=0;
			$$('#pastmembers .li').each(function(o) {
				o.setStyle({display:'none'});
			});
			$('pastmembers').removeClassName('displaynone');			

			// count past members
			var totalmembers;
			$$('#pastmembers .li').each(function(o, idx) {
				totalmembers = idx;
			});

			$$('#pastmembers .li').each(function(o, idx) {
				setTimeout(function() {
					new Effect.Grow(o, {duration:0.25, afterFinish:function() {						
						if (idx == totalmembers) {
							floatingSidebar('membersidebar');
							pastMembersAnimation = true;							
						}
					}});
				}, timeoutVal);
				timeoutVal+=200;
			});
		}
	}

	emeritusMembersAnimation = false;
	function emeritusMembersTrigger() {
		if ($('emeritusmembers').hasClassName('displaynone') && emeritusMembersAnimation == true) {
			// already showed button animation, just fade in
			$('emeritusmembers').setStyle({display:'none'});
			$('emeritusmembers').removeClassName('displaynone');				
			new Effect.Appear('emeritusmembers', { duration:0.5, afterFinish:function() {
				$('emeritusmembers').setStyle({display:''});
				floatingSidebar('membersidebar');				
			}})

		}
		else if ($('emeritusmembers').hasClassName('displaynone')) {
			var timeoutVal=0;
			$$('#emeritusmembers .li').each(function(o) {
				o.setStyle({display:'none'});
			});
			$('emeritusmembers').removeClassName('displaynone');			

			// count past members
			var totalmembers;
			$$('#emeritusmembers .li').each(function(o, idx) {
				totalmembers = idx;
			});

			$$('#emeritusmembers .li').each(function(o, idx) {
				setTimeout(function() {
					new Effect.Grow(o, {duration:0.25, afterFinish:function() {						
						if (idx == totalmembers) {
							floatingSidebar('membersidebar');
							emeritusMembersAnimation = true;							
						}
					}});
				}, timeoutVal);
				timeoutVal+=200;
			});
		}
	}

	function pastMembers(member) {
		var pastmember = isPastMember(member);

		if (pastmember || member.match(/^\/?about\/members\/pastmembers/)) {
			// trigger display of past members
			$('memberstitle').update('Past Members');
			pastMembersTrigger();
		}
		else if (!$('pastmembers').hasClassName('displaynone')){
			// hide past members
			new Effect.Fade('pastmembers', { duration:0.5, afterFinish:function() {
				$('pastmembers').addClassName('displaynone');
				$('pastmembers').setStyle({display:''});
			}})
		}
	}

	function emeritusMembers(member) {
		var emeritusmember = isEmeritusMember(member);

		if (emeritusmember || member.match(/^\/?about\/members\/emeritusmembers/)) {
			// trigger display of past members
			$('memberstitle').update('Emeritus Members');
			emeritusMembersTrigger();
		}
		else if (!$('emeritusmembers').hasClassName('displaynone')){
			// hide past members
			new Effect.Fade('emeritusmembers', { duration:0.5, afterFinish:function() {
				$('emeritusmembers').addClassName('displaynone');
				$('emeritusmembers').setStyle({display:''});
			}})
		}
	}

	function loadPartner(partner) {		
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			animateActiveState('partnersidebar', partner, 'partners');			
		}
		else {
			$$('.anchors .li a').each(function(o,idx) {
				var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 				
				if (thispath == partner) {
					o.addClassName('active');
					cbsettings.set('activestate',idx);
					var startPos = 53 * idx;
					$('activeanchor').setStyle({top:startPos + 'px',display:'block'});
					loadPartnerTrigger(partner);
				}
			});
		}
	}

	function loadAward(award) {		
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			animateActiveState('awardsidebar', award, 'awards');			
		}
		else {
			$$('.anchors .li a').each(function(o,idx) {
				var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 				
				if (thispath == award) {
					o.addClassName('active');
					cbsettings.set('activestate',idx);
					var startPos = 53 * idx;
					$('activeanchor').setStyle({top:startPos + 'px',display:'block'});
					loadAwardTrigger(award);
				}
			});
		}
	}

	function loadPress(presspage) {
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			animateActiveState('presssidebar', presspage, 'press');			
		}
		else {
			$$('.anchors .li a').each(function(o,idx) {
				var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 				
				if (thispath == presspage) {
					o.addClassName('active');
					cbsettings.set('activestate',idx);
					var startPos = 53 * idx;
					$('activeanchor').setStyle({top:startPos + 'px',display:'block'});
					YUI().log('load press ' + presspage);
					loadPressTrigger(presspage);
				}
			});
		}
	}

	function loadMemberBioTrigger(member) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('memberscontentwrapper').getHeight();
		$('memberscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 

		var thispage = webkit.YUIhistory.get('p');
		//var thispage = YUI().History.get("p");
		if (webkit.cacheget('members', thispage)) {
			new Effect.Fade('memberscontent', { duration:0.5, fps:15, afterFinish:function() {			
				webkit.cacheoutput('members', thispage, webkit.Y.one('#memberscontent'));				
				$('memberscontent').setStyle({display:'none'});									
				new Effect.Appear('memberscontent', { duration:1, fps:15, afterFinish:function() {
					$('memberscontentwrapper').setStyle({height:''});  // release height constraint	
					webkit.initAjaxLinks('memberscontentwrapper');	
					floatingSidebar('membersidebar');
					// decide whether to trigger past members display
					pastMembers(member);																			
					// decide whether to trigger emeritus members display
					emeritusMembers(member);
				}});
			}});
		}
		else {
			new Effect.Fade('memberscontent', { duration:0.5, fps:15, afterFinish:function() {
				new Ajax.Updater('memberscontent', member, {
					method:'post',
					onComplete:function() {					
						$('memberscontent').setStyle({display:'none'});				
						new Effect.Appear('memberscontent', { duration:1, fps:15, afterFinish:function() {
							$('memberscontentwrapper').setStyle({height:''});  // release height constraint						
							webkit.cacheset('members', thispage, webkit.Y.one('#memberscontent'));
							webkit.initAjaxLinks('memberscontentwrapper');	
							floatingSidebar('membersidebar');
							// decide whether to trigger past members display							
							pastMembers(member);	
							// decide whether to trigger emeritus members display
							emeritusMembers(member);																															
						}});
					}
				})	
			}})	
		}
	}

	function loadPartnerTrigger(partner) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('partnerscontentwrapper').getHeight();
		$('partnerscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 

		var thispage = webkit.YUIhistory.get('p');	
		//var thispage = YUI().History.getCurrentState("p");	
		if (webkit.cacheget('partners', thispage)) {
			new Effect.Fade('partnerscontent', { duration:0.5, afterFinish:function() {			
				webkit.cacheoutput('partners', thispage, webkit.Y.one('#partnerscontent'));				
				$('partnerscontent').setStyle({display:'none'});									
				new Effect.Appear('partnerscontent', { duration:1, afterFinish:function() {
					$('partnerscontentwrapper').setStyle({height:''});  // release height constraint						
				}});
			}});
		}
		else {
			new Effect.Fade('partnerscontent', { duration:0.5, afterFinish:function() {
				new Ajax.Updater('partnerscontent', partner, {
					method:'post',
					onComplete:function() {					
						$('partnerscontent').setStyle({display:'none'});				
						new Effect.Appear('partnerscontent', { duration:1, afterFinish:function() {
							$('partnerscontentwrapper').setStyle({height:''});  // release height constraint						
							webkit.cacheset('partners', thispage, webkit.Y.one('#partnerscontent'));												
						}});
					}
				})	
			}})	
		}
	}

	function loadAwardTrigger(award) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('awardscontentwrapper').getHeight();
		$('awardscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 

		var thispage = webkit.YUIhistory.get('p');			
		//var thispage = YUI().History.getCurrentState("p");	
		if (webkit.cacheget('awards', thispage)) {
			new Effect.Fade('awardscontent', { duration:0.5, afterFinish:function() {			
				webkit.cacheoutput('awards', thispage, webkit.Y.one('#awardscontent'));				
				$('awardscontent').setStyle({display:'none'});									
				new Effect.Appear('awardscontent', { duration:1, afterFinish:function() {
					$('awardscontentwrapper').setStyle({height:''});  // release height constraint						
				}});
			}});
		}
		else {
			new Effect.Fade('awardscontent', { duration:0.5, afterFinish:function() {
				new Ajax.Updater('awardscontent', award, {
					method:'post',
					onComplete:function() {					
						$('awardscontent').setStyle({display:'none'});				
						new Effect.Appear('awardscontent', { duration:1, afterFinish:function() {
							$('awardscontentwrapper').setStyle({height:''});  // release height constraint						
							webkit.cacheset('awards', thispage, webkit.Y.one('#awardscontent'));												
						}});
					}
				})	
			}})	
		}
	}

	function loadPressTrigger(presspage) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('presscontentwrapper').getHeight();
		$('presscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 

		var thispage = webkit.YUIhistory.get('p');		
		//var thispage = YUI().History.getCurrentState("p");
		if (webkit.cacheget('press', thispage)) {
			new Effect.Fade('presscontent', { duration:0.5, afterFinish:function() {			
				webkit.cacheoutput('press', thispage, webkit.Y.one('#presscontent'));				
				$('presscontent').setStyle({display:'none'});									
				new Effect.Appear('presscontent', { duration:1, afterFinish:function() {
					$('presscontentwrapper').setStyle({height:''});  // release height constraint
					YUI().log('init lightbox');
					initLightbox();						
				}});
			}});
		}
		else {
			new Effect.Fade('presscontent', { duration:0.5, afterFinish:function() {
				new Ajax.Updater('presscontent', presspage, {
					method:'post',
					onComplete:function() {					
						$('presscontent').setStyle({display:'none'});				
						new Effect.Appear('presscontent', { duration:1, afterFinish:function() {
							$('presscontentwrapper').setStyle({height:''});  // release height constraint
							YUI().log('init lightbox');							
							initLightbox();													
							webkit.cacheset('press', thispage, webkit.Y.one('#presscontent'));												
						}});
					}
				})	
			}})	
		}
	}

	function animateActiveState(divblock, clickpath, section) {
		// check to see if there is an active section to determine whether we trigger active state animation
		$$('#' + divblock + ' .anchors .li').each(function(o) {
			o.removeClassName('active');
		});

		$$('#' + divblock + ' .anchors .li a').each(function(o) {
			o.removeClassName('active');
		});

		$$('.anchors .li a').each(function(o,idx) {
			var thispath = webkit.addTS(o.pathname);  // IE pathnames do not include leading slash 			
			if (thispath == clickpath) {
				var thisPos = 53 * idx;
				new Effect.Move('activeanchor', { transition: Effect.Transitions.sinoidal, duration:0.5, fps:20, mode:'absolute', x:0, y:thisPos, afterFinish:function() {
					o.addClassName('active');
					cbsettings.set('activestate',idx);					
					switch (section) {			
						case 'partners':
						loadPartnerTrigger(clickpath);	
						break;

						case 'awards':
						loadAwardTrigger(clickpath);	
						break;

						case 'press':
						loadPressTrigger(clickpath);	
						break;
					}
				}});
			}
		});
	}

	function yuiMemberNav(ID) {		
		var member = '/about/members/' + ID.replace(/^member-/,'');
		if (!$('memberscontent')) {
			// YUI history trigger to reload member
			var menuData = webkit.Y.JSON.parse(webkit.Y.one('#jsondata').get('value'));				
			new Ajax.Updater('pagecontent', member, {
				method:'post',
				parameters:'ajaxreload=1',
				onComplete:function() {
					$(document.body).className = 'nm_currentPage_about';
					document.title = menuData.nm_siteTitle + ': ' + menuData.nm_menuItems['about'].title;
					ajaxpageCallback();
					loadMemberBio(member);			
				}
			});
		}
		else {
			loadMemberBio(member);
		}
	}

	function yuiPartnerNav(ID) {
		var partner = '/about/ourpartners/' + ID.replace(/^partner-/,'');
		if (!$('partnerscontent')) {
			// YUI history trigger to reload partner
			var menuData = webkit.Y.JSON.parse(webkit.Y.one('#jsondata').get('value'));
			new Ajax.Updater('pagecontent', partner, {
				method:'post',
				parameters:'ajaxreload=1',
				onComplete:function() {
					$(document.body).className = 'nm_currentPage_about';
					document.title = menuData.nm_siteTitle + ': ' + menuData.nm_menuItems['about'].title;
					ajaxpageCallback();
					loadPartner(partner);			
				}
			});
		}
		else {
			loadPartner(partner);
		}
	}

	function yuiAwardNav(ID) {
		var award = '/about/awards/' + ID.replace(/^award-/,'');
		if (!$('awardscontent')) {
			// YUI history trigger to reload award
			var menuData = webkit.Y.JSON.parse(webkit.Y.one('#jsondata').get('value'));
			new Ajax.Updater('pagecontent', award, {
				method:'post',
				parameters:'ajaxreload=1',
				onComplete:function() {
					$(document.body).className = 'nm_currentPage_about';
					document.title = menuData.nm_siteTitle + ': ' + menuData.nm_menuItems['about'].title;
					ajaxpageCallback();
					loadAward(award);			
				}
			});
		}
		else {
			loadAward(award);
		}
	}

	function yuiPressNav(ID) {
		var presspage = '/press/' + ID.replace(/^press-/,'');
		if (!$('presscontent')) {
			// YUI history trigger to reload award
			var menuData = webkit.Y.JSON.parse(webkit.Y.one('#jsondata').get('value'));
			new Ajax.Updater('pagecontent', presspage, {
				method:'post',
				parameters:'ajaxreload=1',
				onComplete:function() {
					$(document.body).className = 'nm_currentPage_press';
					document.title = menuData.nm_siteTitle + ': ' + menuData.nm_menuItems['press'].title;
					ajaxpageCallback();
					loadPress(presspage);			
				}
			});
		}
		else {
			loadPress(presspage);
		}
	}

	function floatingSidebar(sidebarID) {
		// floating sidebar

		/*		
		if (!$(sidebarID) || $(sidebarID).getHeight() > document.viewport.getHeight()) {
			// sidebar is taller than viewport, not suitable to make floating
			$(sidebarID).setStyle({position:'relative',left:''});			
			document.stopObserving('scroll');
			return;
		}

		var coordinates = $(sidebarID).viewportOffset();
	//	$(sidebarID).setStyle({position:'fixed',top:coordinates[1] + 'px',left:coordinates[0] + 'px'});

		if (!$('homebanner_wrapper').hasClassName('displaynone')) {
			var topMargin = $('nm_header').getHeight() + $('homebanner_wrapper').getHeight() + $('upcomingevents').getHeight() + 40;
		}
		else {
			var topMargin = $('nm_header').getHeight() + $('mainbanner').getHeight() + 40;
		}

		document.observe('scroll', function(e) {
			if ( typeof( window.pageYOffset ) == 'number' ) {
				//Netscape compliant
				var scrollTop = window.pageYOffset;
			} 
			else if( $(document.body) && ( $(document.body).scrollLeft || $(document.body).scrollTop ) ) {
				//DOM compliant
				var scrollTop = $(document.body).scrollTop;
			} 
			else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
				//IE6 standards compliant mode
				var scrollTop = document.documentElement.scrollTop;
			}

			if (scrollTop > topMargin) {
				$(sidebarID).setStyle({position:'fixed',top:'0px',left:coordinates[0] + 'px'});			
			}
			else {
				$(sidebarID).setStyle({position:'relative',left:''});
			}
		})
		*/
	}

	function ajaxpageCallback(ID) {
		ID = ID.details[0];		
		
		if (ID.match(/^(member|partner|award|press)-/)) {
			// status change within page
			if (ID.match(/^member-/)) {
				yuiMemberNav(ID);
			}
			else if (ID.match(/^partner-/)) {
				yuiPartnerNav(ID)
			}
			else if (ID.match(/^award-/)) {
				yuiAwardNav(ID)
			}
			else if (ID.match(/^press-/)) {
				yuiPressNav(ID)
			}	
		}
		else {		
			// new page load
			if ($(document.body).hasClassName('nm_currentPage_home') && $('homebanner_wrapper').hasClassName('displaynone')) {
				// moved back to home page
				$('homebanner_wrapper').removeClassName('displaynone');
				$('upcomingevents').removeClassName('displaynone');						
				$('mainbanner').addClassName('displaynone');
			}
			else if ($('mainbanner').hasClassName('displaynone')) {
				// moved to inner page
				$('homebanner_wrapper').addClassName('displaynone');
				$('upcomingevents').addClassName('displaynone');			
				$('mainbanner').removeClassName('displaynone');
				clearTimeout(webkit.rotationtimer);
			}

			if ($('jumpto')) {
				new Effect.ScrollTo('jumpto', { duration:0.5});
			}
						
			createObservers();
		}	
	}

	function triggerNewsletterBox() {
		if (triggerSubscribe == false) {
			var newsletterURL = '/newsletter/unsubscribeaddr/';
		}
		else {
			var newsletterURL = '/newsletter/';
		}
		Modalbox.show(newsletterURL, { title: 'Sign up for our newsletter', width:500, afterLoad:function() {
			webkit.modinit('mailinglist');
			$('email').focus();
		}});
	}

	function resizeTimeline() {
		// determine size of each .year cell
		var yearWidth=0;
		$$('#timelinewrapper .year').each(function(o) {
			yearWidth = o.getWidth();
			return;
		});

		$$('#timelinewrapper .member').each(function(o) {
			var totalYears = parseInt(o.parentNode.id.replace(/^years-/,''));
			var totalWidth = yearWidth * totalYears - 15;
			if (o.getWidth() > totalWidth) {
				// use last name
				o.innerHTML = o.id;
			}
			if (o.getWidth() > totalWidth) {
				// use smaller font
				o.addClassName('smallfont');
			}
			if (o.getWidth() > totalWidth) { 
				// give up, hide 
				o.removeClassName('smallfont');
				o.addClassName('rotate');
			}
		});
	}

	function createObservers() {
		// look for email links
		if (typeof contact == "object") {
			YUI().log('init email link observers');
			contact.emailLinkObservers();			
		}

		// reset floating sidebar
		document.stopObserving('scroll');

		// add observers to anchor links
		$$('#pagecontent .anchors .li').each(function(o) {
			if (!o.down()) { return; }
			o.observe('mouseover', function(e) {
				if (o.down().hasClassName('active')) { return; }									
				webkit.cursorLink();
				o.setOpacity(0.7);
			});
			o.observe('mouseout', function(e) {
				webkit.cursorClear();			
				if (o.down().hasClassName('active')) { return; }									
				o.setOpacity(1);
			});
		});

		$$('#pagecontent .anchors .li a').each(function(o) {
			o.stopObserving('click');
			//YUI().log('create observer for ' + o);
			o.observe('click', function(e) {
				e.stop();
				if (o.hasClassName('active') || !(o.pathname)) { return; }
				o.parentNode.setOpacity(1);
				if ($('partnersidebar')) {
					var partner = o.pathname;
					var recordPartner = partner.replace(/^\/?about\/ourpartners\//,'');
					o.addClassName('active');	
					webkit.recordHistory('partner-' + recordPartner);
				}
				else if ($('membersidebar')) {
					var member = o.pathname;
					var recordMember = member.replace(/^\/?about\/members\//,'');
					o.addClassName('active');						
					webkit.recordHistory('member-' + recordMember);
				}
				else if ($('awardsidebar')){
					var award = o.pathname;
					var recordAward = award.replace(/^\/?about\/awards\//,'');
					o.addClassName('active');	
					webkit.recordHistory('award-' + recordAward);
				}
				else if ($('presssidebar')){
					var presspage = o.pathname;
					var recordPress = presspage.replace(/^\/?press\//,'');
					o.addClassName('active');	
					webkit.recordHistory('press-' + recordPress);
				}
			})
		});

		// newsletter widget
		$('newslettersub').stopObserving('click');
		$('newslettersub').observe('click', function(e) {
			e.stop();
			triggerSubscribe=true;
			triggerNewsletterBox();
		});

		// two column by default
		$('pagecontent').removeClassName('onecol');
		$('pagecontent').removeClassName('nobg');		

		if ($(document.body).hasClassName('nm_currentPage_home')) {
			webkit.modinit('lightbox');
			// banners
			$$('#pagecontent .lightbox').each(function(o) {
				// cancel AJAX links function
				o.stopObserving('click');
			});
			initCBhomeBanners();
			searchObservers();
			floatingSidebar('homesidebar');

			// check for unsubscribe callback

			jsondata = webkit.Y.JSON.parse(webkit.Y.one('#jsondata').get('value'));
			if (jsondata.unsubscribe) {
				triggerSubscribe=false;
				triggerNewsletterBox();
			}
		}
		else if ($(document.body).hasClassName('nm_currentPage_news')) {
			floatingSidebar('newssidebar');
			searchObservers();			
		}
		else if ($(document.body).hasClassName('nm_currentPage_about')) {
			if ($('partnersidebar')) {
				cbsettings.set('activestate',-1);				
				floatingSidebar('partnersidebar');
			}
			else if ($('membersidebar')) {
				cbsettings.set('activestate',-1);
				floatingSidebar('membersidebar');
			}
			else if ($('awardsidebar')) {
				cbsettings.set('activestate',-1);				
				floatingSidebar('awardsidebar');
			}
			else if ($('discography') || $('timelinewrapper')) {
				$('pagecontent').addClassName('onecol');
			}

			if ($('timelinewrapper')) {
				resizeTimeline();
			}

			webkit.modinit('lightwindow');
			if ($('grouptimelinebutton')) {
				$('grouptimelinebutton').stopObserving('click');
				$('grouptimelinebutton').observe('click', function(e) {
					e.stop();
					myLightWindow.activateWindow({
						href: '/about/timeline', 
						title: 'Group Timeline', 
						width: 1200,
						type: 'page'
					});
				});				
			}
		}
		else if ($(document.body).hasClassName('nm_currentPage_potw')) {
			$('pagecontent').addClassName('onecol');
			potwConstrain();

			// cancel current observers
			$$('#potw_wrapper .potw_entry a').each(function(o) {
				o.stopObserving('click');
			});
			webkit.modinit('lightbox');			

			$$('#potw_wrapper .monthwrapper').each(function(o) {
				$(o.id).observe('click',function(e) {
					e.stop();
					if (!Event.element(e).src) {
						// don't trigger when user clicks on image
						showMonth(o.id);
					}
				});
				$(o.id).observe('mouseover',function(e) {
					webkit.cursorLink();
					if (Event.element(e).src) { return; }
					if ($('widget_' + o.id).hasClassName('potwshow') || $('widget_' + o.id).hasClassName('potwshowover')) {
						$('widget_' + o.id).className = 'potwwidget potwshowover';
					}
					else {
						$('widget_' + o.id).className = 'potwwidget potwhideover';
					}
				});
				$(o.id).observe('mouseout',function(e) {
					webkit.cursorClear();
					if (Event.element(e).src) { return; }				
					if ($('widget_' + o.id).hasClassName('potwshowover') || $('widget_' + o.id).hasClassName('potwshow')) {
						$('widget_' + o.id).className = 'potwwidget potwshow';
					}
					else {
						$('widget_' + o.id).className = 'potwwidget potwhide';
					}
				});
			});
			$$('#potw_wrapper .monthwrapper img').each(function(o) {
				// unset mouseover/outs
				o.observe('mouseover', function(e) {
					var thisID = Event.element(e).parentNode.parentNode.parentNode.parentNode.id.replace(/^month_/,'');
					if ($('widget_' + thisID).hasClassName('potwshowover') || $('widget_' + thisID).hasClassName('potwshow')) {
						$('widget_' + thisID).className = 'potwwidget potwshow';
					}
					else if ($('widget_' + thisID).hasClassName('potwhideover') || $('widget_' + thisID).hasClassName('potwhide')) {
						$('widget_' + thisID).className = 'potwwidget potwhide';
					}
				});
				o.observe('mouseout', function(e) {
					var thisID = Event.element(e).parentNode.parentNode.parentNode.parentNode.id.replace(/^month_/,'');
					if ($('widget_' + thisID).hasClassName('potwshowover') || $('widget_' + thisID).hasClassName('potwshow')) {
						$('widget_' + thisID).className = 'potwwidget potwshow';
					}
					else if ($('widget_' + thisID).hasClassName('potwhideover') || $('widget_' + thisID).hasClassName('potwhide')) {
						$('widget_' + thisID).className = 'potwwidget potwhide';
					}
				});
			})
		}
		else if ($(document.body).hasClassName("nm_currentPage_multimedia")) {
			$('pagecontent').addClassName('onecol');
			webkit.modinit('soundclips');
			$$('#youtubelinks ul li a img').each(function(o) {
				o.observe('mouseover', function(e) {
					webkit.cursorLink();
					o.setStyle({borderColor:'#690000'});
					var thisID = o.parentNode.parentNode.id;
					$('youtubefeedback').update($(thisID + '_mouseover').innerHTML);
				});
				o.observe('mouseout', function(e) {				
					webkit.cursorClear();
					o.setStyle({borderColor:''});
					$('youtubefeedback').update('');				
				});
				o.observe('click', function(e) {
					e.stop();
					// pause Mediaplayer
					soundclips.pausesong();
					$('youtubefeedback').update('');
					var thisID = o.parentNode.parentNode.id;								
					showYouTubeVideo(thisID, $(thisID + '_mouseover').innerHTML);				
				})
			})
		}
		else if ($(document.body).hasClassName("nm_currentPage_calendar")) {
			$('pagecontent').addClassName('nobg');
			webkit.modinit('eventscalendar','eventscalendar_canadianbrass.css');

			// mark currently selected event			
			if (typeof calendardata !== "object") {
				var calendardata = webkit.Y.JSON.parse(webkit.Y.one('#calendardata').get('innerHTML'));
			}
			$$('#calendar_block .calevent').each(function(o) {
				var thisID = o.id.replace(/^event_/,'');
				if (thisID == calendardata.calendardata.startID) {
					o.addClassName('eventnoicon_active');
					if (typeof caloptions !== "undefined") {					
						caloptions.set('activeID',thisID);
					}
				}
			});
			// init event mouse observers
			calCustomObservers();
		}
		else if ($(document.body).hasClassName('nm_currentPage_press')) {
			webkit.modinit('lightbox');
			cbsettings.set('activestate',-1);				
			floatingSidebar('presssidebar');
		}
		else if ($(document.body).hasClassName('nm_currentPage_contact')) {
			$('pagecontent').addClassName('onecol');
		}
	}

	function searchObservers() {
		$$('#searchform #searchsubmit').each(function(o) {
			o.observe('click', function(e) {
				e.stop();
				if ($('s').getValue()) {
					// trigger search
					$('pagecontent').setOpacity(0.5);
					new Ajax.Updater('pagecontent', '/search/' + $('s').getValue(), {
						method:'post',
						parameters:'ajaxreload=1',
						onComplete:function() {
							$('pagecontent').setOpacity(1);
							webkit.initAjaxLinks();
							searchObservers();
						}
					})
				}
			})
		});
	}


	// direct to functions contained within class
	function customYUINav(page) {
		customYUINav(page);
	}
	
});


