function replaceButtons() {

	var submitButtons = $$('input.submit');

	submitButtons.each(function(submitButton, index) {
		var classleft       = '';
		var regExpClassLeft = new RegExp('left', 'i');

		if (submitButton.get('class').match(regExpClassLeft)) {
			classleft = ' left';
		}

		var imageButton = new Element('input', { 'type': 'image', 'class': 'image' + classleft });
		imageButton.set('src', '/images/btn_' + submitButton.get('value').toLowerCase().replace(' ', '_') + '.png');
		imageButton.cloneEvents(submitButton);
		imageButton.replaces(submitButton);

		imageButton.addEvent('mouseover', function() {
			// TODO: add hover logic here
		});

		imageButton.addEvent('mouseout', function() {
			// TODO: add hover logic here
		});
	});
}

function initSlideshows() {

	var slideshowDivs = $$('div.slideshow');

	slideshowDivs.each(function(slideshowDiv, index) {
		slideshowDiv.id = 'slideshow_' + index;

		var slideshowData = new Array();
		var slideshowPhotos = slideshowDiv.getElements('img');
		slideshowPhotos.each(function(slideshowPhoto) {
			if (slideshowPhoto.src.substring(slideshowPhoto.src.length - 12, slideshowPhoto.src.length) == '_488x158.jpg') {
				slideshowData.push(slideshowPhoto.src);
			}
		});

		// empty slideshow div
		slideshowDiv.empty();

		// create slideshow
		var slideshow = new Slideshow('slideshow_' + index, slideshowData, { loader: false, hu: '', width: 490, height: 160, delay: 1500, duration: 2000 });
	});
}

function initFlvPlayer(links) {

	links.each( function(link, index) {

		// find extension
		var s_split_slash = link.href.split('/');
		var s_split_ext   = s_split_slash[s_split_slash.length - 1].split('.');
		var s_ext         = s_split_ext[s_split_ext.length - 1];

		if (s_ext == 'flv') {

			var still       = link.getElement('img');
			var stillURL    = still.src;
			var videoWidth  = still.width;
			var videoHeight = still.height;
			var videoURL    = link.href;

			link.id = 'flv_player_' + index;

			var playerSettingsObject = {
				video: {
					url: videoURL,
					width: videoWidth,
					height: videoHeight,
					volume: link.getParent('div.unmute') ? 1 : 0,
					autoplay: true,
					loop: false
				},
				controls: {
					url: '/swf/lib/flvPlayer/flvPlayerControls.swf',
					enabled: true,
					buttons: {
						play: true,
						mute: false
					},
					horizontalAlign: 'center',
					verticalAlign: 'center',
					padding: 10
				},
				still: {
					url: stillURL
				},
				overlay: {
					alpha: 0,
					color: '0x000000'
				}
			};

			var flashvars = { playerSettings: encodeURIComponent(JSON.encode(playerSettingsObject)) };

			var params = {
				menu: 'false',
				allowscriptaccess : 'always'
			};

			var attributes = {};

			swfobject.embedSWF('/swf/lib/flvPlayer/flvPlayer.swf', 'flv_player_' + index, videoWidth, videoHeight, '9.0.0','/js/lib/expressInstall.swf', flashvars, params, attributes);
		}
	});
}

function initPanos() {

	var panos = $(document.body).getElements('.pano');

	panos.each(function(pano) {

		var panoImage = pano.getElement('img');

		if (panoImage) {
			// get name from image
			var path = panoImage.getAttribute('src');
			var pattern = /img_360_(.*?)\.jpg/i;
			var locationName = pattern.exec(path)[1];

			if (locationName) {

				var flashPano = new Swiff('http://karelv.s3.amazonaws.com/' + locationName + '.swf', {
					width: 470,
					height: 250
				});
				flashPano.replaces(pano.getElement('p'));

				var fsLink = '<a href="/fullscreen.php?location=' + locationName + '" target="_blank">Bekijk de panoramafoto fullscreen</a>';

				if ($(document.body).hasClass('en')) {
					fsLink = '<a href="/fullscreen.php?location=' + locationName + '" target="_blank">Show fullscreen</a>';
				}

				var fs_link = new Element('p', {
					'class': 'fs_link',
					'html': fsLink
				 });
				fs_link.inject(flashPano, 'after');
			}
		}
	});
}

function initFSPanos(locationName) {

	var pano = $('cnr_all');

	if (locationName) {
		var flashPano = new Swiff('http://karelv.s3.amazonaws.com/' + locationName + '_fs.swf', {
			width: '100%',
			height: '100%'
		});
		flashPano.replaces(pano);
	}
}

function initReadMore(links) {

	links.each( function(link, index) {

		if (link.href.contains('more', '#')) {

			var linkParagraph  = link.getParent();
			var slideContainer = new Element('div', { 'id': 'slide_container_' + index, 'class': 'slide_container' });
			var nextElements   = linkParagraph.getAllNext('*');

			link.setStyle('visibility', 'visible');
			nextElements.setStyle('padding-bottom', '4px');

			slideContainer.adopt(nextElements);
			slideContainer.inject(linkParagraph, 'after');

			var readMoreFx = new Fx.Slide(slideContainer);

			readMoreFx.hide();

			link.addEvent('click', function(e){
				readMoreFx.toggle();
				this.destroy();

				new Event(e).stop();
			});
		}
	});
}

function hideTranslation_alert() {
	$('translation_alert').setStyle('display','none');
}

