window.addEvents({
    'domready': function() {
        //initAccordion($('newslist_accordion'), $$('div.newslist').getElements('h3'), $$('div.newslist').getElements('div.panel'));
        clearInput();
        initNewsList(); //Direct redirect instead of accordion
        initAdvancedSearch();
        initFAQ();
        fixShadowboxIE6();
        initNewsTicker();
        initSearchForm($$('fieldset.search_results').combine($$('fieldset.quick_search')).combine($$('fieldset.search_news')), false);
        initVacatureForm();
        initSolliciteerDirect();
        initSubNav();
        initDatecheck();
        setHeightForwardBox();
    },
    'load': function() {
        //makeEqualHeight($$('div.overview_body div'), 2);
        makeEqualHeight($$('div.workatafm_body'), 2);
        makeEqualHeight($$('div.workatafm_body p.body_txt'), 2);
        makeEqualHeightSitemap();
    }
});


/**
* setHeightForwardBox
*
* sets height of forward box
*
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @since 1.0, 5 feb 2010
* @return void
*/

function setHeightForwardBox() {

    var fwBoxes = document.getElements('div.forwardlinkbox');
    if (fwBoxes.length == 0) return false;

    fwBoxes.each(function(box) {

        var elHead = box.getElement('h2');
        var elImg = box.getElement('img');

        if (elHead && elImg) {
            var intHeight = elImg.getSize().y.toInt();
        } else if (elHead && !elImg) {
            var intHeight = elHead.getSize().y.toInt();
        }

        box.setStyle('height', intHeight);
    });
}

/**
* clearInput
*
* clears input onclick
*
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @since 1.0, 5 feb 2010
* @return void
*/

function clearInput() {

    var inputfields = $$('.searchterm').combine($$('.search_term'));
    
    inputfields.each(function(item) {

        item.defaultText = item.value;
        item.store('defaultText', item.value);
        
        item.addEvents({
            'focus': function() {
                if (item.value == item.defaultText) {
                    item.value = '';
                }
            }
        });
    });
}


/**
* initSubNav
*
* initializes subnav, disables onclick active page
*
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @since 1.0, 5 feb 2010
* @return void
*/


function initSubNav() {

    var elSubNav = document.getElement('ul.nav_category_list');
    if (!elSubNav) return false;

    var elActiveSubNav = elSubNav.getElement('li.submenu');
    var elActiveSubSubNav = elSubNav.getElement('li.submenulvl2');

    // AFMSUP-85 Als er geen subitems zichtbaar zijn maar subitem geselecteerd is, laat gebruiker het link toch maar klikken
    var elActiveSubNavChildSelected = elSubNav.getElement('li.submenu.childSelected');

    if (elActiveSubNav && !elActiveSubSubNav && !elActiveSubNavChildSelected) {

        elActiveSubNav.getElement('a').addEvents({
            'click': function(e) {
                e.stop();
                elActiveSubNav.toggleClass('submenu_closed');
            }, 
            'dblclick': function(e) {
                e.stop();
                elActiveSubNav.toggleClass('submenu_closed');
            }
        });
    }
}

/**
* onChangeForm
*
* an onchange submits form to self, adds id and other to url
*
* @param id, value of form element 
* @param extras, additional params
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @since 1.0, 13 nov 2009
* @return void
*/

function onChangeForm(extras) {

    var qString = '';
    
    if (extras) {
        qString += extras;
    }
    
    window.location = qString;
}

/**
* initSearchForm
*
* initializes search form handling: enter en click
*
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @author lowen <lowen{AT}efocus.nl>
* @since 1.0, 25 jun 2010
* @return void
*/

