﻿// ====================================================================================================
//
//          Page: JSLibrary
//        Author: Michael Marzilli   ( http://www.linkedin.com/in/michaelmarzilli )
//       Created: May 29, 2008
//
//	Minify with: http://sundgaard.dk/javascript-minify.aspx
//
// VERS 1.0.000 : May 29, 2008 : Original File Created.
//			1.0.001 : Jun 27, 2008 : Modified toggleNode function to change the Display style attribute.
//			1.0.002 : Jul 11, 2008 : Added "setGotFocus" function to set focus to a textbox's last character.
//			1.0.003 : Oct 15, 2008 : Added "prototype.js" and "browser.js" libraries, which make it easier
//															 to gather browser/document information. 
//															 IE replace document.getElementById with $
//			1.0.004 : Dec 16, 2008 : Added code to handle resizing of Google Maps when page is resized.
//			1.0.005 : Apr 17, 2009 : Added ability to save the Toggleable Nodes Open/Close state across PostBacks.
//															 Using a hidden field:  <asp:HiddenField ID="nodeSave" runat="server" />
//															 Added ability to save the Scrollbar position across PostBacks.
//															 Using a hidden field:  <asp:HiddenField ID="pageScrollOffset" runat="server" />
//			1.0.006 : May 19, 2009 : Added Functions for handling several controls; Google Maps, Google Search and
//															 PayPal.
//			1.0.007 : May 29, 2009 : Added functions for handling the Photo Album.
//			1.0.008 : Jun 11, 2009 : Improved Photo Album functions, corrected Album Large View size compared
//															 to Document Width and Height.
//			1.0.009 : Jun 16, 2009 : Added an Upload File progress bar.
//			1.0.010 : Jun 22, 2009 : Resolved issue with FireFox browsers where photo album image was not
//															 loading properly. (increased time delay in the image load function).
//			1.0.011 : Jun 25, 2009 : Added Jeff Todnem's Password Strength script.
//			1.0.012 : Apr 07, 2010 : Added code for AJAX Web Chat.
//			1.0.013 : Apr 27, 2010 : Rewrote AJAX Code to be more Generic.  Rewrote Web Chat to use new AJAX Library.
//			1.0.014 : Jun 16, 2010 : Added an AJAX Commenting System.
//			1.0.015 : Jul 12, 2010 : Added code to handle Animated Button control.
//			1.0.016 : Aug 26, 2010 : Updated the Comments Code to allow Paging of Comments.
//
// ====================================================================================================





// DEFINE PROGRAM CONSTANTS
// ----------------------------------------------------------------------------------------------------

	var intTopOffset = 157;
	
	var intFadeIn    = 0;
	var opacLevel    = 0;
	var opacStep     = 0.10;
	var intBackgroundContentArea = 1;			// 1=Full Page, 2=Only Content Area (not the Header)





