text:   /**
     * Image Loader
     * Reliably pre-loads images
     */
    // var ImageLoader = function(src,element,cb){{{
    var ImageLoader = function(src,element,cb){
      this.src = src;
      if (!element) element = new Image;
      this.element = element;
      this.callback = cb;
      this.load();
    };
    // }}}
  
    $.extend(ImageLoader,{
      // attach: function(el,cb){{{
      attach: function(el,cb){
        return new ImageLoader(el.src,el,cb);
      },
      // }}}
      // prototype: {{{
      prototype: {
        getDimensions: function(){
          var el = this.element;
  
          if (el.naturalWidth)
            return [ el.naturalWidth, el. naturalHeight ];
  
          if (el.width)
            return [ el.width, el.height ];
  
          return null;
        },
        fireCallback: function(){
          this.element.onload = null;
          if (typeof this.callback == 'function')
            this.callback.apply(this,this.getDimensions());
        },
        isLoaded: function(){
          return this.element.complete;
        },
        load: function(){
          var t = this;
          var el = t.element;
  
          el.src = t.src;
  
          if (t.isLoaded()) t.fireCallback();
            else t.element.onload = function(e){
              t.fireCallback();
            };
        }
      }
      // }}}
    });
    Jcrop.registerComponent('ImageLoader',ImageLoader);
  
  