/*  
 *  Standaardscripts voor ministeriële websites
 *
 * 
 *
 */
 
/* 
        TEKSTGROOTTE
        Knoppen en functionaliteit worden automatisch gegenereerd in
        het element met id="textsize"
*/
var paginaTaal; // welke taal gebruikt de pagina? Gezet in initializeAll
var pageTracker; // nodig voor de Google Analytics - code

var tekstGrootte = {
        tekst: {
                nl: 'Tekstgrootte ',
                en: 'Text size '
        },
        hulptekstGroter: {
                nl: 'grotere letters',
                en: 'larger font size'
        },
        hulptekstKleiner: {
                nl: 'kleinere letters',
                en: 'smaller font size' 
        },
        groterTekst: {
                nl: '+',
                en: '+'
        },
        kleinerTekst: {
                nl: '-',
                en: '-'
        },
        huidig: 2,
  classes: ['kleinst','kleiner','','groter','grootst'],
        groterLink: undefined,
        kleinerLink: undefined,
        oudeLink: undefined,
        styleSheets: [],
        bodyClass: '',
        init: function () {
                var writeroot = document.getElementById('textsize');             
                if (!writeroot) return;
                this.bodyClass = document.body.className;                               
                var header = document.createElement('h2');
                header.appendChild(document.createTextNode(this.tekst[paginaTaal]));               
                writeroot.insertBefore(header,writeroot.lastChild);                
                this.groterLink = document.createElement('a');
                this.groterLink.href = '#';
                this.groterLink.title = this.hulptekstGroter[paginaTaal];
                this.groterLink.appendChild(document.createTextNode(this.groterTekst[paginaTaal]));
                this.groterLink.onclick = this.tekstGroter;
                this.kleinerLink = document.createElement('a');
                this.kleinerLink.href = '#';
                this.kleinerLink.title = this.hulptekstKleiner[paginaTaal];
                this.kleinerLink.appendChild(document.createTextNode(this.kleinerTekst[paginaTaal]));
                this.kleinerLink.onclick = this.tekstKleiner;
                /*simulate insertAfter functionality */
               	if(header.nextSibling) {
					writeroot.insertBefore(listify([this.kleinerLink,this.groterLink]), header.nextSibling);
				} else {
					writeroot.appendChild(listify([this.kleinerLink,this.groterLink]));
				}
               
                var oudeWaarde = Cookies.textsize;
                if (!oudeWaarde) return;
                this.huidig = oudeWaarde;
                this.zetGrootte();
        },
        tekstGroter: function () {
                tekstGrootte.huidig++;
                tekstGrootte.zetGrootte();
  location.reload();
                return false;
        },
        tekstKleiner: function () {
                tekstGrootte.huidig--;
                tekstGrootte.zetGrootte();
  location.reload();
                return false;
        },
        zetGrootte: function () {
                if (this.huidig >= this.classes.length-1)
                        this.groterLink.className = 'disabled';
                else
                        this.groterLink.className = '';
                if (this.huidig <= 0)
                        this.kleinerLink.className = 'disabled';
                else
                        this.kleinerLink.className = '';
                if (this.huidig < 0)
                        this.huidig = 0;
                if (this.huidig >= this.classes.length)
                        this.huidig = this.classes.length-1;
                document.body.className = this.bodyClass + ' ' + this.classes[this.huidig];
                Cookies.create('textsize',this.huidig,365);
        }
}

var printLink = {
        tekst: {
                nl: "Print",
                en: "Print"
        },
        msg: {
        		nl: "Deze pagina afdrukken",
        		en:	"Print this page"
        },
        init: function () {
                var writeroot = document.getElementById('printlink');
                if (!writeroot) return;
                var link = document.createElement('a');
                link.href = '#';
                link.title= this.msg[paginaTaal];
                link.appendChild(document.createTextNode(this.tekst[paginaTaal]));
                link.onclick = function () {
                        window.print();
                        return false;
                }
                writeroot.appendChild(link);
        }
}

var popups = {
        standaardBreedte: 300,
        standaardHoogte: 150,
        waarschuwingTekst: {
                nl: '(opent in popup)',
                en: '(opens in popup)'
        },
        init: function () {
                this.initPopups(document);
        },
        initPopups: function (obj) {
                var x = obj.getElementsByTagName('a');
                for (var i=0;i<x.length;i++) {
                        if (x[i].getAttribute('rel') && x[i].getAttribute('rel').indexOf('popup') != -1) {
                                x[i].firstChild.nodeValue += ' ' + this.waarschuwingTekst[paginaTaal];
                                x[i].onclick = function(){popups.openPopup(this); return false};
                        }
                }
        },
        openPopup: function (link) {
                var breedte = this.standaardBreedte;
                var hoogte = this.standaardHoogte;
                var data = link.getAttribute('rel').split(';');
                if (data.length == 3) {
                        breedte = data[1];
                        hoogte = data[2];
                }
                window.open(link.href,'popup','width='+breedte+',height='+hoogte+',resizable=yes,scrollbars=yes');
        }
}