window.addEvent('domready', function() {
	// initialize 360 pano's
	if (!$(document.body).hasClass('admin')) {
		initPanos();
		//niet ingelogd
		if(Cookie.read('has_showed_message') == '1')
		{
			$('translation_alert').set('onclick','hideTranslation_alert();');
			$('translation_alert').set('text', 'Je bent toch niet vergeten de Engelse teksten in te voeren?');
			$('translation_alert').setStyle('display','block');
			$('translation_alert').highlight('#fff', '#ffff00');
			Cookie.dispose('has_showed_message');
		}
	}
	else
	{
		if( Cookie.read('has_showed_message') != '1')
		{
			Cookie.write('has_showed_message', '1');
			$('translation_alert').set('onclick','hideTranslation_alert();');
			$('translation_alert').set('text', 'Vergeet niet de Engelse teksten in te voeren!');
			$('translation_alert').setStyle('display','block');
			$('translation_alert').highlight('#fff', '#ffff00');
		}
	}

	if ($(document.body).hasClass('fullscreen') && locationName) {
		initFSPanos(locationName);
	}

	// remove submenu if page contains news items
	var news_media_items = $('cnr_ctt_main').getElements('div.news');
	if (news_media_items.length > 0) {
		$('wpr_subsubmenu').destroy();
	}

	var links = $(document.body).getElements('div.content a');

	// initialize slideshows
	initSlideshows();

	// initialize flvPlayer
	initFlvPlayer(links);

	// initialize readMore
	initReadMore(links);

	// open links to downloadable files or other sites in a new window
	Array.prototype.f_contains = function(s) {
		for (var i = 0; i < this.length; i++) {
			if (this[i] == s) return true;
		}
		return false;
	};

	// known extensions for downloadable files
	var exts   = ['pdf', 'doc', 'xls', 'ppt', 'zip', 'gz', 'mpg', 'mpeg', 'mov', 'mp4', 'avi', 'wmv', 'mp3', 'wav', 'swf', 'bmp', 'tif', 'tiff', 'svg'];

	// known extensions for shadowbox media files
	var s_exts = ['jpg', 'jpeg', 'png', 'gif'];

	var linksToShadowboxMediaFiles = [];

	links = document.getElementsByTagName('a');

	for (var k = 0; k < links.length; k++) {
		var link  = links[k];

		// find extension
		var split_slash = link.href.split('/');
		var split_ext   = split_slash[split_slash.length - 1].split('.');
		var ext = split_ext[split_ext.length - 1];

		// check if extension indicates a downloadable file, or shadowbox media files
		if (split_ext.length > 1) {
			if (exts.f_contains(ext)) {
				links[k].target = '_blank';
			}

			if (s_exts.f_contains(ext)) {
				linksToShadowboxMediaFiles.push(links[k]);
			}
		}

		// look for links to other sites
		if (link.href.substring(0, 7) == 'http://') {
			if (link.href.substring(7, 7 + window.location.hostname.length) != window.location.hostname) {
				links[k].target = '_blank';
			}
		}
	}

	// set shadowbox on links to shadowbox media files
	for (var n = 0; n < linksToShadowboxMediaFiles.length; n++) {
		var sblink  = linksToShadowboxMediaFiles[n];
		sblink.rel = 'shadowbox[all]';
	}

	// set shadowbox on thumbnails
	var thumbnails = $$('div.thumbnails');

	for (var j = 0; j < thumbnails.length; j++) {
		var thumblinks = thumbnails[j].getElements('a');
		var countThumbs = 0;

		for (var t = 0; t < thumblinks.length; t++) {
			var thumblink  = thumblinks[t];

			// find extension
			var s_split_slash = thumblink.href.split('/');
			var s_split_ext   = s_split_slash[s_split_slash.length - 1].split('.');
			var s_ext         = s_split_ext[s_split_ext.length - 1];

			// check if extension indicates a media file
			if (s_split_ext.length > 1) {
				if (s_exts.f_contains(s_ext)) {
					thumblink.rel = 'shadowbox[all]';

					// set margin-right: 0 on every last image in a row
					countThumbs++;

					if ((countThumbs % 4) == 0) {
						thumblink.setStyle('margin-right', '0');
					}
				}
			}
		}
	}

	if (thumbnails.length > 0 || linksToShadowboxMediaFiles.length > 0) {
		// Shadowbox options
		var options = {
			onOpen: function() {
				// replace sIFRs to h1
				var sIFRReplaceds = $$('.sIFR-replaced');
				sIFRReplaceds.each(function(sIFRReplaced) {
					var newElement = new Element('h1', {
						'class': 'sIFR-removed',
						'text': sIFRReplaced.textContent
					});
					newElement.oldElement = sIFRReplaced;
					newElement.replaces(sIFRReplaced);
				});
				// remove sIFR classes for h1 font-size
				sIFR.removeFlashClass();
			},
			onClose: function() {
				// replace h1s to sIFR
				var sIFRRemoveds = $$('.sIFR-removed');
				sIFRRemoveds.each(function(sIFRRemoved) {
					sIFRRemoved.oldElement.replaces(sIFRRemoved);
				});
				// set sIFR classes for sIFR h1 font-size
				sIFR.setFlashClass();
			},
			displayCounter: false,
			flvPlayer:      '/swf/lib/shadowbox/flvplayer.swf'
		};

		Shadowbox.init(options);
	}

	// make packagesItems clickable
	var packagesItems = $$('li.packagesItem');
	for (var j = 0; j < packagesItems.length; j++) {
		packagesItems[j].setStyle('cursor', 'pointer');
		packagesItems[j].addEvent('click', function(){
			window.location = this.getElement('div.packageItemContent p.more a').href;
		});
	}

	// replace buttons
	replaceButtons();
});
