/* This script is based on Thickbox by Cody Lindley (http://jquery.com/demo/thickbox)
   Copyright (c) 2006, 2007 Cody Lindley (http://www.codylindley.com)
   Copyright (c) 2007 Rafael Holt (http://raffles.awardspace.com) */
//If you want Thickbox to be active when the page loads, uncomment (remove //) the last two lines in this file.
//Alternatively, call Thickbox.init() elsewhere in a script of your own.
//To stop Thickbox's attachment to anchors in your script, call Thickbox.init('kill').
var Thickbox = {
  init: function(what) {
    if (what !== 'kill') {
      var o = document.createElement('div');
      var w = o.cloneNode(true);
      var ww = o.cloneNode(true);
      var l = o.cloneNode(true);
      var d = o.cloneNode(true);
      var li = document.createElement('img');
      var i = document.createElement('img');
      var c = document.createElement('span');
      var p = document.createElement('p');
      o.id = 'Tb_overlay';
      w.id = 'Tb_wra';
      ww.id = 'Tb_window';
      l.id = 'Tb_load';
      li.src = 'js/loading.gif';
      li.alt = 'loading...';
      c.id = 'Tb_close';
      c.title = 'Close';
      c.appendChild(document.createTextNode('close'));
      l.appendChild(li);
      ww.appendChild(i);
      ww.appendChild(p);
      ww.appendChild(c);
      ww.appendChild(d);
      w.appendChild(ww);
      document.body.appendChild(o);
      document.body.appendChild(l);
      document.body.appendChild(w);
      var bits = {
        'overlay': o,
        'loading': l,
        'wra': w,
        'curimg': i,
        'p': p,
        'd': d,
        'closelink': c
      };
      for (var prop in bits) Thickbox[prop] = bits[prop];
      if (w.currentStyle && w.currentStyle.position === 'absolute') Thickbox.ie6 = true;
    }
    else {
      document.body.removeChild($i('Tb_overlay'));
      document.body.removeChild($i('Tb_wra'));
      document.body.removeChild($i('Tb_load'));
    }
    var anchors = $c('thickbox');
    for (var i = 0, j = anchors.length; i < j; i++) {
      var anchor = anchors[i];
      if (what !== 'kill') anchor.onclick = function(e) {
        if (anchor.href.indexOf('ajax?') === 0) {
          var get = anchor.href.split('?')[1];
        }
        var index = Thickbox.makeGroup(this, anchors);
        if (Thickbox.group.length) {
          this.blur();
          if (!e) window.event.returnValue = false;
          else e.preventDefault();
          Thickbox.unhide('overlay', 'loading');
          Thickbox.show(index);
        }
      }
      else anchor.onclick = null;
    }
  },

  makeGroup: function(el, a) {
    Thickbox.group = [];
    var x = false, cur = -1;
    for (var i = 0, j = a.length; i < j; i++) {
      var anchor = a[i];
      if (el.rel) x = anchor.rel && anchor.rel === el.rel ? true : false;
      else x = anchor.rel ? false : true;
      if (x === true) {
        Thickbox.group.push({
          'caption': anchor.title || '',
          'url': anchor.href.replace(/_(?!.*_.*)/,'.'),
          'imageLoaded': false
        });
        cur++;
        if (el.href === anchor.href) var c = cur;
      }
    }
    return c;
  },

  show: function(i) {
    if (Thickbox.ie6) Thickbox.fixed();
    Thickbox.preload(i);
    Thickbox.overlay.onclick = Thickbox.end;
    document.onkeyup = function(e){
      if (!e) var e = window.event;
      if(e.keyCode === 27 || e.keyCode === 67 || e.keyCode === 88) Thickbox.end();
    }
  },

  preload: function(i) {
    if (Thickbox.overlay.style.display !== 'block') return;
    var prel = new Image();
    prel.onload = function() {
      Thickbox.fitsize = Thickbox.resize(prel);
      Thickbox.fullsize = [prel.width, prel.height];
      Thickbox.output(i);
    }
    prel.src = Thickbox.group[i].url;
  },

  resize: function(image) {
    var viewport = Thickbox.viewport();
    var x = viewport[0] - 60;
    var y = viewport[1] - 150;
    var imageWidth = image.width;
    var imageHeight = image.height;
    if (imageWidth > x) {
      imageHeight = imageHeight * (x / imageWidth);
      imageWidth = x;
      if (imageHeight > y) {
        imageWidth = imageWidth * (y / imageHeight);
        imageHeight = y;
      }
    } else if (imageHeight > y) {
      imageWidth = imageWidth * (y / imageHeight);
      imageHeight = y;
      if (imageWidth > x) {
        imageHeight = imageHeight * (x / imageWidth);
        imageWidth = x;
      }
    }
    return [imageWidth, imageHeight];
  },

  output: function(index) {
    var caption = Thickbox.group[index].caption;
    if (Thickbox.p.childNodes.length) Thickbox.p.firstChild.nodeValue = caption;
    else Thickbox.p.appendChild(document.createTextNode(caption));
    if (Thickbox.group.length > 1) {
      var curcount = 'Image '+(index+1)+' of '+Thickbox.group.length;
      if (!Thickbox.d.childNodes.length) {
        var c = document.createElement('span');
        c.appendChild(document.createTextNode(curcount));
        Thickbox.d.appendChild(c);
      }
      else Thickbox.d.firstChild.firstChild.nodeValue = curcount;
    }
    var sl = $i('Tb_sh');
    if (!sl && Thickbox.group.length > 1) {
      var sl = document.createElement('span');
      sl.appendChild(document.createTextNode('Start'));
      sl.id = 'Tb_sh';
      sl.title = 'Start slideshow';
      Thickbox.d.appendChild(sl);
    }
    var pl = Thickbox.nlinks(index-1, 'prev');
    var nl = Thickbox.nlinks(index+1, 'next');
    if (pl) pl.onclick = function() {Thickbox.handle(index-1)}
    if (nl) nl.onclick = function() {Thickbox.handle(index+1)}
    else if (sl) Thickbox.stop(sl);
    if (sl) sl.onclick = slhandle;
    function slhandle() {
      if (!Thickbox.sh) {
        if (!nl) Thickbox.handle(0);
        else Thickbox.start(this, index+1);
      }
      else Thickbox.stop(this);
    }
    document.onkeydown = function(e) {
      if (!e) var e = window.event;
      switch(e.keyCode) {
        case 80: // p
        case 188: if (pl) Thickbox.handle(index-1); break; // <
        case 78: // n
        case 190: if (nl) Thickbox.handle(index+1); break; // >
        case 83: slhandle.call(sl); break; // s
      }
    }
    if (pl) {
      var prev = new Image();
      prev.onload = function() {Thickbox.group[index-1].imageLoaded = true;}
      prev.src = Thickbox.group[index-1].url;
    }
    if (nl) {
      var next = new Image();
      next.onload = function() {Thickbox.group[index+1].imageLoaded = true;}
      next.src = Thickbox.group[index+1].url;
    }
    var resized = Thickbox.zoom('out');
    if (resized) Thickbox.curimg.onclick = function() {
      if (hasClass(Thickbox.wra, 'Tb_zoomed')) Thickbox.zoom('out');
      else Thickbox.zoom('in');
    }
    else Thickbox.curimg.onclick = null;
    Thickbox.closelink.onclick = Thickbox.end;
    Thickbox.overlay.onclick = Thickbox.end;
    Thickbox.wra.onclick = function(e) {
      if (!e) var e = window.event;
      var t = e.target || e.srcElement;
      if (t.id === 'Tb_wra') Thickbox.end();
    }
    Thickbox.curimg.src = Thickbox.group[index].url;
    Thickbox.wra.style.visibility = '';
    Thickbox.hide('loading');
    Thickbox.unhide('wra');
  },

  nlinks: function(index, ident) {
    var nid = $i('Tb_'+ident);
    var i = Thickbox.group[index];
    if (i && !nid) {
      var li = document.createElement('span');
      li.id = 'Tb_'+ident;
      li.title = i.caption;
      var fe = ident === 'prev' ? 'rev' : 'Next >';
      if (ident === 'prev') {
        var f = document.createElement('span');
        f.appendChild(document.createTextNode('P'));
        li.appendChild(document.createTextNode('< '));
        li.appendChild(f);
      }
      li.appendChild(document.createTextNode(fe));
      if (ident === 'prev' && $i('Tb_next')) Thickbox.d.insertBefore(li, Thickbox.d.firstChild.nextSibling);
      else Thickbox.d.insertBefore(li, Thickbox.d.lastChild);
      return li;
    }
    else if (!i && nid) {Thickbox.d.removeChild(nid); return false}
    else if (i && nid) {nid.title = i.caption; return nid}
  },

  handle: function(i) {
    if (Thickbox.group[i].imageLoaded !== true) {
      Thickbox.unhide('loading');
    }
    Thickbox.wra.style.visibility = 'hidden';
    Thickbox.show(i);
  },

  hide: function() {
		for (var i = 0; i < arguments.length; i++) Thickbox[arguments[i]].style.display = '';
  },

  unhide: function(e) {
    for (var i = 0; i < arguments.length; i++) Thickbox[arguments[i]].style.display = 'block';
  },

  end: function() {
    Thickbox.hide('loading','wra','overlay');
    Thickbox.wra.style.position = '';
    if (Thickbox.sh) Thickbox.stop();
    if (Thickbox.ie6) Thickbox.fixed(true);
  },

  start: function(e, i) {
    Thickbox.sh = window.setInterval(function() {
      Thickbox.handle(i);
      i++;
    },2500);
    e.firstChild.nodeValue = 'Stop';
    e.title = 'Stop slideshow';
  },

  stop: function(e) {
    if (!e) e = $i('Tb_sh');
    window.clearInterval(Thickbox.sh);
    Thickbox.sh = null;
    e.firstChild.nodeValue = 'Start';
    e.title = 'Start slideshow';
  },

  position: function(zoom, sH) {
    var scrolled = self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    var vheight = Thickbox.viewport()[1];
    var tall = Thickbox.fullsize[1], shrt = Thickbox.fitsize[1], boxheight;
    if (zoom) boxheight = getStyle(Thickbox.wra,'height');
    if (!boxheight) boxheight = Thickbox.wra.offsetHeight || Thickbox.wra.clientHeight || (zoom === 'in' ? tall+80 : shrt+80);
    if (zoom === 'in') {
      var diff = (tall - shrt)/2;
      if (vheight > boxheight) Thickbox.wra.style.top = scrolled + (vheight/2 - boxheight/2) + 'px';
      else if (scrolled > diff && sH > boxheight + 40) {
        if (sH < scrolled + 18 + boxheight) {
          Thickbox.wra.style.top = 'auto';
          Thickbox.wra.style.bottom = '18px';
        }
        else Thickbox.wra.style.top = (scrolled - diff) + 'px';
      }
    }
    else {
      var sgap = (vheight/2 - boxheight/2);
      if (Thickbox.ie6) {
        Thickbox.loading.style.top = (vheight/2 + scrolled) + 'px';
        sgap += scrolled;
      }
      Thickbox.wra.style.top = sgap + 'px';
      Thickbox.wra.style.bottom = 'auto';
    }
  },

  zoom: function(z) {
    var full = Thickbox.fullsize, fit = Thickbox.fitsize;
    var i = Thickbox.curimg, w = Thickbox.wra;
    var sH = document.documentElement.scrollHeight;
    if (z === 'out') {
      w.firstChild.style.width = Math.max(fit[0] + 20, 260) + 'px';
      removeClass(w, 'Tb_zoomed');
      i.width = fit[0];
      i.height = fit[1];
      if (fit[0] !== full[0] || fit[1] !== full[1]) var resized = true;
      var ititle = resized ? 'Click to zoom in to full size' : 'Full-size image';
      i.title = ititle + ' (' + full[0] + ' x ' + full[1] + ' pixels)';
      if (Thickbox.ie6) window.onscroll = Thickbox.position;
    }
    else if (z === 'in') {
      i.removeAttribute('width');
      i.removeAttribute('height');
      w.firstChild.style.width = Math.max(full[0] + 20, 260) + 'px';
      i.title = 'Click to fit to window';
      w.className += ' Tb_zoomed';
      if (Thickbox.ie6) window.onscroll = null;
    }
    Thickbox.position(z, sH);
    return resized;
  },

  fixed: function(end) {
    var sels = document.getElementsByTagName('select');
    var vis = end ? 'visible' : 'hidden';
    for (var i=0; i < sels.length; i++) sels[i].style.visibility = vis;
    if (end) return;
    w = Thickbox.viewport()[0];
    Thickbox.overlay.style.width = w + 'px';
    Thickbox.overlay.style.height = document.documentElement.scrollHeight + 'px';
    Thickbox.wra.style.width = w + 'px';
  },

  viewport: function() {
    var de = document.documentElement;
    var w = self.innerWidth || de.clientWidth;
    var h = self.innerHeight || de.clientHeight;
    return [w,h];
  }
};
function $i(e) {return document.getElementById(e)}
function $c(c) {
	var children = document.getElementsByTagName('*');
	var els = [];
	for (var i = 0, j = children.length; i < j; i++) if (hasClass(children[i], c)) els.push(children[i]);
	return els;
}
function hasClass(el, c) {
if (!el || !el.className.length) return false;
var bits = el.className.split(' '), has = false;
for (var j = 0; j < bits.length; j++) if (bits[j] === c) has = true;
return has;
}
function addClass(el, c) {
if (!el || hasClass(el, c) === true) return;
if (el.className.length) el.className += ' '+c;
else el.className = c;
}
function removeClass(el, c) {
  if (!el || !el.className.length || !hasClass(el, c)) return;
  var bits = el.className.split(' ');
  var newClass = '';
  for (var i=0; i < bits.length; i++) if (bits[i] !== c) newClass += bits[i]+' ';
  el.className = newClass;
}
function getStyle(el, s) {
  if (document.defaultView && document.defaultView.getComputedStyle)
    var val = document.defaultView.getComputedStyle(el, null).getPropertyValue(s);
  else if (el.currentStyle) var val = el.currentStyle[s];
  val = parseInt(val, 10);
  return isNaN(val) ? false : val;
}

//if (window.addEventListener) window.addEventListener('load', Thickbox.init, false);
//else if (window.attachEvent) window.attachEvent('onload', Thickbox.init);