function toggleMenu(objectID)
{
	if (isID)
	{
		var c = getCookie('_menustate');
		var n = '_' + objectID;
		var domStyle = findDOM(objectID,1);
		var olddisplay = domStyle.display;
		if (domStyle.display == 'none')
		{
			domStyle.display='';
			var pos = c.indexOf(n);
			if (pos != -1)
			{
				c = c.substring(0,pos) + c.substring(pos + n.length);
			}
		}
		else
		{
			domStyle.display='none';
			if (c.indexOf(n) == -1)
			{
				c = c + n;
			}
		}
		setCookie('_menustate', c);
	}
	else if (isALL)
	{
		var c = getCookie('_menustate');
		var n = '_' + objectID;
		var domStyle = findDOM(objectID,1);
		var olddisplay = domStyle.display;
		if (domStyle.display == 'none')
		{
			domStyle.display='';
			var pos = c.indexOf(n);
			if (pos != -1)
			{
				c = c.substring(0,pos) + c.substring(pos + n.length);
			}
		}
		else
		{
			domStyle.display='none';
			if (c.indexOf(n) == -1)
			{
				c = c + n;
			}
		}
		setCookie('_menustate', c);
	}
}

function setMenuState(objectID, state)
{
	if (isALL || isID)
	{
		var c = getCookie('_menustate');
		var n = '_' + objectID;
		var domStyle = findDOM(objectID,1);
		if (state == 'none')
		{
			if (c.indexOf(n) == -1)
			{
				c = c + n;
			}
		}
		else
		{
			var pos = c.indexOf(n);
			if (pos != -1)
			{
				c = c.substring(0,pos) + c.substring(pos + n.length);
			}
			state = '';
		}
		domStyle.display = state;
		setCookie('_menustate', c);
	}
}

function getMenuState(objectID)
{
	var state = '';
	if (isALL)
	{
		state = 'block';
	}

	if (isALL || isID)
	{
		var c = getCookie('_menustate');
		var n = '_' + objectID;
		if (c.indexOf(n) != -1)
		{
			state = 'none';
		}
	}
	return (state);
}

function hideObject(objectID)
{
	setObjectState(objectID, 'none');
}

function showObject(objectID)
{
	setObjectState(objectID, '');
}

function setObjectState(objectID, state)
{
	if (isALL || isID)
	{
		var domStyle = findDOM(objectID,1);
		if (state == 'block')
		{
			state = '';
		}
		domStyle.display = state;
	}
}

function isObjectHidden(objectID)
{
	var state = getObjectState(objectID);
	if (state == 'none')
	{
		return (true);
	}
	else
	{
		return (false);
	}
}

function getObjectState(objectID)
{
	var state = '';
	if (isALL)
	{
		state = 'block';
	}

	if (isALL || isID)
	{
		var domStyle = findDOM(objectID,1);
		state = domStyle.display;
		if (state == '')
		{
			state = 'block';
		}
	}

	return (state);
}

function getCookie(name)
{
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1)
	{
		begin = dc.indexOf(prefix);
		if (begin != 0)
		{
			return "";
		}
	}
	else
	{
		begin += 2;
	}

	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
	{
		end = dc.length;
	}

	return unescape(dc.substring(begin + prefix.length, end));
}

function setCookie (name, value)
{
	setCookie(name, value, null, null, null, null);
}

function setPermCookie (name, value)
{
	var nextYear = new Date();
	nextYear.setFullYear(nextYear.getFullYear() + 1);
	setCookie(name, value, null, nextYear, null, null);
}

