(function() {
	Template.Pattern = /(^|.|\r|\n)(#\[(.*?)\])/;

	Behaviour.register({
		'a.popup': function(el) {

			// we have a default size
			var width 		= 400;
			var height 		= 400;
			var scrolling 	= '1';

			if (el.rev) {
				var rev = el.rev.split(" ");

				// which can easily be overridden
				if (rev[0].split('x').length == 2) {
					var parts = el.rev.split('x');
					width 	= parts[0];
					height	= parts[1];
				}

				if (rev.grep('noscroll')) scrolling = '0';
			};

			var target = (typeof(el.target) == 'undefined' || el.target == "") ? 'Popup' + Math.round(Math.random() * 100) : el.target;

			el.onclick = function() {
				

				debug(target);
				var win = window.open(el.href, target, 'status=1,toolbar=0,location=0,menubar=0,directories=0,resizeable=1,scrollbars='+scrolling+',height=' + height + ',width=' + width);
				win.focus();
				return false;

			};
		},
		'img.threestate': function(el) {

			var listen = el.up('a');
			if (!listen) return false;

			// init image paths
			var orig 	= el.src;
			var over	= orig.replace(/.jpg/, '_over.jpg');
			var down	= orig.replace(/.jpg/, '_on.jpg');

			// setup observers
			listen.observe('mouseover', function() {
				el.src = over;
			});
			listen.observe('mouseout', function() {
				el.src = orig;
			});
			listen.observe('mousedown', function() {
				el.src = down;
			});

		},
		'div.pager': function(el) {

			var list = el.getElementsBySelector('div.l');
			var i = 0;
			for(i = 0; i < list.length - 1; i++) {
				new Insertion.After(list[i], ' | ');
			}

		},
		'#top': function(el) {
			var myId = Cookie.get('firstName') ? 'loggedin' : 'not_loggedin';
			if (!$(myId)) return false;

			if (Cookie.get('firstName')) {
				var welcome = $(myId).down('.welcome');
				var tmpl = new Template(welcome.innerHTML);
				welcome.update(tmpl.evaluate({Name: Cookie.get('firstName')}));
				welcome.show();
			}

			$(myId).show();
		},
		'ul.links': function(el) {
			new Insertion.After(el, '<div style="clear: both"></div>');
		},
		'ul.pinkblocks': function(el) {
			for(var i=0;i < el.childNodes.length; i++) {

				var li = $(el.childNodes[i]);
				if (li.tagName != 'LI') continue;
				setBgHover(li, $(li).down('a'));
				continue;

				if (!li.down('.inside')) {

					var newHTML = '<div class="inside">' + li.innerHTML + '</div>';
					li.update(newHTML);

				}
			}
		},
		'.login_ok': function(el) {
			if (window.parent && window.parent != window) {
				var p = window.parent;

				window.parent.setTimeout(function() {

					var loc = p.location.href;
					loc 	+= (loc.match(/\?/) ? '&rnd=' : '?rnd=?') + Math.random();
					p.location.href = loc;

				}, 1000);
			};
		},
		'.my #main': function(el) {

			// look for form errors, and scroll to the first
			try { $$('form .error').shift().scrollTo(); } catch(e) {};

		},
		'div.b_Feedback form': function(form) {


			form.onsubmit = function() {
				new Ajax.Request(form.action, {

					method: form.method,
					parameters: form.serialize(),
					onComplete: function(req) {

						var info = eval('('+req.responseText+')');
						if (info.status) {
							setTimeout(function() {
								form.up('.msg').update(info.content);
							}, 500);
						} else {
							form.enable();
							alert(info.content);
						}
					}
					
				});

				form.disable();

				return false;
			}

		},
		'a': function(el) {
			el.observe('focus', function() { el.blur() });
		},
		/*
		 * Subpages need to equalize left and right parts of page
		*/
		'div.subpage': function(el) {
			var left 	= el.down('div.main');
			var right	= el.down('div.extra');
			if (!left || !right) return false;

			var height = left.getHeight() > right.getHeight() ? left.getHeight() : right.getHeight();
			left.style.height = height + 'px';
			right.style.height = height + 'px';

			new Insertion.Bottom(el, '<div style="clear: both"></div>');
		},
		'div.container div.fit-y': function(el) {
			el.style.height = el.up('div.container').getHeight() + 'px';
		},
		'div.search input.text_field': function(el) {
			if (el.value == '') {
				el.addClassName('inactive');
				el.value = 'Search the Eurovision Family on Google';
				el.onfocus = function() {
					el.removeClassName('inactive');
					el.value 	= '';
					el.onfocus 	= null;
				};
			}
		}
	});

function setBgHover(bg, listen) {
	if (!listen) return false;

	// init image paths
	var orig 	= bg.getStyle('backgroundImage');
	var over	= orig.replace(/_off.jpg/, '_over.jpg');
	var down	= orig.replace(/_off.jpg/, '_on.jpg');

	// preload images
	(new Image()).src = over.replace(/(url\("?|"?\))/g, '');
	(new Image()).src = down.replace(/(url\("?|"?\))/g, '');

	try {
		// setup observers
		listen.observe('mouseover', function() {
			bg.style.backgroundImage = over;
		});
		listen.observe('mouseout', function() {
			bg.style.backgroundImage = orig;
		});
		listen.observe('mousedown', function() {
			bg.style.backgroundImage = down;
		});
	} catch(e) {

	}
}

})();

function refreshStylesheets(loop) {
	var rnd = Math.round(Math.random()*500);
	$A($$('link')).each(function(l) {
		try {
			l.href = l.href.replace(/\?.*$/, '') + '?rnd = ' + rnd;
			debug(l.href);
		} catch(e) { debug(e); };
	});

	if (loop > 1000) {
		setInterval(refreshStylesheets, loop);
	}
}
var debug = function() {
	// do nothing
}
if (typeof(console) != "undefined") {
	debug = function(str) {
		console.log(str);
	};
}

function tsSortValue(a, b) {
	return fdTableSort.sortText(a, b);
}
function tsSortValueNumeric(a, b) {
	return fdTableSort.sortNumeric(a, b);
}
function tsSortValueNumericPrepareData(td, inner) {
	return tsSortValuePrepareData(td, inner);
}
function tsSortValuePrepareData(tdNode, innerText) {
	try {
		var txt = $(tdNode).down('.sortValue').innerHTML;
		debug(txt);
		return txt;
	} catch(e) {
		return innerText;
	}
}
