/*
* Cache van javascripts.script.js
* Created: 2009-12-17 08:55:06
*/

/*
$Author: sjors $
$LastChangedDate: 2006-10-19 14:05:31 +0200 (do, 19 okt 2006) $
$Id: javascripts.js 28 2006-10-19 12:05:31Z sjors $
$Rev: 28 $
*/

var google = 'UA-12020239-1';
if (google) {
	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"));
}

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

	$$('body').addClass('js');

	if ($('colofoon_t') && $('colofoon')) {
		var colofoonfx = new Fx.Tween($('colofoon'), {duration: 500});
		var colofoonhght = $('colofoon').getSize().y+20;
		$('colofoon').setStyles({
			'height': 0,
			'overflow': 'hidden'
		});

		var colofoonshown = false;
		$('colofoon_t').addEvent('click', function(e) {
			e.stop();
			colofoonshown = !colofoonshown;
			if (colofoonshown) {
				colofoonfx.start('height', colofoonhght);
			} else {
				colofoonfx.start('height', 0);
			}
		});
	}

	$$('h2').each(function(el) {
		// Replace heading with image
		var srctpl = '/images/headings/[text].png';
		var imgsrc = srctpl.replace('[text]', el.get('text').toLowerCase().replace(/[^a-zA-Z0-9]/g, ''));
		el.setStyle('background-image', 'url("' + imgsrc + '")');
		el.addClass('replaced');
		new Request({
			method: 'get',
			url: imgsrc,
			onFailure: function() {
				el.removeClass('replaced');
			}
		}).send();
	});

	if ($('ftpbrowser')) {
		var togglerName = '.toggler_';
		var contentName = '.content_';

		var heightValue = '';
		var counter = 0;
		var toggler = $$(togglerName + counter);
		var content = $$(contentName + counter);

		if (Browser.Engine.trident4) {
			heightValue = '100%';
		}

		while (toggler.length>0) {
			new Accordion(toggler, content, {
				 opacity: false,
				 display: -1,
				 alwaysHide: true,
				 onComplete: function() {
						var element = $(this.elements[this.previous]);
						if (element && element.offsetHeight>0) {
							element.setStyle('height', heightValue);
						}
				 }
			});

			counter++;
			toggler = $$(togglerName + counter);
			content = $$(contentName + counter);
		}
	}

	$$('.rotator').each(function(sliderdiv) {
		sliderdiv.setStyle('opacity', 0);
	});

});

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

	if (google && _gat) {
		var pageTracker = _gat._getTracker(google);
		pageTracker._initData();
		pageTracker._trackPageview();
	}

	document.addEvent('click', function(e) {
  	var e = new Event(e);
  	var el = $(e.target)
  	if (el.tagName.toLowerCase() != 'a') {
  		el = el.getParent('a');
  	}
  	var newwin = false;

		if (el && el.get('href')) {
			newwin = newwin || el.hasClass('newwindow');
			newwin = newwin || el.hasClass('externlink');

			/*if (el.get('href').substring(0, 7) == 'http://' || el.get('href').substring(0, 8) == 'https://') {
				newwin = newwin || el.get('href').indexOf('http://www.riesenkind.com');
			}*/

			var downloadsurl = '/downloads/';
			newwin = newwin || el.get('href').substring(0, downloadsurl.length) == downloadsurl;
		}
		if (newwin) {
			e.stop();
			window.open(el.href, '_blank');
		}
	});

	new mouseOvers();

	$$('.rotator').each(function(sliderdiv) {
		sliderdiv.tween('opacity', 1);
		var slide = new slider(sliderdiv, sliderdiv.getElements('.control'), sliderdiv.getElements('.element'));
		slide.init();
	});

	if ($('projectscats')) {
		var req = new Request.JSON({
			url: document.location.href,
			onRequest: function() {
				if (!$('projects')) {
					new Element('ul', {
						'id': 'projects'
					}).inject($('projectscats'), 'after');
				}
				$('projects').set('html', '');
				$('projects').setStyle('height', '30px');
				$('projects').addClass('loading');
			},
			onSuccess: function (responseJSON, responseText) {
				$$('.rotator').fireEvent('mouseenter');

				var fxobj = [];
				$each(responseJSON, function(project, i) {
					if (!fxobj[Math.floor(i/3)]) {
						fxobj[Math.floor(i/3)] = {};
					}
					fxobj[Math.floor(i/3)][i] = {'left': 0, 'opacity': 1};
					var li = new Element('li', {
						'styles': {
							'position': 'relative',
							'left': (200*(i+1))+'px'
						}
					});
					var a = new Element('a', {
						'href': project.url,
						'styles': {
							'background-image': 'url('+project.img+')'
						}
					});
					var img = new Element('img', {
						'src': '/images/nav/thumbmask_up.png',
						'width': 46,
						'height': 44,
						'alt': project.title,
						'title': '',
						'class': 'mouseover'
					});
					img.inject(a);
					a.inject(li);
					li.inject($('projects'));
				});
				$('projects').setStyle('height', 'auto');
				$('projects').removeClass('loading');
				$$('.rotator').fireEvent('mouseleave');

				var fx = new Fx.Elements($$('#projects li'), {
					link: 'chain',
					fps: 25,
					duration: 200,
					transition: Fx.Transitions.Circ.easeOut
				});
				$$('#projects li').each(function(li, i) {
					obj = {};
					obj[i] = {
						'left': [(200*(i+1)), 0],
						'opacity': [0, 1]
					};
					fx.start(obj);
				});
			}
		});
		$('projectscats').addEvent('click', function(e) {
			e.stop();
			var target = $(e.target);
			if (target.get('tag') == 'a') {
				$$('#projectscats li').removeClass('current');
				target.getParent('li').addClass('current');
				req.options.url = target.get('href')+'/';
				req.get({'request': 'ajax'});
			}
		});
	}

	if ($('ftpbrowser-login')) {
		$('ftpbrowser-login').addEvent('submit', function(e) {
			if ($('ftpbrowser-block')) {
				$('ftpbrowser-block').addClass('loading');
			}
		});
	}
	
});

