$ = function(id){ return document.getElementById(id) };
$$ = function(name) { return document.getElementsByTagName(name); }

var paginated_tbody = false;
var paginated_per_page = 25;

init = function() {
 if(arguments.callee.done) return
 arguments.callee.done = true;


 odd_or_even($$('tr')); 
 // add_enlarge();

 external_anchors();

 form = $('search');
 if(form) {
  form.onsubmit = function(e) { return validate_search(); }
 }
}

function external_anchors() {
 anchors = document.getElementsByTagName('a');
 for(i = 0; i < anchors.length; i++) {
  rel = anchors[i].getAttribute('rel');
  if(rel && rel.indexOf('external') > -1) {
   anchors[i].onclick = function() { window.open(this.href); return false; }
  }
 }

 // dit is handig om straks verkeer van google images direct op onze pagina
 // te krijgen
 // if(parent.frames.length > 0) { top.location.replace(document.location); }
}

function hasClass(obj,cName) { return new RegExp('\\b'+cName+'\\b').test(obj.className); }

addClass = function(ele,cls) {
 if(!this.hasClass(ele,cls)) ele.className += " "+cls;
}
removeClass = function(ele,cls) {
 if (hasClass(ele,cls)) {
  var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
  ele.className=ele.className.replace(reg,' ');
 }
}

validate_search = function() {
 input = $('search-query');
 if(input && input.value.length < 3) {
  alert('Je moet minimaal 3 karakters invullen als je ergens op wilt zoeken.');
  return false;
 }

 return true;
}

add_pagination_links = function(current_page) {
 p = document.createElement('p');
 p.appendChild(document.createTextNode('Bekijk pagina: '));
 p.className = 'pagination';

 trs = paginated_tbody.getElementsByTagName('tr');
 
 pages = parseInt(trs.length / paginated_per_page);
 if(pages * paginated_per_page < trs.length) { pages++; }

 for(i = 0; i < pages; i++) {
  if((i + 1) == current_page) { p.appendChild(document.createElement('strong')).innerHTML = (i + 1); }
  else  {
   a = document.createElement('a');
   a.setAttribute('href', '#category-overview');
   a.innerHTML = (i + 1);
   a.onclick = function() { show_page(parseInt(this.innerHTML)); switch_to_page(parseInt(this.innerHTML)); return false; }
   p.appendChild(a);
 }
  if(i < (pages - 1)) { p.appendChild(document.createTextNode(' | ')); }
 }

 table = paginated_tbody.parentNode;
 table.parentNode.insertBefore(p, table);
}

switch_to_page = function(current_page) {
 p = paginated_tbody.parentNode.previousSibling;
 elements = p.getElementsByTagName('*');

 for(i = 0; i < elements.length; i++) {
  if(!elements[i].getAttribute('href')) {
   a = document.createElement('a');
   a.setAttribute('href', '#category-overview');
   a.innerHTML = (i + 1);
   a.onclick = function() { show_page(parseInt(this.innerHTML)); switch_to_page(parseInt(this.innerHTML)); return false; }
   p.replaceChild(a, elements[i]);   
  }

  else if(i == (current_page - 1)) {
   strong = document.createElement('strong');
   strong.innerHTML = (i + 1);
   p.replaceChild(strong, elements[i]);
  }
 }
}

paginate_table = function(table) {
 paginated_tbody = table.getElementsByTagName('tbody')[0];
 var trs = paginated_tbody.getElementsByTagName('tr');

 if(trs.length <= paginated_per_page) return true;

 for(var i = paginated_per_page; i < trs.length; i++) { addClass(trs[i], 'hidden'); }

 add_pagination_links(1);
}

show_page = function(page) { 
 trs = paginated_tbody.getElementsByTagName('tr');
 first = (page - 1) * paginated_per_page;
 last = page * paginated_per_page - 1
 for(i = 0; i < trs.length; i++) {
  if(trs[i] && trs[i].style) {
   if(i >= first && i <= last) { removeClass(trs[i], 'hidden'); }
   else { addClass(trs[i], 'hidden'); }
  }
 }
}

add_enlarge = function() {
 anchors = $$('a');
 for(var i = 0; i < anchors.length; i++) {
  if(anchors[i].className == 'enlarge') {
   anchors[i].onclick = function(e) { enlarge(e); return false; }
  }
 }
}

enlarge = function(e) {
 target = e ? e.target : window.event.srcElement;
 link = target.src ? target.parentNode.href : target.href;
 
 image = document.createElement('img');
 image.setAttribute('src', link);
 image.setAttribute('id', 'popimg');
 image.style.display = 'none';

 document.body.appendChild(image);

 image.onload = function() {
  img = $('popimg');
  // img.style.left = '50%';
  // img.style.marginLeft = '-' + (img.width / 2) + 'px';  
  // img.style.top = '50%;'
  // img.style.marginTop = '-' + (img.height / 2) + 'px';
  img.style.display = 'block';

  popup = document.createElement('div');
  popup.setAttribute('id', 'popup');
  document.body.appendChild(popup);

  popup.onclick = function() {
   document.body.removeChild($('popup'));
   document.body.removeChild($('popimg')); 
  }
 }

 image.onclick = function() {
  document.body.removeChild($('popup'));
  document.body.removeChild($('popimg'));
 }
}

odd_or_even = function(list) {
 for(var i = 0; i < list.length; i++) {
  list[i].className += ' ' + (i % 2 ? 'odd' : 'even');
 }
}

var DomLoaded =
{
	onload: [],
	loaded: function()
	{
		if (arguments.callee.done) return;
		arguments.callee.done = true;
		for (i = 0;i < DomLoaded.onload.length;i++) DomLoaded.onload[i]();
	},
	load: function(fireThis)
	{
		this.onload.push(fireThis);
		if (document.addEventListener) 
			document.addEventListener("DOMContentLoaded", DomLoaded.loaded, null);
		if (/KHTML|WebKit/i.test(navigator.userAgent))
		{ 
			var _timer = setInterval(function()
			{
				if (/loaded|complete/.test(document.readyState))
				{
					clearInterval(_timer);
					delete _timer;
					DomLoaded.loaded();
				}
			}, 10);
		}
		/*@cc_on @*/
		/*@if (@_win32)
		var proto = "src='javascript:void(0)'";
		if (location.protocol == "https:") proto = "src=//0";
		document.write("<scr"+"ipt id=__ie_onload defer " + proto + "><\/scr"+"ipt>");
		var script = document.getElementById("__ie_onload");
		script.onreadystatechange = function() {
		    if (this.readyState == "complete") {
		        DomLoaded.loaded();
		    }
		};
		/*@end @*/
	   window.onload = DomLoaded.loaded;
	}
};


