/*
********************************************************
Copyright @ WebOnWebOff.com, by D. Miller
You may reuse this script, on condition that this copyright text is kept
www.WebOnWebOff.com
********************************************************
*/
ylib.namespace('ylib.widget');
    
ylib.widget.ImageViewer = function(dID, bID, arrI, titleID, textID, startI, popUpLink){
    this.displayID = dID;
    this.imagesBoxID = bID;
    this.displayTitleID = titleID;
    this.displayTextID = textID;
    this.imagesBoxID = bID;
    this.aImages = arrI ? arrI : [];    
    this.displayIndex = startI ? startI : 0;
    this.enablePopUp = (popUpLink!=null) ? popUpLink : false;
    this.ShowInProgress = 0;
    this.resetShow = 0;
    this.AttachImages();
    this.DisplayImage();
};
ylib.widget.ImageViewer.prototype.AttachImages = function(){        
    var newImage, imageData;
    var box = xGetElementById(this.imagesBoxID);
    
    if(box){ 
        //remove existing images, removing object reference
        if(box.hasChildNodes()){                
            while(box.childNodes[0]){
                newImage = box.childNodes[0];
                if(newImage.viewerObj) newImage.viewerObj = null;
                box.removeChild(newImage);
            }
        }           
        //create each image
        for(var i=0; i<this.aImages.length; i++){
            imageData = this.aImages[i];
            newImage = document.createElement("IMG");
            newImage.src = imageData.src;
            newImage.title = imageData.title;
            newImage.id = "viewer_"+this.imagesBoxID+"_"+i;
            newImage.index = i;
            newImage.onclick=this.UpdateImage;
            newImage.viewerObj = this;
            box.appendChild(newImage);
        } 
       
    }
}
ylib.widget.ImageViewer.prototype.UpdateImage = function(event){
    var obj = this.viewerObj;
    obj.ShowInProgress = 0; //cancel slide show
    obj.displayIndex = this.index;
    obj.resetShow = 1;
    obj.DisplayImage();
 };     
ylib.widget.ImageViewer.prototype.DisplayImage = function(){
    var imageEl = xGetElementById("display_img_"+this.displayID);
    if(this.displayIndex < 0) return;
    //need to add image to display?
    if(!imageEl){            
        var displayEl = xGetElementById(this.displayID);
        imageEl = document.createElement("IMG");
        imageEl.id = "display_img_"+this.displayID;
        displayEl.appendChild(imageEl);
    }
    if(imageEl) {
        var imageData = this.aImages[this.displayIndex];
        imageEl.src = imageData.src;
        imageEl.title = imageData.title;
        var title = xGetElementById(this.displayTitleID);
        if(title) title.innerHTML = imageData.title;
        var text = xGetElementById(this.displayTextID);
        if(text) text.innerHTML = imageData.text;
        if(this.enablePopUp){
            imageEl.onclick = function(){window.open(imageData.src)};
        }
    }
 };
 ylib.widget.ImageViewer.prototype.PlaySlideShow = function(delay) {
    //clicked again?
    if(this.ShowInProgress || this.aImages.length==0){
        this.ShowInProgress = 0;
        return;
    }
    this.ShowInProgress = 1;
    delay = delay ? delay : 2500; 
    if(this.resetShow == 1 || this.displayIndex==(this.aImages.length-1)){   
        this.displayIndex = 0;
    }
    this.resetShow = 0;
    this.DisplayImage();
    var box = xGetElementById(this.imagesBoxID);
    var firstImage = box.childNodes[0];
    window.setTimeout('ylib.widget.ImageViewer.NextSlide("'+firstImage.id+'",'+delay+')', delay);
 };
 ylib.widget.ImageViewer.NextSlide = function(firstImageID,delay) {
    var image = xGetElementById(firstImageID);  
    if(!image) return;
    var obj = image.viewerObj;  
    if(!obj) return;
    if(obj.ShowInProgress==0) return;
    if(obj.displayIndex==(obj.aImages.length-1)){ //end of show
        obj.ShowInProgress = 0;   
        //this.displayIndex = 0;
        return false;
    }
    //show next slide
    obj.displayIndex++;
    obj.DisplayImage();
    window.setTimeout('ylib.widget.ImageViewer.NextSlide("'+firstImageID+'",'+delay+')', delay);    
 };  