/**
* A simple JavaScript image loaderimage loader
* @author Cuong Tham
* @url http://thecodecentral.com/2008/02/21/a-useful-javascript-image-loader
* @usage
* var loader = new ImageLoader('IMAGE_URL');
* //set event handler
* loader.loadEvent = function(url, image){
*   //action to perform when the image is loaded
*   document.body.appendChild(image);
* }
* loader.load();
*/

//source: http://snipplr.com/view.php?codeview&id=561
// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling)
{
  bubbling = bubbling || false;
  if(window.addEventListener)	{ // Standard
    element.addEventListener(type, expression, bubbling);
    return true;
  } else if(window.attachEvent) { // IE
    element.attachEvent('on' + type, expression);
    return true;
  } else return false;
}

var rwtsLoadImage = function(element, url, fgImage){
  this.element = element;
  this.url = url;
  this.image = null;
  this.fgImage = fgImage;
  this.loadingImage = '/load/spinner.gif';
  this.blankImage = '/load/blank.gif';
  if (fgImage == false) this.fgImage = this.blankImage;
};

rwtsLoadImage.prototype = {
  load:function(){
    this.element.attr("src", this.fgImage)
    this.element.css('backgroundImage','url(' + this.loadingImage + ')');
    this.element.css('backgroundPosition','center');
    this.element.css('backgroundRepeat','no-repeat');
    this.image = document.createElement('img');
    var url = this.url;
    var image = this.image;
    var loadEvent = this.loadEvent;
    $(this.image).bind('load', {el: this.element, url: this.url, fgImage: this.fgImage}, function(e){
      e.data.el.css('backgroundImage','url('+e.data.url+')');
      e.data.el.width = this.width;
      e.data.el.height = this.height;
      e.data.el.css('backgroundPosition','center');
      e.data.el.css('backgroundRepeat','no-repeat');
    });
    
    $(this.image).bind('error', {el: this.element, url: this.url, blank: this.blankImage}, function(e){
      e.data.el.css('backgroundImage','url('+e.data.blank+')');
      e.data.el.css('backgroundPosition','center');
      e.data.el.css('backgroundRepeat','no-repeat');
    });
    this.image.src = this.url;
	//alert(this.image.src);
  },
  getImage:function(){
    return this.image;
  }
};
