/************************************************************
	Liberty Village of Danville JavaScript
	Created:		08.03.2004
	Last Modified:	02.08.2007
	Author:			Lee Allen
************************************************************/

/************************************************************
	Link object
************************************************************/

	var Links = {
		anchors: '',
		//	this method works around the dropping of
		//	target="_blank" from XHTML strict
		//	use rel="external" instead of target="_blank"
		//	to pop a new window
		addExternalTargets: function() {
			if(!document.getElementsByTagName) return;
			this.anchors = document.getElementsByTagName('a');
			for (var i=0;i<this.anchors.length;i++) {
				if(this.anchors[i].getAttribute('href') && this.anchors[i].getAttribute('rel') == 'external')
					this.anchors[i].target = '_blank';
			}
		}
	}
	
	Event.onDOMReady(function() { Links.addExternalTargets(); });

/************************************************************
	Link object
************************************************************/

/************************************************************
	Form object
************************************************************/

	var Forms = {
		input_tags: '',
		Preload_Image: '',
		spinner: {
			url: '/_media/images/gfx_spinner.gif',
			width: '25',
			height: '25'
		},
		//	finds all submit buttons
		//	when found, submit buttons monitored for submission
		//	and passed to submit method
		//	pre-loads spinner graphic
		safeSubmit: function() {
			if(!document.getElementsByTagName) return;
			this.input_tags = document.getElementsByTagName('input');
			for(var i=1;i<this.input_tags.length;i++) {
				if(this.input_tags[i].getAttribute('type') == 'submit') {
					this.Preload_Image = new Image();
					this.Preload_Image.src = this.spinner.url;
					this.input_tags[i].setAttribute('id','submit_button');
					Event.observe(this.input_tags[i],'click',function() { Forms.submit($('submit_button')); });
				}
			}
		},
		//	hides submit button and replaces it with spinner graphic
		//	to prevent double-submits
		submit: function(element) {
			Element.hide(element);
			new Insertion.After(element,'<img src="'+this.spinner.url+'" width="'+this.spinner.width+'" height="'+this.spinner.height+'" alt="" />');
		}
	}

	Event.onDOMReady(function() { Forms.safeSubmit(); });

/************************************************************
	Form object
************************************************************/

/************************************************************
	Table object
************************************************************/

	var Tables = {
		stripeRows: function(el) {
			if(!$(el)) return;
			var rows = $(el).getElementsByTagName('tr');
			for(var i=1,len=rows.length;i<len;i++) {
				if (i % 2 == 0) Element.addClassName(rows[i],'alt');
			}
		}
	}

	Event.onDOMReady(function() { Tables.stripeRows('striped'); });

/************************************************************
	Table object
************************************************************/

/************************************************************
	Display object
************************************************************/

	var Display = {
		//	this method toggles the display of an element 
		//	based on an event from another element
	
		//	trigger is the ID of the element to listen to
		//	event is the event to listen for
		//	element is the ID of the element to toggle
	
		//	call this method with Event.onDOMReady at the
		//	bottom of the page where you use it
		trigger: function(trigger,event,element) {
			Element.hide(element);
			Event.observe(trigger,event,function() {
				if (!Element.visible(element)) {
					//	Opera chokes on Appear
					if (!/Opera/i.test(navigator.userAgent))
						Effect.Appear(element);
					else
						Element.show(element);
				}
				else {
					//	Opera chokes on Fade
					if (!/Opera/i.test(navigator.userAgent))
						Effect.Fade(element);
					else
						Element.hide(element);
				}
			});	
		}
	}

/************************************************************
	Display object
************************************************************/