/**
*
* ImageLoader:  Image loader
* Copyright (c) 2006, Raul IONESCU <ionescu.raul@gmail.com>, Bucharest, ROMANIA
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @package      ImageLoader
* @copyright 	Copyright (c) 2006, Raul IONESCU.
* @author 	Raul IONESCU <ionescu.raul@gmail.com>
* @license      http://www.opensource.org/licenses/mit-license.php The MIT License
* @version 	1.0
* @category 	Javascript image loader
* @access 	public
*
*/
///////////////////////////////////////////////////////
function _onImageLoad()
////////////////////////////////////////////////////////
{
if(this.loaded == true) 
        {
         this.onload = null;
         return;
        } 
this.loaded     = true;
var imgURL      = this.imgObjectLoader.imgURL;
var documentImg = ((this.imgID==null)?(null):(getElement(this.imgObjectLoader.imgID)));

if((documentImg != null) && (documentImg.src != imgURL)) { documentImg.src = imgURL; }
}
///////////////////////////////////////////////////////
function _onImageComplete(imgID)
////////////////////////////////////////////////////////
{
var documentImg   = getElement(imgID);
var img           = eval('ImageLoader.prototype.images.object.' + imgID);
var timeout       = eval('ImageLoader.prototype.timeouts.' + imgID);

if((img == undefined) || (img.complete == undefined) || (documentImg == null) || (documentImg.loaded == true)) return;
if(img.complete==true)
        { 
         img.loaded         = true;
         documentImg.loaded = true;
         if(timeout != undefined) { window.clearTimeout(timeout); }
         documentImg.onload = null;
         if(documentImg.src != img.src) { documentImg.src = img.src; }
        }
else timeout = window.setTimeout('_onImageComplete("' + imgID +'")', 300);
}
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
function ImageLoader(imgURL/*, imgID*/)
////////////////////////////////////////////////////////
{
this.imgURL            = imgURL;
this.imgID             = (arguments[1]==undefined)?(null):(arguments[1]);
////////////////////////////////////////////////////////
this.load = function()
{
if(this.imgID != null) 
        { 
         var javascriptImg = eval('ImageLoader.prototype.images.object.' + this.imgID + '= new Image();');
         javascriptImg.imgObjectLoader = this;
         javascriptImg.onload          = _onImageLoad; 
         javascriptImg.src = this.imgURL;
         _onImageComplete(this.imgID);
        }
else 
        {
         var javascriptImg = new Image();
         javascriptImg.src = this.imgURL;
         ImageLoader.prototype.images.array.push(javascriptImg);                 
        }
}
////////////////////////////////////////////////////////
this.load();
}
////////////////////////////////////////////////////////
ImageLoader.prototype.images          = new Object();
ImageLoader.prototype.images.array    = new Array();
ImageLoader.prototype.images.object   = new Object();
ImageLoader.prototype.timeouts        = new Object();
////////////////////////////////////////////////////////