var Rules = {
	'.information': function(element) {
			Element.hide(element); 
			var building = element.id;
		 	new Draggable(building, {});
	},
	
	'.building:mouseover': function(element) {
		var stillVisible = document.getElementsByClassName('visible')
    stillVisible.each( function(on) { 
      Element.removeClassName(on,'visible') 
    });

		if(building = element.id) {
    	} else {  
			building = element.up().id;
		}
		
	  Element.addClassName(building,'visible');
		
/*
		if(Element.hasClassName(building, 'area')) {
			new Element.setOpacity(building, .3);			
		} else {
			new Element.setOpacity(building, 1);
		}
	*/
	},
	'.building:mouseout': function(element) {
		if(building = element.id) {
    	} else {  
			building = element.up().id;
		}		
		Element.removeClassName(building,'visible');
	/*	new Element.setOpacity(building, 0); */
	},

  '.building:click': function(element) {
		/* Find and hide all visible building information boxes */
		document.getElementsByClassName('information').each(function(box, index) {
			if(Element.visible(box)) {
				Element.toggle(box);
			}
		})

		/* If the current object does not have an ID not traverse upwards 
		in DOM until we find one. Novel huh? */	
		if(building = element.id) {
    } else {  
			building = element.up().id;
		}
		new Effect.Appear(building + '-info', {queue: 'end', duration: 0.4 });
  },

	'#index li a:click': function(element) {
		building = element.up().id.split('-')[0];
		if(Element.getOpacity(building) > .2) {
			new Effect.Opacity(building, {duration: 1, from: 1, to: 0 }); return false;					
		  Element.removeClassName(building,'visible');
		} else {
			if(Element.hasClassName(building, 'area')) {
				new Effect.Opacity(building, {duration: 1, from:0, to: .3}); return false;		
			} else {
				new Effect.Opacity(building, {duration: 1, from:0.2, to:1.0}); return false;						
			}
			Element.addClassName(building,'visible');
		}
		
	},

	'.information h4 a.hide:click': function(element) {
		new Effect.Fade(element.up().up().id, {queue: 'end', duration: 0.3 });
	}
};