// COOKIE FUNCTIONS
// ----------------------------------------------------------------------------------------------------

	function WriteCookie(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=/";
	}

	function WriteCookieMinute(name, value, mins) {
		if (mins) {
			var date = new Date();
			date.setTime(date.getTime()+(mins*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}

	function ReadCookie(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;
	}

	function EraseCookie(name) {
		WriteCookie(name, '', -1);
	}
	
	
// GENERIC STRING FUNCTIONS
// ----------------------------------------------------------------------------------------------------

	function startsWith(str, prefix) { return str.indexOf(prefix)   == 0; }
	function endsWith(str, suffix)   { return str.match(suffix+"$") == suffix;	}
	function trim(str)               { return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };



// TIME OF DAY GREETING
// ----------------------------------------------------------------------------------------------------

	function TimeGreeting()
	{
		var dtDateNow  = new Date();
		var tmTimeNow  = dtDateNow.getTime();
		dtDateNow.setTime(tmTimeNow);
		var theHour    = dtDateNow.getHours();
		var strDisplay = 'Welcome, ';
		if (theHour > 17) 
			strDisplay = 'Good Evening, ';
		else if (theHour >11) 
			strDisplay = 'Good Afternoon, '; 
		else
			strDisplay = 'Good Morning, '; 
		
		var docWelcome = getObjectElementByID('', 'ctl00_lblMstrUser');
		if (docWelcome != null)
		{
			var strInner = docWelcome.innerHTML;
			if (strInner != null && strInner != '')
			{
				strInner = strInner.replace('Welcome, ', strDisplay);
				docWelcome.innerHTML = strInner;
			}
		}
	}
	function CopyContents(src, tgt)
	{
		var objSource = getObjectElementByID('', src);
		var objTarget = getObjectElementByID('', tgt);
		
		if (objSource != null && objTarget != null)
		{
			objTarget.value = objSource.value;
		}
	}


// PAGE SETUP FUNCTION
// ----------------------------------------------------------------------------------------------------

	function click(e) 
	{
		var message="Sorry, right-click has been disabled on this web site.";
		if (document.all) {
			if (event.button == 2) {
				alert(message);
				return false;
			}
		}
		if (document.layers) {
			if (e.which == 3) {
				alert(message);
				return false;
			}	
		}
	}
	function SetContentBackgroundImage()
	{
		var div = getObjectElementByID('', 'divMPpage');
		
		switch (intBackgroundContentArea)
		{
			case 1:		// THIS WILL SET THE ENTIRE PAGE'S BACKGROUND AREA
				div = getObjectElementByID('', 'divMPpage');
				break;
			case 2:		// THIS WILL SET THE CONTENT BACKGROUND AREA ONLY
				div = getObjectElementByID('', 'divMPcontent');
				break;
		}
		
		if (div != null)
		{
			if (strBGimage != '')
				div.style.backgroundImage = 'url(\'' + strBGimage + '\')';
			if (strBGalign != '')
				div.style.backgroundPosition = strBGalign;
			div.style.backgroundAttachment = 'fixed';
			div.style.backgroundSize       = '100% 100%';
		}
		
		if (intFadeIn == 1)
			fade_text();
	}

	function fade_text()
	{ 
		if (opacLevel >= 1)
			return;
		opacLevel = opacLevel + opacStep;
		document.body.style.filter       = 'alpha(opacity=' + (opacLevel * 100) + ')';
		document.body.style.opacity      = opacLevel;
		document.body.style.MozOpacity   = opacLevel;
		document.body.style.KhtmlOpacity = opacLevel;
		var t = setTimeout('fade_text()', 10);
	}	
	
	function OnPageLoad()
	{
		if (intFadeIn == 1)
		{
			document.body.style.filter       = 'alpha(opacity=0)';
			document.body.style.opacity      = 0;
			document.body.style.MozOpacity   = 0;
			document.body.style.KhtmlOpacity = 0;
		}
		
		// DISABLE RIGHT-CLICKS
		if (document.layers) {
			document.captureEvents(Event.MOUSEDOWN);
		}
		document.onmousedown = click;
	}


// SAVED SCROLLBAR OFFSET
// ----------------------------------------------------------------------------------------------------
	var blnSetScrollBar = 0;
	var intSetScrollBar = 0;
	var ivlScrollBar;
	
	function getThePageScrollOffset()
	{
		var sbOffset;
		var strObjectName = 'pageScrollOffset';
		
		sbOffset = document.getElementById(strObjectName);
		
		if (sbOffset == null)
			sbOffset = $(strObjectName);
			
		if (sbOffset == null)
			sbOffset = document.getElementById('ctl00$ContentPlaceHolder1$' + strObjectName);
			
		if (sbOffset == null)
			sbOffset = document.getElementById('ctl00_ContentPlaceHolder1_' + strObjectName);
		
		return sbOffset;
	}
	function SetPageScrollOffset()
	{
		var sb = getThePageScrollOffset();
		var dv = document.getElementById("divMPcontent");

		if (sb != null && dv != null)
		{
			var intOffset = dv.scrollTop;
			sb.value = intOffset;
		}
		
		return false;
	}
	function GetPageScrollOffset()
	{
		if (blnSetScrollBar != 0 || intSetScrollBar > 20)
		{
			window.clearInterval(ivlScrollBar);
			return;
		}
		
		var sb = getThePageScrollOffset();
		var dv = document.getElementById("divMPcontent");
		
		if (sb != null && dv != null)
		{
			
			var intOffset = eval(sb.value - 0);
			if (sb.value == '')
				intOffset = 0;
		
			dv.scrollTop = intOffset; 

			if (dv.scrollTop == intOffset)	
				blnSetScrollBar = 1;
		} else {
			intSetScrollBar++;
			blnSetScrollBar = 1;
		}
	}
		
	
	
// Toggle a FAQ DIV Node Visible/Invisible
// ----------------------------------------------------------------------------------------------------
	function getNodeSave(strObjectName)
	{
		var ns;
		
		ns = document.getElementById(strObjectName);
		
		if (ns == null)
			ns = $(strObjectName);
			
		if (ns == null)
			ns = document.getElementById('ctl00$ContentPlaceHolder1$' + strObjectName);
			
		if (ns == null)
			ns = document.getElementById('ctl00_ContentPlaceHolder1_' + strObjectName);
		
		return ns;
	}
	
	function initNode() {
		var ns = getNodeSave('nodeSave');
			
		if (ns != null)
		{
			var strItems = ns.value;

			if (strItems == '')
			{
				strItems = '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
				ns.value = strItems;
			}
		
			var intLen   = strItems.length;
			var strItem  = '';

			for(var i = 0; i < intLen; i++)
			{
				strItem = strItems.substring(i-1, i);
				initToggleNode(i, strItem);
			}			
		}
	}
	
	function initToggleNode(item, vis) {
		var nodeDiv  = $('N_' + item);
		var nodeIcon = $('I_' + item);
					
		if (nodeDiv == null || nodeIcon == null)
			return;
					
		if (vis == '1')
		{
			nodeDiv.style.visibility = 'visible';
			nodeDiv.style.display    = 'block';
			nodeIcon.src             = 'Images/tree/m.gif';
			nodeIcon.alt             = '-';
		}
		else
		{
			nodeDiv.style.visibility = 'hidden';
			nodeDiv.style.display    = 'none';
			nodeIcon.src             = 'Images/tree/p.gif';
			nodeIcon.alt             = '+';
		}
	}
	
	
	function toggleNode(item) {
		var nodeDiv  = $('N_' + item);
		var nodeIcon = $('I_' + item);
		var intItem  = eval(item - 0);
		var strVal   = '';
		var strOld   = '';
		var strNew   = '';

		if (nodeDiv == null || nodeIcon == null)
			return;
												
		if (nodeDiv.style.visibility == 'visible')
		{
			nodeDiv.style.visibility = 'hidden';
			nodeDiv.style.display    = 'none';
			nodeIcon.src             = 'Images/tree/p.gif';
			nodeIcon.alt             = '+';
			strVal                   = '0';
		}
		else
		{
			nodeDiv.style.visibility = 'visible';
			nodeDiv.style.display    = 'block';
			nodeIcon.src             = 'Images/tree/m.gif';
			nodeIcon.alt             = '-';
			strVal                   = '1';
		}
		
		var ns = getNodeSave('nodeSave');
		if (ns != null)
		{
			strOld = ns.value;
		
			if (intItem > 1)
				strNew = strOld.substring(0, intItem - 1);
			strNew = strNew + strVal;
			if (intItem < strOld.length)
				strNew = strNew + strOld.substring(intItem, strOld.length);
				
			ns.value = strNew;
		}
		
		return false;
	}
	
	function toggleControlNode(item, num) {
		if (item.indexOf('H_') > 0)
			item = item.substr(0, item.indexOf('H_'));
			
		var nodeDiv  = $(item + 'N_' + num);
		var nodeIcon = $(item + 'I_' + num);
		var intItem  = eval(num - 0);
		var strVal   = '';
		var strOld   = '';
		var strNew   = '';
		
		if (nodeDiv == null || nodeIcon == null)
		{
			return item + 'N_' + num;
		}
					
		if (nodeDiv.style.visibility == 'visible')
		{
			nodeDiv.style.visibility = 'hidden';
			nodeDiv.style.display    = 'none';
			nodeIcon.src             = 'Images/tree/p.gif';
			nodeIcon.alt             = '+';
		}
		else
		{
			nodeDiv.style.visibility = 'visible';
			nodeDiv.style.display    = 'block';
			nodeIcon.src             = 'Images/tree/m.gif';
			nodeIcon.alt             = '-';
		}
		
		var ns = getNodeSave('nodeSave');
		if (ns != null)
		{
			strOld = ns.value;
		
			if (intItem > 1)
				strNew = strOld.substring(0, intItem - 1);
			strNew = strNew + strVal;
			if (intItem < strOld.length)
				strNew = strNew + strOld.substring(intItem, strOld.length);
				
			ns.value = strNew;
		}
		
		return;
	}
	

// Toggle a DIV Node Visible/Invisible
// ----------------------------------------------------------------------------------------------------
	function ToggleObjectVisibility(item) {
		var nodeDiv  = $(item);
		
		if (nodeDiv.style.visibility == 'visible')
		{
			nodeDiv.style.visibility = 'hidden';
			nodeDiv.style.display    = 'none';
		}
		else
		{
			nodeDiv.style.visibility = 'visible';
			nodeDiv.style.display    = 'block';
		}
	}


// Toggle a DIV Node Visible/Invisible  -  Forced On or Off
// ----------------------------------------------------------------------------------------------------
	function ToggleObjectVisibility(item, isVisible) {
		var nodeDiv  = $(item);
		
		if (!isVisible)
		{
			nodeDiv.style.visibility = 'hidden';
			nodeDiv.style.display    = 'none';
		}
		else
		{
			nodeDiv.style.visibility = 'visible';
			nodeDiv.style.display    = 'block';
		}
	}


// Focus on a TextBox, and set the Cursor to the last position.
// ----------------------------------------------------------------------------------------------------
	function setGotFocus(myField, myValue) {
		document.forms[0][myField].value = myValue;
		document.forms[0][myField].focus();
	}


// Given a Control Name and an Element Name, return the Element Object.
// ----------------------------------------------------------------------------------------------------
	function getObjectElementByID(strControlName, strObjectName)
	{
		var ns;
		var strControlTemp;	
		
		ns = document.getElementById(strObjectName);
		
		if (ns == null)
			try { ns = document.forms[0][strObjectName]; } catch (Error) { }

		if (ns == null)
			try { ns = $(strObjectName); } catch (Error) { }
			
		// SEARCH INSIDE THE CONTENT CONTAINER
		if (ns == null)
		{
			strControlTemp = strControlName;
			if (strControlName != '')
				strControlTemp = strControlName + '$';
			try { ns = document.getElementById(strControlTemp + strObjectName); } catch (Error) { }
			strControlTemp = 'ctl00$ContentPlaceHolder1$' + strControlTemp + strObjectName;
			if (ns == null)				
				try { ns = document.getElementById(strControlTemp); } catch (Error) { }
		}
		
		if (ns == null)
		{
			strControlTemp = strControlName;
			if (strControlName != '')
				strControlTemp = strControlName + '_';
			try { ns = document.getElementById(strControlTemp + strObjectName); } catch (Error) { }
			strControlTemp = 'ctl00_ContentPlaceHolder1_' + strControlTemp + strObjectName;
			if (ns == null)				
				try { ns = document.getElementById(strControlTemp); } catch (Error) { }
		}
		
		// SEARCH OUTSIDE THE CONTENT CONTAINER
		if (ns == null)
		{
			strControlTemp = strControlName;
			if (strControlName != '')
				strControlTemp = strControlName + '$';
			strControlTemp = 'ctl00$' + strControlTemp + strObjectName;
			try { ns = document.getElementById(strControlTemp); } catch (Error) { }
		}
		
		if (ns == null)
		{
			strControlTemp = strControlName;
			if (strControlName != '')
				strControlTemp = strControlName + '_';
			strControlTemp = 'ctl00_' + strControlTemp + strObjectName;
			try { ns = document.getElementById(strControlTemp); } catch (Error) { }
		}
				
		return ns;
	}

	function getObjectElementParent(strControlName)
	{
		var strTemp = strControlName;
		var n       = strTemp.lastIndexOf("_");
		if (n >= 0)
			strTemp = strTemp.substring(0, n);
		
		return strTemp;
	}



// DOCUMENT ELEMENT FUNCTIONS
// ----------------------------------------------------------------------------------------------------

	function GetDDLselectedItem(ddl)
	{
		return ddl.item(ddl.selectedIndex).value;
	}
	function SetDDLselectedItem(ddl, val)
	{
		for (var i = 0; i < ddl.length; i++)
		{
			if (ddl.item(i).value == val)
			{
				ddl.selectedIndex = i;
				return true;
			}
		}
		return false;
	}
	function SetDDLSelectedItem(ctrl, ddlName, ddlValue)
	{
		var ddl = getObjectElementByID(ctrl, ddlName);
		if (ddl != null)
		{
			for (var i = 0; i < ddl.length; i++)
			{
				if (ddl.item(i).value == ddlValue)
				{
					ddl.selectedIndex = i;
					return true;
				}
			}
		}
		return false;
	}
	function SetObjectElementByID(ctrl, objName, objValue)
	{
		var obj = getObjectElementByID(ctrl, objName);
		if (obj != null)
			obj.value = objValue;
	}
	function SetObjectVisibility(ctrl, objName, blnShow)
	{
		var obj = getObjectElementByID(ctrl, objName);
		if (obj != null)
		{
			if (blnShow)
			{
				obj.style.visibility = 'visible';
				obj.style.display    = 'inline-block';
			} else {
				obj.style.visibility = 'hidden';
				obj.style.display    = 'none';
			}
		}
	}
	function SetObjectEnabled(ctrl, objName, bln)
	{
		var obj = getObjectElementByID(ctrl, objName);
		if (obj != null)
			obj.disabled = !bln;
	}



// Determine the Width of the Window
// ----------------------------------------------------------------------------------------------------
	function getWindowWidth() {
	
    if( !document.all ) {		//typeof( window.innerWidth ) == 'number'
      //Non-IE
      return window.innerWidth;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
      //IE 6+ in 'standards compliant mode'
      return document.documentElement.clientWidth;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
      //IE 4 compatible
      return document.body.clientWidth;
    } else if (document.documentElement && 
				typeof document.documentElement.clientWidth!='undefined' &&
				document.documentElement.clientWidth!=0) {
			return document.documentElement.clientWidth;
		}
		if (document.body && 
				typeof document.body.clientWidth!='undefined') {
			return document.body.clientWidth;
		}
	}


// Determine the Height of the Window
// ----------------------------------------------------------------------------------------------------
	function getWindowHeight() {
    if( !document.all ) {		//typeof( window.innerWidth ) == 'number'
      //Non-IE
      return window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
      //IE 6+ in 'standards compliant mode'
      return document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
      //IE 4 compatible
      return document.body.clientHeight;
    } else if (document.documentElement && 
				typeof document.documentElement.clientWidth!='undefined' &&
				document.documentElement.clientHeight!=0) {
			return document.documentElement.clientHeight;
		}
		if (document.body && 
				typeof document.body.clientWidth!='undefined') {
			return document.body.clientHeight;
		}
	}
	

// Adjust the Body of the page so that the Footer portion remains at the bottom of the page
// ----------------------------------------------------------------------------------------------------
	function AdjustContentSize() {
		var intDocWidth   = 400;
		var intDocHeight  = 400;
		var intModifier   = 45;
		var intOffset     = 0;
		var intBotOffset  = 0;
		var intContOffset = 0;
					
		if (intScrollingPage != '1')
			return;
						
		try
		{
			// CREATE PAGE OBJECTS
			var tblHeader  = $('divMPheader');
			var tblFooter  = $('divMPfooter');
			var tblBody    = $('divMPcontent');
			var tblMenu    = $('divMPmenu');
			var tblContent = $('divMPcontent');
			var tblLogin   = $('divLogin');
			if (tblLogin == null)
				tblLogin = $('ctl00_divLogin');
				
			// DETERMINE BROWSER INNER WINDOW SIZE
			intDocWidth  = getWindowWidth();
			intDocHeight = getWindowHeight();
				
			// ABORT IF THE WINDOW IS MADE TOO SMALL			
			if (intDocHeight <= intTopOffset + (intModifier * 3))
				return;
				
			// CALCULATE OFFSET FOR FOOTER
			if (tblFooter != null) 
				intBotOffset = tblFooter.offsetHeight; 
		
			// CALCULATE OFFSET FOR CONTENT PANEL OBJECT
			if (tblContent != null)
				intContOffset = tblContent.offsetHeight;
			 
			intOffset = intTopOffset + intBotOffset;		
							
			// REPOSITION THE LOGIN PANEL
			if (tblLogin != null)
			{
	//			tblLogin.left = 50 + 'px;		//  (intDocWidth - 320) + 'px';
				tblLogin.style.left = (intDocWidth - 320) + 'px';
			}
			
			// RESIZE THE CONTENT PANEL
			SetTransDiv();
			if (tblBody != null) {
			
				// ONE PAGE SCROLLING ACTIVE
				if (intScrollingPage == "1") {
					if (tblContent.offsetHeight > intDocHeight - intTopOffset - 20) {
						tblBody.style.height = (intDocHeight - (intTopOffset + 22)) + 'px';	
						if (tblContent != null)
							tblContent.style.height = (intDocHeight - (intTopOffset + intBotOffset + intModifier)) + 'px';
						tblBody.style.overflow = "auto";
					} else {
						tblBody.style.height = (intDocHeight - (intTopOffset + 22)) + 'px';		
						if (tblContent != null)
							tblContent.style.height = (intDocHeight - (intTopOffset + intBotOffset + intModifier)) + 'px';
						tblBody.style.overflow = "auto";
						
					}
				} else {
					// ONE PAGE SCROLLING INACTIVE
					window.document.body.style.overflow = "auto";
					window.document.body.style.height   =  intDocHeight + 'px';
									
					if (tblContent.offsetHeight < intDocHeight - intTopOffset) {
						tblBody.style.height = (intDocHeight - (intTopOffset + 18)) + 'px';	

						if (tblContent != null) 
							tblContent.style.height = (intDocHeight - (intTopOffset + intBotOffset + intModifier)) + 'px';
					}
				}
			}
		} catch(Error) { }
	}
	
	
// Force Target Object Resize to Source Object's Height
// ----------------------------------------------------------------------------------------------------
	var strNewsSource = '';
	var strNewsTarget = '';

	function SourceHeightToTarget(strSource, strTarget) {
		var intSource = 0;
		var intTarget = 0;
		var intFooter = 0;
					
		// CREATE PAGE OBJECTS
		strNewsSource = strSource;
		strNewsTarget = strTarget;
		var tblSource = $(strSource);
		var tblTarget = $(strTarget);
		var tblFooter = $('masterTableFooter');

		// DETERMINE SOURCE'S HEIGHT
		if (tblSource != null) 
			intSource = tblSource.offsetHeight;
			
		// DETERMINE TARGET'S HEIGHT
		if (tblTarget != null)
			intTarget = tblTarget.offsetHeight;
			
		// DETERMINE FOOTER'S HEIGHT
		if (tblFooter != null)
			intFooter = tblFooter.offsetHeight;			
			
		// RE-CALCULATE
		if (intTarget - intFooter < intSource)
			tblTarget.style.height = (intSource + intFooter) + 'px';
	}


// Resize a Panel	
// ----------------------------------------------------------------------------------------------------
	function ResizeGridViewPanel(pnlName, gvName) {
		var pnlObj  = $(pnlName);
		var tbl     = $(gvName);
		
		if (pnlObj == null || tbl == null)
			return;
				
		try
		{
			var windowTop    = 230;
			var windowHeight = getWindowHeight(); 
			var gvHeight     = tbl.offsetHeight;
			var changeHeight = windowHeight;
			var newHeight    = 600;
				
			if (windowHeight > gvHeight)
				changeHeight = gvHeight + windowTop + 20;
							
			if (changeHeight > windowHeight)
				changeHeight = windowHeight;
						
			if (changeHeight < windowTop + 100)
				changeHeight = windowTop + 100;
			
			newHeight = changeHeight - windowTop;	
			pnlObj.style.height = newHeight + "px"; 				
		} catch(Error) { }
	}

	function SetTransDiv()
	{
		var obj = getObjectElementByID('', 'divTrans');
		
		try
		{
			if (obj != null)
			{
				obj.style.width  = getWindowWidth()  + 'px';
				obj.style.height = getWindowHeight() + 'px';
			}
		} catch(Error) { }
	}

	
	
// Page Content Editor Functions
// ----------------------------------------------------------------------------------------------------

		function PageContentEditor_ShowDelete()
		{
			var btnDel = getObjectElementByID('', 'btnDelete');
			if (btnDel != null)
				btnDel.style.visibility = 'hidden';
			var btnYes = getObjectElementByID('', 'btnDeleteYes');
			if (btnYes != null)
				btnYes.style.visibility = 'visible';
			var btnNo = getObjectElementByID('',  'btnDeleteNo');
			if (btnNo != null)
				btnNo.style.visibility = 'visible';
		}
		function PageContentEditor_HideDelete()
		{
			var btnDel = getObjectElementByID('', 'btnDelete');
			if (btnDel != null)
				btnDel.style.visibility = 'visible';
			var btnYes = getObjectElementByID('', 'btnDeleteYes');
			if (btnYes != null)
				btnYes.style.visibility = 'hidden';
			var btnNo = getObjectElementByID('',  'btnDeleteNo');
			if (btnNo != null)
				btnNo.style.visibility = 'hidden';
		}
		function PageContentEditor_PopulatePageName()
		{
			var ddl = getObjectElementByID('', 'ddlASPfiles');
			var txt = getObjectElementByID('', 'txtEditPage');
			
			if (ddl != null && txt != null)
				txt.value = ddl.options[ddl.selectedIndex].value;
		}


		function SetDivColor(strDivID, theControl)
		{
			var theDiv = document.getElementById(strDivID);
			var strBGcolor;
			
			if (theControl != null)
				strBGcolor = theControl.value;

			if (theDiv != null)
				try {
					theDiv.style.backgroundColor = strBGcolor;
				} catch(Error) {
					theDiv.style.backgroundColor = 'white';
				}
			else
				alert('Could not find div: ' + strDivID + ', for Color: ' + strBGcolor);
		}

		function SetDivFont(strDivID, theControl)
		{
			var theDiv = document.getElementById(strDivID);
			var strFont;
			
			if (theControl != null)
				strFont = theControl.value;

			if (theDiv != null)
				try {
					theDiv.style.fontFamily = strFont;
				} catch(Error) {
					theDiv.style.fontFamily = 'Verdana';
				}
			else
				alert('Could not find div: ' + strDivID + ', for Color: ' + strBGcolor);
		}

		function SetAllDivColor()
		{
			var txt;
			
			// PRE-SET STORED FONTS
			txt = getObjectElementByID('ddlFonts', '');
			if (txt != null)
				SetDivFont('divFonts', txt);
			txt = getObjectElementByID('txtFonts', '');
			if (txt != null && txt.value != '')
				SetDivFont('divFonts', txt);
			
			// PRE-SET COLORS
			txt = getObjectElementByID('', 'txtPgColor');
			if (txt != null)
				SetDivColor('div1', txt);
			txt = getObjectElementByID('', 'txtPgBG');
			if (txt != null)
				SetDivColor('div3', txt);
			txt = getObjectElementByID('', 'txtContColor');
			if (txt != null)
				SetDivColor('div5', txt);
			txt = getObjectElementByID('', 'txtContBG');
			if (txt != null)
				SetDivColor('div7', txt);
			txt = getObjectElementByID('', 'txtFtrColor');
			if (txt != null)
				SetDivColor('div9', txt);
			txt = getObjectElementByID('', 'txtFtrBG');
			if (txt != null)
				SetDivColor('div11', txt);

			txt = getObjectElementByID('', 'txtPnlColor1');
			if (txt != null)
				SetDivColor('div13', txt);
			txt = getObjectElementByID('', 'txtPnlBG1');
			if (txt != null)
				SetDivColor('div15', txt);
			txt = getObjectElementByID('', 'txtPnlColor2');
			if (txt != null)
				SetDivColor('div17', txt);
			txt = getObjectElementByID('', 'txtPnlBG2');
			if (txt != null)
				SetDivColor('div19', txt);
			txt = getObjectElementByID('', 'txtPnlColor3');
			if (txt != null)
				SetDivColor('div21', txt);
			txt = getObjectElementByID('', 'txtPnlBG3');
			if (txt != null)
				SetDivColor('div23', txt);
				
			txt = getObjectElementByID('', 'txtPnlColor4');
			if (txt != null)
				SetDivColor('div25', txt);
			txt = getObjectElementByID('', 'txtPnlBG4');
			if (txt != null)
				SetDivColor('div27', txt);
			txt = getObjectElementByID('', 'txtCtrlColor');
			if (txt != null)
				SetDivColor('div29', txt);
			txt = getObjectElementByID('', 'txtCtrlBG');
			if (txt != null)
				SetDivColor('div31', txt);
			txt = getObjectElementByID('', 'txtMenuColor');
			if (txt != null)
				SetDivColor('div33', txt);
			txt = getObjectElementByID('', 'txtBrdrColor');
			if (txt != null)
				SetDivColor('div35', txt);

			txt = getObjectElementByID('', 'txtRTheaderColor');
			if (txt != null)
				SetDivColor('div14', txt);
			txt = getObjectElementByID('', 'txtRTheaderBG');
			if (txt != null)
				SetDivColor('div16', txt);
			txt = getObjectElementByID('', 'txtRTrowColor');
			if (txt != null)
				SetDivColor('div18', txt);
			txt = getObjectElementByID('', 'txtRTrowBG');
			if (txt != null)
				SetDivColor('div20', txt);
			txt = getObjectElementByID('', 'txtRTaltColor');
			if (txt != null)
				SetDivColor('div22', txt);
			txt = getObjectElementByID('', 'txtRTaltBG');
			if (txt != null)
				SetDivColor('div24', txt);

			txt = getObjectElementByID('', 'txtRTselColor');
			if (txt != null)
				SetDivColor('div26', txt);
			txt = getObjectElementByID('', 'txtRTselBG');
			if (txt != null)
				SetDivColor('div28', txt);
			txt = getObjectElementByID('', 'txtRTfooterColor');
			if (txt != null)
				SetDivColor('div30', txt);
			txt = getObjectElementByID('', 'txtRTfooterBG');
			if (txt != null)
				SetDivColor('div32', txt);
			txt = getObjectElementByID('', 'txtRTpagerColor');
			if (txt != null)
				SetDivColor('div34', txt);
			txt = getObjectElementByID('', 'txtRTpagerBG');
			if (txt != null)
				SetDivColor('div36', txt);

			txt = getObjectElementByID('', 'txtLnkNormalColor');
			if (txt != null)
				SetDivColor('div2', txt);
			txt = getObjectElementByID('', 'txtLnkNormalMOColor');
			if (txt != null)
				SetDivColor('div4', txt);
			txt = getObjectElementByID('', 'txtSubdueColor');
			if (txt != null)
				SetDivColor('div6', txt);
			txt = getObjectElementByID('', 'txtSubdueMOColor');
			if (txt != null)
				SetDivColor('div8', txt);
			txt = getObjectElementByID('', 'txtMinorColor');
			if (txt != null)
				SetDivColor('div10', txt);
			txt = getObjectElementByID('', 'txtMinorMOColor');
			if (txt != null)
				SetDivColor('div12', txt);
				
			txt = getObjectElementByID('', 'txtMTTC');
			if (txt != null)
				SetDivColor('div37', txt);
			txt = getObjectElementByID('', 'txtMSTC');
			if (txt != null)
				SetDivColor('div38', txt);
			txt = getObjectElementByID('', 'txtMTBG');
			if (txt != null)
				SetDivColor('div39', txt);
			txt = getObjectElementByID('', 'txtMSBG');
			if (txt != null)
				SetDivColor('div40', txt);
			txt = getObjectElementByID('', 'txtMUTC');
			if (txt != null)
				SetDivColor('div41', txt);
			txt = getObjectElementByID('', 'txtMBRD');
			if (txt != null)
				SetDivColor('div42', txt);
			txt = getObjectElementByID('', 'txtMUBG');
			if (txt != null)
				SetDivColor('div43', txt);
			txt = getObjectElementByID('', 'txtMSHD');
			if (txt != null)
				SetDivColor('div44', txt);
				
			txt = getObjectElementByID('', 'txtHdrBG');
			if (txt != null)
				SetDivColor('div45', txt);
		}
		
		function ResizeIcon(img, maxSize)
		{
			var tempWidth  = img.width;
			var tempHeight = img.height;
			
			if (img.width > maxSize || img.height > maxSize)
			{
				if (img.width == img.height)
				{
					img.width  = maxSize;
					img.height = maxSize;
				} else if (img.width > img.height) {
					img.width  = maxSize;
				} else {
					img.height = maxSize;
				}
			}
		}



// FILE UPLOAD PROGRESS BAR
// ----------------------------------------------------------------------------------------------------

    var  duration      = 2;
    var _progressWidth = 100;
    var _progressBar   = new String("●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●");
    var _progressEnd   = 10;
    var _progressAt    = 0;
    var _progressStyle = 1;

    // Create and display the progress dialog.
    // end: The number of steps to completion
    function ProgressCreate(end) {
        // Initialize state variables
        _progressEnd = end;
        _progressAt = 0;

        // Move layer to center of window to show
        if (document.all) {											// Internet Explorer
            progress.className = 'show';           
            progress.style.left = (document.body.clientWidth/2) - (progress.offsetWidth/2);
            progress.style.top = document.body.scrollTop+(document.body.clientHeight/2) - (progress.offsetHeight/2);            
        } else if (document.layers) {						// Netscape
            document.progress.visibility = true;
            document.progress.left = (window.innerWidth/2) - 100;
            document.progress.top = pageYOffset+(window.innerHeight/2) - 40;
        } else if (document.getElementById) {		// Netscape 6+
            document.getElementById("progress").className = 'show';
            var l = (window.innerWidth/2) - 100;
            var t = pageYOffset + (window.innerHeight/2) - 40;
            document.getElementById("progress").style.left = l + "px";
            document.getElementById("progress").style.top  = t + "px";
        }
				if (_progressStyle == 0)
	        ProgressUpdate();    // Initialize bar
    }
    // Hide the progress layer
    function ProgressDestroy() {
        // Move off screen to hide
        if (document.all) {											// Internet Explorer
            progress.className = 'hide';
        } else if (document.layers) {						// Netscape
            document.progress.visibility = false;
        } else if (document.getElementById) {		// Netscape 6+
            document.getElementById("progress").className = 'hide';
        }
    }
    // Increment the progress dialog one step
    function ProgressStepIt() {
        _progressAt++;
        if(_progressAt > _progressEnd) _progressAt = _progressAt % _progressEnd;
        ProgressUpdate();
    }
    // Update the progress dialog with the current state
    function ProgressUpdate() {
        var n = (_progressWidth / _progressEnd) * _progressAt;
        if (document.all) {								// Internet Explorer
            var bar = document.all["dialog"].document.getElementById("bar");
         } else if (document.layers) {		// Netscape         
            var bar = document.layers["progress"].document.forms["dialog"].bar;
            n = n * 0.55;									// characters are larger
        } else if (document.getElementById){        
                    var bar=document.dialog.bar
            }
        var temp = _progressBar.substring(0, n);
        bar.value = temp;
    }
    // Demonstrate a use of the progress dialog.
    function Demo(jsDuration) {
        ProgressCreate(jsDuration);
        window.setTimeout("Click()", 100);
    }
    function Click() {
        if(_progressAt >= _progressEnd) {
            ProgressDestroy();
            return;
        }
        ProgressStepIt();
        window.setTimeout("Click()", (duration-1)*1000/10);
    }
    function CallJS(jsStr) { 
      return eval(jsStr);
    }
		function InitJSuploadProgress()
		{
			document.write("<span id=\"progress\" class=\"hide\">");
			document.write("<DIV name=\"dialog\" id=\"dialog\">");
			document.write("<TABLE border=2 style=\"background-color:Navy;\" >");
			document.write("<TR><TD ALIGN=\"center\" style=\"FONT-FAMILY:trebuchet ms; PADDING:0px; FONT-WEIGHT:bold; COLOR:white;\">");
			document.write("Please wait<BR>");
			if (_progressStyle == 1)
			{
				document.write("<img src=\"Images/ProgressBar.gif\">");
			} else {
				document.write("<input type=\"label\" name=\"bar\" value=\"Please Wait.........\" size=\"" + _progressWidth/2 + "\"");
				if(document.all || document.getElementById)
					document.write(" bar.style=\"color:navy;\">");
				else 
					document.write(">");
			}
			document.write("</TD></TR>");
			document.write("</TABLE>");
			document.write("</DIV>");
			document.write("</span>");
			ProgressDestroy();  		
		}
		
		
		function UpdateUploadProgress()
		{
			var img = document.getElementById('imgProgress');
			if (img != null)
				img.src = 'Images/ProgressBar.gif';
			window.setTimeout('UpdateUploadProgress()', 2000);
		}
		function ShowUploadProgress()
		{
			divTrans.style.visibility = 'visible';
			divUploadProgress.style.visibility = 'visible';
			UpdateUploadProgress();
			return true;
		}
		
		
		
// PHOTO ALBUM CONTROL Functions
// ----------------------------------------------------------------------------------------------------
	var intAlbumImageCurr   = 1;
	var intAlbumImageWidth  = 0;
	var intAlbumImageHeight = 0;
	var intAlbumImageLoaded = 0;
	var strFilenameVis      = '';
	var strFilenameDis      = '';
	var strTempFilenameVis  = strFilenameVis;
	var strTempFilenameDis  = strFilenameDis;
	
	function LoadAlbumImage()
	{
		if (intAlbumImageCount < 1)
		{
			var img = getObjectElementByID('', 'imgCtrlImage');
			if (img != null)
			{
				img.title  = '';
				img.width  = 16;
				img.height = 16;
			}
			return;
		}
		
		var divXX = getObjectElementByID('', 'divLargeAlbum');
		if (divXX != null)
			if (divXX.style.visibility == 'visible')
			{
				strTempFilenameVis  = strFilenameVis;
				strTempFilenameDis  = strFilenameDis;
			} else {
				strTempFilenameVis  = 'hidden';
				strTempFilenameDis  = 'inline-block';
			}
		
		var intDocWidth  = getWindowWidth()  - 150;
		var intDocHeight = getWindowHeight() - 250;
		var divLgAlbum   = getObjectElementByID('', 'divLargeAlbum');
		var tblLbAlbum   = getObjectElementByID('', 'tblLargeAlbum');
		var largeImage   = getObjectElementByID('', 'imgAlbumLarge');	
		var tdFI         = getObjectElementByID('', 'tdFileInfo');	
		var intAlbumImageOrigWidth  = 0;
		var intAlbumImageOrigHeight = 0;
		var sURL         = strAlbumDir + arrayFileName[intAlbumImageCurr - 1];
		var newImg1      = new Image();
		var decW         = 1;
		var decH         = 1;
		newImg1.src      = sURL;
		newImg1.onload   = function()
		{
			intAlbumImageWidth  = newImg1.width;
			intAlbumImageHeight = newImg1.height;
		};

		if (intAlbumImageWidth == 0 && intAlbumImageHeight == 0)
			newImg1.src = sURL;
					
		intAlbumImageWidth      = newImg1.width;
		intAlbumImageHeight     = newImg1.height;
		intAlbumImageOrigWidth  = newImg1.width;
		intAlbumImageOrigHeight = newImg1.height;
		intAlbumImageSaveWidth  = newImg1.width;
		intAlbumImageSaveHeight = newImg1.height;
		
		img = getObjectElementByID('', 'imgCtrlImage');
		if (img != null)
		{
			decW  = (intAlbumWidth  / intAlbumImageWidth);
			decH  = (intAlbumHeight / intAlbumImageHeight);
			
			while (intAlbumImageWidth  > intAlbumWidth ||
						 intAlbumImageHeight > intAlbumHeight)
			{
				decW  = (intAlbumWidth  / intAlbumImageWidth);
				decH  = (intAlbumHeight / intAlbumImageHeight);

				if (intAlbumImageWidth > intAlbumWidth)
				{
					intAlbumImageWidth  = intAlbumWidth;
					intAlbumImageHeight = intAlbumImageHeight * decW;
				}

				decW  = (intAlbumWidth  / intAlbumImageWidth);
				decH  = (intAlbumHeight / intAlbumImageHeight);
				
				if (intAlbumImageHeight > intAlbumHeight)
				{
					intAlbumImageHeight = intAlbumHeight;
					intAlbumImageWidth  = intAlbumImageWidth * decH;
				}
			}
			
			img.src    = sURL;
			img.width  = intAlbumImageWidth;
			img.height = intAlbumImageHeight;
			img.style.display    = 'inline';
			img.style.visibility = 'visible';

			if (largeImage != null)
			{
				if (intAlbumImageOrigWidth  > intDocWidth  ||
						intAlbumImageOrigHeight > intDocHeight)
				{
					decW  = (intDocWidth  / intAlbumImageOrigWidth);
					decH  = (intDocHeight / intAlbumImageOrigHeight);
					
					while (intAlbumImageOrigWidth  > intDocWidth ||
								 intAlbumImageOrigHeight > intDocHeight)
					{
						decW  = (intDocWidth  / intAlbumImageOrigWidth);
						decH  = (intDocHeight / intAlbumImageOrigHeight);

						if (intAlbumImageOrigWidth > intDocWidth)
						{
							intAlbumImageOrigWidth  = intDocWidth;
							intAlbumImageOrigHeight = intAlbumImageOrigHeight * decW;
						}

						decW  = (intDocWidth  / intAlbumImageOrigWidth);
						decH  = (intDocHeight / intAlbumImageOrigHeight);
						
						if (intAlbumImageOrigHeight > intDocHeight)
						{
							intAlbumImageOrigHeight = intDocHeight;
							intAlbumImageOrigWidth  = intAlbumImageOrigWidth * decH;
						}
					}
				}

				largeImage.src    = sURL;
				largeImage.width  = intAlbumImageOrigWidth;
				largeImage.height = intAlbumImageOrigHeight;
			}
			
			if (divLgAlbum != null)
			{
				var minWidth = intAlbumImageOrigWidth + 30;
				if (minWidth < 400)
					minWidth = 400;
				divLgAlbum.style.width  = minWidth;
				divLgAlbum.style.height = intAlbumImageOrigHeight + 160;
			}
			
			if (intAlbumImageLoaded == 0)
				setTimeout('LoadAlbumImage()', 250);
			intAlbumImageLoaded = 1;
		}

		if (tblLbAlbum != null)
		{
			tblLbAlbum.style.width  = divLgAlbum.style.width;
			tblLbAlbum.style.height = divLgAlbum.style.height;
			if (tdFI != null)
			{
				tdFI.style.width  = minWidth - 125;
				tdFI.style.height = 90;
			}
		}
		
		// REDEFINE THE HREF URL
		var txt  = getObjectElementByID('', 'urlImageDesc');
		var ltxt = getObjectElementByID('', 'urlLargeImageDesc');
		if (txt != null)
		{
			txt.innerHTML = arrayFileName[intAlbumImageCurr - 1];
			txt.href      = sURL;
			txt.style.visibility = strTempFilenameVis;
			txt.style.display    = strTempFilenameDis;
		}
		if (ltxt != null)
		{
			ltxt.innerHTML = '<b>' + arrayFileName[intAlbumImageCurr - 1] + '</b>';
			ltxt.href      = sURL;
			ltxt.style.visibility = strTempFilenameVis;
			ltxt.style.display    = strTempFilenameDis;
		}

		// REDEFINE THE FILE DESCRIPTION DIV (IF APPLICABLE)
		var txt  = getObjectElementByID('', 'divImageDesc');
		var ltxt = getObjectElementByID('', 'divLargeImageDesc');
		if (txt != null)
		{
			txt.innerHTML = '<br>File Size: ' + arrayFileSize[intAlbumImageCurr - 1] + 
											'<br>Dimensions: (' + intAlbumImageSaveWidth + 'x' + intAlbumImageSaveHeight+ ')';
			if (arrayFileDesc[intAlbumImageCurr - 1] != '')
			txt.innerHTML = txt.innerHTML + '<br><br><b>Description:</b><br>' + arrayFileDesc[intAlbumImageCurr - 1];
			txt.style.visibility = strTempFilenameVis;
			txt.style.display    = strTempFilenameDis;
		}
		if (ltxt != null)
		{
			ltxt.innerHTML = '<br>File Size: ' + arrayFileSize[intAlbumImageCurr - 1] + 
											 '<br>Dimensions: (' + intAlbumImageSaveWidth + 'x' + intAlbumImageSaveHeight+ ')';
			if (arrayFileDesc[intAlbumImageCurr - 1] != '')
			ltxt.innerHTML = ltxt.innerHTML + '<br><b>Description:</b> ' + arrayFileDesc[intAlbumImageCurr - 1];
			ltxt.style.visibility = strTempFilenameVis;
			ltxt.style.display    = strTempFilenameDis;
		}
		
		var lnk = getObjectElementByID('', 'urlImageLink');
		if (lnk != null)
			lnk.href = sURL;
			
		if (intAlbumImageSaveWidth == 0 || intAlbumImageHeight == 0)
			setTimeout('LoadAlbumImage()', 1000);
	}
	function PhotoAlbumInit()
	{
	
		var fnSm = getObjectElementByID('', 'urlImageDesc');
		var fnLg = getObjectElementByID('', 'urlLargeImageDesc');
		var fnLn = getObjectElementByID('', 'urlImageLink');
		
		if (fnSm != null)
		{
			fnSm.style.visibility = strTempFilenameVis;
			fnSm.style.display    = strTempFilenameDis;
		}
		if (fnLg != null)
		{
			fnLg.style.visibility = strTempFilenameVis;
			fnLg.style.display    = strTempFilenameDis;
		}

		intAlbumImageCurr   = 1;
		intAlbumImageLoaded = 0;
		if (document.images)
		{
			var pic = [];
			for (var i=0; i < intAlbumImageCount; i++)
			{
			  pic[i]     = new Image(100,25); 
			  pic[i].src = strAlbumDir + arrayFileName[i];
			}
		}
		LoadAlbumImage();
		AlbumHideLarge();
	}
	function PrevBtnPress()
	{
		intAlbumImageLoaded = 0;
		if (intAlbumImageCurr > 1)
		{
			intAlbumImageCurr--;
		} else {
			intAlbumImageCurr = intAlbumImageCount;
		}
		LoadAlbumImage();
		
		return false;
	}
	function NextBtnPress()
	{
		intAlbumImageLoaded = 0;
		if (intAlbumImageCurr < intAlbumImageCount)
		{
			intAlbumImageCurr++;
		} else {
			intAlbumImageCurr = 1;
		}
		LoadAlbumImage();
		
		return false;
	}
	function AlbumShowLarge()
	{
		var div = getObjectElementByID('', 'divLargeAlbum');
		if (div != null)
		{
			div.style.visibility = 'visible';	
			LoadAlbumImage();
		}
	}
	function AlbumHideLarge()
	{
		var div = getObjectElementByID('', 'divLargeAlbum');
		if (div != null)
		{
			div.style.visibility = 'hidden';
			LoadAlbumImage();
		}
	}


// DATABASE URL BUTTON HIGHLIGHT FUINCTIONS
// ----------------------------------------------------------------------------------------------------
	function DBbtn_Interact(obj, foreColor, backColor)
	{
		if (obj != null)
		{
			// CHANGE THE COLOR OF THE BUTTON DIV
			obj.style.color           = foreColor;
			obj.style.backgroundColor = backColor;
				
			// CHANGE THE COLOR OF THE HPYERLINK
			var hypX;
			var strTemp = '' + obj.id;
			strTemp = strTemp.replace('div', 'ctl00_ContentPlaceHolder1_');
			strTemp = strTemp + '_hypCtrlLink'
			try { hypX = document.getElementById(strTemp); } catch (err) { 
				alert('ERROR!  ' + err);
			}
			if (hypX != null)
			{
				hypX.style.color = foreColor;
			}
		}
	}	
	
	
// GOOGLE MAPS - Resize a Google Map DIV panel
// ----------------------------------------------------------------------------------------------------
	function ResizeGoogleMapDIV(intNewHeight, intMargin) {
		
		intNewHeight = intNewHeight - intMargin;
		var intNewWidth = (intNewHeight / 3) * 4;
		
		var divMap = $('divMap');
		if (divMap != null && intMapResizeable) {
			divMap.style.width  = intNewWidth  + 'px';		
			divMap.style.height = intNewHeight + 'px';		
		}
	}
	
	
// GOOGLE SEARCH - Load Search Criteria, Create the Search Control (links to Google)
// ----------------------------------------------------------------------------------------------------
	function SearchGetFilter(intPlace)
	{
		intPlace = intPlace - 1;
		var st = searchFilters.substr(intPlace, 1);
		
		if (st == '1')
			return true;
		return false;
	}
	function SearchFilterCount()
	{
		var intCount = 0;
		
		for (var i=0; i < searchFilters.length; i++)
		{
			if (searchFilters.substr(i, 1) == '1')
				intCount++;
		}
		return intCount;
	}
	function AddFilterToSearch(theSearcher)
	{
		if (searchDomain != '')
		{
			theSearcher.setUserDefinedLabel(searchDomain);
			theSearcher.setUserDefinedClassSuffix("siteSearch");
			theSearcher.setSiteRestriction(searchDomain);
		}
	
		return theSearcher;
	}
	function SearchControlOnLoad() 
	{
		// Create a search control
		var searchControl = new google.search.SearchControl();
		var containerDiv  = getObjectElementByID(searchControlID, 'searchcontrol');
		var intCount      = SearchFilterCount();
		var siteSearch;

		// SET SEARCH RESULTS SIZE
		searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);

		// SET SEARCH RESULTS EXPAND SIZE
		options = new google.search.SearcherOptions();
		if (intCount > 1)
			options.setExpandMode(google.search.SearchControl.EXPAND_MODE_CLOSED);
		else	
			options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);

		// ESTABLISH SAVED SEARCH CALLBACK
		if (searchSaveSearches == '1')
			searchControl.setOnKeepCallback(this, SearchSavedSearchesHandler);

			
		// CREATE THE SEARCH FOR , APPLY ANY RESTRICTIONS
		if (SearchGetFilter(1))
		{
			siteSearch = new google.search.WebSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(2))
		{
			siteSearch = new google.search.NewsSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(3))
		{
			siteSearch = new google.search.LocalSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(4))
		{
			siteSearch = new google.search.VideoSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(5))
		{
			siteSearch = new google.search.BlogSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(6))
		{
			siteSearch = new google.search.ImageSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(7))
		{
			siteSearch = new google.search.BookSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}
		if (SearchGetFilter(8))
		{
			siteSearch = new google.search.PatentSearch();
			siteSearch = AddFilterToSearch(siteSearch);
			searchControl.addSearcher(siteSearch, options);
		}

		// DRAW THE SEARCH CONTROL
		searchControl.draw(containerDiv);

		// EXECUTE INITIAL SEARCH
		searchControl.execute("");
	}
    
	function SearchSavedSearchesHandler(result) {

		var containerDiv  = getObjectElementByID(searchControlID, 'searchsaved');
	
		// clone the result html node
		var node = result.html.cloneNode(true);

		// attach it
		containerDiv.appendChild(node);
	}


// PAYPAL - Submit the PayPal Form to make Purchase/Subscription/Donation
// ----------------------------------------------------------------------------------------------------
	function PayPal_Submit()
	{
		var frm = document.forms[0];
		if (frm == null)
			frm = document.getElementById('aspnetForm');
			
		if (frm != null)
		{
			frm.action = "https://www.paypal.com/cgi-bin/webscr";
			frm.method = 'post';
			frm.submit();
		}
		return true;
	}	


// PAYPAL - Donate
// ----------------------------------------------------------------------------------------------------
	function PayPal_Donate(cntrlID)
	{
		cntrlID = getObjectElementParent(cntrlID);
		
		var docBus  = getObjectElementByID('', 'business');
		var docName = getObjectElementByID('', 'item_name');
		var docNum  = getObjectElementByID('', 'item_number');
		var docCmd  = getObjectElementByID('', 'cmd');
		var docAdd  = getObjectElementByID('', 'add');
		var docView = getObjectElementByID('', 'display');
		var docAmt  = getObjectElementByID('', 'amount');
		var docTax  = getObjectElementByID('', 'tax_rate');
		var docShip = getObjectElementByID('', 'shipping');
		var hidBus  = getObjectElementByID(cntrlID, 'hidbusiness');
		var hidName = getObjectElementByID(cntrlID, 'hiditem_name');
		var hidNum  = getObjectElementByID(cntrlID, 'hiditem_number'); 
		var hidAmt  = getObjectElementByID(cntrlID, 'hidamount');
		var hidTax  = getObjectElementByID(cntrlID, 'hidtaxrate');
		var hidShip = getObjectElementByID(cntrlID, 'hidshipping'); 
				
		if (docCmd != null)
			docCmd.value = '_donations';
		if (docAdd != null)
			docAdd.value = '';
		if (docView != null)
			docView.value = '';

		if (docBus  != null && hidBus != null)
			docBus.value  = hidBus.value;
		if (docName  != null && hidName != null)
			docName.value  = hidName.value;
		if (docNum  != null && hidNum != null)
			docNum.value  = hidNum.value;

		if (docAmt  != null && hidAmt != null)
			docAmt.value  = hidAmt.value;
		if (docTax  != null && hidTax != null)
			docTax.value  = hidTax.value;
		if (docShip != null && hidShip != null)
			docShip.value = hidShip.value;

		PayPal_Submit();	
	}
	
// PAYPAL - Buy Item
// ----------------------------------------------------------------------------------------------------
	function PayPal_Purchase(cntrlID)
	{
		cntrlID = getObjectElementParent(cntrlID);
		
		var docBus  = getObjectElementByID('', 'business');
		var docName = getObjectElementByID('', 'item_name');
		var docNum  = getObjectElementByID('', 'item_number');
		var docCmd  = getObjectElementByID('', 'cmd');
		var docAdd  = getObjectElementByID('', 'add');
		var docView = getObjectElementByID('', 'display');
		var docAmt  = getObjectElementByID('', 'amount');
		var docTax  = getObjectElementByID('', 'tax_rate');
		var docShip = getObjectElementByID('', 'shipping');
		var hidBus  = getObjectElementByID(cntrlID, 'hidbusiness');
		var hidName = getObjectElementByID(cntrlID, 'hiditem_name');
		var hidNum  = getObjectElementByID(cntrlID, 'hiditem_number'); 
		var hidAmt  = getObjectElementByID(cntrlID, 'hidamount');
		var hidTax  = getObjectElementByID(cntrlID, 'hidtaxrate');
		var hidShip = getObjectElementByID(cntrlID, 'hidshipping'); 
				
		if (docCmd != null)
			docCmd.value = '_xclick';
		if (docAdd != null)
			docAdd.value = '';
		if (docView != null)
			docView.value = '';

		if (docBus  != null && hidBus != null)
			docBus.value  = hidBus.value;
		if (docName  != null && hidName != null)
			docName.value  = hidName.value;
		if (docNum  != null && hidNum != null)
			docNum.value  = hidNum.value;

		if (docAmt  != null && hidAmt != null)
			docAmt.value  = hidAmt.value;
		if (docTax  != null && hidTax != null)
			docTax.value  = hidTax.value;
		if (docShip != null && hidShip != null)
			docShip.value = hidShip.value;

		PayPal_Submit();	
	}
	
// PAYPAL - Add Item To Cart
// ----------------------------------------------------------------------------------------------------
	function PayPal_AddToCart(cntrlID)
	{
		cntrlID = getObjectElementParent(cntrlID);
		
		var docBus  = getObjectElementByID('', 'business');
		var docName = getObjectElementByID('', 'item_name');
		var docNum  = getObjectElementByID('', 'item_number');
		var docCmd  = getObjectElementByID('', 'cmd');
		var docAdd  = getObjectElementByID('', 'add');
		var docView = getObjectElementByID('', 'display');
		var docAmt  = getObjectElementByID('', 'amount');
		var docTax  = getObjectElementByID('', 'tax_rate');
		var docShip = getObjectElementByID('', 'shipping');
		var hidBus  = getObjectElementByID(cntrlID, 'hidbusiness');
		var hidName = getObjectElementByID(cntrlID, 'hiditem_name');
		var hidNum  = getObjectElementByID(cntrlID, 'hiditem_number'); 
		var hidAmt  = getObjectElementByID(cntrlID, 'hidamount');
		var hidTax  = getObjectElementByID(cntrlID, 'hidtaxrate');
		var hidShip = getObjectElementByID(cntrlID, 'hidshipping'); 
		
		if (docCmd != null)
			docCmd.value = '_cart';
		if (docAdd != null)
			docAdd.value = '1';
		if (docView != null)
			docView.value = '';

		if (docBus  != null && hidBus  != null)
			docBus.value  = hidBus.value;
		if (docName != null && hidName != null)
			docName.value = hidName.value;
		if (docNum  != null && hidNum  != null)
			docNum.value  = hidNum.value;

		if (docAmt  != null && hidAmt  != null)
			docAmt.value  = hidAmt.value;
		if (docTax  != null && hidTax  != null)
			docTax.value  = hidTax.value;
		if (docShip != null && hidShip != null)
			docShip.value = hidShip.value;

		PayPal_Submit();
	}
	
// PAYPAL - View Cart
// ----------------------------------------------------------------------------------------------------
	function PayPal_ViewCart(cntrlID)
	{
		cntrlID = getObjectElementParent(cntrlID);
		
		var docBus  = getObjectElementByID('', 'business');
		var docCmd  = getObjectElementByID('', 'cmd');
		var docAdd  = getObjectElementByID('', 'add');
		var docView = getObjectElementByID('', 'display');
		var docAmt  = getObjectElementByID('', 'amount');
		var docTax  = getObjectElementByID('', 'tax_rate');
		var docShip = getObjectElementByID('', 'shipping');
		var hidBus  = getObjectElementByID(cntrlID, 'hidbusiness');
		
		
		if (docCmd != null)
			docCmd.value  = '_cart';
		if (docAdd != null)
			docAdd.value  = null;
		if (docView != null)
			docView.value = '1';
	
		if (docBus  != null && hidBus != null)
			docBus.value  = hidBus.value;

		if (docAmt != null)
			docAmt.value = null;
		if (docTax != null)
			docTax.value = null;
		if (docShip != null)
			docShip.value = null;

		PayPal_Submit();
	}
	
// PAYPAL - Unobfuscate the Email Address
// ----------------------------------------------------------------------------------------------------
	function ConvertASCIItoCHR(intASCII)
	{
		return String.fromCharCode(intASCII);
	}
	function PayPal_Unobfuscate(strObf)
	{
		var strUnob = '';
		var strTemp = '';		
	
		while (strObf != "")
		{
			if (strObf.substr(0, 4) == '\\u00')
					strObf = strObf.substr(4, strObf.length);

			if (strObf.indexOf('\\') > 0)
			{
				strTemp = strObf.substr(0, strObf.indexOf("\\"));
				strObf  = strObf.substr(strObf.indexOf("\\"), strObf.length);
			}
			else
			{
				strTemp = strObf;
				strObf  = "";
			}
			var decNumber = parseInt(strTemp, 16); 
			var strChar   = ConvertASCIItoCHR(decNumber);
			strUnob = strUnob + strChar;			
		}
		
		return strUnob;
	}


// ANIMATED BUTTON USER CONTROL FUNCTIONS
// ----------------------------------------------------------------------------------------------------	
	function AnimatedButtonIcon(icon, lbl, md, img)
	{	
		var objI = getObjectElementByID('', icon);
		var objL = getObjectElementByID('', lbl);
		if (objI != null)
			objI.src = img;
		if (objL != null)
		{
			switch (md)
			{
				case 1:	// NORMAL
					objL.style.marginTop  = '2px';
					objL.style.marginLeft = '2px';
					break;
				case 2: // OVER
					objL.style.marginTop  = '0px';
					objL.style.marginLeft = '0px';
					
					break;
				case 3: // DOWN
					objL.style.marginTop  = '4px';
					objL.style.marginLeft = '4px';
					break;
			}
		}
	}


// WEB CHAT FUNCTIONS
// ----------------------------------------------------------------------------------------------------	
	var strWebChatID   = 'WEBCHAT';
	var intChatRefresh = 30;
	var intLastMessage = 0;
	var intCHID        = 1;
	var intUID         = 0;
	
		
	function SetChatChannel(ddl)
	{
		intLastMessage = 0;
		intCHID        = GetDDLselectedItem(ddl);
		if (intCHID < 1)
			intCHID = 1;
		WriteCookie('WEB_CHAT_CHANNEL', intCHID, 2);
		if (chatAJAX != null)
			AJAX_CHAT_RESET();
	}
	function SetChatCheck(chk)
	{
		if (chk.checked)
			WriteCookie('WEB_CHAT_NOTIFY', 1, 30);
		else
			WriteCookie('WEB_CHAT_NOTIFY', 0, 30);
	}
	function GetChatTextBox()
	{
		return getObjectElementByID(strWebChatID, 'txtMessage');
	}
	function GetChatTextBoxText()
	{
		var strReturn = GetChatTextBox().value;
				trim(strReturn);
				strReturn = strReturn.replace(/</g, "[");
				strReturn = strReturn.replace(/>/g, "]");
				strReturn = strReturn.replace(/&/g, "and");
				
				if (startsWith(strReturn.toLowerCase(), 'http://') || startsWith(strReturn.toLowerCase(), 'https://'))
				{
					strReturn = '<a href="' + strReturn + '" target="_new">' + strReturn + '</a>';
				} else if (startsWith(strReturn.toLowerCase(), 'www.')) {
					strReturn = '<a href="http://' + strReturn + '" target="_new">' + strReturn + '</a>';
				}

				
		return strReturn;
	}
	function StartWebChat() 
	{
		setTimeout('AJAX_CHAT_START()', 250);
	}		



	var chatAJAX;
	function AJAX_CHAT_START()
	{
		intCHID  = ReadCookie('WEB_CHAT_CHANNEL') - 0;
		if (!SetDDLSelectedItem(strWebChatID, 'ddlChannel', intCHID))
		{
			intCHID = 1;
			WriteCookie('WEB_CHAT_CHANNEL', intCHID, 2);
		}
		var n = ReadCookie('WEB_CHAT_NOTIFY');
		var c = getObjectElementByID('', 'chkChatNotify');
		if (c != null)
		{
			c.value = n;
			c.checked = (n == '1');
		}
		chatAJAX = new AJAX();
		chatAJAX.SetID('chatAJAX');
		chatAJAX.SetAJAXpoll(intChatRefresh);
		chatAJAX.SetAJAXscrolling(true);
		chatAJAX.SetAJAXwaitObject('', 'webchatwait');
		chatAJAX.SetAJAXgetFunction('AJAX_CHAT_GET');
		chatAJAX.SetAJAXtarget('AJAX_Process.aspx');
		chatAJAX.SetTargetDiv('', 'div_chat');	
		chatAJAX.SetTargetTempDiv('div_chat_temp');
		chatAJAX.SetAJAXbeepPlay(1);
		chatAJAX.SetAJAXbeep(0);	
		chatAJAX.SetAJAXbeepOverride(1);
		window.setTimeout('AJAX_CHAT_GET()', 300);
	}
	function AJAX_CHAT_GET()
	{
		chatAJAX.ClearParams();
		chatAJAX.AddParam('app',    'chat');
		chatAJAX.AddParam('action', 'request');
		chatAJAX.AddParam('uid',    intUID);
		chatAJAX.AddParam('chid',   intCHID);
		chatAJAX.AddParam('last',   intLastMessage);
		var c = getObjectElementByID('', 'chkChatNotify');
		if (c != null)
			if (c.checked)
				chatAJAX.SetAJAXbeep(1);
			else
				chatAJAX.SetAJAXbeep(0);
		chatAJAX.GetAJAX();
	}
	function AJAX_CHAT_SEND()
	{
		var strMsg = GetChatTextBoxText();
		chatAJAX.SetAJAXWaitVisible();
		chatAJAX.SetAJAXbeepOverride(1);
		chatAJAX.SetAJAXbeep(0);
		chatAJAX.ClearParams();
		chatAJAX.AddParam('app',    'chat');
		chatAJAX.AddParam('action', 'send');
		chatAJAX.AddParam('uid',    intUID);
		chatAJAX.AddParam('chid',   intCHID);
		chatAJAX.AddParam('last',   intLastMessage);
		chatAJAX.AddParam('msg',    strMsg);
		chatAJAX.SendAJAXtext();
		GetChatTextBox().value = '';
		GetChatTextBox().focus();
	}
	function AJAX_CHAT_REFRESH()
	{
		chatAJAX.ClearDiv();
		GetChatTextBox().value = '';
		GetChatTextBox().focus();
	}
	function AJAX_CHAT_RESET()
	{
		chatAJAX.SetAJAXWaitVisible();
		chatAJAX.SetAJAXbeep(0);
		chatAJAX.ClearDiv();
		chatAJAX.ClearParams();
		chatAJAX.AddParam('app',    'chat');
		chatAJAX.AddParam('action', 'reset');
		chatAJAX.AddParam('uid',    intUID);
		chatAJAX.AddParam('chid',   intCHID);
		chatAJAX.AddParam('last',   intLastMessage);
		chatAJAX.SendAJAXtext();
		GetChatTextBox().value = '';
		GetChatTextBox().focus();
	}


// WEB COMMENT FUNCTIONS
// ----------------------------------------------------------------------------------------------------	
	var strWebCommentID   = 'Comments';
	var intCommentUID     = 0;
	var intCommentType    = 0;
	var intCommentRefresh = 120;
	var intCommentID      = 0;
	var intArticleID      = 0;
	var intReplyToID      = 0;
	var	intCommentPrivate = 0;
	var intCommentLimit   = 0;
	var intCommentPlace   = 0;
	var intCommentDir     = 1;
	var commentAJAX; 
	
		
	function GetCommentTextBox()
	{
		return getObjectElementByID(strWebCommentID, 'txtCommentEntry');
	}
	function GetCommentTextBoxText()
	{
		var strReturn = GetCommentTextBox().value;
				trim(strReturn);
				strReturn = strReturn.replace(/</g, "[");
				strReturn = strReturn.replace(/>/g, "]");
				strReturn = strReturn.replace(/&/g, "and");
				
				if (startsWith(strReturn.toLowerCase(), 'http://') || startsWith(strReturn.toLowerCase(), 'https://'))
				{
					strReturn = '<a href="' + strReturn + '" target="_new">' + strReturn + '</a>';
				} else if (startsWith(strReturn.toLowerCase(), 'www.')) {
					strReturn = '<a href="http://' + strReturn + '" target="_new">' + strReturn + '</a>';
				}
		return strReturn;
	}
	function StartWebComment() 
	{
		setTimeout('AJAX_COMMENT_START()', 250);
	}		


	function AJAX_COMMENT_START()
	{
		commentAJAX = new AJAX();
		commentAJAX.SetID('commentAJAX');
		commentAJAX.SetAJAXpoll(intCommentRefresh);
		commentAJAX.SetAJAXscrolling(false);
		commentAJAX.SetAJAXgetFunction('AJAX_COMMENT_GET');
		commentAJAX.SetAJAXtarget('AJAX_Process.aspx');
		commentAJAX.SetAJAXwaitObject(strWebCommentID, 'commentwait');
		commentAJAX.SetTargetDiv(strWebCommentID, 'divCtrlCommentList');	
		commentAJAX.SetTargetTempDiv('div_comment_temp');
		commentAJAX.SetAJAXbeepPlay(0);
		commentAJAX.SetAJAXbeep(0);	
		commentAJAX.SetAJAXbeepOverride(0);
		window.setTimeout('AJAX_COMMENT_GET()', 300);
	}
	function AJAX_COMMENT_GET()
	{
		commentAJAX.ClearParams();
		commentAJAX.AddParam('app',    'comment');
		commentAJAX.AddParam('action', 'request');
		commentAJAX.AddParam('uid',    intCommentUID);
		commentAJAX.AddParam('type',   intCommentType);
		commentAJAX.AddParam('artid',  intArticleID);
		commentAJAX.AddParam('limit',  intCommentLimit);
		commentAJAX.AddParam('place',  intCommentPlace);
		commentAJAX.AddParam('dir',    intCommentDir);
		commentAJAX.AddParam('priv',   intCommentPrivate);
		commentAJAX.GetAJAX();
	}
	function AJAX_COMMENT_SEND()
	{
		var strMsg = GetCommentTextBoxText();
		commentAJAX.SetAJAXWaitVisible();
		commentAJAX.SetAJAXbeepOverride(1);
		commentAJAX.SetAJAXbeep(0);
		commentAJAX.ClearParams();
		commentAJAX.AddParam('app',    'comment');
		commentAJAX.AddParam('action', 'send');
		commentAJAX.AddParam('type',   intCommentType);
		commentAJAX.AddParam('cmtid',  0);
		commentAJAX.AddParam('artid',  intArticleID);
		commentAJAX.AddParam('uid',    intCommentUID);
		commentAJAX.AddParam('repid',  intReplyToID);
		commentAJAX.AddParam('limit',  intCommentLimit);
		commentAJAX.AddParam('place',  intCommentPlace);
		commentAJAX.AddParam('dir',    intCommentDir);
		commentAJAX.AddParam('priv',   intCommentPrivate);
		commentAJAX.AddParam('msg',    strMsg);
		commentAJAX.SendAJAXtext();
		GetCommentTextBox().value = '';
		GetCommentTextBox().focus();
	}
	function AJAX_COMMENT_MODIFY(intCommentID, intUserID, intTypeID)
	{
		var strTemp = '';
		switch (intTypeID)
		{
			case 1:
				strTemp = 'like';
				break;
			case 2:
				strTemp = 'dislike';
				break;
			case 3:
				strTemp = 'abuse';
				break;
		}
		commentAJAX.SetAJAXWaitVisible();
		commentAJAX.SetAJAXbeepOverride(1);
		commentAJAX.SetAJAXbeep(0);
		commentAJAX.ClearParams();
		commentAJAX.AddParam('app',    'comment');
		commentAJAX.AddParam('action', strTemp);
		commentAJAX.AddParam('cmtid',  intCommentID);
		commentAJAX.AddParam('uid',    intCommentUID);
		commentAJAX.AddParam('priv',   intCommentPrivate);
		commentAJAX.AddParam('msg',    '');
		commentAJAX.SendAJAXtext();
	}
	function AJAX_COMMENT_RESET()
	{
		commentAJAX.SetAJAXWaitVisible();
		commentAJAX.ClearDiv();
		commentAJAX.ClearParams();
		commentAJAX.AddParam('app',    'comment');
		commentAJAX.AddParam('action', 'request');
		commentAJAX.AddParam('uid',    intCommentUID);
		commentAJAX.AddParam('type',   intCommentType);
		commentAJAX.AddParam('artid',  intArticleID);
		commentAJAX.AddParam('limit',  intCommentLimit);
		commentAJAX.AddParam('place',  intCommentPlace);
		commentAJAX.AddParam('dir',    intCommentDir);
		commentAJAX.AddParam('priv',   intCommentPrivate);
		commentAJAX.SendAJAXtext();
		GetCommentTextBox().value = '';
		GetCommentTextBox().focus();
	}



// WEB SURVEY FUNCTIONS
// ----------------------------------------------------------------------------------------------------	
	var strWebSurveyID = 'Survey';
	var strSurveyData  = '';
	var intSurveyUID   = 0;
	var intSurveyID    = 0;
	var intQuestionID  = 0;
	var intQuestionNum = 0;
	var strAnswerID    = '';
	var surveyAJAX; 
	
		
	function GetSurveyTextBox()
	{
		return getObjectElementByID(strWebSurveyID, 'txtSurveyEntry');
	}
	function GetSurveyHidden()
	{
		return getObjectElementByID('', 'hidSurveyResult');
	}
	function GetSurveyTextBoxText()
	{
		var strReturn = GetSurveyTextBox().value;
				trim(strReturn);
				strReturn = strReturn.replace(/&/g, "&amp;");
				strReturn = strReturn.replace(/</g, "&lt;");
				strReturn = strReturn.replace(/>/g, "&gt;");
				strReturn = strReturn.replace(/&/g, "~");
				
				if (startsWith(strReturn.toLowerCase(), 'http://') || startsWith(strReturn.toLowerCase(), 'https://'))
				{
					strReturn = '<a href="' + strReturn + '" target="_new">' + strReturn + '</a>';
				} else if (startsWith(strReturn.toLowerCase(), 'www.')) {
					strReturn = '<a href="http://' + strReturn + '" target="_new">' + strReturn + '</a>';
				}
		return strReturn;
	}
	function GetSurveyHiddenValue()
	{
		return GetSurveyHidden().value;
	}
	function SetSurveyHiddenValue(strInput)
	{
		GetSurveyHidden().value = strInput;
	}

	function StartWebSurvey() 
	{
		setTimeout('AJAX_SURVEY_START()', 250);
	}		
	function UpdateSurvey(newSurveyID, newQuestionID, newQuestionNum, newAnswerID)
	{
		intSurveyID    = newSurveyID;
		intQuestionID  = newQuestionID;
		intQuestionNum = newQuestionNum;
		strAnswerID    = newAnswerID;

		SetSurveyHiddenValue(intSurveyID + ';' + intQuestionID + ',' + intQuestionNum + ':' + strAnswerID);
	}
	function UpdateSurveyCheckbox(cb, newSurveyID, newQuestionID, newQuestionNum, newAnswerID)
	{
		var strOldAns   = '';
		var strHid      = '';

		strOldAns       = GetSurveyHiddenValue();
		strOldAns       = strOldAns.substr(strOldAns.indexOf(':') + 1);
		var strAnswerID = '|' + newAnswerID;
		    strAnswerID = strOldAns.replace(strAnswerID, '');
		if (cb.checked)
			strAnswerID   = strAnswerID + '|' + newAnswerID;
		
		intSurveyID     = newSurveyID;
		intQuestionID   = newQuestionID;
		intQuestionNum  = newQuestionNum;

		SetSurveyHiddenValue(intSurveyID + ';' + intQuestionID + ',' + intQuestionNum + ':' + strAnswerID);
	}
	function UpdateSurveyRadio(rb, newSurveyID, newQuestionID, newQuestionNum, newAnswerID)
	{
		var strOldAns  = '';
		var strHid     = '';

		strOldAns      = GetSurveyHiddenValue();
		strOldAns      = strOldAns.substr(strOldAns.indexOf(':') + 1);
		strAnswerID    = strOldAns.replace(strAnswerID, '');
		if (rb.checked)
			strAnswerID  = strAnswerID + '|' + newAnswerID;
		
		intSurveyID    = newSurveyID;
		intQuestionID  = newQuestionID;
		intQuestionNum = newQuestionNum;

		SetSurveyHiddenValue(intSurveyID + ';' + intQuestionID + ',' + intQuestionNum + ':' + strAnswerID);
	}
	function UpdateSurveyRange(rb, newSurveyID, newQuestionID, newQuestionNum, newAnswerID)
	{
		var strOldAns  = '';
		var strHid     = '';
		strAnswerID    = document.getElementById('sliderValue').value;
		
		strOldAns      = GetSurveyHiddenValue();
		strOldAns      = strOldAns.substr(strOldAns.indexOf(':') + 1);
		strAnswerID    = strOldAns.replace(strAnswerID, '');
		if (rb.checked)
			strAnswerID  = strAnswerID + '|' + newAnswerID;
		
		intSurveyID    = newSurveyID;
		intQuestionID  = newQuestionID;
		intQuestionNum = newQuestionNum;

		SetSurveyHiddenValue(intSurveyID + ';' + intQuestionID + ',' + intQuestionNum + ':' + strAnswerID);
	}
	




	function AJAX_SURVEY_START()
	{
		surveyAJAX = new AJAX();
		surveyAJAX.SetID('surveyAJAX');
		surveyAJAX.SetAJAXpoll(600);
		surveyAJAX.SetAJAXscrolling(false);
		surveyAJAX.SetAJAXgetFunction('AJAX_SURVEY_GET');
		surveyAJAX.SetAJAXtarget('AJAX_Process.aspx');
		surveyAJAX.SetAJAXwaitObject(strWebSurveyID, 'surveywait');
		surveyAJAX.SetTargetDiv(strWebSurveyID, 'divCtrlSurveyList');	
		surveyAJAX.SetTargetTempDiv('div_survey_temp');
		surveyAJAX.SetAJAXbeepPlay(0);
		surveyAJAX.SetAJAXbeep(0);	
		surveyAJAX.SetAJAXbeepOverride(0);
		window.setTimeout('AJAX_SURVEY_GET()', 300);
	}
	function AJAX_SURVEY_GET()
	{
		var strHid = GetSurveyHiddenValue();
				strHid = strHid.substr(strHid.indexOf(':' + 1));
		surveyAJAX.ClearDiv();
		surveyAJAX.ClearParams();
		surveyAJAX.AddParam('app',     'survey');
		surveyAJAX.AddParam('action',  'request');
		surveyAJAX.AddParam('uid',     intSurveyUID);
		surveyAJAX.AddParam('srvid',   intSurveyID);
		surveyAJAX.AddParam('srvqid',  intQuestionID);
		surveyAJAX.AddParam('srvqnum', intQuestionNum);
		surveyAJAX.AddParam('srvaid',  strHid);
		surveyAJAX.GetAJAX();
	}
	function AJAX_SURVEY_SEND()
	{
		var strMsg = GetSurveyHiddenValue();		//	GetSurveyTextBoxText();
		var strHid = strMsg.substr(strMsg.indexOf(':' + 1));
		surveyAJAX.SetAJAXWaitVisible();
		surveyAJAX.SetAJAXbeepOverride(1);
		surveyAJAX.SetAJAXbeep(0);
		surveyAJAX.ClearParams();
		surveyAJAX.AddParam('app',     'survey');
		surveyAJAX.AddParam('action',  'send');
		surveyAJAX.AddParam('uid',     intSurveyUID);
		surveyAJAX.AddParam('srvid',   intSurveyID);
		surveyAJAX.AddParam('srvqid',  intQuestionID);
		surveyAJAX.AddParam('srvqnum', intQuestionNum);
		surveyAJAX.AddParam('srvaid',  strHid);
		surveyAJAX.AddParam('msg',     strMsg);
		surveyAJAX.SendAJAXtext();
//	GetSurveyTextBox().value = '';
//	GetSurveyTextBox().focus();
	}
	function AJAX_SURVEY_RESET()
	{
		var strHid = GetSurveyHiddenValue();
				strHid = strHid.substr(strHid.indexOf(':' + 1));
		surveyAJAX.SetAJAXWaitVisible();
		surveyAJAX.ClearDiv();
		surveyAJAX.ClearParams();
		surveyAJAX.AddParam('app',     'survey');
		surveyAJAX.AddParam('action',  'request');
		surveyAJAX.AddParam('uid',     intSurveyUID);
		surveyAJAX.AddParam('srvid',   intSurveyID);
		surveyAJAX.AddParam('srvqid',  intQuestionID);
		surveyAJAX.AddParam('srvqnum', intQuestionNum);
		surveyAJAX.AddParam('srvaid',  strHid);
		surveyAJAX.SendAJAXtext();
//	GetSurveyTextBox().value = '';
//	GetSurveyTextBox().focus();
	}



// ADV WORLD FUNCTIONS
// ----------------------------------------------------------------------------------------------------	
	var AJAXadvWorld;
	var strAWsubCmd = '';
	var strAWsubMsg = '';


	// COMMAND PARAMETER ------------------------------------------------------
	// ------------------------------------------------------------------------
	function GetAWcommand()
	{
		return getObjectElementByID(strAWID, 'hidCommand');
	}
	function GetAWcommandText()
	{
		var strReturn = GetAWcommand().value;
				trim(strReturn);
		
		return strReturn;
	}
	function SetAWcommandText(strCommand)
	{
		GetAWcommand().value = strCommand;
	}


	// MESSAGE PARAMETER ------------------------------------------------------
	// ------------------------------------------------------------------------
	function GetAWmessage()
	{
		return getObjectElementByID(strAWID, 'hidMessage');
	}
	function GetAWmessageText()
	{
		var strReturn = GetAWmessage().value;
				trim(strReturn);
				strReturn = strReturn.replace(/&/g, "&amp;");
				strReturn = strReturn.replace(/</g, "&lt;");
				strReturn = strReturn.replace(/>/g, "&gt;");
				strReturn = strReturn.replace(/&/g, "~");
				
		if (startsWith(strReturn.toLowerCase(), 'http://') || startsWith(strReturn.toLowerCase(), 'https://'))
		{
			strReturn = '<a href="' + strReturn + '" target="_new">' + strReturn + '</a>';
		} else if (startsWith(strReturn.toLowerCase(), 'www.')) {
			strReturn = '<a href="http://' + strReturn + '" target="_new">' + strReturn + '</a>';
		}
		
		return strReturn;
	}
	function SetAWmessageText(strMessage)
	{
		GetAWmessage().value = strMessage;
	}
	
	
	// MAIN FUNCTIONS ---------------------------------------------------------
	// ------------------------------------------------------------------------
	function AdvWorldStart()
	{
		AJAXadvWorld = new AJAX();
		AJAXadvWorld.SetID('AJAXadvWorld');
		AJAXadvWorld.SetAJAXpoll(0);
		AJAXadvWorld.SetAJAXscrolling(false);
		AJAXadvWorld.SetAJAXwaitObject('', 'advwrldwait');
		AJAXadvWorld.SetAJAXgetFunction('AdvWorldGet');
		AJAXadvWorld.SetAJAXtarget('AJAX_Process.aspx');
		AJAXadvWorld.SetTargetDiv(strAWID, 'divAdvWorldContent');	
		AJAXadvWorld.SetTargetTempDiv('div_adv_world_temp');
		AJAXadvWorld.SetAJAXbeepPlay(0);
		AJAXadvWorld.SetAJAXbeep(1);	
		AJAXadvWorld.SetAJAXbeepOverride(1);
		window.setTimeout('AJAXadvWorld.AJAXstart()', 300);
	}
	function AdvWorldGet()
	{
		AJAXadvWorld.ClearParams();
		AJAXadvWorld.AddParam('app',    'advworld');
		AJAXadvWorld.AddParam('action', 'request');
		AJAXadvWorld.AddParam('uid',    intAWUID);
		AJAXadvWorld.AddParam('cmd',    strAWsubCmd);
		AJAXadvWorld.AddParam('msg',    strAWsubMsg);
		strAWsubCmd = '';
		strAWsubMsg = '';
		AJAXadvWorld.GetAJAX();
	}
	function AdvWorldSubmit()
	{
		var strCmd = GetAWcommandText();
		var strMsg = GetAWmessageText();
		AJAXadvWorld.SetAJAXWaitVisible();
		AJAXadvWorld.SetAJAXbeepOverride(1);
		AJAXadvWorld.SetAJAXbeep(0);
		AJAXadvWorld.ClearParams();
		AJAXadvWorld.AddParam('app',    'advworld');
		AJAXadvWorld.AddParam('action', 'send');
		AJAXadvWorld.AddParam('uid',    intAWUID);
		AJAXadvWorld.AddParam('cmd',    strCmd);
		AJAXadvWorld.AddParam('msg',    strMsg);
		AJAXadvWorld.SendAJAXtext();
		strAWsubCmd          = strCmd;
		strAWsubMsg          = strMsg;
		GetAWcommand().value = '';
		GetAWmessage().value = '';
	}


// ----------------------------------------------------------------------------------------------------
// AJAX FUNCTIONS
// ----------------------------------------------------------------------------------------------------

	function AJAX()
	{
		// PUBLIC PROPERTIES (SETTINGS)
		var strID                = '';
		var intAJAXpoll          = 0;
		var strFileTarget        = 'AJAX_Process.aspx';
		var strGetFunction       = '';
		var params               = '';
			
		// INTERNAL VARIABLES
		var sendReq              = getXmlHttpRequestObject();
		var receiveReq           = getXmlHttpRequestObject();
		var intDivHeight         = 0;
		var strDivContainer      = '';
		var strDivTarget         = '';
		var strDivTempTarget     = '';
		var strWaitObject        = '';
		var strWaitDiv           = '';
		var mTimer               = 0; 
		var blnScrolling         = false;
		var blnPlayBeepSound     = false;
		var blnBeepOverride      = false;
		var blnBeep              = 0;

		// FUNCTION MAPPING
		this.SetID               = SetID;
		this.SetAJAXpoll         = SetAJAXpoll;
		this.SetAJAXgetFunction  = SetAJAXgetFunction;
		this.SetAJAXtarget       = SetAJAXtarget;
		this.SetAJAXscrolling    = SetAJAXscrolling;
		this.SetAJAXwaitObject   = SetAJAXwaitObject;
		this.SetAJAXWaitVisible  = SetAJAXWaitVisible;
		this.SetAJAXbeepPlay     = SetAJAXbeepPlay;
		this.SetAJAXbeep         = SetAJAXbeep;
		this.SetAJAXbeepOverride = SetAJAXbeepOverride;
		this.SetTargetDiv        = SetTargetDiv;
		this.SetTargetTempDiv    = SetTargetTempDiv;
		
		this.AJAXstart           = AJAXstart;
		this.ClearDiv            = ClearDiv;
		this.ScrollDiv           = ScrollDiv;
		this.GetDiv              = GetDiv;
		this.GetTempDiv          = GetTempDiv;
		this.ClearParams         = ClearParams;
		this.AddParam            = AddParam;
		this.ResetDiv            = ResetDiv;
		this.GetAJAX             = GetAJAX;
		this.HandleGetAJAX       = HandleGetAJAX;
		this.SendAJAXtext        = SendAJAXtext;
		this.HandleSendAJAX      = HandleSendAJAX;
			

		// SET UP FUNCTIONS -------------------------------------------------------
		// ------------------------------------------------------------------------
		function getXmlHttpRequestObject() 
		{
			if (window.XMLHttpRequest) 
			{
				return new XMLHttpRequest();
			} else if(window.ActiveXObject) {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} else {
				var objStatus = getObjectElementByID('', 'web_chat_status');
				if (objStatus != null)
					objStatus.innerHTML = '<font color="red">Offline</font>';
			}
		}
		function SetID(strTarget)
		{
			strID = strTarget;
		}
		function SetAJAXpoll(intPoll)
		{
			intAJAXpoll = intPoll * 1000;
		}
		function SetAJAXtarget(strTarget)
		{
			strFileTarget = strTarget;
		}
		function SetAJAXgetFunction(strTarget)
		{
			strGetFunction = strTarget;
		}
		function SetTargetDiv(strContainer, strTarget)
		{
			if (strContainer != '' && strDivContainer == '')
				strDivContainer = strContainer;
			if (strTarget    != '' && strDivTarget == '')
				strDivTarget    = strTarget;
			intDivHeight = GetDiv().clientHeight - 10;
		}
		function SetTargetTempDiv(strTarget)
		{
			if (strTarget    != '' && strDivTempTarget == '')
			{
				strDivTempTarget              = strTarget;
				GetTempDiv().style.display    = 'none';
				GetTempDiv().style.visibility = 'hidden';
			}
		}		
		function SetAJAXwaitObject(strContainer, strTarget)
		{
			if (strContainer != '' && strWaitDiv == '')
				strWaitDiv      = strContainer;
			if (strTarget    != '' && strWaitObject == '')
				strWaitObject   = strTarget;
		}
		function SetAJAXscrolling(blnTarget)
		{
			blnScrolling = blnTarget;
		}
		function SetAJAXbeepPlay(blnTarget)
		{
			blnPlayBeepSound = blnTarget;
		}
		function SetAJAXbeep(blnTarget)
		{
			blnBeep = blnTarget;
		}
		function SetAJAXbeepOverride(blnTarget)
		{
			blnBeepOverride = blnTarget;
		}
		

		function AJAXstart()
		{
			setTimeout(strGetFunction + '();', 300);
		}
		
		
		// PARAMETER FUNCTIONS ----------------------------------------------------
		// ------------------------------------------------------------------------
		function ClearParams()
		{
			this.params = '';
			this.AddParam('XID', 0);
		}
		function AddParam(strKey, strValue)
		{
			strKey = strKey.toUpperCase();
			if (this.params == '')
			{
				this.params  =       strKey + '=' + strValue;
			} else {
				this.params += '&' + strKey + '=' + strValue;
			}
		}
		function GetDiv()
		{
			var objReturn = getObjectElementByID(strDivContainer, strDivTarget);
			if (objReturn == null)
				objReturn = document.getElementById(strDivTarget);
			return objReturn;
		}
		function GetTempDiv()
		{
			var objReturn = getObjectElementByID(strDivContainer, strDivTempTarget);
			if (objReturn == null)
				objReturn = document.getElementById(strDivTempTarget);
			return objReturn;
		}
		function ClearDiv()
		{
			GetDiv().innerHTML     = '';
			GetTempDiv().innerHTML = '';
			GetDiv().scrollTop     = 0;
		}
		function ResetDiv()
		{
			ClearDiv();
			eval(strGetFunction + '();');
		}
		function ScrollDiv()
		{
			if (!blnScrolling)
				return;
				
			GetDiv().style.height  = intDivHeight + 'px';
			var i = GetDiv().scrollHeight;
			if (GetTempDiv() != null)
				i = GetTempDiv().scrollHeight;
			setTimeout(strID + '.GetDiv().scrollTop = ' + i + ' + 5000000;', 10);
		}
		function SetWaitVis(bln)
		{
			if (strWaitObject == '')
				return;
				
			var obj = getObjectElementByID(strWaitDiv, strWaitObject);
			if (obj == null)
				getObjectElementByID('', strWaitObject);
				
			if (obj != null)
			{
				if (bln)
					obj.style.visibility = 'visible';
				else
					obj.style.visibility = 'hidden';
			}
		}
		function SetAJAXWaitVisible()
		{
			SetWaitVis(true);
		}
		
		
		// AJAX GET FUNCTIONS -----------------------------------------------------
		// ------------------------------------------------------------------------
		function GetAJAX()
		{
			if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
			{
				SetWaitVis(true);
				var strPost = strFileTarget + '?' + this.params;
				receiveReq.open("GET", strPost, true);
				receiveReq.onreadystatechange = HandleGetAJAX;
				receiveReq.send(this.params);
			}			
		}
		function HandleGetAJAX()
		{
			if (receiveReq.readyState == 4) 
			{
				var strInput = receiveReq.responseText;
				if (strInput != '')
				{
					GetTempDiv().innerHTML = strInput;
					if ( GetTempDiv().innerHTML != GetDiv().innerHTML || 
							(GetTempDiv().innerHTML == '' && GetDiv().innerHTML =='') )
					{
						if (GetTempDiv().innerHTML != '')
							if (blnBeepOverride)
								blnBeepOverride = false;
							else if (blnBeep == 1) {
								if (blnPlayBeepSound)
									PlaySound('chatBeepSound');
							} else
								blnBeep = true;
						GetDiv().innerHTML = strInput;
						ScrollDiv();
					}
				}
				SetWaitVis(false);
				if (intAJAXpoll > 0)
					mTimer = setTimeout(strGetFunction + '();', intAJAXpoll);
			} 
		}
		

		// AJAX SEND FUNCTIONS ----------------------------------------------------
		// ------------------------------------------------------------------------
		function SendAJAXtext() 
		{
			if (sendReq.readyState == 4 || sendReq.readyState == 0)
			{
				blnBeep         = 0;
				blnBeepOverride = true;
				SetWaitVis(true);
				clearInterval(mTimer);
				var strPost = strFileTarget + '?' + this.params;
				sendReq.open("POST", strPost, true);
				sendReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				sendReq.onreadystatechange = HandleSendAJAX;
				sendReq.send(this.params);	
			}
		}
		function HandleSendAJAX() 
		{
			clearInterval(mTimer);

			if (intAJAXpoll > 0)
				mTimer = setTimeout(strGetFunction + '()', 500);
			else
				setTimeout(strGetFunction + '()', 500);
		}	
			
	}

	
// INTERACTIVE PASSWORD STRENGTH CHECK FUNCTION
// ----------------------------------------------------------------------------------------------------
/*
**    Original File: pwd_meter.js
**    Created by: Jeff Todnem (http://www.todnem.com/)
**    Created on: 2007-08-14
**    Last modified: 2007-08-30
**
**    License Information:
**    -------------------------------------------------------------------------
**    Copyright (C) 2007 Jeff Todnem
**
**    This program is free software; you can redistribute it and/or modify it
**    under the terms of the GNU General Public License as published by the
**    Free Software Foundation; either version 2 of the License, or (at your
**    option) any later version.
**    
**    This program is distributed in the hope that it will be useful, but
**    WITHOUT ANY WARRANTY; without even the implied warranty of
**    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
**    General Public License for more details.
**    
**    You should have received a copy of the GNU General Public License along
**    with this program; if not, write to the Free Software Foundation, Inc.,
**    59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**    
**    
*/

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != "function") {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		};
	}
}

