Site = {
	init: function() {
		Site.setupInterface();
		Site.setupFormControls();
	},
	
	setupInterface: function() {		
		$$('.sideBox').each(function(el) {
			if (el.getElement('.isOpen')) {
				el.store('isOpen', true);
			} else {
				el.setStyle('height', el.getElement('h2').getFullHeight());
			}
			
			el.set('tween', {
				duration: 500,
				onComplete: function() {
					if (el.retrieve('isOpen')) el.setStyle('height', 'auto');
				} 
			});

			new Element('a', {
				'class': el.getElement('.isOpen') ? 'closeLink' : 'openLink',
				'href': '#',
				'text': 'View',
				'title': 'View Contents'
			}).addEvent('click', function(e) {
				e.stop();

				if (el.retrieve('isOpen')) {
					this.set({ 'class': 'openLink', 'text': 'View', 'title': 'View Contents' });
					el.store('isOpen', false).tween('height', el.getFullHeight(), el.getElement('h2').getFullHeight());

				} else {
					this.set({ 'class': 'closeLink', 'text': 'Hide', 'title': 'Hide Contents' });
					el.store('isOpen', true).tween('height', el.getFullHeight());
				}
			}).inject(el, 'top'); 
		});
	},
	
	setupFormControls: function() {
		var billingDetailsLink = $('billingDetailsLink');
		var billingDetailsBlock = $('billingDetailsBlock');
		 
		if (billingDetailsLink && billingDetailsBlock) {
			billingDetailsLink.getElement('input').addEvent('click', function(e) {
				var currentState = billingDetailsLink.getElement('input').checked;

				billingDetailsBlock.setStyle('display', currentState ? 'none' : 'block');
				billingDetailsBlock.getElements('input').set('readonly', currentState);
			}).fireEvent('click');
		}
	}
}

window.addEvent('domready', Site.init);

Element.implement({
	applyRollOver: function() {
		if (this.src.test(/\.(gif|jpg|jpeg|png)$/i)) {
			// preload image
			var preload = new Image();
			preload.src = this.src.replace(/\.(gif|jpg|jpeg|png)/, '-over.$1');

			this.addEvents({
				mouseover: function() {
					this.src = this.src.replace(/\.(gif|jpg|jpeg|png)/, '-over.$1');
				},

				mouseout: function() {
					this.src = this.src.replace(/-over\.(gif|jpg|jpeg|png)/, '.$1');
				}
			});
		}

		return this;
	},
	
	getFullHeight: function() {
		var origHeight = this.getStyle('height').toInt();
		var fullHeight = this.setStyle('height', '').getStyle('height').toInt();

		this.setStyle('height', origHeight);
		return fullHeight;
	}
});