function showHide(opener, openee, options) {
	var openerTags = document.getElementsByTagName(opener[0]);
	var openeeTags = document.getElementsByTagName(openee[0]);
	
	if( this.startClosed ) {
		for( var i = 0, len = openeeTags.length; i < len; i++ ) {
			if( openeeTags[i].className.match(openee[1]) ) {
				openeeTags[i].style.display = "none";
			}
		}
	}
	
	for( var i = 0, len = openerTags.length; i < len; i++ ) {
		if( openerTags[i].className.match(opener[1]) ) {
			// Things needed out of scope
			var swapClass = options.swapClass ? options.swapClass : this.swapOptions;

			openerTags[i].onclick = function() {
				for( var j = 0, jlen = openeeTags.length; j < jlen; j++ ) {
					var classes = this.className.split(" ");
					var checkClassName = null;
					for( var k = 0, klen = classes.length; k < klen; k++ ) {
						if( classes[k].match(opener[1]) ) {
							checkClassName = classes[k].replace(opener[1], openee[1]);
						}
						if( classes[k].match(swapClass[0]) || classes[k].match(swapClass[1]) ) {
							currentClass = classes[k];
							toClass = currentClass == swapClass[0] ? swapClass[1] : swapClass[0];
						}
					}
					if( openeeTags[j].className.match(checkClassName) ) {
						if( openeeTags[j].style.display == "block" || openeeTags[j].style.display == "" ) {
							if( typeof($) == "undefined" ) {
								openeeTags[j].style.display = "none";
							} else {
								$(openeeTags[j]).slideUp("fast");
							}
						} else {
							if( typeof($) == "undefined" ) {
								openeeTags[j].style.display = "block";
							} else {
								$(openeeTags[j]).slideDown("fast");
							}
						}
					}
				}
				this.className = this.className.match(swapClass[0]) ? this.className.replace(swapClass[0], swapClass[1]) : this.className.replace(swapClass[1], swapClass[0]);
				return false;
			}
		}
	}
}

showHide.prototype = {
	swapClass : ["", ""],
	startClosed : true
}