var isIE = (document.all);
var isOpera = (window.opera);

var menu_over = '';
var button = {};
var Picked = {};
var lpicked = {};
var listPort = {};

var namebase = 'menu';
var button_className;
var tree = new Array;

function empty(obj) {
	obj.value = "";
}

/*
function get_frames() {
	var frame_list='';
	var fs = top.frames;
	if (fs.length>0) for (i in fs) {
	  frame_list += i+':'+ fs[i].name+'\n';
	}
	alert(frame_list);
}
*/

function over(obj) {
  if (!obj.passed) {
    var noChg = 'sel,presel,defunc';
    obj.occupied = (obj.className.match(noChg));
    obj.passed = 1;
  }
  if (arguments[1]) {
    stat = over.arguments[1];
    obj.className = (stat)? 'ovr' : '';
  }
  else {
    if (obj.passed && !obj.occupied) {
      obj.className = (obj.className)? '' : 'ovr';
     	//alert(obj.id+'.className='+obj.className);
    }
  }
}

function mpick(obj) {
  Picked = getPicked();
  if (Picked) { // && obj!=Picked) {
    Picked.className = (Picked.classOri && (Picked.classOri!='sel'))? Picked.classOri : '';
    obj.classOri = (obj && obj.className)? obj.className : '';
    obj.className = 'sel';
    Picked = obj;
  }
  else {
    obj.classOri = obj.className;
    obj.className = 'sel';
    Picked = obj;
  }
  if (Picked && (clickaction=Picked.getAttribute('clickaction'))) eval(clickaction);
	if (Picked) Picked.focus();
}

function lpick(obj) {
  p = obj.parentNode;
  while (p.nodeName!='TR') {
    p = p.parentNode;
  }
  if (p!=lpicked) {
    Picked.className = (Picked.className=='presel')? 'presel' : (Picked.classOri && (Picked.classOri!='sel'))? Picked.classOri : '';
    obj.classOri = (obj && obj.className)? obj.className : '';
    p.className = (p.className=='presel')? 'presel' : 'sel';
    Picked = p;
  }
	//row = extractRow(Picked);
	//alert('Row:\n'+expose(row));
}

function vpick(pid,id) {
  var label = document.getElementById('label'+pid);
  var field = document.forms['edit'].elements['prop['+pid+']'];
  if (label) {
    if (data) label.innerHTML = (id)? '&nbsp; <cite>'+data[pid][id].label+'</cite>' : '&nbsp; -';
  }
  if (field) field.value = id;
}

function unpick() {
	//alert('unpick()');
  obj = (arguments.length)? arguments[0] : Picked;
  if (obj) {
		//alert('unpick object found');
    obj.className='';
    obj = {};
  }
}

function getPicked() {
  var typ = (arguments.length)? arguments[0] : 'A';
  var classname = (arguments.length)? arguments[1] : 'sel';
  e = document.getElementsByTagName(typ);
  if (e) for (i=0; i<e.length;i++) {
    if (e[i].className && e[i].className.indexOf(classname)>=0) return e[i];
  }
  return {};
}

function save_icon() {
  if ((s = document.getElementById('save_icon')) || (s = document.getElementById('save'))) s.className=(s.className)?'':'v';
}

function expose(obj) {
	deli = '\n';
	var level = 0;
	if (arguments[1]) deli = arguments[1];
	if (arguments[2]) {
		level = parseInt(arguments[2]);
  	if (level > 4) return '';
	}
  if (obj) {
    var text = "";
  	to = (typeof obj);
    if (to.indexOf('string')>=0) {
			text += (to+' '+obj+'\n');
		}
		else {
			for (prop in obj) {
	  		to = (typeof obj[prop]);
        text += (str_repeat('\t',level)+to+' '+prop+'='+obj[prop]+deli);
				nextlevel = level+1;
		  	if (to.indexOf('object')>=0) text += expose(obj[prop],deli,nextlevel);
		  }
    }
    //if (text) alert(text);
  }
	return text+'\n';
}

function str_repeat(text,iterations) {
	var t = '';
	if (text) for (i=1; i<=iterations; i++) {
		t += text;
	}
	return t;
}

function copyArray(src_array,dst_array) {
	if (src_array) for (i in src_array) {
		dst_array[i] = src_array[i];
	}
}
//alert(location.href+': functions loaded');

function getScrollPos(win) {
	var x,y;
	if (win.pageYOffset) // all except Explorer
	{
		x = win.pageXOffset;
		y = win.pageYOffset;
	}
	else if (win.document.documentElement && win.document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = win.document.documentElement.scrollLeft;
		y = win.document.documentElement.scrollTop;
	}
	else if (win.document.body) // all other Explorers
	{
		x = win.document.body.scrollLeft;
		y = win.document.body.scrollTop;
	}
	return Array(x,y);
}

function getOffsetOf(obj) { return getOffset(obj); }

function getOffset(obj) { // get the right position
  otop = 0; oleft = 0;
  ctop = 0; cleft = 0;
  if (obj) {
    ctop = obj.offsetTop; cleft = obj.offsetLeft;
    otop = ctop; oleft = cleft;
    p = obj.offsetParent;
    while (p) {
      ctop += p.offsetTop; cleft += p.offsetLeft;
      p = p.offsetParent;
    }
    return Array(cleft,ctop,oleft,otop);
  }
}

function is_set() {
	if (arguments.length) {
		obj = arguments[0];
		if (typeof obj != 'undefined') return true;
	}
	return false;
}