/*
* Cache van javascripts.script.js
* Created: 2012-01-13 14:10:36
*/

/*
$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-4455143-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(e) {

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

	new mouseOvers();

	$$('div#footer a').each(function(el) {
		el.addClass('externlink');
	});

	/* Menu */
	var menulists = $$('ul#mainmenu > li > ul');
	var menufx = new Fx.Elements(menulists, {
		'link': 'cancel',
		'duration': 500,
		transition: Fx.Transitions.Sine.easeOut
	});
	doopenmenu = function(e, idx) {
		var obj = {};
		menulists.each(function(el, i) {
			if (i == idx) {
				obj[i] = {
					'height': el.getScrollSize().y
				};
			} else {
				obj[i] = {
					'height': 0
				};
			}
		});
		menufx.start(obj);
	}
	var cancelopen = null;
	openmenu = function(e, idx) {
		if (Browser.Engine.trident && Browser.Engine.version <= 5) {
			if (idx == -2) {
				cancelopen = doopenmenu.delay(1000, this, [e, idx]);
			} else {
				if (cancelopen) {
					$clear(cancelopen);
				}
				doopenmenu(e, idx);
			}
		} else {
			doopenmenu(e, idx);
		}
	}
	var ulcounter = 0;
	if ($('mainmenu')) {
		$('mainmenu').getChildren('li').each(function(li) {
			var childul = li.getElement('ul');
			if (childul) {
				childul.setStyles({
					'overflow': 'hidden',
					'position': 'absolute',
					'height': '0'
				});
				if (Browser.Engine.trident) {
					if (Browser.Engine.version <= 5) {
						childul.setStyles({
							'top': '30px',
							'left': '0px',
							'width': childul.getElement('li').getSize().x
						});
					}
				}
				li.addEvent('mouseenter', openmenu.bindWithEvent(childul, ulcounter));
				ulcounter++;
			} else {
				li.addEvent('mouseenter', openmenu.bindWithEvent(childul, -1));
			}
		});
		$('mainmenu').addEvent('mouseleave', openmenu.bindWithEvent($('menu'), -2));
	}
	/* Menu */

	new pngSupport().replace();
	
});


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.bevrijdingsfestivalbrabant.nl');
			}*/

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

	if ($('twitter_div')) {
		$('twitter_div').addClass('loading');
		var count = 10;
		var a = $('twitter_div').get('class').match(/tweets_(\d)/)
		if (a) {
			count = a[1];
		}
		new Asset.javascript('http://twitter.com/statuses/user_timeline/5meibrabant.json?callback=twitterCallback2&count='+count);
	}
	
});

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');
				var size = img.getSize();
				img.set('src', this.options.transparentImage);
				img.set('width', size.x);
				img.set('height', size.y);
				img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + oldsrc + "',sizingMethod='scale')";
			}
		}, this);
	}
});


function twitterCallback2(twitters) {
	$('twitter_div').removeClass('loading');
	var list = new Element('ul', {'id': 'twitter_update_list'}).inject($('twitter_div'));
  var statusHTML = [];
	var numtweets = twitters.length;
  for (var i=0; i<numtweets; i++){
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
      return '<a href="'+url+'">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    });
    statusHTML.push('<li'+(numtweets-1==i?' class="last"':'')+'>'+status+' <a href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></li>');
  }
  list.set('html', statusHTML.join(''));
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'minder dan een minuut geleden';
  } else if(delta < 120) {
    return 'ongeveer een minuut geleden';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minuten geleden';
  } else if(delta < (120*60)) {
    return 'ongeveer een uur geleden';
  } else if(delta < (24*60*60)) {
    return '' + (parseInt(delta / 3600)).toString() + ' uur geleden';
  } else if(delta < (48*60*60)) {
    return 'gisteren';
  } else {
    return (parseInt(delta / 86400)).toString() + ' dagen geleden';
  }
}
