// selector rules above - see examples of how to use at http://encytemedia.com/event-selectors
// complex functions are part of msgs, below

var Rules = {

	// Show us stuff that we've hidden from non-JS users
	'.show' : function(element) {
		Element.show(element);
	}
,
	// Hide stuff that non-JS users will always see
	'.project-info #features, #view2, #view3, #view4, #view5' : function(element) {
		Element.hide(element);
	}
,
	// Change all HREFs of links with these classes to '#'
	'.js a' : function(element){
		element.href= '#';
		return false;
	}
,
	'#description:loaded, #description-link a:click': function(element) {
		msgs.description.show()
		msgs.features.hide()
		return false;
	}
,
	'#features-link a:click': function(element) {
		msgs.features.show()
		msgs.description.hide()
		return false;
	}
,
	'a#view1-link:loaded, a#view1-link:click': function(element) {
		msgs.view1.show()
		msgs.view2.hide()
		msgs.view3.hide()
		msgs.view4.hide()
		msgs.view5.hide();
		return false;
	}
,
	'a#view2-link:click': function(element) {
		msgs.view1.hide()
		msgs.view2.show()
		msgs.view3.hide()
		msgs.view4.hide()
		msgs.view5.hide();
		return false;
	}
,
	'a#view3-link:click': function(element) {
		msgs.view1.hide()
		msgs.view2.hide()
		msgs.view3.show()
		msgs.view4.hide()
		msgs.view5.hide();
		return false;
	}
,
	'a#view4-link:click': function(element) {
		msgs.view1.hide()
		msgs.view2.hide()
		msgs.view3.hide()
		msgs.view4.show()
		msgs.view5.hide();
		return false;
	}
,
	'a#view5-link:click': function(element) {
		msgs.view1.hide()
		msgs.view2.hide()
		msgs.view3.hide()
		msgs.view4.hide()
		msgs.view5.show();
		return false;
	}
,
	'a.menu:click': function(element) {
		msgs.menu.show(element);
	}
}

var msgs = {
	description: {
		visible: function() {
			return Element.visible('description')
		},

		show: function() {
			visible = this.visible()

			new Element.show('description')
			Element.addClassName('description-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('description')
			Element.removeClassName('description-link', 'focused');

			return visible
		}
	}
,
	features: {
		visible: function() {
			return Element.visible('features')
		},

		show: function() {
			visible = this.visible()

			new Element.show('features')
			Element.addClassName('features-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('features')
			Element.removeClassName('features-link', 'focused');

			return visible
		}
	}
,
	view1: {
		visible: function() {
			return Element.visible('view1')
		},

		show: function() {
			visible = this.visible()

			new Element.show('view1')
			Element.addClassName('view1-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('view1')
			Element.removeClassName('view1-link', 'focused');

			return visible
		}
	}
,
	view2: {
		visible: function() {
			return Element.visible('view2')
		},

		show: function() {
			visible = this.visible()

			new Element.show('view2')
			Element.addClassName('view2-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('view2')
			Element.removeClassName('view2-link', 'focused');

			return visible
		}
	}
,
	view3: {
		visible: function() {
			return Element.visible('view3')
		},

		show: function() {
			visible = this.visible()

			new Element.show('view3')
			Element.addClassName('view3-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('view3')
			Element.removeClassName('view3-link', 'focused');

			return visible
		}
	}
,
	view4: {
		visible: function() {
			return Element.visible('view4')
		},

		show: function() {
			visible = this.visible()

			new Element.show('view4')
			Element.addClassName('view4-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('view4')
			Element.removeClassName('view4-link', 'focused');

			return visible
		}
	}
,
	view5: {
		visible: function() {
			return Element.visible('view5')
		},

		show: function() {
			visible = this.visible()

			new Element.show('view5')
			Element.addClassName('view5-link', 'focused');

			return visible
		},

		hide: function() {
			visible = this.visible()

			new Element.hide('view5')
			Element.removeClassName('view5-link', 'focused');

			return visible
		}
	}
,
	menu: {
		visible: function(element) {
			return Element.visible(element);
		},

		show: function(element) {
			var elementId = element.id.slice(0,element.id.indexOf('-'));
			var menuLinks = $$('.post');
						
			Element.show(elementId);
			Element.addClassName(element, 'focused');
			
			for (i=0;i<menuLinks.length;i++) {				
				if (menuLinks[i].id != element.id) {
					msgs.menu.hide(menuLinks[i].id.slice(0,menuLinks[i].id.indexOf('-')),menuLinks[i])
				}
			}
			return element;
		},

		hide: function(element, elementToLoseFocus) {

			Element.hide(element);
			Element.removeClassName(elementToLoseFocus,'focused');

			return element;
		}
	}

}