/*
 *  Wyswietla zdjecie na calej szerokosci strony
 *  @date 9. pa¡dziernika 2007, 12:24:10
 *  @author lukasz@szakul.net
 */
 
var img = {
  sClass: 'img',
  bThumbs: true,
  iThumbs: 3,
  bSlide: true,
  iTimeout: 6000,
  sClose: '',  
  
  init: function() {
    if (img.sClass != '') {
      if (document.links.length) {
        for (var i = 0; i < document.links.length; i++) {
          if (document.links[i].className == img.sClass) {
            document.links[i].onclick = function() {
              return img.open(this, false);
            }
          }
        }
      }
    }
  },
  
  setImages: function(oImage) {
    img.aImages = new Array();
    if (oImage.rel != '') {
      if (document.links.length) {
        for (var i = 0; i < document.links.length; i++) {
          if (document.links[i].className == img.sClass && document.links[i].rel == oImage.rel) {
            img.aImages.push(document.links[i]);
          }
        }
      }
    } else {
      img.aImages.push(oImage);
    }
  },
  
  setIndex: function(oImage) {
    if (img.aImages.length) {
      for (var i = 0; i < img.aImages.length; i++) {
        if (img.aImages[i] == oImage) {
          img.iIndex = i;
          return;
        }
      }
    }
  },
  
  open: function(oImage, bReset) {
    if (oImage) {
      if (!img.$('img-preloader')) {
        img.setPreLoader();
      }
      
      img.oPreLoader.style.visibility = 'visible';
      
      if (bReset === true) {
        img.reset();
      }
      
      img.start();

      img.setImages(oImage);
      img.setIndex(oImage);
      
      var oPreLoader = new Image();
      
      if (oPreLoader) {
        oPreLoader.onload = function() {
          oPreLoader.onload = '';
          
          img.oConteiner.style.width = (oPreLoader.width+20)+'px';
          
          img.setPic(oImage.href, this.width, this.height);
          img.setDesc(oImage.title);
          img.setCounter();
          
          if (img.aImages.length > 1) {
            img.setSlide();
          }
          
          img.setPaginate();
          
          if (oImage.firstChild.tagName == 'IMG' && img.aImages.length > 1) {
            img.setThumbs();
          }
          
          img.setClose();
          
          img.setInfo();
          
          img.show();
          
          if (img.$('img-prev')) {
            function goPrev() {
              return img.open(img.aImages[img.iIndex-1], true);
            }
            img.$('img-prev').onclick = goPrev; 
          }
          
          if (img.$('img-next')) {
            function goNext() {
              return img.open(img.aImages[img.iIndex+1], true);
            }
            img.$('img-next').onclick = goNext;
          }
          
          if (img.$('run-slide')) {  
            img.$('run-slide').checked = img.iTimer ? true : false;
             
            if (img.$('run-slide').checked) {
              img.slideStatus(true);
            } 
              
            img.$('run-slide').onclick = function() {
              if (this.checked === true) {
                img.slideStatus(true);
              } else {
                img.slideStatus(false);
              }
            }
          }
          
          if (img.$('img-close-button') && img.$('img-pic')) {
            img.$('img-close-button').onclick = function() {
              img.close();
              return false;
            }
            
            img.$('img-pic').onclick = function() {
              img.close();
              return false;
            }
          }
          
          document.onkeydown = function(e) {
            if (window.event) {
              e = window.event;
            }

            if (e.keyCode == 27) {
              img.close();
            } else if (e.keyCode == 39) {
              if (img.$('img-next')) {
                document.onkeydown = '';
                goNext();
              }
            } else if (e.keyCode == 37) {
              if (img.$('img-prev')) {
                document.onkeydown = '';
                goPrev();
              }
            } 
          }
          
          img.oPreLoader.style.visibility = 'hidden';
        }
        
        oPreLoader.src = oImage.href;
      }
    }
    
    return false;
  },
  
  slideStatus: function(bStatus) {
    if (bStatus === true) {
      img.iTimer = window.setTimeout(function() {
        var iIndex = img.iIndex == img.aImages.length-1 ? 0 : img.iIndex+=1;
        return img.open(img.aImages[iIndex], true);
      }, img.iTimeout);
    } else {
      window.clearTimeout(img.iTimer);
      delete img.iTimer;
    }
  },
  
  setPreLoader: function() {
    if (img.sLoader != '') {
      img.oPreLoader = document.createElement('div');
      img.oPreLoader.id = 'img-preloader';
      img.oPreLoader.innerHTML = '<img src="'+img.sLoader+'" />';
      
      document.body.appendChild(img.oPreLoader);
    }
  },
  
  setPic: function(href, width, height) {
    img.oConteiner.innerHTML += '<div id="img-image"><img title="Schließen" id="img-pic" src="'+href+'" width="'+width+'" height="'+height+'" alt="" /></div>';
  },
  
  setDesc: function(sDesc) {
    img.oConteiner.innerHTML += '<div id="img-desc">'+sDesc+'</div>';
  },
  
  setCounter: function() {
    img.oConteiner.innerHTML += '<div id="img-counter">Zdjêcie: <strong>'+(img.iIndex+1)+'</strong> z '+img.aImages.length+'</div>';
  },
  
  setSlide: function() {
    if (img.bSlide) {
      img.oConteiner.innerHTML += '<div id="img-slide"><label for="run-slide" id="run-slide-label">Slajd</label> <input type="checkbox" name="run-slide" id="run-slide" value="true" /></div>';
    }
  },
  
  setPaginate: function() {
    if (img.aImages.length > 1) {
      var sHtml = '<div id="img-paginate"><ul>';
      
      if (img.iIndex > 0) {
        sHtml +='<li><a href="#" id="img-prev">&#171; Poprzednie</a></li>';
      }
      
      if (img.iIndex < img.aImages.length-1) {
        sHtml +='<li><a href="#" id="img-next">Nastêpne &#187;</a></li>';
      }
      
      sHtml += '</ul></div>';
      
      img.oConteiner.innerHTML += sHtml;
    }
  },
  
  setThumbs: function() {
    if (img.bThumbs === true) {
      if (img.aImages.length && img.iIndex >= 0) {
        if (img.iThumbs <= 0) {
          img.iThumbs = 3;
        }
     
        var iFactor = Math.floor(img.iThumbs/2);
     
        if (img.iIndex <= iFactor) {
          img.iStartIndex = 0;
          img.iEndIndex   = img.iThumbs-1;
        } else {
          img.iStartIndex = img.iIndex-iFactor;
          img.iEndIndex   = img.iIndex+iFactor;
        }
   
        if (img.iEndIndex >= img.aImages.length) {
          var iStart = img.aImages.length-1-(iFactor*2);
       
          img.iStartIndex = iStart<0 ? 0 : iStart;
          img.iEndIndex   = img.aImages.length-1;
        }
        
        var sHtml = '<div id="img-thumbs"><ul>';
        
        for (var i = img.iStartIndex; i <= img.iEndIndex; i++) {
          sHtml += '<li><a href="#" onclick="return img.open(img.aImages['+i+'], true);"><img src="'+img.aImages[i].firstChild.src+'" ';
          if (img.aImages[i].firstChild.width) {
            sHtml += ' width="'+img.aImages[i].firstChild.width+'"';
          }
          
          if (img.aImages[i].firstChild.height) {
            sHtml += ' height="'+img.aImages[i].firstChild.height+'"';
          }
          
          sHtml += ' alt="" /></a></li>';
        }
        
        sHtml += '</ul></div>';
      
        img.oConteiner.innerHTML += sHtml;
       }
     }  
  },
  
  setClose: function() {
    img.oConteiner.innerHTML += '<div id="img-close"><a href="#" id="img-close-button" title="Schließen">X</a></div>';
  },
  
  setInfo: function() {
    img.oConteiner.innerHTML += '<div id="img-info"><p>Bewegung nach vorn und zurück mit Pfeiltasten.</p><p>Schließen mit <strong>X</strong> oder <strong>Esc</strong></p></div>';
  },
  
  show: function() {
    document.body.appendChild(img.oLayout);
  },
  
  start: function() {
    if (!img.$('img-overlay')) {
      img.oOverlay = document.createElement('div');
      img.oOverlay.id = 'img-overlay';
      document.body.appendChild(img.oOverlay);
    }
    
    img.oLayout = document.createElement('div');
    img.oLayout.id = 'img-table-layout';
    
    img.oConteiner = document.createElement('div');
    img.oConteiner.id = 'img-conteiner';
    
    img.oWrapper = document.createElement('div');
    img.oWrapper.id = 'img-wrapper';
    
    img.oLayout.appendChild(img.oWrapper);
    img.oWrapper.appendChild(img.oConteiner);
    
    img.setCSS();
  },
  
  setCSS: function() {
    document.documentElement.style.width = '100%';
    document.documentElement.style.height = '100%';
    document.documentElement.style.overflow = 'hidden';
    document.body.style.height = '100%';
    document.body.style.width = '100%';
    document.body.style.overflow = 'hidden';
  },
  
  reset: function() {
    if (img.$('img-table-layout')) {
      document.body.removeChild(img.$('img-table-layout'));
    }
  },
  
  close: function() {
    img.reset();
    
    if (img.iTimer) {
      img.slideStatus(false);
    }
    
    if (img.$('img-overlay')) {
      document.body.removeChild(img.$('img-overlay'));
    }
    
    if (img.$('img-preloader')) {
      document.body.removeChild(img.$('img-preloader'));
    }
    
    document.documentElement.removeAttribute('style');
    document.body.removeAttribute('style');
    
    document.onkeydown = '';
  },
  
  $: function(id) {
    return document.getElementById(id);
  }
  
}

img.sLoader = 'sufity/preloader.gif';
img.sClass = 'img-gallery';

myEvent.add(window, 'load', img.init);