String.prototype.strReverse = function() {
	var newstring = "";
	for (var s=0; s < this.length; s++) {
		newstring = this.charAt(s) + newstring;
	}
	return newstring;
};

function chkPass(pwd) {
	var oScoreCont	= document.getElementById("scoreborder");
	var oScorebar   = document.getElementById("scorebar");
	var oComplexity = document.getElementById("complexity");
	var nScore = 0;
	var nLength = 0;
	var nAlphaUC = 0;
	var nAlphaLC = 0;
	var nNumber = 0;
	var nSymbol = 0;
	var nMidChar = 0;
	var nRequirements = 0;
	var nAlphasOnly = 0;
	var nNumbersOnly = 0;
	var nRepChar = 0;
	var nConsecAlphaUC = 0;
	var nConsecAlphaLC = 0;
	var nConsecNumber = 0;
	var nConsecSymbol = 0;
	var nConsecCharType = 0;
	var nSeqAlpha = 0;
	var nSeqNumber = 0;
	var nSeqChar = 0;
	var nReqChar = 0;
	var nReqCharType = 3;
	var nMultLength = 4;
	var nMultAlphaUC = 3;
	var nMultAlphaLC = 3;
	var nMultNumber = 4;
	var nMultSymbol = 6;
	var nMultMidChar = 2;
	var nMultRequirements = 2;
	var nMultRepChar = 1;
	var nMultConsecAlphaUC = 2;
	var nMultConsecAlphaLC = 2;
	var nMultConsecNumber = 2;
	var nMultConsecSymbol = 1;
	var nMultConsecCharType = 0;
	var nMultSeqAlpha = 3;
	var nMultSeqNumber = 3;
	var nTmpAlphaUC = "";
	var nTmpAlphaLC = "";
	var nTmpNumber = "";
	var nTmpSymbol = "";
	var sAlphas = "abcdefghijklmnopqrstuvwxyz";
	var sNumerics = "01234567890";
	var sComplexity = "Too Short";
	var sStandards = "Below";
	
	if (document.all) { var nd = 0; } else { var nd = 1; }
	
	if (pwd == '')
	{
		oScoreCont.style.visibility = 'hidden';
	} else {
		oScoreCont.style.visibility = 'visible';
	}
	if (pwd) {
		nScore = parseInt(pwd.length * nMultLength);
		nLength = pwd.length;
		var arrPwd = pwd.replace (/\s+/g,"").split(/\s*/);
		var arrPwdLen = arrPwd.length;
		
		/* Loop through password to check for Symbol, Numeric, Lowercase and Uppercase pattern matches */
		for (var a=0; a < arrPwdLen; a++) {
			if (arrPwd[a].match(new RegExp(/[A-Z]/g))) {
				if (nTmpAlphaUC !== "") { if ((nTmpAlphaUC + 1) == a) { nConsecAlphaUC++; nConsecCharType++; } }
				nTmpAlphaUC = a;
				nAlphaUC++;
			}
			else if (arrPwd[a].match(new RegExp(/[a-z]/g))) { 
				if (nTmpAlphaLC !== "") { if ((nTmpAlphaLC + 1) == a) { nConsecAlphaLC++; nConsecCharType++; } }
				nTmpAlphaLC = a;
				nAlphaLC++;
			}
			else if (arrPwd[a].match(new RegExp(/[0-9]/g))) { 
				if (a > 0 && a < (arrPwdLen - 1)) { nMidChar++; }
				if (nTmpNumber !== "") { if ((nTmpNumber + 1) == a) { nConsecNumber++; nConsecCharType++; } }
				nTmpNumber = a;
				nNumber++;
			}
			else if (arrPwd[a].match(new RegExp(/[^a-zA-Z0-9_]/g))) { 
				if (a > 0 && a < (arrPwdLen - 1)) { nMidChar++; }
				if (nTmpSymbol !== "") { if ((nTmpSymbol + 1) == a) { nConsecSymbol++; nConsecCharType++; } }
				nTmpSymbol = a;
				nSymbol++;
			}
			/* Internal loop through password to check for repeated characters */
			for (var b=0; b < arrPwdLen; b++) {
				if (arrPwd[a].toLowerCase() == arrPwd[b].toLowerCase() && a != b) { nRepChar++; }
			}
		}
		
		/* Check for sequential alpha string patterns (forward and reverse) */
		for (var s=0; s < 23; s++) {
			var sFwd = sAlphas.substring(s,parseInt(s+3));
			var sRev = sFwd.strReverse();
			if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqAlpha++; nSeqChar++;}
		}
		
		/* Check for sequential numeric string patterns (forward and reverse) */
		for (var s=0; s < 8; s++) {
			var sFwd = sNumerics.substring(s,parseInt(s+3));
			var sRev = sFwd.strReverse();
			if (pwd.toLowerCase().indexOf(sFwd) != -1 || pwd.toLowerCase().indexOf(sRev) != -1) { nSeqNumber++; nSeqChar++;}
		}
		
	/* Modify overall score value based on usage vs requirements */

		/* General point assignment */
		if (nAlphaUC > 0 && nAlphaUC < nLength) 
			nScore = parseInt(nScore + ((nLength - nAlphaUC) * 2));
		if (nAlphaLC > 0 && nAlphaLC < nLength) 
			nScore = parseInt(nScore + ((nLength - nAlphaLC) * 2)); 
		if (nNumber > 0 && nNumber < nLength) 
			nScore = parseInt(nScore + (nNumber * nMultNumber));
		if (nSymbol > 0) 
			nScore = parseInt(nScore + (nSymbol * nMultSymbol));
		if (nMidChar > 0) 
			nScore = parseInt(nScore + (nMidChar * nMultMidChar));
		
		/* Point deductions for poor practices */
		if ((nAlphaLC > 0 || nAlphaUC > 0) && nSymbol === 0 && nNumber === 0)   // Only Letters
			nScore = parseInt(nScore - nLength);
		if (nAlphaLC === 0 && nAlphaUC === 0 && nSymbol === 0 && nNumber > 0)   // Only Numbers
			nScore = parseInt(nScore - nLength); 
		if (nRepChar > 0)   // Same character exists more than once
			nScore = parseInt(nScore - (nRepChar * nRepChar));
		if (nConsecAlphaUC > 0)   // Consecutive Uppercase Letters exist
			nScore = parseInt(nScore - (nConsecAlphaUC * nMultConsecAlphaUC)); 
		if (nConsecAlphaLC > 0)   // Consecutive Lowercase Letters exist
			nScore = parseInt(nScore - (nConsecAlphaLC * nMultConsecAlphaLC)); 
		if (nConsecNumber > 0)   // Consecutive Numbers exist
			nScore = parseInt(nScore - (nConsecNumber * nMultConsecNumber));  
		if (nSeqAlpha > 0)   // Sequential alpha strings exist (3 characters or more)
			nScore = parseInt(nScore - (nSeqAlpha * nMultSeqAlpha)); 
		if (nSeqNumber > 0)   // Sequential numeric strings exist (3 characters or more)
			nScore = parseInt(nScore - (nSeqNumber * nMultSeqNumber)); 

		/* Determine if mandatory requirements have been met and set image indicators accordingly */
		nRequirements = nReqChar;
		if (pwd.length >= intMinPWlen) { var nMinReqChars = 3; } else { var nMinReqChars = 4; }
		if (nRequirements > nMinReqChars)   // One or more required characters exist
			nScore = parseInt(nScore + (nRequirements * 2)); 
		
		/* Determine complexity based on overall score */
		if      (nScore > 100) { nScore = 100; } else if (nScore < 0) { nScore = 0; }
		if      (nScore >=  0 && nScore < 20)   { sComplexity = "Very Weak";   oScorebar.style.color = "Yellow";}
		else if (nScore >= 20 && nScore < 40)   { sComplexity = "Weak";        oScorebar.style.color = "Blue";}
		else if (nScore >= 40 && nScore < 60)   { sComplexity = "Good";        oScorebar.style.color = "Blue";}
		else if (nScore >= 60 && nScore < 80)   { sComplexity = "Strong";      oScorebar.style.color = "Blue";}
		else if (nScore >= 80 && nScore <= 100) { sComplexity = "Very Strong"; oScorebar.style.color = "Yellow"; }
		if (pwd.length < intMinPWlen) { sComplexity = "Too Short"; }
		
		/* Display updated score criteria to client */
		oScorebar.style.backgroundPosition = "-" + parseInt(nScore * 4) + "px";
		oScorebar.innerHTML   = nScore + "%";
		oComplexity.innerHTML = sComplexity;
 	}
	else {
		/* Display default score criteria to client */
		initPwdChk();
		oScorebar.innerHTML   = nScore + "%";
		oComplexity.innerHTML = sComplexity;
	}
}