var bloklinks = {
        speciaal: ['external','anker','download'],
        init: function () {
                var lists = document.getElementsByTagName('li');
                for (var i=0;i<lists.length;i++) {
                        if (lists[i].className.indexOf('bloklink') == -1) continue;
                        var ul = lists[i].parentNode;
                        if (!ul.gedaan) {
                                ul.className += ' js-aan';
                                ul.gedaan = true;
                        }
                        var classes = lists[i].className;
                        var classesHover = classes + ' over';
                        for (var j=0;j<this.speciaal.length;j++) {
                                if (classes.indexOf(this.speciaal[j]) != -1) {
                                        classesHover = classes.replace(this.speciaal[j],this.speciaal[j]+'Over');
                                        break;
                                }
                        }
                        lists[i].origClass = classes;                   
                        lists[i].hoverClass = classesHover;
                        lists[i].onmouseover = function () {
                                this.className = this.hoverClass;
                        }
                        lists[i].onmouseout = function () {
                                this.className = this.origClass;
                        }
                        lists[i].onclick = function () {
                                //Sjors van Berkel 15-07-08
                                //Use onclick code if available, otherwise, use the href
                                if(this.getElementsByTagName('a')[0].onclick){
                                        this.getElementsByTagName('a')[0].onclick();
                                }else{
                                        var href = this.getElementsByTagName('a')[0].href;
                                        location.href = href;
                                }
                                return false;
                        }
                }
        }
}

var pollresultaten = {
        factor: undefined,
        init: function () {
                var writeroot = document.getElementById('poll-res');
                if (!writeroot) return;
                var items = writeroot.getElementsByTagName('li');
                for (var i=0;i<items.length;i++) {
                        var spans = items[i].getElementsByTagName('span');
                        if (!spans.length) continue;
                        var staaf = spans[0];
                        if (!this.factor)
                                this.factor = staaf.offsetWidth/100;
                        var percentage = parseInt(spans[1].firstChild.nodeValue);
                        var innerSpan = document.createElement('span');
                        innerSpan.style.width = percentage * this.factor + 'px';
                        staaf.appendChild(innerSpan);
                }
        }
}

var faqLijst = {
        init: function () {
                var x = document.getElementById('faqlijst');
                if (!x) return;
                var items = x.getElementsByTagName('li');
                for (var i=0;i<items.length;i++) {
                        items[i].onclick = this.toggle;
                        items[i].onmouseover = function () {
                                this.moStatus = 'Over';
                                faqLijst.changeClass(this);
                        }
                        items[i].onmouseout = function () {
                                this.moStatus = '';
                                faqLijst.changeClass(this);
                        }
                        items[i].originalClass = items[i].className;
                        items[i].className += ' dicht';
                        items[i].status = 'dicht';
                }
        },
        toggle: function () {
                this.status = (this.status == 'dicht') ? 'open' : 'dicht';
                faqLijst.changeClass(this);
        },
        changeClass: function (obj) {
                obj.className = obj.originalClass + ' ' + obj.status + obj.moStatus;
        }
}

var chatLink = {
		init : function () {			
			var showchat = getElementsByClass(document.body,'javascriptRequired', 'div')[0];
			if(showchat) {	
				showchat.className = "javascriptEnabled";
			}
			var link = document.getElementById('chatLink');
			if (!link) return;
			link.onclick = function() {chatLink.openChatBox()};
		},
		openChatBox: function () {	
			window.open('https://status.chatfone.nl//request.php?l=cfm000728&x=728&deptid=3794&action=noprechat', 'chat', 'scrollbars=no,menubar=no,resizable=0,location=no,screenX=50,screenY=100,width=500,height=545');
		}		
		
}


/* INITIALISATIE 
        aangeroepen door DOMContentReady
*/

var inits = [
        'tekstGrootte',
        'printLink',
        'popups',
        'bloklinks',
        'faqLijst',
        'chatLink'
];

function initializeAll() {
     paginaTaal = document.documentElement.lang || 'nl';
     externalLinksAnalytics();

        for (var i=0;i<inits.length;i++) {
                if (window[inits[i]])
                        window[inits[i]].init();
        }
    initMenu();
    searchOptionsInit();
}

function submitSearch() {	
	return false;
}

