subNav = function()
    {
    if (document.all&&document.getElementById)
        {
        var navRoot = document.getElementById("sub-nav");
        if (navRoot != null)
            {
            for (i=0; i<navRoot.childNodes.length; i++)
                {
                node = navRoot.childNodes[i];
                if (node.nodeName=="LI")
                    {
                    node.onmouseover=function()
                        {
                        this.className+=" over";
                        }
                    node.onmouseout=function()
                        {
                        this.className=this.className.replace(" over", "");
                        }
                    }
                }
            }
        }
    }
    
window.onload=subNav;

sfHover = function() {
    // Support the standard nav without a class of nav.
    var el = document.getElementById("sub-nav");
    if (el != null)
    {
        (!/\bnav\b/.test(el.className) && el.tagName == "UL")
        setHover(el);
    }

    // Find all unordered lists.
    var ieNavs = document.getElementsByTagName('ul');
    for(i=0; i<ieNavs.length; i++) {
        var ul = ieNavs[i];
        // If they have a class of nav add the menu hover.
        if(/\bnav\b/.test(ul.className))
            setHover(ul);
    }

}

function setHover(nav) {
    var ieULs = nav.getElementsByTagName('ul');
    if (navigator.appVersion.substr(22,3)!="5.0") {
        // IE script to cover <select> elements with <iframe>s
        for (j=0; j<ieULs.length; j++) {
            var ieMat=document.createElement('iframe');
            if(document.location.protocol == "https:")
                ieMat.src="//0";
            else if(window.opera != "undefined")
                ieMat.src="";
            else
                ieMat.src="javascript:false";
            ieMat.scrolling="no";
            ieMat.frameBorder="0";
            ieMat.style.width=ieULs[j].offsetWidth+"px";
            ieMat.style.height=ieULs[j].offsetHeight+"px";
            ieMat.style.zIndex="-1";
            ieULs[j].insertBefore(ieMat, ieULs[j].childNodes[0]);
            ieULs[j].style.zIndex="101";
        }
        // IE script to change class on mouseover
        var ieLIs = nav.getElementsByTagName('li');
        for (var i=0; i<ieLIs.length; i++) if (ieLIs[i]) {
            // Add a sfhover class to the li.
            ieLIs[i].onmouseover=function() {
                if(!/\bsfhover\b/.test(this.className))
                    this.className+=" sfhover";
            }
            ieLIs[i].onmouseout=function() {
                if(!this.contains(event.toElement))
                    this.className=this.className.replace(' sfhover', '');
            }
        }
    } else {
        // IE 5.0 doesn't support iframes so hide the select statements on hover and show on mouse out.
        // IE script to change class on mouseover
        var ieLIs = document.getElementById('nav').getElementsByTagName('li');
        for (var i=0; i<ieLIs.length; i++) if (ieLIs[i]) {
            ieLIs[i].onmouseover=function() {this.className+=" sfhover";hideSelects();}
            ieLIs[i].onmouseout=function() {this.className=this.className.replace(' sfhover', '');showSelects()}
        }
    }
}

// If IE 5.0 hide and show the select statements.
function hideSelects(){
    var oSelects=document.getElementsByTagName("select");
    for(var i=0;i<oSelects.length;i++)
        oSelects[i].className+=" hide";
}

function showSelects(){
    var oSelects=document.getElementsByTagName("select");
    for(var i=0;i<oSelects.length;i++)
        oSelects[i].className=oSelects[i].className.replace(" hide","");
}

// Run this only for IE6.
if (/MSIE 6/.test(navigator.userAgent) && 
    window.attachEvent) window.attachEvent('onload', sfHover);
// end

/**
 *  EventListener module
 *  --------------------------
 * (c) Lost Boys - http://www.lostboys.nl
 */

