  /** Rckp Namespace */
  var Rckp = {
    // Initialize method
    init: function() {
      var k,o;
      for( k in this ) {
        if( !this.hasOwnProperty(k) ) { continue; }
        if( typeof( this[k].init ) == 'function' ) { this[k].load(); }
      }
    },
    load: function() {
      var k,o,s,e;

      for( k in this ) {
        if( !this.hasOwnProperty(k) ) { continue; }
        // Initialize the elements object
        if( typeof( this[k].$elements == 'object' ) && this[k].$elements !== null ) {
          o = this[k].$elements;

          for( s in o ) {
            try {

              if( !( typeof o[s] == 'string' ) ) { continue; }
              if( o[s] == "" ) { continue; }
              if( $( o[s] ) == null ) { continue; }
              this[k].$elements[s] = $( o[s] );

            } catch(e) {
              alert( [k,s].join(':') );
            }
          }
        }
        // Call the namespace onload method
        if( typeof( this[k].load ) == 'function' ) {
          this[k].load();
        }
      }
    },
    /**
    * Animate an element from one CSS class to another
    * @param el {String/Element} The id or element to use
    * @param start {String} The classname to use for the beginning state of the animation
    * @param finish {String} The classname to use for the ending state of the animation
    * @param duration {Number}
    * @param interval {Number}
    * @returns The animator instance
    * @type Animator
    */
    animate: function( el, start, finish, duration, interval ) {
      var ani = new Animator({
        duration: duration || 1000,
        interval: interval || 100 }
      ).addSubject( new CSSStyleSubject( $(el), start, finish ) );
      return ani;
    }
  };

  /** Observe the load  event to initialize the Rckp site script and child 'onload' listeners */
  Event.observe( window,'load', Rckp.load.bind( Rckp ) );
