var cleanFlag = false;
var timeCleanArray;
var filter = Array();

function clean(a) {
	var doClean;
	if(cleanFlag)
		for(i = 0; i < a.length; i++) {
			doClean = true;
			for(j = 0; j < filter.length; j++) {
				if(a[i] == filter[j]) {
					doClean = false;
					break;
				}
			}
			if(doClean)
				menu(a[i], false);
		}
}

function cleanFilter(a, b) {
	var doClean;
	if(timeCleanArray)
		filterTimeClean(b);
	if(cleanFlag) {
		for(i = 0; i < a.length; i++) {
			doClean = true;
			for(j = 0; j < b.length; j++) {
				if(a[i] == b[j]) {
					doClean = false;
					break;
				}
			}
			for(j = 0; j < filter.length; j++) {
				if(a[i] == filter[j]) {
					doClean = false;
					break;
				}
			}
			if(doClean)
				menu(a[i], false);
		}
	}
	
}

function filterTimeClean(a) {
	var newArray = Array();
	var found;
	for(i = 0, k = 0; i < timeCleanArray.length; i++) {
		found = false;
		for(j = 0; j < a.length; j++) {
			if(timeCleanArray[i] == a[j]) {
				found = true;
				break;
			}
		}
		if(!found)
			newArray[k++] = timeCleanArray[i];
	}
	timeCleanArray = newArray;
}


function timeClean(a) {
	timeCleanArray = a;
	setCleanFlag(true);
	window.setTimeout("clean(timeCleanArray)", 1000);
}

function setFilter(a) {
	filter = a;
}

function deleteFilter() {
	filter = Array();
}

function setCleanFlag(value) {
	cleanFlag = value;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function menu(ref, visible) {
	e = MM_findObj(ref);
	if ((navigator.appName=='Netscape') && (navigator.appVersion.charAt(0)<'5')) {
		if(visible == true && e.visibility != "show") {
			e.visibility = "show";
			clipSelect(ref);
		}
		if(visible == false && e.visiblity != "hide") {
			e.visibility = "hide";
			unclipSelect();
		}
	}
	else {
		if(visible == true && e.style.visibilty != 'visible') {
			e.style.visibility='visible';
			clipSelect(ref);
		}
		if(visible == false && e.style.visibilty != 'hidden') {
			e.style.visibility='hidden';
			unclipSelect();
		}
	}
}

function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function checkMouseEnter (element, evt) {
  if (element.contains && evt.fromElement) {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function checkMouseLeave (element, evt) {
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function clipSelect(ref) {
  e = MM_findObj(ref);
  if(e) {
	  var menuWidth = e.offsetWidth;
	  var menuHeight = e.offsetHeight;
	  var menuTop = e.offsetTop;
	  var menuBottom = menuTop + menuHeight;
	  var menuLeft = e.offsetLeft;
	  var menuRight = menuLeft + menuWidth;
	  if (document.layers && document.selectLayer) {
	    document.selectLayer.oldClipWidth = document.selectLayer.document.width;
	    document.selectLayer.clip.width = 70;
	  }
	  else if (document.all && document.all.selectLayer) {
	    var selectWidth = document.all.selectLayer.offsetWidth;
		var selectHeight = document.all.selectLayer.offsetHeight;
	    var selectTop = document.all.selectLayer.offsetTop;
		var selectBottom = selectTop + selectHeight;
	    var selectLeft = document.all.selectLayer.offsetLeft;
		var selectRight = selectLeft + selectWidth;
		if(menuLeft > selectLeft)
			clipLeft = (menuLeft - selectLeft) + 'px';
		else
			clipLeft = 'auto';
		if(menuBottom > selectTop && menuLeft > selectLeft)
			document.all.selectLayer.style.clip = 'rect(auto '+clipLeft+' auto auto)';
	  }
  }
}

function unclipSelect () {
  if (document.layers && document.selectLayer)
    document.selectLayer.clip.width = document.selectLayer.oldClipWidth;
  else if (document.all && document.all.selectLayer)
    document.all.selectLayer.style.clip = 'rect(auto auto auto auto)';
}

