(function () {
	var resetInput = function () {
		var element = (typeof $(this).hasClassName === 'function') ? $(this) : $(arguments[0]);
		if (!element.hasClassName('prefilled') && element.getValue() === element.defaultValue) {
			element.setValue('');
		}
		return element;
	};
	var clearForms = function () {
		var form_elements = $$('input[type=text]', 'textarea');
		form_elements.invoke('observe', 'focus', resetInput);
		form_elements.invoke('observe', 'blur', function () {
			if ($F(this).blank()) {
				this.setValue(this.defaultValue);
			}
		});
		$$('form').invoke('observe', 'submit', function () {
			this.select('input[type=text]', 'textarea').map(resetInput);
		});
	};

	document.observe('dom:loaded', clearForms);
})();

document.observe('dom:loaded', function () {
    var matchColumns = function(elements, offset) {
        // pass list of IDs or elements
        var columns = $A(elements).map(Element.extend);
        if (typeof offset === 'undefined') { offset = 0; }
        columns.invoke('setStyle', { minHeight: '' });
        var max_height = columns.inject(0, function(accumulator, element) {
            var h = element.getHeight();
            return (h > accumulator) ? h : accumulator;
        });		columns.invoke('setStyle', { height: (max_height - offset) + 'px' });
    };
	
	$$('input[type=submit]').invoke('addClassName', 'submit');
	
	$$('#footer a.small', '#footer a.medium', '#footer a.large').invoke('observe', 'click', function (event) {
		event.stop();
		$w('small medium large').each(function (size) {
			$(document.body).removeClassName(size);
		});
		
		$(document.body).addClassName(this.className);
		if (document.getElementById('main') && document.getElementById('side')) {
			matchColumns($$('#main', '#side'));
		}
	});
	
	$$('#footer a.print').invoke('observe', 'click', function (event) {
		event.stop();
		window.print();
	});
	
	if (document.getElementById('main') && document.getElementById('side')) {
		matchColumns($$('#main', '#side'));
	}
	
	$$('#nav li').each(function (li) {
		var Timer = {
			counter: null,
			start: function (fn, _bind) { this.counter = setTimeout(fn.bind(_bind), 60); },
			stop: function () {
				if (this.counter !== null) clearInterval(this.counter);
				this.counter = null;
			}
		};
		
		li.observe('mouseover', function () {
			Timer.stop();
			this.addClassName('sfhover');
		});
		
		li.observe('mouseout', function () {
			Timer.start(function () {
				this.removeClassName('sfhover');
			}, this);
		});
	});
	
	matchColumns($$('#content .boxes .box'), 10);
});
