function xIs(){
    var agt=navigator.userAgent.toLowerCase()
    var version = navigator.appVersion;
    this.major = parseInt(navigator.appVersion)

    this.nav  = ((agt.indexOf('mozilla')!=-1) && ((agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1)))
    this.nav4 = (this.nav && (this.major == 4))
    this.nav4up = this.nav && (this.major >= 4)

    this.ie   = (agt.indexOf("msie") != -1)
    //this.ie4  = (this.ie && (this.major == 4))
    this.ie4 = (this.ie && agt.search(/msie( |\/)*5\.[0-4]/) > -1);
    this.ie4up  = this.ie  && (this.major >= 4)
}
var is = new xIs();
var xmtime = '';
var xOpenMenus = [];
// should the link be moved to the calling object
var xChangePos = false;
/*
if (document.getElementById || document.all) {
    window.onload = function() {
        xInitMenu(xmenuclass);
    }
}
*/
var xloaded = false;
xAddEventListener(window,'load',function(){xloaded=true;},false);

function xGetElementsByClassName(clsName, parentEle, tagName) {
	var elements = null;
	var found = new Array();
	var re = new RegExp('\\b'+clsName+'\\b');
	if (!parentEle) parentEle = document;
	if (!tagName) tagName = '*';
	if (parentEle.getElementsByTagName) {elements = parentEle.getElementsByTagName(tagName);}
	else if (document.all) {elements = document.all.tags(tagName);}
	if (elements) {
		for (var i = 0; i < elements.length; ++i) {
			if (elements[i].className.search(re) != -1) {
				found[found.length] = elements[i];
			}
		}
	}
	return found;
}

function xHideMenu(id)
{
    var objeto = xGetStyleObject(id);
    if(objeto) {
        objeto.display = "none";
    }
}

function xFind_x(obj)
{
	var curleft = 0;
	if (document.getElementById || document.all)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
		curleft += obj.x;
	return curleft;
}

function xFind_y(obj)
{
	var curtop = 0;
	if (document.getElementById || document.all)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (document.layers)
		curtop += obj.y;
	return curtop;
}

function xGetStyleObject(identifier) {
    // funcao para acessar o objeto de estilo atraves do seu id
    if(document.getElementById && document.getElementById(identifier)) {
        // W3C DOM
        return document.getElementById(identifier).style;
    } else if (document.all && document.all(identifier)) {
        // MSIE 4 DOM
        return document.all(identifier).style;
    } else if (document.layers && document.layers[identifier]) {
        // NN 4 DOM.. nota: os layers devem estar na raiz do body
        return document.layers[identifier];
    } else {
        return false;
    }
} // xGetStyleObject

function xMoveObject(identifier, new_x, new_y) {
    var obj = xGetStyleObject(identifier);
    if(obj) {
        obj.left = new_x + "px";
        obj.top = new_y + "px";
        return true;
    } else {
        return false;
    }
} // xMoveObject

// x.js
// X v3.14.1, Cross-Browser DHTML Library from Cross-Browser.com
// Copyright (c) 2002,2003 Michael Foster (mike@cross-browser.com)
// This library is distributed under the terms of the LGPL (gnu.org)

// Variables:
var xVersion='3.14.1',xOp7=false,xOp5or6=false,xIE4Up=false,xNN4=false,xUA=navigator.userAgent.toLowerCase();
if(window.opera){
  xOp7=(xUA.indexOf('opera 7')!=-1 || xUA.indexOf('opera/7')!=-1);
  if (!xOp7) xOp5or6=(xUA.indexOf('opera 5')!=-1 || xUA.indexOf('opera/5')!=-1 || xUA.indexOf('opera 6')!=-1 || xUA.indexOf('opera/6')!=-1);
}
else if(document.layers) {xNN4=true;}
else {xIE4Up=document.all && xUA.indexOf('msie')!=-1 && parseInt(navigator.appVersion)>=4;}
// Object:
function xGetElementById(e) {
  if(typeof(e)!='string') return e;
  if(document.getElementById) e=document.getElementById(e);
  else if(document.all) e=document.all[e];
  else if(document.layers) e=xLayer(e);
  else e=null;
  return e;
}
function xDef() {
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}

