/* nastaveni galerie */

// var imagePathPattern = 'REPLACE_GALID/REPLACE_PICID.jpg';
var urlPattern = '/picid=REPLACE_PICID';
var bigPicId = 'bigimg';
var idVariable = 'picid';
var descId = 'photoCaption'; // NOTE: NEVER use an ID value used as another attribute value of any element in the document - IE7 would then fail finding the right element
var thumbsId = 'thumbStrip1';
var bigLinkId = 'bigLink';
var startIndex = 0;

/* detekce zla */

var evil = false;

if (window.XMLHttpRequest) {
if(document.all){
evil = true;
//IE7
}else{
evil = false;
//mozilla, safari, opera 9…etc
}
} else {
evil = true;
// IE6, older browsers
}

/* pomocne funkce */

function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('#/') + 2).split('&');
 
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
 
    return vars;
}

function jscss(a,o,c1,c2) {
  switch (a){
    case 'swap':
      o.className=!jscss('check',o,c1)?o.className.replace(c2,c1): o.className.replace(c1,c2);
    break;
    case 'add':
      if(!jscss('check',o,c1)){o.className+=o.className?' '+c1:c1;}
    break;
    case 'remove':
      var rep=o.className.match(' '+c1)?' '+c1:c1;
      o.className=o.className.replace(rep,'');
    break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(o.className)
    break;
  }
}

/* inicializace */

var captions = new Array();
var ids = new Array();
var urls = new Array();
var imageNumber = 0;
var biglink;
var currentIndex = 0;

window.onload = function() {
  
  if(document.createTextNode) {
  
    if(evil) {
      document.getElementById('controlControl').style.background = '#888';
      document.getElementById('controlControl').style.filter = 'alpha(opacity=1)';
    }
  
    jscss('add',document.getElementById('gallerybox'),'jsAvailable');
    biglink = document.getElementById(bigLinkId);
    getTotalWidth();
    var newTimeout = setTimeout("hideControls()",600);
    removeAnchors();
//    document.getElementById('controlStrip').onmouseover = showControls();
//    document.getElementById('controlStrip').onmouseout = hideControls();
  }
}

function removeAnchors() {
  biglink.removeAttribute('href');
  var imgAnchors = document.getElementById(thumbsId).getElementsByTagName('a');
  imageNumber = imgAnchors.length;
  for(var x=0;x<imageNumber;x++) {
    urls[x] = imgAnchors[x].href;
    imgAnchors[x].removeAttribute('href');
    captions[x] = imgAnchors[x].title;
    ids[x] = imgAnchors[x].id;
  }
  for(var y=0;y<imageNumber;y++) {
      imgAnchors[y].onclick = new Function('showImage(' + y + ')');
  }
  
  var urlId = getUrlVars()[idVariable];
  
  for(var a=0;a<imageNumber;a++) {
    if(ids[a] == urlId) startIndex = a;
  }
  
  var nextId = 0;
  if((startIndex + 1) != imageNumber) {
    nextId = startIndex + 1;
  }
  
  addEventSimple(biglink,'click',nextImage);

  
  showImage(startIndex);
}

/* posun nahledu */

var totalWidth = 0;
var totalImgs = 0;

var currentPos = 0;
var targetPos = 0;

var interval;
var isInterval = false;
var forward = false;

var thumbStrip;
var imgWidths = new Array();

function getTotalWidth() {
  thumbStrip = document.getElementById('thumbStrip1');
  var images = thumbStrip.getElementsByTagName('img');
  totalImgs = images.length;
  for(var i=0;i<totalImgs;i++) {
    totalWidth += (images[i].width + 5);
    imgWidths[i] = images[i].width;
  }
}

