// Extend String with getHash()
String.prototype.getHash = function() {
 var hash = this.split('#');
 return (hash[1]) ? hash[1] : false;
}

// External links function (by Boris, 29/12/2009)
function externalLinks() {   
 if (!document.getElementsByTagName) return;   
 var anchors = document.getElementsByTagName("a");   
 for (var i=0; i<anchors.length; i++) {   
   var anchor = anchors[i];   
   if (anchor.getAttribute("href") &&   
       anchor.getAttribute("rel") == "external")   
     anchor.target = "_blank";   
 }   
}   

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

var Tabs = {
 'home' : '1',
 'erwinvanlun' : '2',
 'boeken' : '3',
 'lezingen' : '4',
 'workshops' : '5',
 'trends' : '6'
}

// Links
var Links = {
 domain : undefined,
 init : function() {
  Links.domain = location.href.match(/http:\/\/([\-\.0-9a-z]*)\/.*/)[1] || false;
  // add document event handler
  document.onclick = Links.clicked;
  // loop thru links to set external
  var A = document.getElementsByTagName('a');
  for (var i = 0; i < A.length; i++) {
   if (!(A[i].href.match(Links.domain))) A[i].className += ' external';
  } 
 },
 clicked : function(e) {
  var event = e || window.event;
	if(event.ctrlKey || event.shiftKey || event.altKey) return true;
	if(event.which && event.which != 1) return true;

	var target = event.target || event.srcElement;
	while(target && !/^a$/i.test(target.nodeName)) {
   target = target.parentNode;
	}

	if(!target || !target.className) return true;

  var clas = target.className;
  var href = target.getAttribute('href');
  switch(clas) {
   case 'toggle':
    ToggleElement(target);
    break;
   case 'popup':
    window.open(href,'_blank','width=400,height=440');
    break;
   case 'external':
    window.open(href, '_blank');
    break;
   case 'print':
    self.print();
    break;
   default:
    return true;
  }

  try { event.preventDefault(); } catch(e){}
  return false;
 }
}

function ToggleElement(a) {
 var href = a.href;
 var hash = href.getHash();
 if (!hash) return;
 var el = document.getElementById(hash);
 if (!el) return;
 var isHidden = (el.className == 'hidden') ? true : false;
 el.className = (isHidden) ? '' : 'hidden';

 if (!a.style.backgroundImage) {
  //a.style.backgroundImage = 'url(http://www.mensmerk.nl/images/design/togglefold/uit-'+ Tabs[document.body.className] +'.gif)';
 }
 
 var currentCookie = Cookie.get('open_on_load') || '';
 
 if (isHidden) {
  a.style.backgroundImage = a.style.backgroundImage.replace('uit-','in-');
  Cookie.set('open_on_load',currentCookie+'|'+hash);
 } else {
  a.style.backgroundImage = a.style.backgroundImage.replace('in-','uit-');
  Cookie.set('open_on_load',currentCookie.replace('|'+hash,''));
 }
 
}

function CheckToggleElements() {
 var current = Cookie.get('open_on_load');
 if (current == null) return;
 var openThese = current.split('|');
 
 for (var i = 0; i < openThese.length; i++) {
  
  var thisone = openThese[i];
  if (!thisone) continue;
  var el = document.getElementById(thisone);
  if (!el) continue;
  el.className = '';
 }
 
}


function PrintCheck() {
 var hash = location.href.getHash();
 if (!hash) return;
 if (hash == 'print') self.print();
}

function ValidateForm() {
	var form = document.getElementById('searchform');
 	if (!form) return;
 	var keywords = document.getElementById('searchterm');
 	if (!keywords) return;
 
 	var inputs = form.getElementsByTagName('input');
 	var select = form.getElementsByTagName('select');

 
 	form.onsubmit = function() {
  		/*
  		var form = document.getElementById('searchform');
  		var keywords = document.getElementById('searchterm');
  		var inputs = form.getElementsByTagName('input');
  		var select = form.getElementsByTagName('select');
  		*/
  		var kw = keywords.value;
  		if (!kw || kw.length < 3) { return false; }
  		for (var i = 0; i < inputs.length; i++) {
   			var el = inputs[i];
   			if (!el.id || el.type == 'hidden') continue;
   			if (el.type == 'text') 
    			var value = el.value;
   			else
    			var value = el.checked ? 'checked' : '';
   			Cookie.set(el.id,value);
  		}
  		for (var i = 0; i < select.length; i++) {
   			var el = select[i];
   			if (!el.id) continue;
   			Cookie.set(el.id,el.selectedIndex);
  		}
 	}
 
 	for (var i = 0; i < inputs.length; i++) {
  		var el = inputs[i];
  		if (!el.id || el.type == 'hidden') continue;
  		var checked = Cookie.get(el.id);
  		if (checked == null) {
  			// if cookie nog set for in_entries then check it and set cookie
  			// if (el.id == 'in_entries') { 
  			//	el.checked = 'checked';
  			//	Cookie.set(el.id,'checked');
  			// }
  			continue;
  		}
  		if (el.type == 'text') {
   			el.value = checked;
  		} else {
   			if (checked == 'checked') {
   				el.checked = 'checked';
   			}
  		}
 	}

 	for (var i = 0; i < select.length; i++) {
  		var el = select[i];
  		if (!el.id) continue;
  		var selected = Cookie.get(el.id);
  		if (selected != null) el.selectedIndex = selected;
 	}
}

var Cookie = {
 set : function (name,value,days) {
	if (days) {
	 var date = new Date();
	 date.setTime(date.getTime()+(days*24*60*60*1000));
	 var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
 document.cookie = name+"="+value+expires+"; path=/";
 },

 get : function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
},

 remove : function(name) { Cookie.set(name,"",-1); }
}



addLoadEvent(Links.init);
addLoadEvent(PrintCheck);
addLoadEvent(ValidateForm);
addLoadEvent(CheckToggleElements);
addLoadEvent(externalLinks);

