
// define a few variables that are required
var comenu_usepopups = false;
var ignorequotechars = 0;

// #############################################################################
// lets define the browser we have instead of multiple calls throughout the file
var userAgent = navigator.userAgent.toLowerCase();
var is_opera  = (userAgent.indexOf('opera') != -1);
var is_saf    = ((userAgent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_webtv  = (userAgent.indexOf('webtv') != -1);
var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4    = ((is_ie) && (userAgent.indexOf("msie 4.") != -1));
var is_moz    = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon    = (userAgent.indexOf('konqueror') != -1);
var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));

// catch possible bugs with WebTV and other older browsers
var is_regexp = (window.RegExp) ? true : false;

// #############################################################################
// let's find out what DOM functions we can use
var coDOMtype = '';
if (document.getElementById){
	coDOMtype = "std";
}else if (document.all){
	coDOMtype = "ie4";
}else if (document.layers){
	coDOMtype = "ns4";
}

// make an array to store cached locations of objects called by fetch_object
var coobjects = new Array();

// #############################################################################
// function to emulate document.getElementById
function fetch_object(idname, forcefetch)
{
	if (forcefetch || typeof(coobjects[idname]) == "undefined")	{
		switch (coDOMtype) {
			case "std": {
				coobjects[idname] = document.getElementById(idname);
			}
			break;

			case "ie4": {
				coobjects[idname] = document.all[idname];
			}
			break;

			case "ns4": {
				coobjects[idname] = document.layers[idname];
			}
			break;
		}
	}
	return coobjects[idname];
}

// #############################################################################
// function to handle the different event models of different browsers
// and prevent event bubbling
function do_an_e(eventobj)
{
	if (!eventobj || is_ie)
	{
		window.event.returnValue = false;
		window.event.cancelBubble = true;
		return window.event;
	}
	else
	{
		eventobj.stopPropagation();
		eventobj.preventDefault();
		return eventobj;
	}
}

// #############################################################################
// function to do a single-line conditional
function iif(condition, trueval, falseval)
{
	return condition ? trueval : falseval;
}

function comenu_register(controlid, nowrite, datefield)
{
	if (comenu_usepopups)
	{
		comenu_doregister(controlid, nowrite, datefield);
	}
}

function coItems_init()
{
	if (is_webtv)
	{
		return true;
	}

	// init registered menus
	if (comenu_usepopups && comenu_registered.length > 0)
	{
		for (i in comenu_registered)
		{
			comenu_init(comenu_registered[i]);
		}

		// close all menus on mouse click
		document.onclick = comenu_close;
	}
	
	return true;
}
