/*
	Improved Behaviour from http://www.advantax.org/scripts/behaviour.js 
   Behaviour v1.1 by Ben Nolan, June 2005.

   Description:
   	
   	Uses css selectors to apply javascript behaviours to enable
   	unobtrusive javascript in html documents.
   	
   Usage:   

	var myrules = {
		'b.someclass' : function(element){
			element.onclick = function(){
				alert(this.innerHTML);
			}
		},
		'#someid u' : function(element){
			element.onmouseover = function(){
				this.innerHTML = "BLAH!";
			}
		}
	};
	
	Behaviour.register(myrules);
	
	// Call Behaviour.apply() to re-apply the rules (if you
	// update the dom, etc).

   License:
   
   	This file is entirely BSD licensed.

   More information:

   	http://ripcord.co.nz/behaviour/

   Version 1.2:
   Anthon Pang:
   - [enh] Add parentNode parameter to getElementsBySelector().
   - [enh] getElementsBySelector() is now a wrapper for Dean Edwards' cssQuery.
   - [enh] Add applyTo(element, selector).
   James Estes:
   - [fix] Declare local variables as 'var'
*/   

var Behaviour = {
	list : new Array,
	
	register : function(sheet) {
		Behaviour.list.push(sheet);
	},
	
	start : function() {
		Behaviour.addLoadEvent(function() {
			Behaviour.apply();
		});
	},
	
	apply : function() {
		var sheet;
		for (var h=0; sheet=Behaviour.list[h]; h++) {
			for (var selector in sheet){
				list = document.getElementsBySelector(selector);
				if (!list) {
					continue;
				}

				var element;
				for (var i=0; element=list[i]; i++) {
					sheet[selector](element);
				}
			}
		}
	},

	applyTo : function(element, selector) {
		var sheet;
		for (var h=0; sheet=Behaviour.list[h]; h++) {
			sheet[selector](element);
		}
	},
	
	addLoadEvent : function(func) {
		var oldonload = window.onload;
		
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	}
};

Behaviour.start();

document.getElementsBySelector = function(selectorString, parentNode) {
	return cssQuery(selectorString, parentNode);
}
