window.addEvent('domready', function(){

	//session keepalive
	new Request({
	    method: 'post',
	    url: 'loader.php?module=site&interface=keepalive',
	    initialDelay: (sessionTimeout / 2) * 1000,
	    delay: (sessionTimeout / 2) * 1000,
	    limit: (sessionTimeout / 2) * 1000
	}).startTimer();

	//header
	var flashvars = {};
	var params = {};
	params.menu = "false";
	swfobject.embedSWF(templateFolder + "flash/header.swf", "header_main_flash", "920", "200", "6.0.0", templateFolder + "flash/expressInstall.swf", flashvars, params);

	//login formulier
	if($('login_username') && $('login_password')){

		if($('login_username').value == ''){
			$('login_username').setStyles({
				'background-image': 'url(' + templateFolder + 'images/username_bg.gif)',
				'background-repeat': 'no-repeat'
			});
		}
		if($('login_username').value == ''){
			$('login_password').setStyles({
				'background-image': 'url(' + templateFolder + 'images/password_bg.gif)',
				'background-repeat': 'no-repeat'
			});
		}
		$$('.login_field').each(function(el){
			el.addEvent('focus', function(){
				this.setStyle('color', '#000000');
				this.setStyle('background', '#FFFFFF');
			}).addEvent('blur', function(){
				if(this.value == ''){
					this.setStyle('color', '#9F9F9F');
					if(this.id == 'login_username'){
						this.setStyles({
							'background-image': 'url(' + templateFolder + 'images/username_bg.gif)',
							'background-repeat': 'no-repeat'
						});
					}else if(this.id == 'login_password'){
						this.setStyles({
							'background-image': 'url(' + templateFolder + 'images/password_bg.gif)',
							'background-repeat': 'no-repeat'
						});
					}
				}
			});
		});
	}

	//muis positie
	$('body_wrapper').addEvent('mousemove', function(e){
		var event = new Event(e);
		tempX = event.page.x;
		tempY = event.page.y;
	});

	//filters cursusweergave
	$$('.filter').each(function(el){
		el.addEvent('change', function(){
			$('filter_form').submit();
		});
	});

	//annuleerknop op 'create account' pagina
	if($('create_account_cancel')){
		$('create_account_cancel').addEvent('click', function(el){
			location.href = $('cancel_url').value;
		});
	}

	//eindniveau popup
	$$('.end_level').each(function(el){
		el.addEvent('click', function(e){
			e = new Event(e).stop();
			idParts = el.id.split('_');
			levelId = idParts[3];
			levelData = getLevelData(levelId);
		});
	});

	//lesrooster popup
	$$('.schedule').each(function(el){
		el.addEvent('click', function(e){
			e = new Event(e).stop();
			idParts = el.id.split('_');
			courseId = idParts[1];
			if(idParts[2] != ''){
				groupId = idParts[2];
			}else {
				groupId = null;
			}
			scheduleData = getSchedule(courseId, groupId);
		});
	});

	//links naar (beveiligde) lesmateriaal bestanden
	$$('a').each(function(el){
		if(el.href.contains('uploads/files')){
			el.addEvent('click', function(e){

				//bestandsnaam uit href halen
				hrefParts = el.href.split('uploads/files/');
				fileName = hrefParts[(hrefParts.length-1)];

				//link event stoppen zodat link niet geopend wordt
				e = new Event(e).stop();

				//php bestand aanroepen
				location.href = basepath + 'modules/course/interfaces/includes/ajax/file_output.php?file=' + fileName;
			});
		}
	});

	//"naar betalen" knop
	if($('to_checkout_page_button')){
		$('to_checkout_page_button').addEvent('click', function(){
			if(location.href[(location.href.length-1)] != '/'){
				location.href = location.href + '/checkout/';
			}else {
				location.href = location.href + 'checkout/';
			}
		});
	}

	//betaalmethode selectie
	if($('manual_payment') != undefined && $('ideal_payment') != undefined){
		$('manual_payment').addEvent('click', function(){
			$('bank_selection').setStyle('visibility', 'hidden');
		});
		$('ideal_payment').addEvent('click', function(){
			$('bank_selection').setStyle('visibility', 'visible');
		});
	}

	//algemene voorwaarden weergeven
	$$('.terms_conditions_link').each(function(el){
		el.addEvent('click', function(e){
			e = new Event(e).stop();
			getTermsAndConditions();
		});
	});

});

