		function getKeyCode(evt)
		{
			var e = evt ? evt : window.event;
			if( !e ) 
			{
				return;
			}
			
			var key = 0;
			if( e.keyCode )
			{
				key = e.keyCode;
			}
			else if( typeof(e.which) != "undefined" )
			{
				key = e.which;
			}
			
			return key;
		}
		
		function smartSubmit(targetButtonId, evt)
		{
			var keyCode = getKeyCode(evt);
			if( keyCode != '13' )
			{
				return;
			}
			
			var targetButton = document.getElementById(targetButtonId);
			if( targetButton == null )
			{
				return;
			}
			
			targetButton.focus();
		}
		
		function swapImage(img, src)
		{
			img.src = src;
		}
		
		
		/* group browser */
		var _groupBrowser = null;
		var _GB_hiddenValueFieldId = null;
		
		function showSelectGroup(hiddenValueFieldId)
		{
			_GB_hiddenValueFieldId = hiddenValueFieldId;
			
			if( _groupBrowser != null )
			{
				_groupBrowser.close();
			}

			_groupBrowser = window.open("content/users/GroupBrowser.aspx", "", 
				"top=200,left=200,width=350,height=220,resize=no,status=no", true);
		}
		
		function groupBrowserCallback(rawSelection)
		{
			if( _GB_hiddenValueFieldId == null )
			{
				return;
			}
			
			document.getElementById(_GB_hiddenValueFieldId).value = rawSelection;
			document.forms[4].submit();
		}
		
		/* Agent Office browser */
		var _agentOfficeBrowser = null;
		var _AO_hiddenValueFieldId = null;
		
		function showSelectAgentOffice(hiddenValueFieldId)
		{
			_AO_hiddenValueFieldId = hiddenValueFieldId;
			
			if( _agentOfficeBrowser != null )
			{
				_agentOfficeBrowser.close();
			}

			_agentOfficeBrowser = window.open("content/Shared/AgentOfficeBrowser.aspx", "", 
				"top=200,left=200,width=600,height=220,resize=no,status=no", true);
		}
		
		function agentOfficeBrowserCallback(rawSelection)
		{
			//alert("RawSelection: '" + rawSelection + "'");
			if( _AO_hiddenValueFieldId == null )
			{
				return;
			}
			
			document.getElementById(_AO_hiddenValueFieldId).value = rawSelection;
			document.forms[4].submit();
		}

		/* folder browser */
		var _folderBrowser = null;
		var _FB_hiddenIdFieldId = null;
		var _FB_hiddenPathFieldId = null;
		var _FB_displayFieldId = null;
		
		function folderBrowserCallback(id,path,displayPath)
		{
			if( _FB_hiddenIdFieldId == null )
			{
				return;
			}
			
			path = unescape(path);
			displayPath = unescape(displayPath);
			
			document.getElementById(_FB_hiddenIdFieldId).value = id;
			document.getElementById(_FB_hiddenPathFieldId).value = path;
			document.getElementById(_FB_displayFieldId).value = displayPath;
		}
		
		function showFolderBrowser(hiddenIdFieldId, hiddenPathFieldId, displayFieldId, startingFolderId)
		{
			var url = "";
			//check if called from the publishing wizard (look at '_ctl1_ChooseFolder_FolderId')
			if (hiddenIdFieldId.indexOf("ctl") == -1)
			{
				var url = url + "../../";
			}
			var url = url + "content/ems/FolderBrowser.aspx?StFId=" + startingFolderId;
			_FB_hiddenIdFieldId = hiddenIdFieldId;
			_FB_hiddenPathFieldId = hiddenPathFieldId;
			//html drop down combo, need to get the text box so add _Text
			_FB_displayFieldId = displayFieldId + "_Text";
			
			if( _folderBrowser != null )
			{
				_folderBrowser.close();
			}
			
			//_folderBrowser = window.open("content/ems/FolderBrowser.aspx", "", 
			//		"top=200,left=200,width=350,height=360,resize=no,status=no", true);
			_folderBrowser = window.open(url, "", 
					"top=200,left=200,width=550,height=450", true);
		}
		
		/* publishing wizard */
		var _PublishWizard = null;
		var _PW_hiddenIdFieldId = null;
		var _PW_hiddenPathFieldId = null;
		var _PW_displayFieldId = null;
		
		function showPublishingWizard(hiddenIdFieldId, hiddenPathFieldId, displayFieldId, startingFolderId, itemTypeId)
		{
			var url = "content/ems/PublishingWizard.aspx?StFId=" + startingFolderId + "&ItemTypeId=" + itemTypeId;
			_PW_hiddenIdFieldId = hiddenIdFieldId;
			_PW_hiddenPathFieldId = hiddenPathFieldId;
			//html drop down combo, need to get the text box so add _Text
			_PW_displayFieldId = displayFieldId + "_Text";
			
			if( _PublishWizard != null )
			{
				_PublishWizard.close();
			}

			_PublishWizard = window.open(url, "", "top=200,left=200,height=415,width=465", true);
		}
		
		function publishingWizardCallback(id,path,displayPath)
		{
			if( _PW_hiddenIdFieldId == null )
			{
				return;
			}
			
			path = unescape(path);
			displayPath = unescape(displayPath);
			
			document.getElementById(_PW_hiddenIdFieldId).value = id;
			document.getElementById(_PW_hiddenPathFieldId).value = path;
			document.getElementById(_PW_displayFieldId).value = displayPath;
		}
		
		/* Images */
		
		function setImage(obj, url)
		{
			obj.src = url;
		}
		
		
		/* Buttons/boxes/Hints */
		
		function checkLength(text, len)
		{
			if( text.value.length >= len )
			{
				text.value = text.value.substr(0, len);
				return false;
			}
			
			return true;
		}
		
		function focusTextBox(obj)
		{
			obj.className = "textboxFocused";
		}
		
		function blurTextBox(obj)
		{
			obj.className = "textbox";
		}
				
		function buttonOver(btn,hint,hintNodeID)
		{
			btn.className = "buttonOver";
			
			if( hintNodeID != null && hint != null )
			{
				document.getElementById(hintNodeID).innerHTML = hint;
			}
		}
		
		function buttonOut(btn,hintNodeID)
		{
			btn.className = "button";
			
			if( hintNodeID )
			{
				document.getElementById(hintNodeID).innerHTML = "";
			}
		}
		
		var _currentProgressID = null;
		
		function textLimit(field,progressID,max)
		{
			if( _currentProgressID != null && _currentProgressID != progressID )
			{
				document.getElementById(_currentProgressID).innerHTML = "";
			}
			
			_currentProgressID = progressID;
			var current = field.value.length;
			var progress = document.getElementById(progressID);
			var remaining = max - current;
			var pct = (current / max) * 100;
			
			/*if( pct < 1 || pct > 100 )
			{
				return;
			}*/
			
			if( current > max )
			{
				field.value = field.value.substr(0, max);
			}
			
			var bar = "<table width=170><tr><td class=progressFigures>0%</td><td>"
				+ "<table width=170 class=progress cellpadding=0><tr><td><div class=progressComplete style='width:" 
				+ pct + "%'>&nbsp;</div></td></tr></table></td>"
				+ "<td class=progressFigures>100%</td>";
				
			progress.innerHTML = bar;
		}
		
		/* XMLHTTP */
		function getXmlHttpProvider()
		{
			var retVal = null;
			
			try{
			retVal = new ActiveXObject("Msxml2.XMLHTTP.4.0");
			}catch(ex){}

			try{
			retVal=new ActiveXObject("Msxml2.XMLHTTP");
			}catch(ex){}

			try{
			retVal=new XMLHttpRequest();
			}catch(ex){}
			
			return retVal;
		}
        