function switchAdv(){	
	if(document.getElementById('adv')) {	
		if(document.getElementById('adv').value == 'no') {
			document.getElementById('adv').value='yes';
		}else {
			 document.getElementById('adv').value='no';
		}
	}
}

function searchOptionsInit() {
var forms = getElementsByClass(document,'extended-search-form', 'form');
for (var i=0; i<forms.length; i++) {
 var subs = getElementsByClass(forms[i], 'sub', 'a');
 for (var j=0; j<subs.length; j++) {
  subs[j].onclick = function() { 
   var clicker = this;
   var options = getElementsByClass(clicker.parentNode.parentNode, 'theoptions', 'div');
   if (hasClass(clicker,'open')){
    clicker.className="sub closed";
    for (var z=0; z < options.length; z++) {
     options[z].className="theoptions closed";
    }
   } else if (hasClass(clicker,'closed')){
    clicker.className="sub open";
    for (var z=0; z < options.length; z++) {
     options[z].className="theoptions open";
    }
   }
  switchAdv();
  };
  
  var position = "closed";
  try{
  	var adv = document.getElementById('adv').value;
  	if(adv=='yes') position = "open";
  }catch(e){}
    
  var options = getElementsByClass(subs[j].parentNode.parentNode, 'theoptions', 'div');
  subs[j].className="sub " + position;
  for (var z=0; z < options.length; z++) {
   options[z].className="theoptions " + position;
  }
  
 }
}
}

/* UTILITIES */

function listify(dataArray) {
        var x = document.createElement('ul');
        for (var i=0;i<dataArray.length;i++) {
                var y = document.createElement('li');
                y.appendChild(dataArray[i]);
                x.appendChild(y);
        }
        return x;
}

function sendRequest(url,callback,postData) {
        var req = createXMLHTTPObject();
        if (!req) return;
        var method = (postData) ? "POST" : "GET";
        req.open(method,url,true);
        req.setRequestHeader('User-Agent','XMLHTTP/1.0');
        if (postData)
                req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                req.onreadystatechange = function () {
                if (req.readyState != 4) return;
                if (req.status != 200 && req.status != 304) {
                        // alert('HTTP error ' + req.status);
                        return;
                }
                callback(req);
        }
        if (req.readyState == 4) return;
        req.send(postData);
}

var XMLHttpFactories = [
        function () {return new XMLHttpRequest()},
        function () {return new ActiveXObject("Msxml2.XMLHTTP")},
        function () {return new ActiveXObject("Msxml3.XMLHTTP")},
        function () {return new ActiveXObject("Microsoft.XMLHTTP")},
];

function createXMLHTTPObject() {
        var xmlhttp = false;
        for (var i=0;i<XMLHttpFactories.length;i++)
        {
                try {
                        xmlhttp = XMLHttpFactories[i]();
                }
                catch (e) {
                        continue;
                }
                break;
        }
        return xmlhttp;
}

// push and shift for IE5

function Array_push() {
        var A_p = 0
        for (A_p = 0; A_p < arguments.length; A_p++) {
                this[this.length] = arguments[A_p]
        }
        return this.length
}

if (typeof Array.prototype.push == "undefined") {
        Array.prototype.push = Array_push
}

function Array_shift() {
        var A_s = 0
        var response = this[0]
        for (A_s = 0; A_s < this.length-1; A_s++) {
                this[A_s] = this[A_s + 1]
        }
        this.length--
        return response
}

if (typeof Array.prototype.shift == "undefined") {
        Array.prototype.shift = Array_shift
}

/* COOKIES */

var Cookies = {
        init: function () {
                var allCookies = document.cookie.split('; ');
                for (var i=0;i<allCookies.length;i++) {
                        var cookiePair = allCookies[i].split('=');
                        this[cookiePair[0]] = cookiePair[1];
                }
        },
        create: 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=/";
                this[name] = value;
        },
        erase: function (name) {
                this.create(name,'',-1);
                this[name] = undefined;
        },
        eraseAll: function () {
                for (var i in this) {
                        if (typeof this[i] == 'function') continue;
                        this.erase(i);
                }
        }
};
Cookies.init();

/* DOMCONTENTREADY */

function ContentReady() {
        // quit if this function has already been called
        if (arguments.callee.done) return;

        // flag this function so we don't do the same thing twice
        arguments.callee.done = true;

        // kill the timer
        if (_timer) clearInterval(_timer);

        // do stuff
        initializeAll();
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
        document.addEventListener("DOMContentLoaded", ContentReady, false);
}

/* for Internet Explorer */
if(window.addEventListener){
	window.addEventListener('load', ContentReady, false);
} else if(window.attachEvent){
	window.attachEvent('onload', ContentReady);
}


