
	location_hash = function() { return {

		_lastHash: null,
		_observer: new observer,
        attachObserver: function(_observer_, _event_, _once_) { this._observer.attachObserver(_observer_, _event_, _once_); },
        detachObserver: function(_observer_, _event_) { this._observer.detachObserver(_observer_, _event_); },

        events: {
            hash__changed: "location_hash__event__hash__changed"
        },

        checkChanges: function() {

        	if( window.location.hash == this._lastHash ) {
                return false; }

            this._lastHash = window.location.hash;
            this._observer.notifyObservers( this.events.hash__changed, this.getValue() );
            return true;

        },	// Function

        getValue: function() {

        	var r = window.location.href;
			var i = r.indexOf("#");
			return (i >= 0 ? r.substr(i+1) : "");

        },	// Function

        setValue: function( _location_ ) {

        	return window.location.hash = _location_;

        },	// Function

		_: ""

	} }();