/* ---------------------------------------- Browser independent functions */
// Determine browser and version.
function oBrowser() {
  //Find out which Browser is being used
  var ua, s, i;
  this.isIE    = false;
  this.isNS    = false;
  this.version = null;
  ua = navigator.userAgent;
  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;}
  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;}
  // Treat any other "Gecko" browser as NS 6.1.
  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;}}

oBrowser.prototype.reload=function(url) {
	if (url==null) window.location.reload(false);
	else {
		if (this.isIE) window.location.href=unescape(url);
		else window.location.replace(url);}}

oBrowser.prototype.newWindow=function(url,aWinName) {
	var sOptions = 'status=yes,menubar=yes,scrollbars=yes,resizable=yes,toolbar=yes,location=yes' +
		',width=' + (screen.availWidth - 10).toString() +
		',height=' + (screen.availHeight - 122).toString() + 
		',screenX=0,screenY=0,left=0,top=0';
   var wOpen = window.open( '', aWinName, sOptions );
   wOpen.location = url;
   wOpen.focus();}
   
oBrowser.prototype.cancelBubble=function(event) {
	if (this.isIE) {
	    window.event.cancelBubble = true;
	    window.event.returnValue = false;}
	else event.preventDefault();}

//IE is onmousemove, else mousemove, so remove the first 2 characters
oBrowser.prototype.attachEvent=function(name, f, direction) {
	if (this.isIE) document.attachEvent(name, f);
	else document.addEventListener(name.substring(2), f, direction);}
		
oBrowser.prototype.detachEvent=function(name, f, direction) {
	if (this.isIE) document.detachEvent(name, f);
	else document.removeEventListener(name.substring(2), f, direction);}

oBrowser.getEvent=function(event) {
	return event?event:window.event;}

oBrowser.getTarget=function(event) {
	event=oBrowser.getEvent(event);
	return event.target || event.srcElement;}

oBrowser.getRelatedTarget=function(event) {
	event=oBrowser.getEvent(event);
	return event.relatedTarget || event.toElement;}

oBrowser.prototype.preventBubble=function(event,stopPropagation) {
	if (this.isIE) {
	    window.event.cancelBubble = true;
	    window.event.returnValue = false;}
	else {
		event.preventDefault();
		if (stopPropagation) event.stopPropagation();}}

oBrowser.focusFirst=function(formId) {
	for (i=0; i<get(formId).elements.length; i++) {	
		if ((get(formId).elements[i].type == "text" || get(formId).elements[i].type == "password" || 
			get(formId).elements[i].type=="textarea") &&
			!get(formId).elements[i].disabled && get(formId).elements[i].style.visibility!='hidden' && get(formId).elements[i].style.display!='none') {
			get(formId).elements[i].focus();
			get(formId).elements[i].focus();
			return;}}}

//------------------------------- Global variable to hold the browser functions
var browser=new oBrowser();

//------------------------------- Limit the never ending alert possibility
(function(){
  var a=window.alert, c=0;
  window.alert=function(q){
    // Change the number below to the number of alert boxes to display before the warning is given.
    if (++c%100==0) {
      if (!confirm(q+'\nThere have been '+c+' alert boxes, continue displaying them?')) window.alert=function(){};
    } else a(q);}})();

//------------------------------- Universal global functions
function $(id) {return get(id);}

function get(id) {
	return document.getElementById(id);}

function getV(id) {
	return document.getElementById(id).value;}

function getVUndefined(id) {
	var value=document.getElementById(id).value;
	return value==''?undefined:value;}

function getInt(id) {
	return parseInt(document.getElementById(id).value);}

function setV(id,value) {
	document.getElementById(id).value=value;}

function getUrlArgument(name,id) {
	var item=get(id==undefined?name:id);
	return item && item.value!=''?'&' + name + '=' + encodeURIComponent(item.value):'';}

function getSelectedOption(id) {
	return get(id).options[get(id).selectedIndex].text;}
	
function toggleDisplay(id) {
	get(id).style.display=get(id).style.display==''?'none':'';}
	
//-----------------------------
function oJavascript() {}

oJavascript.removeArrayElement=function(array,element) {
	for (var i=0; i<array.length; i++) {
		if (element==array[i]) {
			array.splice(i,1);
			return;}}}
/*
oPopup.prototype.setForm=function(entity, action, key, form, onSet) {
	var arguments=new Object();
	arguments.popupAction=action;
	arguments.popupEntity=entity;
	if (key) arguments.popupKey=key;
	if (action=='delete') {
		if (get('popupType')) arguments.popupType=getV('popupType');}
	else {
		form=get(form);
		for (i=0; i<form.elements.length; i++) {
			if(form.elements[i].type == "text" || form.elements[i].type == "password" || form.elements[i].type == "textarea" || form.elements[i].type == "select-one" ||
				form.elements[i].type == "hidden") {
				if (form.elements[i].value!='') arguments[form.elements[i].id]=form.elements[i].value;}
			else if(form.elements[i].type == "checkbox") {
				arguments[form.elements[i].id]=form.elements[i].checked;}}}
	//Run an alternative function if defined
	if (onSet) onSet(action);
	tabs.reloadNonIndependent();
	//If deleting, and it's the same key, go up a level.
	if (action=='delete' && key!=undefined && key==tabs.breadCrumb.arguments.key) tabs.breadCrumb.menu.breadCrumbs[tabs.breadCrumb.index-1].select(undefined,undefined,arguments);
	tabs.breadCrumb.select(undefined,undefined,arguments);}
*/