	function cmgClickTrace(url) {
		newAppWindow('url='+url, 'name=mktg', 'tools=no', 'width=800', 'height=600');
	}

	function defaultOnLoadHandler() {
		window.focus();
		if (defaultOnLoadHandler.arguments.length > 0) {
			window.name = defaultOnLoadHandler.arguments[0];
		}
		if (defaultOnLoadHandler.arguments.length == 3) {
			if (form = document.forms[defaultOnLoadHandler.arguments[1]]) {
				if (field = form.elements[defaultOnLoadHandler.arguments[2]]) {
					if (field.type != "hidden")
						field.focus();
					if (field.type == "text")
						field.select();
				}
			}
		}

	}

	function newAppWindow() {
		var arg, sName, sTools
		var sHeight = screen.availHeight - 160;
		var sWidth = screen.availWidth - 12;
		var sLeft = (screen.availWidth - sWidth) / 2;
		var sTop = (screen.availHeight - sHeight) / 2;
		var sTools = "no";
		var sUrl = '';
		var sName= '';
		for (i=0; i<newAppWindow.arguments.length; i++) {
			arg = newAppWindow.arguments[i].split('=');
			for (var x=2; x<arg.length; x++)
				arg[1] = arg[1]+'='+arg[x];
			switch (arg[0]) {
				case 'width':
					sWidth = arg[1];
					sLeft = (screen.availWidth - sWidth) / 2;
					break;
				case 'height':
					sHeight = arg[1];
					sTop = (screen.availHeight - sHeight) / 2;
					break;
				case 'url':
					sUrl = arg[1];
					break;
				case 'name':
					sName = arg[1];
					break;
				case 'tools':
					sTools = arg[1];
					break;
			}
		}
		var sFeatures = "top="+sTop+",left="+sLeft+",width="+sWidth+",height="+sHeight;
		sFeatures += ",directories=no,scrollbars=yes,resizable=yes";
		sFeatures += ",menubar="+sTools+",toolbar="+sTools+",location="+sTools+",status="+sTools;

		// Privoxy likes to alter window.open().
		// The following line fools it.
		var w = window;
		var win = w.open(sUrl, sName, sFeatures);
//		win.focus();
		return(win);
	}

	function highlightRow(srcElement, on) {
		srcElement.style.backgroundColor = on?"#ECF0FB":"#ffffff";
	}

	function highlightButton(srcElement, on) {
		srcElement.style.backgroundColor = on?"#0079AF":"#86aed2";
	}

	function navButton(n) {
		if (window.event) {
			window.event.returnValue = false;
			window.event.cancelBubble = true;
		}
		form = document.forms.cmgWebAppForm;
		form.cmd.value = n;
		completeValue(0, 'cmd');
//		form.stockOffsetValue.value = 0;
	}

	function thisForm() {
		return(document.forms.cmgWebAppForm);
	}

	var column = new Array();

		function completeValue(e, name) { 
		var evtobj = window.event? event : e;
		var unicode = evtobj.charCode? evtobj.charCode : evtobj.keyCode;
		var param = '';
		var form = document.forms.cmgWebAppForm;
		var v = document.getElementById(name);

		if (!v)
			v = eval('form.'+name);
		if (name == 'cmd')
			param = 'cmd='+form.cmd.value;
		else
		if (v) {
			column['stockOffsetValue'] = 0;
			column[name] = v.value;
		}

		if (unicode == 9) return;	// ignore tab;		
		if (unicode == 13) return;	// ignore enter;		
		if (unicode == 16) return;	// ignore shift;		
		if (unicode == 17) return;	// ignore ctrl;		
		if (unicode == 18) return;	// ignore alt;		
		if (unicode == 35) return;	// ignore end;		
		if (unicode == 36) return;	// ignore home;		
		if (unicode == 37) return;	// ignore keyleft;		
		if (unicode == 38) return;	// ignore keyup;		
		if (unicode == 39) return;	// ignore keyright;		
		if (unicode == 40) return;	// ignore keydown;		
	
		// =================================================
		// This action will update the query results.
		for (var i in column)
			if (i != 'cmd')
				param += '&'+i+'='+column[i];

		var ajax = new AJAXAction('cmgWebApp.results.php', searchResultsHandler); 
		ajax.doPost(param);
//		var ajax = new AJAXAction('cmgWebApp.results.php?'+param, searchResultsHandler); 
//		ajax.doGet();
	
		var ajax = new AJAXAction('cmgWebApp.summary.php', resultSummaryHandler); 
		ajax.doPost(param);
//		var ajax = new AJAXAction('cmgWebApp.summary.php?'+param, resultSummaryHandler); 
//		ajax.doGet();
	}
	
	function searchResultsHandler(html) {
		document.getElementById('searchResults').innerHTML = html;
	} 
	
	function resultSummaryHandler(html) {
		document.getElementById('resultSummary').innerHTML = html;
	} 
	
	function orderby(column) {
		form = thisForm();
		if (form.stockSortByColumn.value == column) {
			if (form.stockSortByDirection.value == "ASC")
				form.stockSortByDirection.value = "DESC";
			else
				form.stockSortByDirection.value = "ASC";
		}
		else {
			form.stockSortByColumn.value = column;
			form.stockSortByDirection.value = "ASC";
		}
		form.cmd.value = "";
		form.submit();
//		completeValue(0, 'stockSortByColumn');
	}

	function inputClick(srcElement) {
		form = thisForm();
//alert(srcElement.name);
		window.event.returnValue = false;
		window.event.cancelBubble = true;
		srcElement.select();
		column['cmd'] = '';
		form.cmd.value = "";
	}

	function selectClick(srcElement, event) {
		form = thisForm();
//alert(srcElement.name);
		event.returnValue = false;
		event.cancelBubble = true;
		column['cmd'] = '';
		form.cmd.value = "";
	}

	function startOver(event, cmd) {
		form = thisForm();
		column['cmd'] = cmd;
		form.cmd.value = cmd;
//		form.stockOffsetValue.value = 0;
		event.returnValue = false;
		event.cancelBubble = true;
		form.submit();
	}

