window.addEvent('domready', function() {
	// top nav animations
	var topNav = $('nav');
	var bgmover = new Fx.Tween(topNav,{property:'background-position', duration:500, transition:Fx.Transitions.Cubic.easeInOut});
	var bgmoverPos = topNav.getStyle('background-position').toInt();
	var detailfader = [];
	$each($$('#logo', '#nav a'), function(el, i){
		var eld = $(el.id+'-detail')?$(el.id+'-detail'):new Element('div');
		eld.setStyle('opacity', 0);
		detailfader[i] = new Fx.Tween(eld,{property:'opacity', duration:3600, transition:Fx.Transitions.Cubic.easeInOut});
		el.addEvents({
			'mouseenter':function(e){
				bgmover.cancel();
				detailfader[i].cancel();
				switch(e.target.id){
					case "logo":
						bgmover.start(-400);
						break;
					case "archives":
						bgmover.start(-330);
						detailfader[i].start(100);
						break;
					case "next":
						bgmover.start(-210);
						detailfader[i].start(100);
						break;
					case "upcoming":
						bgmover.start(-34);
						detailfader[i].start(100);
						break;
					default:
						bgmover.start(bgmoverPos);			
				}
			},
			'mouseleave':function(){
				bgmover.cancel();
				detailfader[i].cancel();
				detailfadeout = new Fx.Tween(eld,{property:'opacity', duration:400, transition:Fx.Transitions.Cubic.easeInOut});
				detailfadeout.start(0);
				(function(){ bgmover.start(bgmoverPos); }).delay(250);
			}
		});
	});
	
	// subnav animations
	var bgfader = [];
	$each($$('#subnav a','.post'), function(el, i){
		bgfader[i] = 	{
							0:(el.getStyle('background-color')!='transparent'?el.getStyle('background-color'):'#ffffff'), 
							1:new Fx.Tween(el,{property:'background-color', duration:350, transition:Fx.Transitions.Quad.easeInOut})
						};
		el.addEvents({
			'mouseenter':function(){
				bgfader[i][1].cancel();
				if(!el.hasClass('here')) bgfader[i][1].start(bgfader[i][0], '#daebf7');
			},
			'mouseleave':function(){
				bgfader[i][1].cancel();
				(function(){ bgfader[i][1].start(bgfader[i][0]); }).delay(300);
			}
		});
	});
	
	var linkfader = [];
	$each($$('a'), function(el, i){ 
		if(el.href.match(/^https?:\/\/(?!([a-z0-9-]+\.)*calgarycinema)/)) { // external links
			el.target = '_blank';
			el.setProperty('class', (el.getProperty('class')!=''?' ':'')+'ext');
		} else if(!el.getProperty('class').match('notween')) {
			linkfader[i] = {0:el.getStyle('color'), 1:new Fx.Tween(el,{property:'color', duration:200, transition:Fx.Transitions.Quad.easeInOut})};
			el.addEvents({
				'mouseenter':function(){
					linkfader[i][1].cancel();
					if(!el.hasClass('nofade')) linkfader[i][1].start(linkfader[i][0], '#6baedf');
				},
				'mouseleave':function(){
					linkfader[i][1].cancel();
					(function(){ linkfader[i][1].start(linkfader[i][0]); }).delay(200);
				}
			});
		}
	});
	
	monitor_field('newsletter-signup', /^[\w\.-]+@(([a-z\d-])+\.)+[a-z]{2,4}$/i, 'Your email address'); // newsletter/email signup
	
	window.zoomer = new Element('img',{
		id: 'zoomer',
		src: '/images/zoomer.png',
		style: 'display:none; position:absolute; width:36px; height:44px; z-index:99;',
		styles: {
			opacity:0.8
		}
	}).inject(document.body);
	$each($$('.zoom'), function(el){
		el.addEvents({
			mouseenter: function(){
				var p = this.getCoordinates(), z = {x:36, y:44}, t = p.top + (p.height - z.y)*0.5, l = p.left + (p.width - z.x)*0.5, i, r, pad = 10;
				if(r = this.className.match(/(?:^| )zoom(?:-(top|middle|bottom|left|center|right))(?:-(top|middle|bottom|left|center|right))?(?: |$)/i)){
					for(i=1; i<=2; i++){
						if(r[i]){
							switch(r[i]){
								case 'top':		t = p.top + pad; break;
								case 'bottom':	t = p.top + p.height - z.y - pad; break;
								case 'left':	l = p.left + pad; break;
								case 'right':	l = p.left + p.width - z.x - pad; break;
							}
						}
					}
				}
				zoomer.setStyles({
					display: 'block',
					top: t,
					left: l
				});
			},
			mouseleave: function(){
				zoomer.setStyles({
					display: 'none'
				});
			}
		})
	});
});
window.onload = function(){
	$each($$('a'), function(el){ 
		disqus_regex = new RegExp('/?(comments/?)?#disqus_thread$', 'i');
		if(el.href.match(disqus_regex)) el.href = el.href.replace(disqus_regex, '/comments');
	});
	if(window.location.href.match(/\/comments$/)) window.scrollTo(0, $('disqus_thread').offsetTop)
}

// helper functions
function monitor_field(id, regex, defaultValue){
	var el = $(id);
	if (el) {
		el.value = defaultValue;
		el.addEvents({
			'focus':function(){
				if (el.value==defaultValue) {
					el.style.color = "#000";
					el.value = "";
				}
			},
			'blur':function(){
				if (el.value==defaultValue || el.value==="") {
					el.style.color = "#999";
					el.value = defaultValue;
					el.style.borderColor = "#AAA";	
				}
			},
			'keyup':function(){ if (regex && regex.test(el.value)) el.style.borderColor = "#0C0"; else el.style.borderColor = "#F00"; }
		});
	} else return false;
	return true;
}