var cbsettings = $H({'activestate':-1});

document.observe("dom:loaded", function() {
	// make sure sidebar and content on initial load is set to correct length
	
	// 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');
	
	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 = '';
		}
	});
	*/
	
	cb.createObservers();
	
});

// callbacks
function calCustomObservers() {
//	globalY.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);		
	}
}

// CB class

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

	this.potwConstrain = function() {
		// 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'});
		});
	}
	
	this.initCBhomeBanners = function() {
		webkit.homeBanners();
	}

	this.showYouTubeVideo = function(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});
	}
	
	this.loadMemberBio = function(member) {			
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			cb.animateMemberState(member);			
		}
		else {			
			var pastmember = cb.isPastMember(member);
			var emeritusmember = cb.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:''});							
			}

			globalY.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'});
					cb.loadMemberBioTrigger(member);
				}
			});
		}
	}
	
	this.isPastMember = function(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' && !cb.isEmeritusMember(member)) {
				pastmember = true;
			}
		});
		
		return pastmember;
	}
	
	this.isEmeritusMember = function(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;
	}
	
	this.animateMemberState = function(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 = cb.isPastMember(clickpath);
		var emeritusmember = cb.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() {
						cb.loadMemberBioTrigger(clickpath);		
					}})

					}});
				}
		});
	}
	
	cb.pastMembersAnimation = false;
	this.pastMembersTrigger = function() {
		if ($('pastmembers').hasClassName('displaynone') && cb.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:''});
				cb.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) {
							cb.floatingSidebar('membersidebar');
							cb.pastMembersAnimation = true;							
						}
					}});
				}, timeoutVal);
				timeoutVal+=200;
			});
		}
	}
	
	cb.emeritusMembersAnimation = false;
	this.emeritusMembersTrigger = function() {
		if ($('emeritusmembers').hasClassName('displaynone') && cb.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:''});
				cb.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) {
							cb.floatingSidebar('membersidebar');
							cb.emeritusMembersAnimation = true;							
						}
					}});
				}, timeoutVal);
				timeoutVal+=200;
			});
		}
	}
	
	this.pastMembers = function(member) {
		var pastmember = cb.isPastMember(member);

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

		if (emeritusmember || member.match(/^\/?about\/members\/emeritusmembers/)) {
			// trigger display of past members
			$('memberstitle').update('Emeritus Members');
			cb.emeritusMembersTrigger();
		}
		else if (!$('emeritusmembers').hasClassName('displaynone')){
			// hide past members
			new Effect.Fade('emeritusmembers', { duration:0.5, afterFinish:function() {
				$('emeritusmembers').addClassName('displaynone');
				$('emeritusmembers').setStyle({display:''});
			}})
		}
	}
	
	this.loadPartner = function(partner) {		
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			cb.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'});
					cb.loadPartnerTrigger(partner);
				}
			});
		}
	}
	
	this.loadAward = function(award) {		
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			cb.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'});
					cb.loadAwardTrigger(award);
				}
			});
		}
	}
	
	this.loadPress = function(presspage) {
		if (cbsettings.get('activestate') >= 0) {
			// item already selected
			cb.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'});
					globalY.log('load press ' + presspage);
					cb.loadPressTrigger(presspage);
				}
			});
		}
	}
	
	this.loadMemberBioTrigger = function(member) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('memberscontentwrapper').getHeight();
		$('memberscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 
			
		var thispage = globalY.History.getCurrentState("p");	
		if (webkit.cacheget('members', thispage)) {
			new Effect.Fade('memberscontent', { duration:0.5, fps:15, afterFinish:function() {			
				webkit.cacheoutput('members', thispage, $('memberscontent'));				
				$('memberscontent').setStyle({display:'none'});									
				new Effect.Appear('memberscontent', { duration:1, fps:15, afterFinish:function() {
					$('memberscontentwrapper').setStyle({height:''});  // release height constraint	
					webkit.initAjaxLinks('memberscontentwrapper');	
					cb.floatingSidebar('membersidebar');
					// decide whether to trigger past members display
					cb.pastMembers(member);																			
					// decide whether to trigger emeritus members display
					cb.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, $('memberscontent'));
							webkit.initAjaxLinks('memberscontentwrapper');	
							cb.floatingSidebar('membersidebar');
							// decide whether to trigger past members display							
							cb.pastMembers(member);	
							// decide whether to trigger emeritus members display
							cb.emeritusMembers(member);																															
						}});
					}
				})	
			}})	
		}
	}
	
	this.loadPartnerTrigger = function(partner) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('partnerscontentwrapper').getHeight();
		$('partnerscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 
			
		var thispage = globalY.History.getCurrentState("p");	
		if (webkit.cacheget('partners', thispage)) {
			new Effect.Fade('partnerscontent', { duration:0.5, afterFinish:function() {			
				webkit.cacheoutput('partners', thispage, $('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, $('partnerscontent'));												
						}});
					}
				})	
			}})	
		}
	}
	
	this.loadAwardTrigger = function(award) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('awardscontentwrapper').getHeight();
		$('awardscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 
			
		var thispage = globalY.History.getCurrentState("p");	
		if (webkit.cacheget('awards', thispage)) {
			new Effect.Fade('awardscontent', { duration:0.5, afterFinish:function() {			
				webkit.cacheoutput('awards', thispage, $('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, $('awardscontent'));												
						}});
					}
				})	
			}})	
		}
	}
	
	this.loadPressTrigger = function(presspage) {
		// freeze content wrapper to current height prior to animation
		var contentHeight = $('presscontentwrapper').getHeight();
		$('presscontentwrapper').setStyle({height:(contentHeight - 40) + 'px'}); 
			
		var thispage = globalY.History.getCurrentState("p");
		if (webkit.cacheget('press', thispage)) {
			new Effect.Fade('presscontent', { duration:0.5, afterFinish:function() {			
				webkit.cacheoutput('press', thispage, $('presscontent'));				
				$('presscontent').setStyle({display:'none'});									
				new Effect.Appear('presscontent', { duration:1, afterFinish:function() {
					$('presscontentwrapper').setStyle({height:''});  // release height constraint
					globalY.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
							globalY.log('init lightbox');							
							initLightbox();													
							webkit.cacheset('press', thispage, $('presscontent'));												
						}});
					}
				})	
			}})	
		}
	}
	
	this.animateActiveState = function(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':
						cb.loadPartnerTrigger(clickpath);	
						break;
						
						case 'awards':
						cb.loadAwardTrigger(clickpath);	
						break;
						
						case 'press':
						cb.loadPressTrigger(clickpath);	
						break;
					}
				}});
			}
		});
	}
	
	this.customYUINav = function(ID) {
		if (ID.match(/^member-/)) {
			cb.yuiMemberNav(ID);
		}
		else if (ID.match(/^partner-/)) {
			cb.yuiPartnerNav(ID)
		}
		else if (ID.match(/^award-/)) {
			cb.yuiAwardNav(ID)
		}
		else if (ID.match(/^press-/)) {
			cb.yuiPressNav(ID)
		}	
	}
	
	this.yuiMemberNav = function(ID) {		
		var member = '/about/members/' + ID.replace(/^member-/,'');
		if (!$('memberscontent')) {
			// YUI history trigger to reload member
			var menuData = $('jsondata').innerHTML.evalJSON();				
			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;
					cb.ajaxpageCallback();
					cb.loadMemberBio(member);			
				}
			});
		}
		else {
			cb.loadMemberBio(member);
		}
	}
	
	this.yuiPartnerNav = function(ID) {
		var partner = '/about/ourpartners/' + ID.replace(/^partner-/,'');
		if (!$('partnerscontent')) {
			// YUI history trigger to reload partner
			var menuData = $('jsondata').innerHTML.evalJSON();				
			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;
					cb.ajaxpageCallback();
					cb.loadPartner(partner);			
				}
			});
		}
		else {
			cb.loadPartner(partner);
		}
	}
	
	this.yuiAwardNav = function(ID) {
		var award = '/about/awards/' + ID.replace(/^award-/,'');
		if (!$('awardscontent')) {
			// YUI history trigger to reload award
			var menuData = $('jsondata').innerHTML.evalJSON();				
			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;
					cb.ajaxpageCallback();
					cb.loadAward(award);			
				}
			});
		}
		else {
			cb.loadAward(award);
		}
	}
	
	this.yuiPressNav = function(ID) {
		var presspage = '/press/' + ID.replace(/^press-/,'');
		if (!$('presscontent')) {
			// YUI history trigger to reload award
			var menuData = $('jsondata').innerHTML.evalJSON();				
			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;
					cb.ajaxpageCallback();
					cb.loadPress(presspage);			
				}
			});
		}
		else {
			cb.loadPress(presspage);
		}
	}
	
	this.floatingSidebar = function(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:''});
			}
		})
		*/
	}
	
	this.ajaxpageCallback = function() {
		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});
		}
		
		cb.createObservers();
	}
	
	this.triggerNewsletterBox = function() {
		if (cb.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();
		}});
	}
	
	this.resizeTimeline = function() {
		// 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');
			}
		});
	}
	
	this.createObservers = function() {
		// look for email links
		if (typeof contact == "object") {
			globalY.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');
			//globalY.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();
			cb.triggerSubscribe=true;
			cb.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');
			});
			cb.initCBhomeBanners();
			cb.searchObservers();
			cb.floatingSidebar('homesidebar');
			
			// check for unsubscribe callback
			
			cb.jsondata = $('jsondata').innerHTML.evalJSON();
			if (cb.jsondata.unsubscribe) {
				cb.triggerSubscribe=false;
				cb.triggerNewsletterBox();
			}
		}
		else if ($(document.body).hasClassName('nm_currentPage_news')) {
			cb.floatingSidebar('newssidebar');
			cb.searchObservers();			
		}
		else if ($(document.body).hasClassName('nm_currentPage_about')) {
			if ($('partnersidebar')) {
				cbsettings.set('activestate',-1);				
				cb.floatingSidebar('partnersidebar');
			}
			else if ($('membersidebar')) {
				cbsettings.set('activestate',-1);
				cb.floatingSidebar('membersidebar');
			}
			else if ($('awardsidebar')) {
				cbsettings.set('activestate',-1);				
				cb.floatingSidebar('awardsidebar');
			}
			else if ($('discography') || $('timelinewrapper')) {
				$('pagecontent').addClassName('onecol');
			}
			
			if ($('timelinewrapper')) {
				cb.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');
			cb.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
						cb.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;								
					cb.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 = $('calendardata').innerHTML.evalJSON();
			}
			$$('#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);				
			cb.floatingSidebar('presssidebar');
		}
		else if ($(document.body).hasClassName('nm_currentPage_contact')) {
			$('pagecontent').addClassName('onecol');
		}
	}
	
	this.searchObservers = function() {
		$$('#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();
							cb.searchObservers();
						}
					})
				}
			})
		});
	}
}

var cb = new cb();

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

function ajaxpage_callback() {
	cb.ajaxpageCallback();
}