var slider = new Class({

	Implements: [Options],
	Extends: Fx.Elements,
	
	options: {
		autotimer: 1000,
		link: 'cancel'
	},

	initialize: function(element, controls, elements, options) {
		this.element = element;
		this.setOptions(options);
		this.nextel = 0;
		this.controls = controls;
		this.elements = elements;
		this.started = false;

		var maxheight = 0;
		this.elements.each(function(el) {
			maxheight = maxheight > el.getSize().y ? maxheight : el.getSize().y;
		}, this);
		this.element.setStyle('height', maxheight);

		if (this.elements.length == 1) {
			return;
		}

		this.elements.setStyle('opacity', 0);

		var auto = this.element.get('class').match(/auto_([0-9]+)/);
		if (auto) {
			this.options.autotimer = auto[1];
		} else if (this.element.hasClass('noauto')) {
			this.options.autotimer = 0;
		}

		this.controlcont = false;
		if ($('controls-'+this.element.get('id'))) {
			this.controlcont = $('controls-'+this.element.get('id'));
		}

		this.controls.each(function(head, i) {
			if (this.controlcont) {
				head.inject(this.controlcont);
			} else {
				head.inject(this.elements[0], 'before');
			}
			head.addEvent('mouseover', this.slide.bindWithEvent(this, i));
			head.addEvent('click', function(e){e.stop();});
			if (head.hasClass('sliderinit')) {
				this.nextel = i;
			}
		}, this);		

		var me = this;
		this.element.addEvent('mouseleave', function() {
			if (me.options.autotimer > 0) {
				this.autoslide = me.doSlide.periodical(me.options.autotimer, me);
			}
		});

		this.element.addEvent('mouseenter', function() {
			$clear(this.autoslide);
		});
	},

	slide: function(e, curel) {
		this.nextel = curel;
		this.doSlide();
		this.element.fireEvent('mouseenter');
	},

	doSlide: function() {
		if (this.controls.length == 0 || this.elements.length == 0) {
			return;
		}
		if (!this.controls[this.nextel]) {
			this.nextel = 0;
		}

		var obj = {};
		this.elements.each(function(el, i) {
			if (el.getStyle('opacity') != 0 && i != this.nextel) {
				el.setStyle('z-index', 1);
				obj[i] = {'opacity': [el.getStyle('opacity'), 0]};
			} else if (i == this.nextel) {
				obj[i] = {'opacity': [el.getStyle('opacity'), 1]};
				el.setStyle('z-index', 2);
			}
		}, this);
		this.start(obj);

		this.controls.removeClass('active');
		this.controls[this.nextel].addClass('active');
		this.nextel++;
	},

	init: function() {
		if (!this.started) {
			this.started = true;
			this.element.fireEvent('mouseleave');
			this.doSlide();
		}
	}
});

var mouseOvers = new Class({
	initialize: function(elements) {
		elements = elements || $$('img.mouseover');
		elements.each(function(image) {
			if (image.hasClass('specialmo')) {
				image.set('src_mouseover', image.get('class').replace(/.*mouseover=/, ''));
				image.set('src_mouseout',  image.get('src'));
				image.addEvent('mouseenter', this.mouseover);
				image.addEvent('mouseleave', this.mouseout);
				new Asset.image(image.get('src_mouseover'));
			} else {
				var xsrc = image.src;
				if (xsrc.substring(xsrc.length-7, xsrc.length-3) == '_up.')	{
					image.set('src_mouseover', image.get('src').replace(/_up\.([a-z]{3})/, '_ov.$1'));
					image.set('src_mouseout',  image.get('src'));

					image.addEvent('mouseenter', this.mouseover);
					image.addEvent('mouseleave', this.mouseout);

					// Preload
					new Asset.image(image.get('src_mouseover'));
				}
			}
		}, this);
	},
	mouseover: function() {
		this.set('src', this.get('src_mouseover'));
	},
	mouseout: function()	{
		this.set('src', this.get('src_mouseout'));
	}
});

var pngSupport = new Class({

	Implements: [Options],

	options: {
		transparentImage: '/images/pnghack/transparent.gif'
	},

	initialize: function(options) {
		this.setOptions(options);
		this.needed = Browser.Engine.trident4 && Browser.Platform.win;
	},

	replace: function(parentel) {
		if (!this.needed) return;
		if (!parentel) parentel = document;

		parentel.getElements('img').each(function(img) {
			if (img.src.indexOf(this.options.transparentImage) == -1 && img.src.indexOf("png") >= 0) {
				var oldsrc = img.get('src');
				img.set('src', this.options.transparentImage);
				img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + oldsrc + "',sizingMethod='scale')";
			}
		}, this);
	}
});

