		//HIGHLY USED FUNCTIONS
		//*****************************************
		function $() { // returns object reference || array of object references
			var loElements = new Array();
			for (var i = 0; i < arguments.length; i++) {
				var loElement = arguments[i];
				if (typeof(loElement) == 'string') {
					loElement = (document.getElementById(loElement)||false);
				}
				if (arguments.length==1) {
					return loElement;
				}
				loElements.push(loElement);
			}
			return loElements;
		}
		//*****************************************
		
				//UI EFFECTS
		//*****************************************
		// Change opacity of element. IE requires the element to have (layout) specific width.
		function changeOpacity(loElement, iOpacity) {
			if(!loElement) {return(false);}
			if(!iOpacity) {return(false);}
			var lsTagName=loElement.tagName.toLowerCase();
			var loElementStyle = loElement.style;
			if(!loElementStyle) {return;}
			loElementStyle.opacity = (iOpacity / 100);
			loElementStyle.MozOpacity = (iOpacity / 100);
			loElementStyle.KhtmlOpacity = (iOpacity / 100);
			loElementStyle.filter = "alpha(opacity=" + iOpacity + ");"; //WOW talk about obscure, if you dont add the semicolon in the filter attrib IE bombs.
			if (iOpacity==0) {
				loElementStyle.display = 'none';
			} else {
				if (lsTagName=='div') {
					loElementStyle.display = 'block';
				} else {
					loElementStyle.display = 'inline';
				}
			}
		}
		//*****************************************

		// Style based fading. -MM
		function fadeControl(lsItem, iOpacStart, iOpacEnd, iMilliseconds) {
			var speed = Math.round(iMilliseconds / 100); //speed for each frame
			var timer = 0;
			if(iOpacStart > iOpacEnd) { //determine the direction for the blending, if start and end are the same use pulse effect
				for(i = iOpacStart; i >= iOpacEnd; i--) {
					setTimeout("changeOpacity($('" + lsItem + "'),'" + i + "')",(timer*speed));
					timer++;
				}
			} else if(iOpacStart < iOpacEnd) {
				for(i = iOpacStart; i <= iOpacEnd; i++) {
					setTimeout("changeOpacity($('" + lsItem + "'),'" + i + "')",(timer*speed));
					timer++;
				}
			} else if(iOpacStart==iOpacEnd) { //pulse, not finished -- just pulses without considering value from/to which it's pulsing (just from full opacity to zero and back)
				for(i=0; i<3.1; i+=0.1) {
					setTimeout("changeOpacity($('" + lsItem + "'),'" + Math.round(Math.abs(Math.cos(i)*100)) + "')",(timer*speed));
					timer++;
				}
				changeOpacity($(lsItem),iOpacEnd); //hard set back to iOpacEnd, temp...
			}
		}
		//*****************************************

		