var EventListener = {
    listeners:[],
    bSafari:/safari/i.test(navigator.userAgent),
    addEvents:function(els, type, func, scope) {
        for(var i=0; i<els.length; i++) {
            this.addEvent(els[i], type, func, scope);
        }
    },

    addEvent:function(el, type, func, scope) {
        var handler = this.delegate(func, scope || el);
        try { 
            el.addEventListener(type, handler, false); 
        } catch (e) { 
            el.attachEvent('on' + type, handler); 
        }

        var event = { element:el, type:type, handler:handler };
        this.listeners.push(event);
        return event;
    },

    removeEvents:function(events) {
        for (var i=0; i<events.length; i++) {
            this.removeEvent(events[i]);
        }
    },

    removeEvent:function(event) {
        try {
            event.element.removeEventListener(event.type, event.handler, false);
        } catch (e) {
            event.element.detachEvent('on' + event.type, event.handler);
        }

        for(var i=0; i<this.listeners.length; i++) {
            if(this.listeners[i] == event) {
                this.listeners.splice(i, 1);
                break;
            }
        }
    },

    getTarget:function(e, name) {
        var target = e.target || e.srcElement;
        var reg = name? new RegExp('^'+name+'$', 'i') : null;
        while(target && (target.nodeType != 1 || (reg && !reg.test(target.nodeName)))) {
            target = target.parentNode;
        }
        return target;
    },

    getEvents:function(el, type) {
        var result = [];
        for(var item,i=0; (item = this.listeners[i++]);) {
            if((!el || el == item.element) && (!type || type == item.type)) {
                result.push(item);
            }
        }
        return result;
    },

    cancelEvent:function(e) {
        this.preventDefault(e);
        this.stopPropagation(e);
        return false;
    },
    
    preventDefault:function(e) {
        try {
            e.preventDefault();
        } catch (exception) {
            e.returnValue = false;
        }   
        
        if(this.bSafari) {
            var target = this.getTarget(e, 'a');
            if (target) { target.onclick = function() { return false; }; };
        }
    },
    
    stopPropagation:function(e) {
        try {
            e.stopPropagation();
        } catch (exception) {
            e.cancelBubble = true;
        }
    },

    delegate:function(func, scope) {
        return function() {
            func.apply(scope, arguments);
        }
    }
}

registerPloneFunction = function (func) {
    EventListener.addEvent(window, 'load', func);
}


/**
 *	open downloads in new window
 */
function fNewDOCSWindows(){
    if (!document.getElementsByTagName || !window.location.pathname) 
        return false;
	var subhome = window.location.pathname.replace("/nuffic_nl", "").split("/")[1];
	if (subhome == 'nederlandse-studenten' || subhome =='nederlandse-organisaties') {
		openText = " (opent in nieuw venster)";
	} else {
        openText = " (opens in a new window)";
	}
    var links = document.getElementsByTagName("a");
    for (var eleLink = 0; eleLink < links.length; eleLink++) {
        if (links[eleLink].href.indexOf('.xls') !== -1) {
            links[eleLink].className += " excel";
            links[eleLink].title += openText;
            links[eleLink].onclick = function() {
                createPopUp(this, "popper", "resizable,scrollbars");
                return false;
            }
        }
        if (links[eleLink].href.indexOf('.pdf') !== -1) {
            links[eleLink].className += " pdf";
            links[eleLink].title += openText;
            links[eleLink].onclick = function() {
                createPopUp(this, "popper", "resizable,scrollbars");
                return false;
            }
        }
        if (links[eleLink].href.indexOf('.doc') !== -1 || links[eleLink].href.indexOf('.rtf') !== -1) {
            links[eleLink].className += " word";
            links[eleLink].title += openText;
            links[eleLink].onclick = function() {
                createPopUp(this, "popper", "resizable,scrollbars");
                return false;
            }
        }
        if (links[eleLink].href.indexOf('.ppt') !== -1) {
            links[eleLink].className += " ppt";
            links[eleLink].title += openText;
            links[eleLink].onclick = function() {
                createPopUp(this, "popper", "resizable,scrollbars");
                return false;
            }
        }
    } 
}

function createPopUp(link, POPname, POPstyle){
    var strProps="";
    window.open(link.href,POPname,POPstyle);
}

// **** End Open Documents in New Window Script ***
registerPloneFunction(fNewDOCSWindows)

// This function updates a hidden date field with the current values of the widgets
function update_date_field(field, year, month, day, hour, minute, ampm)
{
    var field  = document.getElementById(field)
    var date   = document.getElementById(date)
    var year   = document.getElementById(year)
    var month  = document.getElementById(month)
    var day    = document.getElementById(day)
    var hour   = document.getElementById(hour)
    var minute = document.getElementById(minute)
    var ampm   = document.getElementById(ampm)

    if (0 < year.value)
    {
        // Return ISO date string
        // Note: This relies heavily on what date_components_support.py puts into the form.
        field.value = year.value + "-" + month.value + "-" + day.value + " " + hour.value + ":" + minute.value
        // Handle optional AM/PM
        if (ampm && ampm.value)
            field.value = field.value + " " + ampm.value
    } 
    else 
    {
        // Return empty string
        field.value = ''
        // Reset widgets
        month.options[0].selected = 1
        day.options[0].selected = 1
        hour.options[0].selected = 1
        minute.options[0].selected = 1
        if (ampm && ampm.options)
            ampm.options[0].selected = 1
    }
}

