
util = {
	stripDivCodes:function(itemId){
		/*
		*****************
		strips div codes of prefixes and suffixes
		if match found in definePrefixes() or defineSuffixes() 
		specified in site_defaults.js
		*****************
		*/
		var id = itemId;
		var prefix,suffix;
			if(!window.definePrefixes && !window.defineSuffixes){
				if(!window.settings){return;}
				for(var p in settings){
					if(p == 'prefixes'){
						prefix = settings[p];
					}
				}
				for(var s in settings){
					if(s == 'suffixes'){
						suffix = settings[s];
					}
				}
			}else{
				prefix = definePrefixes();
				suffix = defineSuffixes();
				//alert("functions: prefixes - "+prefix.length + "; suffixes - "+suffix.length);
			}
			if(prefix.length>0){
				for(var x=0;x<prefix.length;x++){
					var pfxRegex = new RegExp("^"+prefix[x] , "i");
					var pfxMatch = id.search(pfxRegex);
					if(pfxMatch !== -1){
						var pfxstrippedId = id.replace(pfxRegex,"");
						id = pfxstrippedId;
					}
				}
			}
			if(suffix.length>0){
				for(var x=0;x<suffix.length;x++){
					var sfxRegex = new RegExp(suffix[x]+"$","i");
					var sfxMatch = id.search(sfxRegex);
					if(sfxMatch !== -1){
						var sfxstrippedId = id.replace(sfxRegex,"");
						id = sfxstrippedId;
					}
				}
			}
		return id;
	},
	cleanWhitespace:function(rawtext){
		var cleantext = (rawtext.replace(/^\W+/,'')).replace(/\W+$/,'');
		return cleantext;
	},
	equalizeHeights:function(rootElement,itemsToEqualize){
		/* 
		************
		function requires the ID of the parent element 
		as well as the tag name of the elements to equalize.
		-- used to make an set of elements the same height --
		************
		*/

		var rootEl = document.getElementById(rootElement);
		if(!rootEl){return;}
		var items = rootEl.getElementsByTagName(itemsToEqualize);
		if(items.length <= 1){return;}

		var thisHeight
		var tallest = 0;

		for(i=0;i<items.length;i++){
			thisHeight = items[i].offsetHeight;
			tallest = (tallest < thisHeight) ? thisHeight : tallest;
		}
		thisHeight = 0;
		for(j=0;j<items.length;j++){
			thisHeight = (items[j].offsetHeight < tallest) ? tallest : items[j].offsetHeight;
			items[j].style.height = thisHeight + 'px';
		}

	},
	insertAfter:function(parent, node, referenceNode) {
		parent.insertBefore(node, referenceNode.nextSibling);
	},
	addSpans:function(els,numSpans){
		for(var x= 0;x<arguments[0].length;x++){
			var b = arguments[0][x];
			for(var i=0;i<numSpans;i++){
				var sp = document.createElement('span');
					sp.className="sp"+[i];
				b.appendChild(sp);
			}
		}
	},
	// cookie creation and parsing
	createCookie:function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},
	readCookie:function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			
		}
		return null;
	},
	eraseCookie:function(name) {
		util.createCookie(name,"",-1);
	}

}

// YAHOO extentions

// only available with the YAHOO object and the DOM object

YAHOO.util.Dom.getElementsByAttribute = function(atr, val, tag, root) {
		var method = function(el) { 
			var re = new RegExp('(?:^|\\s+)' + val + '(?:\\s+|$)');
			if ( el.getAttribute(atr) && re.test(el.getAttribute(atr)) ) {
				return true;
			}
			return false;
		};
		return this.getElementsBy(method, tag, root);
	};
	
YAHOO.util.Dom.toggle = function(){
		for ( var i=0; i < arguments.length; i++ ) {
			YD.get(arguments[i]).style.display = (YD.get(arguments[i]).style.display != 'none' ? 'none' : '' );
		}
	}