addEvent(window,'load',getTabs);
addEvent(window,'load',hideFocusBorders);

/* initialiseer tabs */
function getTabs() {
	// check of javascript voldoende wordt ondersteund door de browser 
	if (!document.getElementById) {
		return;
	}
	
	// check of de tabnavigatie mogelijk is
	if (!document.getElementById('tabnavigatie')) {
		return;
	}
	
	// haal tablinkjes op uit de DOM
	var tablinks = document.getElementById('tabnavigatie').getElementsByTagName('a');
	
	// maak mouseover/mouseclick die de functie showtab(nummer) aanroept 
	for(var i=0;i<tablinks.length;i++) { 
		tablinks[i].onclick = function() {
					
			// bepaal op welke tab geklikt is
			var tabdata_id = this.getAttribute('rel');
			
			// activeer de tab en toon het bijbehorende tabblad
			showTab(tabdata_id);
			return false;
		}
	}
}

/* showhiden en activeren tabs */
function showTab(nummer) {
	
	// haal alle tablinks op uit de DOM
	var tablinks = document.getElementById('tabnavigatie').getElementsByTagName('a');
	var tablinks_rel= '';
	
	// haal alle tabdivs op uit de DOM
	var tabdivs = document.getElementById('tabdata').getElementsByTagName('div');
	var tabdivs_rel= '';
	
	for(var i=0;i<tablinks.length;i++) { 
		
		// verander de class van de actieve tab en en van het bijbehorende tabblad
		tablinks_rel = tablinks[i].getAttribute('rel');
		tabdivs_name = tabdivs[i].id;
		
		if(tablinks_rel == nummer && tabdivs_name == nummer) {
			
			tablinks[i].className = 'active_tab';
			tabdivs[i].className = 'show';
			
		} else {
			
			tablinks[i].className = 'inactive_tab';
			tabdivs[i].className = 'hide';
		}
	}
}


// fade-effect hovers
// [gebaseerd op http://www.leigeber.com/2008/05/javascript-color-fading-script/ ]
// main function to process the fade request //
function colorFade(id,element,start,end,steps,speed) {
  var startrgb,endrgb,er,eg,eb,step,rint,gint,bint,step;
  var target = document.getElementById(id);
  steps = steps || 20;
  speed = speed || 20;
  clearInterval(target.timer);
  endrgb = colorConv(end);
  er = endrgb[0];
  eg = endrgb[1];
  eb = endrgb[2];
  if(!target.r) {
    startrgb = colorConv(start);
    r = startrgb[0];
    g = startrgb[1];
    b = startrgb[2];
    target.r = r;
    target.g = g;
    target.b = b;
  }
  rint = Math.round(Math.abs(target.r-er)/steps);
  gint = Math.round(Math.abs(target.g-eg)/steps);
  bint = Math.round(Math.abs(target.b-eb)/steps);
  if(rint == 0) { rint = 1 }
  if(gint == 0) { gint = 1 }
  if(bint == 0) { bint = 1 }
  target.step = 1;
  target.timer = setInterval( function() { animateColor(id,element,steps,er,eg,eb,rint,gint,bint) }, speed);
}

// incrementally close the gap between the two colors //
function animateColor(id,element,steps,er,eg,eb,rint,gint,bint) {
  var target = document.getElementById(id);
  var color;
  if(target.step <= steps) {
    var r = target.r;
    var g = target.g;
    var b = target.b;
    if(r >= er) {
      r = r - rint;
    } else {
      r = parseInt(r) + parseInt(rint);
    }
    if(g >= eg) {
      g = g - gint;
    } else {
      g = parseInt(g) + parseInt(gint);
    }
    if(b >= eb) {
      b = b - bint;
    } else {
      b = parseInt(b) + parseInt(bint);
    }
    color = 'rgb(' + r + ',' + g + ',' + b + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
    target.r = r;
    target.g = g;
    target.b = b;
    target.step = target.step + 1;
  } else {
    clearInterval(target.timer);
    color = 'rgb(' + er + ',' + eg + ',' + eb + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
  }
}

// convert the color to rgb from hex //
function colorConv(color) {
  var rgb = [parseInt(color.substring(0,2),16), 
    parseInt(color.substring(2,4),16), 
    parseInt(color.substring(4,6),16)];
  return rgb;
}


/* 'add event' functie om meerdere javascript-functies aan te roepen */
function addEvent(obj, evType, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, true);
		return true;
	
	} else if (obj.attachEvent) {
		var r = obj.attachEvent('on'+evType, fn);
		return r;
	
	} else {
		return false;
	}
}

/* verwijder stippellijntjes rond links */
/* ontleend aan http://codylindley.com/Javascript/223/hiding-the-browsers-focus-borders-should-i-shouldnt-i */
function hideFocusBorders() {
	var theahrefs = document.getElementsByTagName('a');
	
	if(!theahrefs) {
		return;
	}
	
	for(var x=0;x!=theahrefs.length;x++) {
		theahrefs[x].onfocus = function stopLinkFocus() {
			this.hideFocus=true;
		};
	}
}

