
function _image(src, text, width, height, preload) {

    this.src=src;
    this.text=text;
    this.width=width;
    this.height=height;
    this.loaded=false;
    
    if (document.images) {
        this.image=new Image();
    }
    
    if (preload) {
        this.load;
    }
    
    this.load=function() {
        if (!this.loaded && document.images) {
            this.image.src=this.src;
            this.loaded=true;
        }
    }
}

function _imagePlaceholder(imageId, textDivId, hasFadeIn, hasFadeOut, waitingImage, thisObjId) {

    this.images=new Array();
    this.imageId=imageId;
    this.textDivId=textDivId;
    this.hasFadeIn=hasFadeIn;
    this.hasFadeOut=hasFadeOut;
    this.waitingImage=waitingImage;
    this.currentImage=0;
    this.thisObjId=thisObjId;
    
    this.addImage=function(image) {
        var imageCount=this.images.length;
        this.images[imageCount]=image;
    }
    
    this.showImage=function(imageNumber) {
        var fadeOutTimer=0;
        if (this.hasFadeOut) {
            fadeOut(this.imageId, 100);
            fadeOutTimer=500;
        }
        var fadeInInitialOpacity=100;
        
        this.currentImage=imageNumber;
        window.setTimeout("waitForImageLoad('"+this.thisObjId+"',false)", fadeOutTimer);  
    }
    
    this.showNextImage=function() {
        var imageCount=this.images.length;
        if (this.currentImage<imageCount) {
            showImage(this.currentImage+1);
        }
    }
    
    this.showPreviousImage=function() {
        if (this.currentImage>1) {
            showImage(this.currentImage-1);
        }
    }
    
    this.getImageByNumber=function(imageNumber) {
        if (imageNumber<0) {
            imageNumber=0;
        }
        if (imageNumber>this.images.length) {
            imageNumber=this.images.length;
        }
        var ddd=this.images[imageNumber-1];
        return this.images[imageNumber-1];
    }
}
   
function setOpacity(objectId, opacity) {
    opacity=(opacity==100)?99.999:opacity;
    var objectStyle=document.getElementById(objectId).style; 
    objectStyle.opacity=opacity/100; 
    objectStyle.MozOpacity=opacity/99.99999; 
    objectStyle.KhtmlOpacity=opacity/100; 
    objectStyle.filter="alpha(opacity="+opacity+")"; 
    
}
   
function fadeIn(objectId,opacity) {
    if (document.getElementById(objectId)) {
        if (opacity<=100) {
          setOpacity(objectId, opacity);
          opacity+=10;
          window.setTimeout("fadeIn('"+objectId+"',"+opacity+")", 1);
        }
    }
}

function fadeOut(objectId,opacity) {
    if (document.getElementById(objectId)) {
        if (opacity>=0) {
          setOpacity(objectId, opacity);
          opacity-=10;
          window.setTimeout("fadeOut('"+objectId+"',"+opacity+")", 1);
        }
    }
}

function waitForImageLoad(imagePlaceholderObjId, bWarningImageDisplayed) {
    var imagePlaceholder=eval(imagePlaceholderObjId);
    var placeHolderImage=document.getElementById(imagePlaceholder.imageId);
    var imageToLoad=imagePlaceholder.getImageByNumber(imagePlaceholder.currentImage);
    if (!bWarningImageDisplayed && !imageToLoad.loaded && imageToLoad.image.complete) {
        placeHolderImage.src=imagePlaceholder.waitingImage.src;
        placeHolderImage.width=imagePlaceholder.waitingImage.width;
        placeHolderImage.height=imagePlaceholder.waitingImage.height;
        setOpacity(imagePlaceholder.imageId, 100);
    }
    var imageToLoad=imagePlaceholder.getImageByNumber(imagePlaceholder.currentImage);
    if (!imageToLoad.loaded) {
        imageToLoad.load();
    }
    if (imageToLoad.image.complete) {
        setOpacity(imagePlaceholder.imageId, 0);
        document.getElementById(imagePlaceholder.textDivId).innerHTML=imageToLoad.text;
        placeHolderImage.src=imageToLoad.image.src;
        placeHolderImage.width=imageToLoad.image.width;
        placeHolderImage.height=imageToLoad.image.height;
        
        var fadeInInitialOpacity=100;
        
        if (imagePlaceholder.hasFadeIn) {
            fadeInInitialOpacity=0;
        }
        fadeIn(imagePlaceholder.imageId, fadeInInitialOpacity);
    }
    else {
        window.setTimeout("waitForImageLoad('"+imagePlaceholderObjId+"',true)", 100);
    }
}		