function initSearchForm(forms, isNews) {
    if (forms.length == 0) return false;
		
    forms.each(function(form) {
	
        var button = form.getElement('a.button_search');
        var arrFormfields = form.getElements('input').combine(form.getElements('select'));

        if (!form.getElement('input.searchUrl')) return false;
        var url = form.getElement('input.searchUrl').get('value');
		
        // enter in fields
        arrFormfields.each(function(elFormfield) {

            elFormfield.addEvents({
                'keydown': function(e) {
                    if (e.key == 'enter') {
                        if (elFormfield.get('value') != '' && elFormfield.get('value') != elFormfield.defaultText) {
							e.stop();
							var newQString = createNewSearchUrl(arrFormfields);
							window.location = url + "?" + newQString.substr(1);
						}
                    }
                }
            });
        });

        // button
        var button = form.getElements('a.button_search');
		var elSearchTerm = button.getParent().getElement('input.searchterm');
		
        button.addEvents({
            'click': function(e) {
               if (elSearchTerm.get('value') != '' && elSearchTerm.get('value') != elSearchTerm.retrieve('defaultText')[0]) {
					e.stop();
					var newQString = createNewSearchUrl(arrFormfields);
					window.location = url + "?" + newQString.substr(1);
				}
            },
            'keyup': function(e) {
                if (e.key == 'enter') {
	               if (elSearchTerm.get('value') != '' && elSearchTerm.get('value') != elSearchTerm.retrieve('defaultText')[0]) {
						e.stop();
						var newQString = createNewSearchUrl(arrFormfields);
						window.location = url + "?" + newQString.substr(1);
					}
                }
            }
        });

        if (isNews == true) {
            var newQString = createNewSearchUrl(arrFormfields);
            window.location = url + "?" + newQString.substr(1);
        }
    });
}

/**
* createNewSearchUrl
*
* creates url from fields in specific fieldset
*
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @since 1.0, 02 dec 2009
* @return void
*/

function createNewSearchUrl(arrFormfields) {

    var strNewUrl = "";

    arrFormfields.each(function(elFormfield) {

        var strFieldName = elFormfield.get('name');
        var strFieldValue = elFormfield.get('value');

        if (strFieldName != "pageUrl" && strFieldName != "headerUrl" && strFieldName != '' && strFieldName != null && strFieldValue != '') {
            strNewUrl += "&" + strFieldName + "=" + strFieldValue;
        }

    });

    // paginator?
    var elPaginator = document.getElement('div.paginator_holder');
    if (elPaginator) {
        var arrPaginatorFields = elPaginator.getElements('input').combine(elPaginator.getElements('select'));

        arrPaginatorFields.each(function(elPaginatorfield) {

            var strFieldName = elPaginatorfield.get('name');
            var strFieldValue = elPaginatorfield.get('value');
            
            if (strFieldName != '' && strFieldName != null && strFieldValue != '') {
                strNewUrl += "&" + strFieldName + "=" + strFieldValue;
            }

        });
    }
    return strNewUrl;
}

/**
* initVacatureForm
*
* initializes vacature form handling: enter en click
*
* @author Wesley <wesley.van.heije{AT}efocus.nl>
* @since 1.1, 18 jan 2010
* @return void
*/

function initVacatureForm() {

    var forms = $$('fieldset.search_vacancy');
    if (forms.length == 0) return false;

    forms.each(function(form) {

        var newUrl = "";
        var currentUri = form.getElement('.searchUrl').get('value');
        var button = form.getElement('a.button_search');
        var searchInput = form.getElement('input.searchterm');

        searchInput.addEvents({
            'keyup': function(e) {
                if (e.key == 'enter') {
                    e.stop();
                    newUrl = currentUri + '?search=' + searchInput.get('value');
                    window.location = newUrl;
                }
            }
        });

        button.addEvents({
            'click': function(e) {
                e.stop();
                newUrl = currentUri + '?search=' + searchInput.get('value');
                window.location = newUrl;
            },
            'keyup': function(e) {
                if (e.key == 'enter') {
                    e.stop();
                    newUrl = currentUri + '?search=' + searchInput.get('value');
                    window.location = newUrl;
                }
            }
        });
    });
}


/**
* initSolliciteerDirect
*
* initializes soliciteer direct form handling: toggle show/hide in iframe
*
* @author Wesley <wesley.van.heije{AT}efocus.nl>
* @since 1.1, 18 jan 2010
* @return void
*/
function initSolliciteerDirect() {

    var iframe = $(document.body).getElement('iframe');
    var solliciteerDirect = $(document.body).getElement('.solliciteerDirect');
    if (solliciteerDirect != null && solliciteerDirect != '') {
        iframe.hide();
        
        solliciteerDirect.addEvent('click', function(e) {
            e = new Event(e);
            iframe.toggle();
            e.stop();
        });
    }
}

/**
* initAccordion
*
* initializes accordion
*
* @param accordion
* @param toggler
* @param panel
* @author Mirjam <mirjam{AT}efocus.nl>
* @author Rocco <rocco@efocus.nl>
* @since 1.0, 11 oct 2009
* @return void
*/

