(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]', 'input[type=password]', 'textarea');
		form_elements.invoke('observe', 'focus', resetInput);
		form_elements.invoke('observe', 'blur', function () {
			if ($F(this).blank()) {
				this.setValue(this.defaultValue);
			}
		});
		$$('form:not(.prefilled)').invoke('observe', 'submit', function () {
			this.select('input[type=text]', 'input[type=password]', 'textarea').map(resetInput);
		});
	};

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

Element.addMethods({
	reorder: function (element, column_count) {
		// this function fixes the display order of floated lists
		element = $(element);
		// element.select('ul').invoke('remove');
		var old_list = $A(element.select('li')),
			new_list = $A(old_list);

		var limit = old_list.size();
		for (var i = 0, j = 0, k = 1; i < limit; i++) {
			if (j >= limit) {
				j = k;
				k++;
			}

			new_list[j] = $(old_list[i]).cloneNode(true);
			j = j + column_count;
		}

		element.update('');

		for (var i = 0; i < limit; i++) {
			element.insert({
				bottom: new_list[i]
			});
		}
		
		return element;
	}
});

document.observe('dom:loaded', function () {
	$$('#profile-tools .add_to_shortlist:not(.disabled)').invoke('observe', 'click', function (event) {
		event.stop();
		var element = $(this);
		
		new Ajax.Updater(element, element.readAttribute('href'), {
			method: 'get',
			onSuccess: function (transport) {
				// make the PDF shortlist icon active
				element.up('div').select('.pdf_shortlist').invoke('removeClassName', 'disabled').invoke('writeAttribute', {
					href: '../_pdf/create.aspx?page=' + transport.getHeader('shortlist'),
					onclick: ''
				});
				
				// make this button disabled
				element.addClassName('disabled').stopObserving().observe('click', function (e) { e.stop(); });
			}
		});
	});
	
	$$('#tools .email_page').invoke('observe', 'click', function (event) {
		event.stop();
		window.open(this.href, 'FTB_email', 'width=350,height=400');
	});
	
	$$('.members-list').invoke('reorder', 3);
	
	if (Prototype.Browser.IE) {
		$$('.barrister_area_dropdown').each(function (list) {
			list.observe('mousedown', function () {
				list.setStyle({ width: 'auto' });
			});
		
			list.observe('blur', function (event) {
				list.writeAttribute({ style: '' });
			});
		});
	}
});