// Event:
function xAddEventListener(e,eventType,eventListener,useCapture) {
  if(!(e=xGetElementById(e))) return;
  eventType=eventType.toLowerCase();
  if((!xIE4Up && !xOp7) && e==window) {
    if(eventType=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eventListener; xResizeEvent(); return; }
    if(eventType=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eventListener; xScrollEvent(); return; }
  }
  var eh='e.on'+eventType+'=eventListener';
  if(e.addEventListener) e.addEventListener(eventType,eventListener,useCapture);
  else if(e.attachEvent) e.attachEvent('on'+eventType,eventListener);
  else if(e.captureEvents) {
    if(useCapture||(eventType.indexOf('mousemove')!=-1)) { e.captureEvents(eval('Event.'+eventType.toUpperCase())); }
    eval(eh);
  }
  else eval(eh);
}
function xWidth(e,uW) {
  if(!(e=xGetElementById(e))) return 0;
  if (xNum(uW)) { // v3.13.1
    if (uW<0) uW = 0;
    else uW=Math.round(uW);
  }
  else uW=0;
  var css=xDef(e.style);
  if(css && xDef(e.offsetWidth) && xStr(e.style.width)) {
    if(uW) xSetCW(e, uW);
    uW=e.offsetWidth;
  }
  else if(css && xDef(e.style.pixelWidth)) {
    if(uW) e.style.pixelWidth=uW;
    uW=e.style.pixelWidth;
  }
  else if(xDef(e.clip) && xDef(e.clip.right)) {
    if(uW) e.clip.right=uW;
    uW=e.clip.right;
  }
  return uW;
}
function xHeight(e,uH) {
  if(!(e=xGetElementById(e))) return 0;
  if (xNum(uH)) { // v3.13.1
    if (uH<0) uH = 0;
    else uH=Math.round(uH);
  }
  else uH=0;
  var css=xDef(e.style);
  if(css && xDef(e.offsetHeight) && xStr(e.style.height)) {
    if(uH) xSetCH(e, uH);
    uH=e.offsetHeight;
  }
  else if(css && xDef(e.style.pixelHeight)) {
    if(uH) e.style.pixelHeight=uH;
    uH=e.style.pixelHeight;
  }
  else if(xDef(e.clip) && xDef(e.clip.bottom)) {
    if(uH) e.clip.bottom=uH;
    uH=e.clip.bottom;
  }
  return uH;
}
function xDef() {
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}
function xStr(s) {
  return typeof(s)=='string';
}
function xNum(n) {
  return typeof(n)=='number';
}
function xLayer(id,root) { // only for nn4
  var i,layer,found=null;
  if (!root) root=window;
  for(i=0; i<root.document.layers.length; i++) {
    layer=root.document.layers[i];
    if(layer.id==id) return layer;
    if(layer.document.layers.length) found=xLayer(id,layer);
    if(found) return found;
  }
  return null;
}

function xLayerFromPoint(x,y,root) { // only for nn4
  var i, hn=null, hz=-1, cn;
  if (!root) root = window;
  for (i=0; i < root.document.layers.length; ++i) {
    cn = root.document.layers[i];
    if (cn.visibility != "hide" && x >= cn.pageX && x <= cn.pageX + cn.clip.right && y >= cn.pageY && y <= cn.pageY + cn.clip.bottom ) {
      if (cn.zIndex > hz) { hz = cn.zIndex; hn = cn; }
    }
  }
  if (hn) {
    cn = xLayerFromPoint(x,y,hn);
    if (cn) hn = cn;
  }
  return hn;
}

var xdb_navtime = [];
var xdb_menus = [];
var xdbmenus = [];

function xdb_menu_delayed(id)
{
    xdb_clear_timeout(id);
    if (document.getElementById || document.all) {
        //xdb_menus_close ();
        var objeto = xGetStyleObj(id);
        if(objeto) {
            objeto.display = 'block';
            xdb_menus[xdb_menus.length] = id;
        }
    }
}