/*@cc_on @*/
/*@if (@_win32)
        document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
        var script = document.getElementById("__ie_onload");
        script.onreadystatechange = function() {
                if (this.readyState == "complete") {
                        ContentReady(); // call the onload handler
                }
        };
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
        var _timer = setInterval(function() {
                if (/loaded|complete/.test(document.readyState)) {
                        ContentReady(); // call the onload handler
                }
        }, 10);
}

/* Next functions are for making the menu toggles
 * 
 */
function initMenu(){
    /*If this is a DOM comliant browser, we make the menu nicer*/
    var W3CDOM = (document.createElement && document.getElementsByTagName);
    if (W3CDOM) {
        brancheelements = getElementsByClass(document.body,'branchespecific','ul');
        for (var i = 0; i < brancheelements.length; i++) {
            toggleMenu(brancheelements[i],'a'); 
        }
        
        extendedinf = getElementsByClass(document.body,'extended-information','*');
       
        for (var i = 0; i < extendedinf.length; i++) {
            toggleMenu(extendedinf[i],'a'); 
        }
        
        
        
        linklists = getElementsByClass(document.body,'linklist','ul');
        for (var i = 0; i < linklists.length; i++) {
            toggleMenu(linklists[i],'a'); 
        }
        /*If there is a go up link we add a function which takes the user up without adding # to the link*/
        goupelements = getElementsByClass(document.body,'up','li');
        for (var i = 0; i < goupelements.length; i++) {
            goupelements[i].onclick=function() {scroll(0,0);return false;};
        }
    }
}

function hasClass(target, theClass) {
    /*Function to test an element for a class*/
    var pattern = new RegExp("(^| )" + theClass + "( |$)");
    if (pattern.test(target.className)) { 
        return true;  
    } else {
        return false;
    }
}

function getElementsByClass(node,searchClass,tag) {
  /* Function for getting the elements from a classname
   */
  var classElements = new Array();
  var els = node.getElementsByTagName(tag); // use "*" for all elements
  var pattern = new RegExp('\\b'+searchClass+'\\b');
  for (var i = 0; i < els.length; i++)
       if ( pattern.test(els[i].className) )
           classElements[classElements.length] = els[i];
  return classElements; 
}

function toggleMenu(el,tname) {
    /* based on script found on http://bonrouge.com/~togglit 
     * We take only tags of type 'tname' and  classnames sub 
     * (because there could be other tags which we dont want) 
     */
    var clickers=el.getElementsByTagName(tname);
    //alert("tname = " + tname + " | " + clickers.length);
    for (i=0; i<clickers.length; i++) {
        if (clickers[i].className == 'sub') {
            clickers[i].className="clicker";
        
            clickers[i].onclick=function() {
                toggleNext(this,tname)
            }
            toggleNext(clickers[i],tname);
        }
    }
}

function toggleNext(el,tname) {
    /*Toggle the menu, we set classname to closed resp. open*/
    var next=el.nextSibling;
    var tags=el.parentNode.getElementsByTagName(tname);
    
    if (! next) {
        next=el.parentNode.nextSibling;
        tags=el.parentNode.parentNode.getElementsByTagName(tname);
    }
    
    while(next.nodeType!=1) { next=next.nextSibling;} // make sure ie and firefox take the same next Sibling

    if(!hasClass(next,"closed")) { next.className = "closed"; } else { next.className = "open"; }
    if(!hasClass(el,"closed")) { el.className = "closed"; } else { el.className = "open"; }

}


/*
*	JavaScript for GoogleAnalytics
*/


var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

function startAnalytics(){
	pageTracker = _gat._getTracker("UA-5213061-1"); 
	pageTracker._initData();
    pageTracker._trackPageview();
}

/* window.addEventListener('load', startAnalytics, false);*/

function externalLinksAnalytics() {
	startAnalytics();
	
	var externalLinks = document.getElementsByTagName("a");
    var res = "";      		
    var location = "http://" + document.domain;
    
    if (window.location.port != "") {
    	location += ":" + window.location.port;
    }
      		
    var pattern = new RegExp(location);
    
	for (i = 0; i < externalLinks.length; i ++) {
	      		
		if (externalLinks[i].href != "" && !pattern.test(externalLinks[i].href)){
		
			externalLinks[i].onclick=function() {
				pageTracker._trackPageview("/external_links/" + this.href.replace(location,""));
				return true;
					      			
	      	}//end 
	      	
	     }// end if	
	     
	 }// end for
	 
}// end function


/* for other browsers */
window.onload = ContentReady;

