/**
 * fw Slide Menu
 *
 * Animation and invocation for slider menu in many sections
 *
 * @required Prototype     <prototypejs.org>
 * @required Scriptaculous <http://script.aculo.us/>
 * @required Behaviour     <http://www.bennolan.com/behaviour/>
 *
 * @author Justin Johnson <justin@fryewiles.com>, justin@booleangate.org
 * @author Andrew Murphy <andrew@fryewiles.com>
 *
 * @version 1.1.0 20080407 JJ
 * @version 1.0.0 20080107 AM
 */


var slide_menu = {
	hideMenuSelector: '',

	init: function() {
		/*slide_menu.elMenu = $(slide_menu.strMenuId);

		if ( !slide_menu.elMenu ) {
			return false;
		}

		slide_menu.elMenu.style.display = 'none';*/
	},

	animate: function(action, el) {
		new action(
			el,
			{
				duration: 0.5
			}
		);
		return true;
	},

	behaviours: {
		'.invoke-open-slidemenu': function(el) {
			el.onclick = function(event) {
				if ( el.rel && el.rel != '' ) {
					var aniEl = slide_menu.getID(el.rel);
					
					if ( aniEl && aniEl.style.display == 'none' ) {
						slide_menu.animate(Effect.SlideDown, aniEl);
					}
				}

				return false;
			}
		},
		
		'.invoke-close-slidemenu': function(el) {
			el.onclick = function(event) {
				if ( el.rel && el.rel != '' ) {
					var aniEl = slide_menu.getID(el.rel);

					if ( aniEl && aniEl.style.display != 'none' ) {
						slide_menu.animate(Effect.SlideUp, aniEl);
					}
				}

				return false;
			}
		},
		
		'.invoke-toggle-slidemenu': function(el) {
			el.onclick = function(event) {
				if ( el.rel && el.rel != '' ) {
					var aniEl = slide_menu.getID(el.rel);

					//no using toggle for consistency
					if ( aniEl ) {
						if ( aniEl.style.display == 'none' ) {
							slide_menu.animate(Effect.SlideDown, aniEl);
						} else {
							slide_menu.animate(Effect.SlideUp, aniEl);
						}
					}
				}

				return false;
			}
		}
	},
	
	
	getID: function(rel_str) {
		var parts   = rel_str.split(' '),
			element = null;
		
		for ( var i=0; i<parts.length; ++i ) {
			element = $(parts[i]);
			
			if ( element ) {
				return element;
			}
		}
	}
}



Event.observe(window, 'load', slide_menu.init, false);
Behaviour.register(slide_menu.behaviours);