function xdb_menu(str)
{
    if(!xloaded){
        return false;
    }
    var ids = new Array();
  	var argv = xdb_menu.arguments;  
	var argc = xdb_menu.arguments.length;  
	var rel = (argc > 1) ? argv[1] : null;  

    ids = str.split(' ');
    xdb_menus_close(ids);
    var id = '';
    for(var i=0; i < ids.length;i++){
        id = ids[i];
        if(i==0 && id == rel.substr(1)){
            rel = xGetElementById(rel);
            var x = xFind_x(rel);
            var y = xFind_y(rel);
            xMoveObject(id, x, y +36);
        }
        if (id == ''){
            break;
        }
        xdb_clear_timeout(id);
        xdb_menu_delayed(id);
    }
    
}

function xdb_clear_timeout(id)
{
    var newnavtime = [];
    for (i=0;i < xdb_navtime.length; i++) {
        if (xdb_navtime[i].id == id) {
            window.clearTimeout(xdb_navtime[i].timeout);
        } else {
            newnavtime[newnavtime.length] = xdb_navtime[i];
        }
    }
    xdb_navtime = newnavtime;
}

function xdb_menu_timeout(str)
{
    var ids = new Array();
    ids = str.split(' ');
    var id = '';
    for(var i=0; i < ids.length;i++){
        id = ids[i];
        if (id == ''){
            break;
        }
        xdb_clear_timeout(id);
        //xdb_navtime[xdb_navtime.length] = {timeout:window.setTimeout("xdb_menu_hide('" + id + "');", 2000), id:id};
        xdb_navtime[xdb_navtime.length] = {timeout:window.setTimeout("xdb_menus_close();", 2000), id:id};
    }
}

function xdb_set_timeout(id, f, t)
{
    xdb_clear_timeout(id);
    xdb_navtime[xdb_navtime.length] = {timeout:window.setTimeout(f, t), id:id};
}
function xdb_menus_close()
{
	var doclose = true; 
  	var argv = xdb_menus_close.arguments;  
	var argc = xdb_menus_close.arguments.length;  
	var ids = (argc > 0) ? argv[0] : [];
    for (i=0;i < xdb_navtime.length; i++) {
        window.clearTimeout(xdb_navtime[i].timeout);
    }
    xdb_navtime = [];
	xdb_menus.reverse(); 
    if (document.getElementById || document.all) {
        var id;
        for (i = 0; i < xdb_menus.length; i++){
            doclose = true;
            for(j = 0; j < ids.length;j++){
                if(ids[j] == xdb_menus[i]){
                    doclose = false;
                    break;
                }
            }
            if(doclose){
                xdb_menu_hide(xdb_menus[i]);
            }
        }
        xdb_menus = [];
    }
}
function xdb_menu_hide(id)
{
    var objeto = xGetStyleObj(id);
    if(objeto) {
        objeto.display = "none";
    }
}
function xGetElementById(e) {
  if(typeof(e)!='string') return e;
  if(document.getElementById) e=document.getElementById(e);
  else if(document.all) e=document.all[e];
  else if(document.layers) e=xLayer(e);
  else e=null;
  return e;
}

function xChangeVisibility(identifier) {
    var objeto = xGetStyleObj(identifier);
    if(objeto) {
        if (objeto.display == "none") {
            objeto.display = "block";
        } else {
            objeto.display = "none";
        }
        return true;
    } else {
        return false;
    }
} // change_visibility

function xGetStyleObj(e) {
    if(document.getElementById && document.getElementById(e)) {
        // W3C DOM
        return document.getElementById(e).style;
    } else if (document.all && document.all(e)) {
        // MSIE 4 DOM
        return document.all(e).style;
    } else if (document.layers && document.layers[e]) {
        // NN 4 DOM.. nota: os layers devem estar na raiz do body
        return document.layers[e];
    } else {
        return false;
    }
} // xGetStyleObj


