
	/* Declare the SavaScript namespace! */
	var SavaScript = window.SavaScript || {}

	SavaScript.base = function() {

		return {

			$ : function(element) {
				if (arguments.length > 1) {
					for (var i = 0, elements = [], length = arguments.length; i < length; i++)
					elements.push($(arguments[i]));
					return elements;
				}
				if (typeof element == 'string') {
					return document.getElementById(element);
				} else {
					return element;
				}
			},

			addEvent : function( obj, type, fn ) {
				obj = this.$(obj);

				if (obj.addEventListener) {
					obj.addEventListener( type, fn, false );
				} else if (obj.attachEvent) {
					obj["e"+type+fn] = fn;
					obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
					obj.attachEvent( "on"+type, obj[type+fn] );
				}

			}, 

			cancelEvent : function(e) {
				if(window.event) {
					window.event.cancelBubble = true;
					window.event.returnValue = false;
				}
				if(e && e.stopPropagation && e.preventDefault) {
					e.stopPropagation();
					e.preventDefault();
				}
			},

			elementFromEvent : function(e) {
				if(window.event) return e.srcElement;
				if(e && e.stopPropagation && e.preventDefault) return e.target;
				false;
			},

			_domReady : function() {
				if (arguments.callee.done) return;
				arguments.callee.done = true;
				that = SavaScript.base

				if (that._timer) { clearInterval(that._timer); }
				for(var i = 0; i < that._readyCallbacks.length; i++) {

					callback = that._readyCallbacks[i];
					callback();
				}
				that._readyCallbacks = null;
			},

			onDOMReady : function(f) {
				if (!this._readyCallbacks) {
					var domReady = this._domReady;

					if (document.addEventListener)
					document.addEventListener("DOMContentLoaded", domReady, false);

					/*@cc_on @*/
					/*@if (@_win32)
					document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
					document.getElementById("__ie_onload").onreadystatechange = function() {
						if (this.readyState == "complete") domReady(); 
					};
					/*@end @*/

					if (/WebKit/i.test(navigator.userAgent)) { 
						this._timer = setInterval(function() {
							if (/loaded|complete/.test(document.readyState)) {
								domReady();
							}
						}, 10);
					}

					this.addEvent(window, 'load', domReady);
					this._readyCallbacks = [];
				}
				this._readyCallbacks.push(f);
			}

		}

	}();

	(function() {
		function _toggle(element, config) {
			element = document.getElementById(element);
			style = element.style;
			style.display = (style.display == "none") ?  "" : 'none';
		};
		window.toggle = function(arguments) {
			return new _toggle(arguments);
		}
	})();


	SavaScript.base.onDOMReady(function() {

		$ = SavaScript.base.$;

		if($('primaryNav')) {

			link = $('beachToggle');
			if(link) { /* If the toggle is there, turn the menu off */
				toggle('beachesMenu');
			}

			SavaScript.base.addEvent(link, 'click', function(e) {
				SavaScript.base.cancelEvent(e);
				toggle('beachesMenu');
			});
		}

	});