function initPwdChk(restart) {

	document.getElementById("scorebar").style.backgroundPosition = "0";
	
}


// SCROLLING BACKGROUND FUNCTION
function ScrollingBackground(divName, backgroundheight, intSpeed)
{
	// divNames = divMPheader, divMPcontent
	
	// Abort if Invalid DIV is passed
	if (divName != 'divMPheader' && divName != 'divMPcontent')
		return;
		
	// get the current minute/hour of the day
	var now    = new Date();
	var hour   = now.getHours();
	var minute = now.getMinutes();
 
	// work out how far through the day we are as a percentage - e.g. 6pm = 75%
	var hourpercent   = hour / 24 * 100;
	var minutepercent = minute / 60 / 24 * 100;
	var percentofday  = Math.round(hourpercent + minutepercent);
 
	// calculate which pixel row to start graphic from based
	// on how far through the day we are
	var offset = backgroundheight / 100 * percentofday;
 
	// graphic starts at approx 6am, so adjust offset by 1/4
	offset = offset - (backgroundheight / 4);
 
	function scrollbackground() {
		// decrease the offset by 1, or if its less than 1 increase it by
		// the background height minus 1
   		offset = (offset < 1) ? offset + (backgroundheight - (intTopOffset + 30)) : offset - 1;
   		
		// apply the background position
		var bgg = getObjectElementByID('', divName);
		if (bgg != null)
		{
			if (bgg.style.backgroundImage == '')
				return;
			bgg.style.backgroundPosition = '50% -' + offset + 'px';
		} else
			return;
								
		// call self to continue animation
		setTimeout(function() {
				scrollbackground();
			}, intSpeed
		);
	}
 
	// Start the animation
	scrollbackground();
}

function PlaySound(soundobj) {
  var thissound=document.getElementById(soundobj);
  thissound.Play();
}


