Object.extend(Element, {
	getBehaviourProperty: function(element, attribute) {
		if(element.getAttribute('properties'))
			var properties = element.getAttribute('properties').split(", ");
		else
			return false;
		var result = properties.detect(function(item) {return item.indexOf(attribute) == 0;});
		if(result)
				return result = result.split(attribute + ":")[1];
		else
				return false;
	},
	addBehaviourProperty: function(element, attribute, value) {
		var properties = element.getAttribute('properties');
		if(properties)
			element.setAttribute("properties", properties + ", " + attribute + ":" + value);
		else
			element.setAttribute("properties", attribute + ":" + value);
	}
});

var Behaviour = Class.create();
Behaviour.prototype = {
  initialize: function(selector, observers) {
		$$(selector).each(function(el){
				observers.each(function(observer){
				var event = observer[0], handler = observer[1];
					if(event == 'load')
						handler(el);
					else
						Event.observe(el, event, handler, false);	
				});
		});
  }
}

function debug(aMsg) {
   setTimeout(function() { throw new Error("[debug] " + aMsg); }, 0);
}

function init(){
  loadBehaviours.each(function(el){
  	eval(el);
  });
}

var loadBehaviours = [];



function newWindow(e){
	var title = Element.getBehaviourProperty(e,'linkTitle');
	e.target = "new";
	e.title = title ? title : "This link opens in a new window";
}

loadBehaviours[loadBehaviours.length] = "new Behaviour('A.new-window', [['load',newWindow]])";
function popupWindow(e){
	var title = Element.getBehaviourProperty(e,'linkTitle');
	e.target = "popupWindow";
	e.title = title ? title : "This link opens in a popup window";
}

function popupOpen(e) {
	//e = Event.findElement(Event.element(e), "A");
	var w = Element.getBehaviourProperty(Event.element(e),'popupWidth'), h = Element.getBehaviourProperty(Event.element(e),'popupHeight');
	if(!w||!h)
		{w=600; h=380;}
	var popup = window.open('', 'popupWindow','resizable=1,location=1,scrollbars=1,status=1,top=' + Math.round(document.body.clientHeight/2 - h/2) + ',left=' + Math.round(document.body.clientWidth/2 - w/2) + ',width=' + w + ',height=' + h);
}

loadBehaviours[loadBehaviours.length] = "new Behaviour('A.popup-window', [['load',popupWindow], ['click',popupOpen]])";
function addHover(e){Element.addClassName(Event.element(e), 'hover');}

function removeHover(e){Element.removeClassName(Event.element(e), 'hover');}

loadBehaviours[loadBehaviours.length] = "new Behaviour('.rollover', [['mouseover',addHover], ['mouseout',removeHover]])";



function switchpage(select) {
var index;

for(index=0; index<select.options.length; index++)
    if(select.options[index].selected)
      {
        if(select.options[index].value!="")
          window.location.href=select.options[index].value;
        break;
      }
}

function newpage(select) {
var index;

for(index=0; index<select.options.length; index++)
    if(select.options[index].selected)
      {
        if(select.options[index].value!="")
          var win = window.open(select.options[index].value);
        break;
      }
}

window.onload = init;