/*
This piece of code defines an ImagePreloader object and then creates an instance onload. 
Then a function is run which finds all the background images on the page and calls the 
ImagePreloaders preload method which will call back a function and tell it whether the image was succesfully loaded. 
If not it will display some text; if yes it will hide the text and display the image. 

*/


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

var images = new Array();
var imagePreloader = null;

addLoadEvent(function() {
        var elementList = document.getElementsByTagName('*');
        for (var i=0; i<elementList.length; i++){
                if(elementList.item(i).style.backgroundImage){
                        images[getUriFromBackgroundImage(elementList.item(i).style.backgroundImage)] = elementList.item(i);
                        setSpanInvisible(elementList.item(i));
                }
        }
        

}
)

addLoadEvent(function() {
        imagePreloader = new ImagePreloader(imageLoadComplete)
        var imageSrcArray = new Array();
        for(var imageSrc in images) {
                //if imageSrc not a function
                if (imageSrc.indexOf('.') > 0) {
                    imagePreloader.preload(imageSrc);
                }

        }
}
)



function setSpanVisible(aParentNode){
        var spanList = aParentNode.getElementsByTagName('SPAN');
        for (var i=0; i<spanList.length ; i++){
                spanList.item(i).style.visibility = 'visible';
        }
}

function setSpanInvisible(aParentNode){
        if(aParentNode){
                var spanList = aParentNode.getElementsByTagName('SPAN');
                for (var i=0; i<spanList.length ; i++){
                        spanList.item(i).style.visibility = 'hidden';
                }
        }
}

function getUriFromBackgroundImage(aBackgroundImageString){
        var returnString = aBackgroundImageString;
        if(aBackgroundImageString.match('^url')){
                returnString = aBackgroundImageString.substring(aBackgroundImageString.indexOf('(') + 1 , aBackgroundImageString.indexOf(')'));
        }
        //alert('returning ' + returnString + ' from getUriFromBackgroundImage for \n' + aBackgroundImageString)
        return returnString;
}

function getElementFromImageSrc(imageSrc){
        for(imageName in images){
                if(imageSrc.indexOf(imageName) >= 0){
                        //alert('matched ' + imageSrc + ' to ' + imageName + ' returning ' + images[imageName]);
                        return images[imageName];
                }
        }
        //alert('no match found for ' + imageSrc);
        return false;
}


function imageLoadComplete(aImage , nLoaded){
        if(aImage.bLoaded){
                setBackgroundImage(aImage.src , getElementFromImageSrc(aImage.src));
                setSpanInvisible(images[aImage.src]);
        }else{
                if (images[aImage.src] != null) {
                    images[aImage.src].style.backgroundImage = 'none';
                    setSpanVisible(images[aImage.src]);
                }
        }
}

function preloadAndSetBackgroundImage(aNode , aImage){
        images[aImage] = aNode;
        if (imagePreloader) {
                imagePreloader.preload(aImage);
        }
}

function setBackgroundImage(imageSrc , element){
        if(element) {
            if(element.style) {
                element.style.backgroundImage = 'url(' + imageSrc + ')';
            }
        } else {
           alert('no element for ' + imageSrc);
        }
}

function ImagePreloader(callBack)

{
   // store the call-back
   this.callBack = callBack;
}

ImagePreloader.prototype.preload = function(image)

{
   // create new Image object
   var oImage = new Image;

   // set up event handlers for the Image object
   oImage.onload = ImagePreloader.prototype.onload;
   oImage.onerror = ImagePreloader.prototype.onerror;
   oImage.onabort = ImagePreloader.prototype.onabort;

   // assign pointer back to this.
   oImage.oImagePreloader = this;
   oImage.bLoaded = false;

   // assign the .src property of the Image object
   oImage.src = image;

}

ImagePreloader.prototype.onload = function()
{
   this.bLoaded = true;
   this.oImagePreloader.callBack(this);
}

ImagePreloader.prototype.onerror = function()
{
   this.bError = true;
   this.oImagePreloader.callBack(this);
}

ImagePreloader.prototype.onabort = function()
{
   this.bAbort = true;
   this.oImagePreloader.callBack(this);
}


function createFlashEmbed2(id, src, bgcolor, width, height, strflashvars) { 

var strflash = '<obj' + 'ect classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="' + width + '"" height="' + height + '"" id="' + id + '" align="middle" VIEWASTEXT><param name="flashvars" value="' + strflashvars + '" /><param name="allowScriptAccess" value="sameDomain" /><param name="salign" value="TL" /><param name="scale" value="noscale" /><param name="menu" value="true" /><param name="movie" value="' + src + '" /><param name="quality" value="high" /><param name="wmode" value="Window" /><param name="bgcolor" value="' + bgcolor + '" /><embed src="' + src + '" flashvars="' + strflashvars + '" menu="true" quality="high" wmode="Opaque" bgcolor="' + bgcolor + '" width="' + width + '"" height="' + height + '"" id="' + id + '" salign="TL" align="middle" scale="noscale" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></obj' + 'ect>'; 
document.write(strflash); 
} 







