		//*****************************************
		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))?document.getElementById(loElement):null;
				}
				if (arguments.length==1) {
					return loElement;
				}	
				loElements.push(loElement);
			}
			return loElements;
		}
		//*****************************************
		//*****************************************
		// Returns cross-browser window dimensions
		// lsDimension = 'width' or 'height'
		function windowSize(lsDimension) {
			if (!lsDimension || lsDimension == '') { return true; }

			if (typeof(window.innerWidth) == 'number') {
				iFullWidth = window.innerWidth;
				iFullHeight = window.innerHeight;
			} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
				iFullWidth = document.documentElement.clientWidth;
				iFullHeight = document.documentElement.clientHeight;
			} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
				iFullWidth = document.body.clientWidth;
				iFullHeight = document.body.clientHeight;
			}
			
			lsDimension = lsDimension.toLowerCase();
			if (lsDimension == 'width') {
				return iFullWidth;				
			} else if (lsDimension == 'height') {
				return iFullHeight;
			} else {
				return true;	
			}
		}

		//*****************************************

		//*****************************************
		function updateValue(loInput) {
			lsJustStem='';
			if (loInput.value.lastIndexOf('\\')>0) {
				lsJustStem=loInput.value.substring(loInput.value.lastIndexOf('\\')+1);
			} else if(loInput.value.lastIndexOf('/')>0) {
				lsJustStem=loInput.value.substring(loInput.value.lastIndexOf('/')+1);
			} else {
				return(false);					
			}
			document.getElementById('name').value=lsJustStem;
		}
		//*****************************************

		//*****************************************
		function updateRegistrationForm() {
			document.getElementById('contacts_firstname').value=document.getElementById('firstname').value;
			document.getElementById('contacts_lastname').value=document.getElementById('lastname').value;
			document.getElementById('contacts_email').value=document.getElementById('email').value;
		}
		//*****************************************


		// EventListener
		EventListener = {
			addEvent:function(element, type, handler) {
				try {
					element.addEventListener(type, handler, false);
				} catch(inferiorBrowserException) {
					if(element.attachEvent) 
						element.attachEvent('on'+type, handler);
					else 
						element['on'+type] = handler;
				}
				return [element, type, handler];
			},
	
			removeEvent:function(event) {
				var element = event[0], type = event[1], handler = event[2];
				try {
					element.removeEventListener(type, handler, false);
				} catch(inferiorBrowserException) {
					if(element.detachEvent)
						element.detachEvent('on'+type, handler);
					else
						element['on'+type] = null;
				}
			},
	
			cancelEvent:function(e) {
				try {
					e.preventDefault();
					e.stopPropagation();
				} catch (someException) {
					e.returnValue = false;
				}	return false;
			}
		}


		// Class name switcher
		ClassName = {

			Class:function(element, cls) {
				if (!element){return(null);}
				return(element.className==cls);
			},

			hasClass:function(element, cls) {
				if (!element){return(true);}
				var reg = new RegExp('\\b'+cls+'\\b');
				return reg.test(element.className);
			},

			toggleClass:function(element, cls, altcls) {
				if (!element){return(true);}
				if(this.Class(element, cls)) {
					element.className = altcls;
				} else {
					element.className = cls;
				}
			},

			ClassName:function(element, cls) {
				if (!element){return(true);}
				if(!this.hasClass(element, cls)) {
					element.className = cls;
				}
			},

			addClass:function(element, cls) {
				if (!element){return(true);}
				if(!this.hasClass(element, cls)) {
					element.className += ' ' + cls;
				}
			},
	
			removeClass:function(element, cls) {
				var reg = new RegExp('\\b'+cls+'\\b', 'g');
				if (!element){return(true);}
				element.className = element.className.replace(reg, '');
			}
		}
		//*****************************************






		//*****************************************
		function objectReference(lsNodeID) {
			loObjectReference=(document.getElementById(lsNodeID))?document.getElementById(lsNodeID):false;
			return(loObjectReference);
		}
		//*****************************************
		//*****************************************
		function removeSite(lsMessageURL, loCallBack) {
			if (lsMessageURL=='') {
				return(false);				
			}
			ajaxEvent(lsMessageURL,loCallBack);
		}
		//*****************************************
		//*****************************************
		function addSite(lsMessageURL, loCallBack) {
			if (lsMessageURL=='') {
				return(false);				
			}
			
			lsForeignSitesId=document.getElementById('_sites_id').value;
			lsMessageURL+='&_foreign_sites_id='+lsForeignSitesId;
			
			ajaxEvent(lsMessageURL,loCallBack);
		}
		//*****************************************
		//*****************************************
		function addSiteProfiles(lsMessageURL, loCallBack) {
			if (lsMessageURL=='') {
				return(false);				
			}
			ajaxEvent(lsMessageURL,loCallBack,true);
		}
		//*****************************************






		//*****************************************
		function showMessage() {
			document.getElementById('_title').value='';
			document.getElementById('_content').value='';
			document.getElementById('contact-results').innerHTML='';
			simpleFadeIn('main-contact-console','message-visible');
			setTimeout("document.getElementById('_title').focus()",320);
		}
		//*****************************************
		//*****************************************
		function messageSent() {
			document.getElementById('_title').value='';
			document.getElementById('_content').value='';
			simpleFadeOut('main-contact-console','message-hidden');
		}
		//*****************************************
		//*****************************************
		function sendMessage(lsMessageURL, loCallBack) {
			lsTitle=document.getElementById('_title').value;
			lsUsersId=document.getElementById('_users_id').value;
			lsSitesId=document.getElementById('_sites_id').value;
			lsFromSitesId=document.getElementById('_from_sites_id').value;
			lsContent=document.getElementById('_content').value;
			if(!lsFromSitesId) { 
				lsFromSitesId=0;
			}
			if(!lsUsersId) {
				return(false);
			}
			if (!lsContent) {
				return(false);				
			}
			if (!lsTitle) {
				return(false);				
			}
			if (!lsSitesId) {
				return(false);				
			}
			lsMessageURL+='?_title='+lsTitle;
			lsMessageURL+='&_users_id='+lsUsersId;
			lsMessageURL+='&_sites_id='+lsSitesId;
			lsMessageURL+='&_from_sites_id='+lsFromSitesId;
			lsMessageURL+='&_content='+lsContent;
			ajaxEvent(lsMessageURL,loCallBack,true);
		}
		//*****************************************






		//*****************************************
		function showComment() {
			document.getElementById('_comment_title').value='';
			document.getElementById('_comment_content').value='';
			document.getElementById('comment-results').innHTML='ready...';
			simpleFadeIn('main-comment-console','message-visible');
			setTimeout("document.getElementById('_comment_title').focus()",320);
		}
		//*****************************************
		//*****************************************
		function commentSent(lsCommentUrl,loCallBack) {
			document.getElementById('_comment_title').value='';
			document.getElementById('_comment_content').value='';
			if(!lsCommentUrl) {
			} else {
				ajaxEvent(lsCommentURL,loCallBack,true);	
			}
			simpleFadeOut('main-comment-console','message-hidden');

		}
		//*****************************************
		//*****************************************
		//send comments to profiles or sites...
		function sendComment(lsMessageURL, loCallBack) {
			lsTitle=(document.getElementById('_comment_title'))?document.getElementById('_comment_title').value:'';
			lsUsersId=(document.getElementById('_comment_users_id'))?document.getElementById('_comment_users_id').value:'';
			lsProfilesId=(document.getElementById('_comment_profiles_id'))?document.getElementById('_comment_profiles_id').value:'';
			lsSitesId=(document.getElementById('_comment_sites_id'))?document.getElementById('_comment_sites_id').value:'';
			lsFromSitesId=(document.getElementById('_comment_from_sites_id'))?document.getElementById('_comment_from_sites_id').value:'';
			lsContent=(document.getElementById('_comment_content'))?document.getElementById('_comment_content').value:'';
			if (lsContent=='') {
				return(false);			
			}
			if (lsTitle=='') {
				return(false);
			}
			lsMessageURL+='?_title='+lsTitle;
			lsMessageURL+='&_users_id='+lsUsersId;
			lsMessageURL+='&_sites_id='+lsSitesId;
			lsMessageURL+='&_profiles_id='+lsProfilesId;
			lsMessageURL+='&_from_sites_id='+lsFromSitesId;
			lsMessageURL+='&_content='+lsContent;
			ajaxEvent(lsMessageURL,loCallBack);
		}
		//*****************************************









		//*****************************************
		// bogus effect hack
		function simpleFadeIn(lsPageElementId, lsRevertToClass) {
			if(!lsPageElementId) {return(false);}
			if(!lsRevertToClass) {return(false);}
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-nine'",75);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-eight'",100);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-seven'",125);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-six'",150);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-five'",175);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-four'",200);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-three'",225);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-two'",250);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-one'",275);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='"+lsRevertToClass+"'",300);
		}
		//*****************************************
		// bogus effect hack
		function simpleFadeOut(lsPageElementId, lsRevertToClass) {
			if(!lsPageElementId) {return(false);}
			if(!lsRevertToClass) {return(false);}
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-one'",75);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-two'",100);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-three'",125);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-four'",150);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-five'",175);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-six'",200);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-seven'",225);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-eight'",250);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='grey-nine'",275);
			setTimeout("document.getElementById('" + lsPageElementId + "').className='"+lsRevertToClass+"'",300);
		}
		//*****************************************








		//*****************************************
		//Generic toggle switch for expanding content in limited screen space
		function toggleDisplay(iItem,lsElementLevel) {
			//exit gracefully if empty
			if(iItem=='') {return(true);}
			if(!document.getElementById(iItem).style.display||document.getElementById(iItem).style.display==lsElementLevel) {
				document.getElementById(iItem).style.display="none";
			} else {
				document.getElementById(iItem).style.display=lsElementLevel;
			}
		}
		//*****************************************

		//*****************************************
		//Generic toggle switch for expanding content in limited screen space
		function imToggleDisplay(iItem,lsElementLevel) {
			//exit gracefully if empty
			if(iItem=='') {return(true);}
			
			if(!document.getElementById(iItem).style.display||document.getElementById(iItem).style.display==lsElementLevel) {
				document.getElementById(iItem).innerHTML="";
				document.getElementById("background-fade").style.display="none";
				document.getElementById(iItem).style.display="none";
				document.body.style.overflow = "auto";
			} else {
				iFullWidth = windowSize("width");
				iFullHeight = windowSize("height");
				iLeftAdjust = Math.round((iFullWidth - 750) / 2);
				iTopAdjust = Math.round((iFullHeight - 500) / 2);
				document.body.style.overflow = "hidden";
				window.onresize = function() {
					iFullWidth = windowSize("width");
					iFullHeight = windowSize("height");
					iLeftAdjust = Math.round((iFullWidth - 750) / 2);
					iTopAdjust = Math.round((iFullHeight - 500) / 2);
					document.getElementById("background-fade").style.width=iFullWidth+"px";
					document.getElementById("background-fade").style.height=iFullHeight+"px";
					document.getElementById(iItem).style.top=iTopAdjust+"px";
					document.getElementById(iItem).style.left=iLeftAdjust+"px";
				}

				document.getElementById("background-fade").style.width=iFullWidth+"px";
				document.getElementById("background-fade").style.height=iFullHeight+"px";
				document.getElementById("background-fade").style.display="block";
				
				document.getElementById(iItem).style.top=iTopAdjust+"px";
				document.getElementById(iItem).style.left=iLeftAdjust+"px";
				document.getElementById(iItem).style.display=lsElementLevel;
				
			}
		}
		//*****************************************
		
		//*****************************************
		function imLoadScreen() {
			document.getElementById('im-container').style.display='block';
			setTimeout("document.getElementById('im-container').style.display='none'",1000);
		}
		//*****************************************

		//*****************************************
		function newWindow(url) {
			oNewWindow=window.open(url,'newWindow','width=760,height=550','location=no, status=no, scrolling=no, resize=yes');
			if (window.focus) {oNewWindow.focus()}
		}
		//*****************************************

		//*****************************************
		function updateTime( loElementQualifier ) {
			loHourElement=document.getElementById(loElementQualifier+'-hour');
			loMinuteElement=document.getElementById(loElementQualifier+'-minute');
			loMeridianElement=document.getElementById(loElementQualifier+'-meridian');
			lsHour=loHourElement.options[loHourElement.selectedIndex].value;
			lsMinute=loMinuteElement.options[loMinuteElement.selectedIndex].value;
			lsMeridian=loMeridianElement.options[loMeridianElement.selectedIndex].value;
			lsTime = lsHour + ':' + lsMinute + ' ' + lsMeridian;
			loElementId=loElementQualifier+'_time';
			if (!loElementId) {
				return(false);				
			} else {
				document.getElementById(loElementId).value=lsTime;
				return(true);
			}
		}
		//*****************************************

		//*****************************************
		function formatThisDate(loDateField) {
			//2007-05-19
			lsMM_DD_YYYY = document.getElementById(loDateField).value;
			lsMM_DD_YYYY = lsMM_DD_YYYY.substring(0, 10);			
			//lsMM_DD_YYYY = lsMM_DD_YYYY.substring(6, 2) + lsMM_DD_YYYY.substring(8, 2) + lsMM_DD_YYYY.substring(0, 4) + lsMM_DD_YYYY;
			lsMM_DD_YYYY = lsMM_DD_YYYY.substring(5, 7) + '-' + lsMM_DD_YYYY.substring(8, 10) + '-' + lsMM_DD_YYYY.substring(0, 4); 
			document.getElementById(loDateField).value = lsMM_DD_YYYY;
		}
		//*****************************************
