var Site = {
	start: function() {
		if ($(document.body).getElement('.clickarea')) new ClickArea($$('.clickarea'));
		Site.openInNewWindow('a.ext');
		Site.addHighlightClass('ul.link li');
		
        if ($('img1')) new PhotoRotator('img1', 'xml/sitephotos.xml');
        if ($('img2')) new PhotoRotator('img2', 'xml/sitephotos2.xml', {start:1000});
            
        if ($('news_scroller')) new NewsScroller('news_scroller', 'LMINewsData/');
		if ($('cwc_news_scroller')) new NewsScroller('cwc_news_scroller', '../../LMINewsData/');
		
		if ($('aside') && !$('aside').getFirst()) $('aside').setStyle('display', 'none');

		if ($(document.body).getElement('div.expandablepanels2')) Site.addExpandablePanels();
		
		if ($(document.body).getElement('.facts')) Site.showRandomElement('.facts p');
	},
	addExpandablePanels: function() {
		var togglers = $$('div.expandablepanels2 div.summary');
		var elements = $$('div.expandablepanels2 div.details');
		var display = -1;
		var initialDisplayFx = true;
		var fragment = location.href.toURI().get('fragment');
		if (fragment) {
			togglers.each(function(el, index) {
				if (el.get('id') == fragment) {
					display = index;
					initialDisplayFx = false;
				}
			});
		}
		togglers.each(function(el) {
			el.addEvents({
				mouseenter: function() { el.addClass('highlight'); },
				mouseleave: function() { el.removeClass('highlight'); }
			});
		});
		var accordion = new Fx.Accordion(togglers, elements, {
			alwaysHide: true,
			display: display,
			initialDisplayFx: initialDisplayFx,
			onActive: function(tog, el) {
				tog.addClass('expanded');
			},
			onBackground: function(tog, el) {
				tog.removeClass('expanded');
				tog.removeClass('highlight');
			},
			onComplete: function() {
				var expanded = ($(document.body).getElement('div.expanded'));
				if (expanded) {
					var togID = (expanded.get('id'));
					if (togID) new Fx.Scroll(window, { onComplete: function() { location.href = location.href.toURI().set('fragment', togID).toString(); } }).toElement(expanded);
				}
			}
		});
	},
	openInNewWindow: function(selector) {
		$$(selector).each(function(a) {
			a.addEvent('click', function(e) {
				e.stop();
				window.open(a, '_blank');
			});
			// adjust for JobsinNL.ca
			a.set('html', a.get('html').replace(/jobsinnl.ca/i, 'Jobs<em>in</em>NL.ca')); 
		});
	},
	addHighlightClass: function(selector) {
		$$(selector).each(function(el) {
			el.addEvents({
				mouseenter: function() { el.addClass('highlight'); },
				mouseleave: function() { el.removeClass('highlight'); }
			});
		});
	},
	showRandomElement: function(selector) {
		var els = $$(selector);
		els.each(function(el) {
			el.setStyle('display', 'none');
		});
		els.getRandom().setStyle('display', 'block');
	}
};

window.addEvent('domready', function(){
	Site.start();
});