function setCookie (name, value, path, expires, domain, secure)
{
	document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function deleteCookie (name, path, domain)
{
	document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
}

function addToSelect(l, f, t, v, unique)
{
	if (f != null)
	{
		v = f.value;
		t = f.text;
	}

	if (t == null || t.length == 0)
	{
		return;
	}
	t = trim(t);
	v = trim(v);

	for (var i=0; i<t.length; i++)
	{
		if (t[i] == ',' || t[i] > 127)
		{
			alert("Invalid characters in " + t);
			return;
		}
	}
	for (var i=0; i<v.length; i++)
	{
		if (v[i] == ',' || v[i] > 127)
		{
			alert("Invalid characters in " + v);
			return;
		}
	}

	var len = l.options.length;
	var index = len;
	if (unique == null || unique == true)
	{
		for (index=0; index<len; index++)
		{
			if (l.options[index].text == t)
			{
				return;
			}
		}
	}
	l.options.length++;
	l.options[index] = new Option(t, v);
	l.selectedIndex = index;
}

function editSelect(l, f, t, v, index)
{
	if (index != null)
	{
		index = l.selectedIndex;
	}
	if (index == -1)
	{
		return;
	}

	if (f != null)
	{
		t = f.value;
		v = f.value;
	}

	if (t == null || t.length == 0)
	{
		return;
	}
	t = trim(t);
	v = trim(v);

	for (var i=0; i<t.length; i++)
	{
		if (t[i] == ',' || t[i] > 127)
		{
			alert("Invalid characters in " + t);
			return;
		}
	}
	for (var i=0; i<v.length; i++)
	{
		if (v[i] == ',' || v[i] > 127)
		{
			alert("Invalid characters in " + v);
			return;
		}
	}

	l.options[index].text = t;
	l.options[index].value = v;
	l.selectedIndex = index;
}

function removeFromSelect(l, selIndex)
{
	if (selIndex == null)
	{
		selIndex = l.selectedIndex;
	}
	if (selIndex == -1 || selIndex > l.options.length)
	{
		return;
	}

	l.options[selIndex] = null;
	if (selIndex < l.options.length)
	{
		l.selectedIndex = selIndex;
	}
	else
	{
		l.selectedIndex = selIndex - 1;
	}
}

function trim(s)
{
	if (s == null || s.length == 0)
	{
		return (s);
	}
	while (s.substring(0,1) == ' ') s = s.substring(1);
	while (s.substring(s.length-1,s.length) == ' ') s = s.substring(0,s.length-1);
	return s
}

function getDateFromValue(v, format)
{
	var d = null;

	if (format == null || format.length == 0)
	{
		format = "DD/MM/YYYY";
	}
	format = format.toUpperCase();

	var dd = "";
	var mm = "";
	var yy = "";
	if (v.length != 0)
	{
		var pos = 0;
		var vpos = 0;
		while (pos < format.length)
		{
			if (format.charAt(pos) == 'D')
			{
				while (pos < format.length && format.charAt(pos) == 'D')
				{
					pos++;
				}
				var endc;
				if (pos >= format.length)
				{
					endc = '\n';
				}
				else
				{
					endc = format.charAt(pos);
				}

				while (vpos < v.length && v.charAt(vpos) != endc)
				{
					dd += v.charAt(vpos);
					vpos++;
				}
			}
			else if (format.charAt(pos) == 'M')
			{
				while (pos < format.length && format.charAt(pos) == 'M')
				{
					pos++;
				}
				var endc;
				if (pos >= format.length)
				{
					endc = '\n';
				}
				else
				{
					endc = format.charAt(pos);
				}

				while (vpos < v.length && v.charAt(vpos) != endc)
				{
					mm += v.charAt(vpos);
					vpos++;
				}
			}
			else if (format.charAt(pos) == 'Y')
			{
				while (pos < format.length && format.charAt(pos) == 'Y')
				{
					pos++;
				}
				var endc;
				if (pos >= format.length)
				{
					endc = '\n';
				}
				else
				{
					endc = format.charAt(pos);
				}

				while (vpos < v.length && v.charAt(vpos) != endc)
				{
					yy += v.charAt(vpos);
					vpos++;
				}
			}
			else
			{
				pos++;
				vpos++;
			}
		}
		if (yy < 100)
		{
			if (yy >= 49)
			{
				yy = "19" + yy;
			}
			else
			{
				yy = "20" + yy;
			}
		}
		d = new Date(yy, mm-1, dd);
	}

	return (d);
}

function GetAbsolutePosition (image)
{

  var rd = { x:0, y:0 };

  if (document.layers)
  {
    // Netscape we can just read the attributes directly
    rd.x = image.x;
    rd.y = image.y - 12;  // for some reason we need to subtract 12 fromthe actual
                          // value to get the text aligned correctly
  }
  else
  {
    // start with the image's coordinates and walk through it's ancestory of
    // elements (tables, div's, spans, etc...) until we're at the top. Along
    // the way we add in each element's coordinates to get the final answer
    do
    {
      rd.x += image.offsetLeft;
      rd.y += image.offsetTop;
      image = image.offsetParent;
    }  while( image );
  }

  return (rd);
}

function openChildWindow(url, loc, options)
{
	if (loc == null)
	{
		loc = "";
	}
	if (options == null)
	{
		options = "dependent=yes,menubar=no,toolbar=no,location=no,resizable=yes,scrollbars=yes,width=780,height=400";
	}
	return window.open(url, loc, options);
}

function browserWidthHeight()
{
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' )
	{
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;

	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [ myWidth, myHeight ];
}

function addEvent(obj, evType, fn)
{ 
	if (obj.addEventListener)
	{ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	}
	else if (obj.attachEvent)
	{ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	}
	else
	{ 
		return false; 
	} 
}

var agt=navigator.userAgent.toLowerCase();

var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
			&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
			&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
					  (agt.indexOf("; nav") != -1)) );
var is_nav6 = (is_nav && (is_major == 5));
var is_nav6up = (is_nav && (is_major >= 5));
var is_gecko = (agt.indexOf('gecko') != -1);

var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var is_ie3    = (is_ie && (is_major < 4));
var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
var is_ie4up  = (is_ie && (is_major >= 4));
var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
var is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);

var is_aol   = (agt.indexOf("aol") != -1);
var is_aol3  = (is_aol && is_ie3);
var is_aol4  = (is_aol && is_ie4);
var is_aol5  = (agt.indexOf("aol 5") != -1);
var is_aol6  = (agt.indexOf("aol 6") != -1);

var is_safari = (agt.indexOf("safari") != -1);

var is_opera = (agt.indexOf("opera") != -1);
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);

var is_webtv = (agt.indexOf("webtv") != -1);

var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1));
var is_AOLTV = is_TVNavigator;

var is_hotjava = (agt.indexOf("hotjava") != -1);
var is_hotjava3 = (is_hotjava && (is_major == 3));
var is_hotjava3up = (is_hotjava && (is_major >= 3));
