//alert('behaviour.js');

/*
   Behaviour v1.1 by Ben Nolan, June 2005. Based largely on the work
   of Simon Willison (see comments by Simon below).

   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/
   
*/   

var Behaviour = {
	list : new Array,
	
	register : function(sheet){
		Behaviour.list.push(sheet);
	},
	
	start : function(){
		window.addEvent('domready', function(){
			Behaviour.apply();
		});
	},
	
	applyOne: function(element, selector) {
		for (h=0;sheet=Behaviour.list[h];h++)
			for (s in sheet)
				if (s == selector)
					sheet[s](element);
	},
	
	applyOn: function(el) {
		for (h=0;sheet=Behaviour.list[h];h++){
			for (selector in sheet){
				list = $ES(selector, el);
				
				if (!list){
					continue;
				}

				for (i=0;element=list[i];i++){
					sheet[selector](element);
				}
			}
		}
	},
	
	apply : function(o){
		if (!o)
			for (h=0;sheet=Behaviour.list[h];h++){
				for (selector in sheet){
					list = $$(selector);
					
					if (!list){
						continue;
					}
	
					for (i=0;element=list[i];i++){
						sheet[selector](element);
					}
				}
			}
		else 
			for (selector in o){
				list = $$(selector);
				
				if (!list){
					continue;
				}

				for (i=0;element=list[i];i++){
					o[selector](element);
				}
			}
	}
}

Behaviour.start();