function moveThumbs(direction) {
  if(isInterval) {
    clearInterval(interval);
  }
  if(direction == 'fwd') {
    if(targetPos > (1385 - totalWidth)) {
      targetPos -= 650;
    }
    else {
      targetPos = 735 - totalWidth;
    }
  }
  else if(direction == 'back') {
    if(targetPos > -735) {
      targetPos = -5;
    }
    else {
      targetPos += 650;
    }
  }
  else {
    var widthBefore = 0;
    for(var k=0;k<currentIndex;k++) {
      widthBefore += (5+imgWidths[k]);
    }
    targetPos = 300 - widthBefore;
    if(targetPos > -5) targetPos = -5;
    if(targetPos < (735 - totalWidth)) targetPos = 735 - totalWidth;
  }
  
  if(targetPos < currentPos) {
    forward = true;
  }
  else {
    forward = false;
  }
    interval = setInterval("moveThemFwd()",40);
    isInterval = true;

}

function moveThemFwd() {
  if(((currentPos <= targetPos) && forward) || ((currentPos > targetPos) && !forward)) {
    clearInterval(interval);
    isInterval = false;
    currentPos = targetPos;
  }
  else {

        currentPos -= ((currentPos-targetPos)/15 + 1);
        if(!forward) currentPos += 2;
      

  }
  thumbStrip.style.left = Math.round(currentPos) + 'px';
}

/* vysunuti pruhu s nahledy */

var controlInterval;
var waitTimeout;
var currentControl = 0;
var targetControl = -80;
var isControlMoving = false;
var isWaiting = false;

function showControls() {

  if(isWaiting) {
    clearTimeout(waitTimeout);
  }
  if(isControlMoving) {
    clearInterval(controlInterval);
  }
  targetControl = 0;
  controlInterval = setInterval('moveControls()', 40);
  isControlMoving = true;
}

function hideControls() {
  if(isControlMoving) {
    hideHideControls();
  }
  else {
    waitTimeout = setTimeout('hideHideControls()',900);
    isWaiting = true;
  }
}

function hideHideControls() {
  isWaiting = false;
  if(isControlMoving) {
    clearInterval(controlInterval);
  }
  targetControl = -80;
  controlInterval = setInterval('moveControls()', 40);
  isControlMoving = true;
}

function moveControls() {
  if(currentControl == targetControl) {
    clearInterval(controlInterval);
    isControlMoving = false;
  }
  else {
    if(targetControl == -80) {
      currentControl -= 4;
    }
    else {
      currentControl += 8;
    }
  }
  if(currentControl < -80) currentControl = -80;
  if(currentControl > 0) currentControl = 0;
  document.getElementById('controlContent').style.top = currentControl + 'px';
}

/* zobrazeni obrazku po kliknuti na nahled */

function nextImage() {
    var nextId=0;
    if((currentIndex + 1) != imageNumber) {
      nextId = currentIndex + 1;
    }
    showImage(nextId);
}

function prevImage() {
  var prevId=imageNumber-1;
  if(currentIndex != 0) {
    prevId=currentIndex-1;
  }
  showImage(prevId);
}

function showImage(imageIndex) {
    var nextId = 0;
    currentIndex = imageIndex;
    var toSearch1 = new RegExp('REPLACE_GALID','g');
    var toReplace1 = galleryId;
    var toSearch2 = new RegExp('REPLACE_PICID','g');
    var toReplace2 = ids[imageIndex];    
    var newURL = urls[imageIndex];
	
	document.getElementById('bigLink').innerHTML = '<img src="' + newURL + '" alt="' + captions[imageIndex] + '" id="bigimg" />';
	
    //document.getElementById(bigPicId).src = newURL;
    
    document.getElementById(descId).innerHTML = captions[imageIndex];
    
    location.href = '#bigimage';
    location.href = '#' + urlPattern.replace(toSearch1, toReplace1).replace(toSearch2,toReplace2);
    
    if((imageIndex + 1) != imageNumber) {
      nextId = imageIndex + 1;
    }

    moveThumbs('middle');
    
    document.getElementById('photoNumber').innerHTML = (imageIndex+1) + " z " + imageNumber;
}

