
function showDebugger() {

	if(!document.getElementById("debugContent").visible()) {
		Element.show(document.getElementById("debugContent"));
	} else {
		Element.hide(document.getElementById("debugContent"));
	}
	
	return false;
}

function removeDebugger() {
	if(!document.getElementById("debugger"))
		new Effect.BlindUp(document.getElementById("debugger"));
	return false;
}

function addClassNames() {
	var elms = document.body.getElementsByTagName("input");
	for(var i=0; i<elms.length; i++) {
		Element.addClassName(elms[i], elms[i].type);
	}
}

function addHover(elm) {
	Element.addClassName(elm, "hover");
	Event.observe(elm, "mouseout", function() {
		Element.removeClassName(this, "hover");
	});
}

function addSlideOut(elm, selector) {
	var elms = Element.getElementsBySelector(elm, selector);
	if(elms.length>0) {
		elm.toggleClass = selector;
		Effect.toggle(elms[0], 'blind', { duration: 0.5 });
		Event.observe(elm, "mouseout", function() {
			var elms = Element.getElementsBySelector(elm, elm.toggleClass);
			Effect.toggle(elms.pop(), 'blind', { duration: 0.5 });
			elm.toggleClass = null;
		});
	}
}

function addSelectEvent() {
	var elms = document.body.getElementsByTagName("input");
	for(var i=0; i<elms.length; i++) {
		Event.observe(elms[i], "focus", function() {
			Element.addClassName(this, "selected");
		});
		Event.observe(elms[i], "blur", function() {
			Element.removeClassName(this, "selected");
		});
	}
	
	var elms = document.body.getElementsByTagName("select");
	for(var i=0; i<elms.length; i++) {
		Event.observe(elms[i], "focus", function() {
			Element.addClassName(this, "selected");
		});
		Event.observe(elms[i], "blur", function() {
			Element.removeClassName(this, "selected");
		});
	}	
	
	var elms = document.body.getElementsByTagName("textarea");
	for(var i=0; i<elms.length; i++) {
		Event.observe(elms[i], "focus", function() {
			Element.addClassName(this, "selected");
		});
		Event.observe(elms[i], "blur", function() {
			Element.removeClassName(this, "selected");
		});
	}
	
}

Event.observe(window, "load", function() {
  addClassNames();
  addSelectEvent();
});

function toggleElm(elm, toggler) {
	if(!Element.visible(elm)) {
		new Effect.BlindDown(elm, {duration: .5});
		if(toggler) {
			if(Element.hasClassName(toggler, "foldDown")) {
				Element.removeClassName(toggler, "foldDown");
				Element.addClassName(toggler, "foldUp");
			}
		}
	} else {
		new Effect.BlindUp(elm, {duration: .5});
		if(toggler) {
			if(Element.hasClassName(toggler, "foldUp")) {
				Element.removeClassName(toggler, "foldUp");
				Element.addClassName(toggler, "foldDown");
			}
		}
	}
	
	if(toggler)
		toggler.blur();
	
	return false;
}

function toggleFromCheckbox(checkbox, toggle) {
	if(checkbox.checked) {
		new Effect.Appear(toggle);
	} else {
		new Effect.Fade(toggle);		
	}
}

function adjustFloatingElements(target, classname) {
	var elms = Element.getElementsByClassName(target, classname);
	var maxSize = 0;
	var maxHeight = 0;
	for(var i=0; i<elms.length; i++) {
		if(elms[i].offsetWidth > maxSize)
			maxSize = elms[i].offsetWidth;
		if(elms[i].offsetHeight > maxHeight)
			maxHeight = elms[i].offsetHeight;
	}
	
	for(var i=0; i<elms.length; i++) {
		elms[i].style.width = maxSize + "px";
		elms[i].style.height = maxHeight + "px";
	}
}

function adjustFloatingElementsVertical(target, classname) {
	var elms = Element.getElementsByClassName(target, classname);
	var maxSize = 0;
	for(var i=0; i<elms.length; i++) {
		if(elms[i].offsetWidth > maxSize)
			maxSize = elms[i].offsetWidth;
	}
	
	for(var i=0; i<elms.length; i++) {
		elms[i].style.width = maxSize + "px";
	}
}

function nl2br(str) {
	if(typeof(str)=="string") return str.replace(/(\r\n)|(\n\r)|\r|\n/g,"<BR>");
	else return str;
}