/*
//break out of frame... mostly hotmail
var rules_breakout = {
	'body' : function(el){
		if (top.location != location) {
	        top.location.href = document.location.href;
	    }
	}
}
Behaviour.register(rules_breakout);
*/


//target highlighting
var rules_liteup = {
	'*.liteup' : function(el){
		if(location.href.match('#')){
			el = getElement(location.href.split('#')[1]);
			if(!el) return false;
			classAdd(el, 'highlight');
		}
	}
}
Behaviour.register(rules_liteup);

//highlight errors
var rules_popup = {
	'a.popup' : function(el){
		var open = function(){
			window.open(link,'mywin', 'left=20,top=20,width=600,height=600,toolbar=1,resizable=1,scrollbars=1');
		}
		var link = el.href;
		el.href = 'JAVASCRIPT: void(0);';
		addEvent(el, "onclick", open);
	}
}
Behaviour.register(rules_popup);

//highlight errors
var rules_errors = {
	'div.errorblock' : function(el){
		//grab error ids + messages
		var errorEls = getElementsByTagAndClassName( "li", "erroritem");
		var thisEl, errorMsgEl;
		for( i=0; i<errorEls.length; i++){
			thisEl = getElement('t'+errorEls[i].title);
			if(typeof(thisEl) != 'undefined' && errorEls[i].title != ""){
				classAdd(thisEl, ' hasError');
			}
		}
	}
}
Behaviour.register(rules_errors);

//big targets!
var rules_linkParent = {
	'*.noBubble' : function(el){
		//usually for inputs in the unfortunate spot of 
		//needing to do something other than follow the .linkParent link
		var stopit = function(e){
			stopEvent(e);
		}
		addEvent(el, "onclick", stopit)
	},
	
	'a.linkParent' : function(el){
		var parentLevel = el.className.match(/.*?parentLevel(\d+)/);
		parentLevel = (parentLevel && parentLevel[1]) ? parentLevel[1] : 1;
		
		parentEl = el;
		for(var i=1; i<= parentLevel; i++){
			var parentEl = parentEl.parentNode;	
		}

		var followLink = function(e){
			//stopEvent(e);
			window.location = el.href;
		}
		
		var over = function(e){
			//stopEvent(e);
			classSwap(parentEl, 'linkOut', 'linkOver');
		}
		
		var out = function(e){
			//stopEvent(e);
			classSwap(parentEl, 'linkOver', 'linkOut');
		}

		classAdd(parentEl, 'linkOut');
		addEvent(parentEl, 'onclick', followLink);
		addEvent(parentEl, 'onmouseover', over);
		addEvent(parentEl, 'onmouseout', out);
	}
}
Behaviour.register(rules_linkParent);

//link decorators
var rules_links = {
	'input.linkify' : function(el){
		var inputEL = el;    
		if(!inputEL) return false;        
		var newLink = createEl('A', inputEL.className.replace(/\s*linkify\s*/g, ""), {"href": "JAVASCRIPT: document.getElementById('"+inputEL.getAttribute('id')+"').click();", 'title': inputEL.getAttribute('title')}, inputEL.getAttribute('value'));        
		inputEL.parentNode.insertBefore(newLink, inputEL);
		inputEL.style.display = 'none';
		inputEL.className = ''; //all behaviours have hopefully transferred to the A now.
	},
	
	'*.confirm' : function(el){
		var confirmIt = function(){
			if(confirm(el.title)){
				return true;
			}
			return false;
		}
		addEvent(el, 'onclick', confirmIt);
	}
}
Behaviour.register(rules_links);

//Expanding Nav Items
var rules_expander = {
	'li.expander' : function(el){
		var expandListener = function(){
			//non-expanding links operate independently
			var liEls = getElementsByTagAndClassName('li', 'expander', el.parentNode);
			for(l in liEls){
				classRemove(liEls[l], 'expanded');
			}
			classAdd(el, 'expanded');
		}
		addEvent(el, 'onclick', expandListener);
		el.replaceChild(createEl("A", "", {'href':'JAVASCRIPT:void(0)'}, el.firstChild.innerHTML), el.firstChild);
	}
}
Behaviour.register(rules_expander);

/*
//blink! web 1.0! 
var rules_blink = {
	'span.blink' : function(el){
		function flash(){
			el.style.visibility = 'hidden';
			function back(){
				el.style.visibility = 'visible';
			}
			setTimeout(back, 250); 
		}
		setInterval(flash, 4000);
	}
}
Behaviour.register(rules_blink);
*/

