/**
 * EggImage
 */
var EggImage = Class.create({
  /**
   * Init EggImage
   */	
  initialize: function(elemImage) {
	this.elemImage = elemImage;

	EggImage.IMAGE_INIT = 0;
	EggImage.IMAGE_LOADING = 1;
	EggImage.IMAGE_LOADED = 2;
	
	this.nState = EggImage.IMAGE_INIT;
    this.imgElem = this.elemImage.down('img');
	this.fadeImageEffect = null;
	this.bWaiting = false;
	
    this.contentFade = new EggFade({elemContent:this.elemImage});	
  },
	
  load: function() {
	switch (this.nState) {
	  case EggImage.IMAGE_INIT:
		this.nState = EggImage.IMAGE_LOADING;    	  
	    var image = new Image();
	    image.onload = function() {
		  // set src to loaded image
	      this.imgElem.src = image.src;
	      // fire event
	      this.fireLoaded.bind(this).delay(0.1);  	  
	    }.bind(this);
	    
	    // fix for pngs in IE
	    this.elemImage.style.display = "inline-block";
	    this.elemImage.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.elemImage.getAttribute("src") + "', sizingMethod='scale')";
	    this.imgElem.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";

	    // load
	    image.src = this.elemImage.getAttribute("src");  
	    break;
	}  
  },
	
  fireLoaded: function() {
	this.nState = EggImage.IMAGE_LOADED;    	  
	// we're waiting so show now!
	if (this.bWaiting) {
	  this.show();	
	}
    // fire event
    this.elemImage.fire("eggimage:loaded");
  },
  
  show: function() {
	this.bWaiting = true;
	// only show if image is ready!
	if (this.nState != EggImage.IMAGE_LOADED) {
	  return;
	}
	
	this.bWaiting = false;
	this.contentFade.show();
  },
	
  hide: function() {
	this.bWaiting = false;	
	this.contentFade.hide();
  },

  hideNow: function() {
	this.bWaiting = false;
	this.contentFade.hideNow();
  }
  
});