function initAccordion(accordion, t, panel, index) {

    if (!accordion || !t || !panel) return false;

    if (!index) {
        index = 0;
    }
    
    var thisAccordion = thisAccordion = new Accordion(accordion, t, panel, {
        show: index,
        opacity: false,
        alwaysHide: true,
        onActive: function(toggler, element) {
            toggler.getParent('li').addClass('full');
            toggler.blur();
        },
        onBackground: function(toggler, element) {
            toggler.getParent('li').removeClass('full');
            toggler.blur();
        }
    });
}

/**
 * initializes shortcuts accordion and starts accordion
 *
 * @author Rocco Janse <rocco@efocus.nl>
 * @since 1.0, 11 oct 2009
 * @return void
 */

function initShortcutAccordion(index) {

    var acc = $(document.body).getElement('ul.shortcut_accordion');
	if (!acc) return;
	
	var handles = acc.getChildren('li').getElement('a.handle');
	if (handles == 0) return;
	
	var panels = acc.getChildren('li').getElement('div.panel');
	if (panels == 0) return;
	
	initAccordion(acc, handles, panels, index);
}

/**
* initFAQ
*
* initializes FAQ
*
* @author Rou-hun <lowen{AT}efocus.nl>
* @return void
*/

function initFAQ() {
	var elFAQ = document.getElement('ul.faq');
	
	if(!elFAQ) return false;
	
	var arrTogglers = elFAQ.getElements('a.toggler');
	var arrPanels = elFAQ.getElements('div.panel');
	
	arrTogglers.each(function(elToggler){
		elToggler.addEvent('click', function(event){
			event.stop();
			elToggler.blur();
			arrTogglers.each(function(elTogglerThis){
				if (elTogglerThis != elToggler) elTogglerThis.getParent().removeClass('open');
			});
			elToggler.getParent().toggleClass('open');
		})
	});
}

/**
* makeEqualHeightSitemap
*
* makes multiple different elements all the same height,
* assuming the height of the highest element
* for sitemap items
*
*
* @author Mirjam <mirjam{AT}efocus.nl>
*
*/

function makeEqualHeightSitemap() {

    var sitemapList = $$('ul.sitemap_2');
    sitemapList.each(function(list) {
        makeEqualHeight(list.getChildren('li'), 2);
    });
}

/**
* makeEqualHeight
*
* makes multiple different elements all the same height,
* assuming the height of the highest element
*
* @param arElements, Array of DOM elements to compare fix height
* @param perrow, Number of items per row
*
* @author Mirjam <mirjam{AT}efocus.nl>
*
*/

function makeEqualHeight(arElements, perrow) {

    var h = 0;
    var start = 0;
	
	for(var i = 0 ; i < arElements.length ; i++) {

	    if (perrow) {
	        if (i % perrow == 0) {
	            h = 0;
	            start = i;
	        }
	    }
	        
	    if (arElements[i].getSize().y > h) {
	        h = arElements[i].getSize().y;
	    }

	    if (i % perrow == perrow - 1) {
	        
	        for (var itemnr = start; itemnr <= i; itemnr++) {
	           
	            var item = arElements[itemnr];
	            
	            var ch = 0;
	            var ah = item.getStyle('padding-top').toInt();
	            ah += item.getStyle('padding-bottom').toInt();
	            ah += item.getStyle('border-top-width').toInt();
	            ah += item.getStyle('border-bottom-width').toInt();
	            ch = h - ah;
	            item.setStyle('height', ch);

	        }
	    }
	
	}

}

/**
* fixShadowboxHeight
* Fixes the CSS Expression of Shadowbox needed in IE6.
* 
* @author CSD (clientsidedevelopers[AT]efocus.nl)
*/
function fixShadowboxIE6() {

	Shadowbox.options.onOpen = function() {
		$('sb-overlay').setStyles({
			'height': window.getSize().y
		});
		window.addEvent('resize', function() {
			$('sb-overlay').setStyles({
				'height': window.getSize().y
			});
		});
	};
}

/**
* initAdvancedSearch
*
* initializes advanced search options
*
* 
* @author Mirjam <mirjam{AT}efocus.nl>
* @since 1.0, 13 nov 2009
* @return void
*/

function initAdvancedSearch() {

	var advancedSearchButton = document.getElement('a.advanced_search');
	var advancedSearchBox = document.getElement('div.advanced_search_box');

	if (!advancedSearchButton || !advancedSearchBox) return false;

	advancedSearchButton.addEvent('click', function(event) {
		event.stop();
		advancedSearchBox.toggleClass('advanced_search_box_show');
    });
	
	// filter open?
    var thisUrl = window.location.toString();
    if (thisUrl.contains('filter2') || thisUrl.contains('from') || thisUrl.contains('to')) {
        advancedSearchBox.addClass('advanced_search_box_show');
    }
}

