$(window).addEvents({
					
	'load': function() {
		new Slideshow('slideshow-left', 'slideshow-right', { photos: slideshowPhotos, path: slideshowPath });
		
		// menu handler
		$$('#sidebar-menu a.mitem', '#sidebar-menu a.mitem-on').addEvent('click', function(event) {
			var a = $(event.target);
			var smenu = $('smenu' + a.rel);
			smenu.tween('height', a.hasClass('mitem-on') ? 0 : smenu.getScrollSize().y);
			if (a.hasClass('mitem-on'))
				a.removeClass('mitem-on').addClass('mitem');
			else
				a.removeClass('mitem').addClass('mitem-on');
			a.blur();
			
			event.stop();
		});
		
		// faculty accordeon
		if ($('faculties'))
			$$('#faculties a').addEvent('click', function(event) {
				var a = $(event.target);
				var div = a.getParent('.faculty');
				/*var long = cont.getElement('.long');
				var short = cont.getElement('.short');*/
				if (a.get('text') == 'More') {
					if (!div.height1) {
						div.height1 = div.getSize().y;
						div.setStyle('height', div.height1);
					}
					div.getElement('.a-more').setStyle('display', 'none');
					div.getElement('.rest').setStyle('display', 'inline');
					if (!div.height2) div.height2 = div.getScrollSize().y;
					div.set('tween', {}).tween('height', div.height2);
				}
				else {
					div.set('tween', {
						onComplete: function(div) {
							div.getElement('.rest').setStyle('display', 'none');
							div.getElement('.a-more').setStyle('display', 'inline');
						}	
					}).tween('height', div.height1);
				}
			});
		
		// locations map
		if ($('locations')) {
			locationsMap = new GoogleMap($('locations').getElement('.map'), {
				points: points,
				center: true,
				zoom: 15
			});
			
			$$('.sidebar-locations a').addEvents({
				'mouseover': function(event) {
					var c = $(event.target).rel.split('|');
					locationsMap.focusPoint({ lat: c[0], lon: c[1] });
				},
				'mouseout': function(event) {
					if ($(event.target).hasClass('on')) return;
					locationsMap.returnToSavedPosition();
				},
				'click': function(event) {
					var a = $(event.target);
					
					$$('.sidebar-locations a').removeClass('on');
					a.addClass('on');
					a.blur();
					
					var c = a.rel.split('|');
					locationsMap.setCenterPoint({ lat: c[0], lon: c[1] });
					
					$('locations').getElement('p.title').set('html', a.get('html'));
				}
			});
		}
		
		// affiliates map controls
		if ($('affils')) {
			$$('#affils div.map p').each(function(cont) {
				var c = cont.title.split('|');
				cont.map = new GoogleMap(cont, {
					points: [{ lat: c[0], lon: c[1] }],
					center: true,
					zoom: 15
				});
				cont.title = '';
			});
			$$('#affils div.map a').addEvent('click', function(event) {
				var a = $(event.target);
				var div = a.getParent();
				var p = div.getElement('p');
				
				if (a.get('text') == 'maximize') {
					if (!div.pos) {
						div.pos = div.getPosition('affils');
						div.setStyles({ 
							float: 'none',
							position: 'absolute',
							right: Browser.Engine.trident && Browser.Engine.version == 4 ? 10 : 0,
							top: div.pos.top,
							bottom: p.hasClass('last') ? 0 : 'auto'
						});
					}
					div.setStyle('z-index', 1);
					
					if (!p.size) p.size = p.getSize();
					p.set('morph', { onComplete: function(p) { p.map.checkResize(); } }).morph({ width: p.size.x * 2, height: p.size.y * 2 });
					a.set('text', 'minimize');
				}
				else {
					div.setStyle('z-index', 0);
					
					p.set('morph', { onComplete: function(p) { p.map.checkResize(); } }).morph({ width: p.size.x, height: p.size.y });
					a.set('text', 'maximize');
				}
			});
		}
	}
	
});

var Slideshow = new Class({

	Extends: Options,

	options: {
		photos: [],
		path: '',
		idx: 0
	},

	initialize: function(contLeft, contRight, options) {
		this.contLeft = typeof(contLeft) == 'string' ? $(contLeft) : contLeft;
		this.contRight = typeof(contRight) == 'string' ? $(contRight) : contRight;
		this.setOptions(options);
		
		if (this.options.photos.length > 1)
			preload(this.options.path + this.options.photos[1] + '-l', this.options.path + this.options.photos[1] + '-r');
		this.rotate.periodical(5000, this);
	},
	
	rotate: function() {
		this.options.idx = (this.options.idx + 1) % this.options.photos.length;
		var nextIdx = (this.options.idx + 1) % this.options.photos.length;
		preload(this.options.path + this.options.photos[nextIdx] + '-l', this.options.path + this.options.photos[nextIdx] + '-r');
		
		var imgOld = this.contLeft.getElement('img');
		var imgNew = new Element('img', { src: this.options.path + this.options.photos[this.options.idx] + '-l' }).setStyles({ left: 0, width: 0 }).inject(this.contLeft);
		
		imgNew.set('tween', {
			duration: 1500, 
			onComplete: function(elem) {
				elem.setStyles({ left: 'auto', right: 0 });
			}
		}).tween('width', 714);
		imgOld.set('tween', {
			duration: 1500,
			onComplete: function(elem) {
				elem.dispose();
			}
		}).tween('width', 0);
		
		var p = this.contRight.getElement('p');
		var img = p.getElement('img');
		p.setStyle('background-image', 'url(' + img.get('src') + ')');
		img
			.setStyle('margin-left', -247)
			.set('src', this.options.path + this.options.photos[this.options.idx] + '-r')
			.set('tween', { duration: 1500 })
			.tween('margin-left', 0);
	},
	
	updateRight: function(elem) {
		elem.setStyles({ left: 'auto', right: 0 });
		this.contRight.setStyle('background-image', 'url(' + elem.get('src').replace(/-l$/, '-r') + ')');
		if (!this.contRight.fx)
			this.contRight.fx = new Fx.Tween(this.contRight.getElement('img'), {
				 duration: 1500,
				 onComplete: function(elem) {
					 elem.set('src', elem.getParent().getStyle('background-image').replace(/^url\(|\)/g, '')).setStyle('opacity', 1);
				 }
			});
		this.contRight.fx.start('opacity', 0);
	}
	
})