//algemene voorwaarden ophalen
function getTermsAndConditions(){

	//popup venster weergeven
	showPopup();

	//gegevens versturen
	var jsonRequest = new Request.JSON({
		url: basepath + 'modules/course/interfaces/includes/ajax/get_terms_and_conditions.php',
		method: 'post',
		onComplete: function(JSONReturnObject, JSONReturnString) {

			//inhoud naar popupvenster sturen
			loadPopupContents(JSONReturnObject);
		}
	}).send();

}

//gegevens van eindniveau ophalen
function getLevelData(id){

	//popup venster weergeven
	showPopup();

	//gegevens versturen
	var jsonRequest = new Request.JSON({
		url: basepath + 'modules/course/interfaces/includes/ajax/get_level_data.php',
		method: 'post',
		onComplete: function(JSONReturnObject, JSONReturnString) {

			//inhoud naar popupvenster sturen
			loadPopupContents(JSONReturnObject);
		}
	}).send('level_id=' + id);
}

//lesrooster ophalen van cursus
function getSchedule(course_id, group_id){

	//popup venster weergeven
	showPopup();

	//gegevens versturen
	var jsonRequest = new Request.JSON({
		url: basepath + 'modules/course/interfaces/includes/ajax/get_schedule.php',
		method: 'post',
		onComplete: function(JSONReturnObject, JSONReturnString) {

			//inhoud naar popupvenster sturen
			loadPopupContents(JSONReturnObject);
		}
	}).send('course_id=' + course_id + '&group_id=' + group_id);
}

//popup weergeven
function showPopup(){

	//dimensies van browservenster bepalen
	var windowHeight = window.getHeight();
	var windowWidth = window.getWidth();

	//is er gescrolled?
	var scrollTopSize = window.getScrollTop();

	//overlay div maken en in bron plaatsen
	var popupOverlay = new Element('div', {'id': 'popup_overlay'});
	popupOverlay.setStyles({
		'opacity': '0.5',
		'height': (windowHeight + scrollTopSize) + 'px'
	});
	popupOverlay.inject($('body_wrapper'), 'after');

	//overlay div klikbaar maken
	popupOverlay.addEvent('click', function(){
		hidePopup();
	});

	//popup wrapper maken en in bron plaatsen
	var popupWrapper = new Element('div', {'id': 'popup_wrapper'});

	//positie popup wrapper instellen
	var popupWrapperWidth = 600;
	var popupWrapperHeight = 400;
	var popupWrapperLeft = (popupWrapperWidth / 2);
	var popupWrapperTop = (windowHeight / 2) - (popupWrapperHeight / 2);
	if(popupWrapperTop < 0){
		popupWrapperTop = 0;
	}
	popupWrapper.setStyles({
		'margin-left': '-' + (popupWrapperWidth / 2) + 'px',
		'top': scrollTopSize + popupWrapperTop + 'px'
	});
	popupWrapper.inject($('body_wrapper'), 'after');

	//titlebar maken voor popup venster met daarin een knop om mee te sluiten
	var popupTitle = new Element('div', {'id': 'popup_title'}).inject(popupWrapper, 'inside');
	var popupH3 = new Element('h3', {'id': 'popup_h3'}).inject(popupTitle, 'inside');
	var popupClose = new Element('div', {'id': 'popup_close'}).inject(popupTitle, 'inside');

	//'sluiten' knop klikbaar maken
	popupClose.addEvent('click', function(){
		hidePopup();
	});

	//popup inhoud maken en in popup wrapper plaatsen
	var popupContent = new Element('div', {'id': 'popup_content'}).inject(popupTitle, 'after');

	//embed elementen verbergen
	var elements = $(document.body).getElements('object');
	elements.append($(document.body).getElements(Browser.ie ? 'select' : 'embed'));
	elements.each(function(el){
		el.style.visibility = 'hidden';
	});
}

//inhoud in popup venster laden
function loadPopupContents(JSONReturnObject){

	//spinner verbergen
	$('popup_wrapper').setStyle('background', '#FFFFFF');

	//titel aan popup_title toekennen
	$('popup_h3').set('html', Url.decode(JSONReturnObject.title).replace(/\+/g, ' '));

	//inhoud aan popup_content toekennen
	$('popup_content').set('html', Url.decode(JSONReturnObject.content).replace(/\+/g, ' '));

}

//popup verbergen
function hidePopup(){

	//embed elementen tonen
	var elements = $(document.body).getElements('object');
	elements.append($(document.body).getElements(Browser.ie ? 'select' : 'embed'));
	elements.each(function(el){
		el.style.visibility = 'visible';
	});

	//popup container verwijderen
	$('popup_overlay').destroy();

	//popup wrapper met inhoud verwijderen
	$('popup_wrapper').destroy();

}

//suckerfish
sfHover = function() {
	var sfEls = $("menu_2_1_show").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/

var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }
}