/**
 * startDatePickers
 *
 * @author Rocco Janse <rocco@efocus.nl>
 * @since 1.0, 18 nov 2009
 * @return void
 */
 
function startDatePickers(language) {
	if ($(document.body).getElement('input.date')) {
		
		var today = new Date();
		if (language == 'nl') {
			var loc_days = ['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'];
			var loc_months = ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'];
		} else {
			var loc_days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
			var loc_months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
		}
		new DatePicker('input.date', {
			pickerClass: 'datepicker_dashboard',
			allowEmpty: true,
			inputOutputFormat: 'd-m-Y',
			toggleElements: '.date_toggler',
			maxDate : { date: today, inputFormat: 'd-m-Y' },
			days: loc_days,
			months: loc_months
		});
	};
};

/**
* initNewsList
*
* initializes news overview list
*
* @author Wesley <wesley.van.heije{AT}efocus.nl>
* @since 1.0, 10 mar 2010
* @return void
*/
function initNewsList() {
    var newsList = $('newslist_accordion');
    if (newsList != null) {
        var items = newsList.getChildren('li').getElement('a');

        items.each(function(item) {
            // Hierarchy; ul > li > h3 > a (item)
            var h3 = item.getParent().addEvent('click', function(e) {
                e = new Event(e);
                location.replace(item.get('href'));
                e.stop();
            });
        });
    }
}

/**
* initNewsTicker
* initializes newsticker
* 
* @since 10/02/2010
* @author Mirjam (mirjam[AT]efocus.nl)
* @author Rocco Janse <rocco@efocus.nl>
*/

function initNewsTicker() {
	
	if ($('news_ticker') || $('news_ticker2')) {
		
		var elTicker = $('news_ticker') || $('news_ticker2');

		// place ticker		
		var newsTicker = new Ticker({
		    elMainDiv: elTicker,
		    speedIn: 500,
		    speedOut: 500,
		    delayOut: 3000,
		    elNextBut: elTicker.getElement('a.next'),
		    elPrevBut: elTicker.getElement('a.prev')
		});
        
		// set ticker on bottom of page(wrapper)
		//var intTickerHeight = elTicker.getHeight().toInt();
		//var intFooterHeight = $(document.body).getElement('div.footer').getHeight() || 0;
		//var intBottomPx = intFooterHeight - 7;

		// add padding to newslist to prevent the ticker from overlaying the newslist
		//var elNewsList = $(document.body).getElement('div.newslist');
		//if ($defined(elNewsList)) {
		//	elNewsList.setStyle('padding-bottom', intBottomPx);
		//}

		// add ticker styles
		//elTicker.setStyles({
		//	'position': 'absolute',
		//	'bottom': intBottomPx
		//});
		
	}
}

/**
 * initDatecheck
 * Checks if end-date is not before or the same as start-date
 * 
 * @author Lowen (lowen[AT]efocus.nl)
 */
function initDatecheck() {
	
	var arrDateInputStart = $(document).getElement('input.date_from');
	var arrDateInputEnd = $(document).getElement('input.date_to');

	if (!arrDateInputStart || !arrDateInputEnd) return false;
	
	var elSubmit = $(document).getElement('a.button_submit.button_search');
	
	elSubmit.addEvent('click', function(event) {
		event.stop();
		if (arrDateInputStart.get('value') != '' && arrDateInputEnd.get('value') != '') {
		
			var warningMessage = $(document).getElement('fieldset.search_news p.errormsg');		
			var startDate = arrDateInputStart.value;
			var startDateDay = startDate.split("-")[0].toInt();
			var startDateMonth = startDate.split("-")[1].toInt();
			var startDateYear = startDate.split("-")[2].toInt();
			var startDateTs = new Date(startDateYear, (startDateMonth - 1), startDateDay, 0, 0, 0);
			
			var endDate = arrDateInputEnd.value;
			var endDateDay = endDate.split("-")[0].toInt();
			var endDateMonth = endDate.split("-")[1].toInt();
			var endDateYear = endDate.split("-")[2].toInt();
			var endDateTs = new Date(endDateYear, (endDateMonth - 1), endDateDay);
			
			var dateDifference = endDateTs - startDateTs;
			
			if (dateDifference >= 0) {
				initSearchForm($$('fieldset.search_news'), true);
			} else {
				warningMessage.setStyle('display', 'block');
			}
		} else {
			initSearchForm($$('fieldset.search_news'), true);
		}
	});
}
