    // <![CDATA[
function resolveTarget(e)
{
  var obj;
  if (e.target)
    obj = e.target;
  else if (e.srcElement)
    obj = e.srcElement;
  if (obj.nodeType == 3) // defeat Safari bug
    obj = obj.parentNode;
  return(obj);
}

function addEvent(obj,type,fn)
{
  if(obj.attachEvent)
    {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn](window.event);}
    obj.attachEvent('on'+type,obj[type+fn]);
    }
  else
    obj.addEventListener(type,fn,false);
}

    function closeMenu(e){

    tar = resolveTarget(e);
 if (tar.parentNode.className != 'selectReplacement selectOpen'){

    var elementos = document.getElementsByClassName('selectOpen')
    for (var i=0; i<elementos.length; i++) {
    	elementos[i].className='selectReplacement';
    	}
    }
    }

var selectOpen;

    function selectReplacement(obj) {
      obj.className += ' replaced';
      
      var ul = document.createElement('ul');
      ul.className = 'selectReplacement';
	ul.id = 'lista';
      if (typeof obj.onchange == 'function') ul.exChange = obj.onchange;
// 	ul.onclick = function(){
// 		this.className = 'selectReplacement selectOpen';
// 	}
//  	ul.onmouseout = function(){
//  		this.className = 'selectReplacement';
//  	}
	
      var opts = obj.options;
      var selectedOpt = (!obj.selectedIndex) ? 0 : obj.selectedIndex;
      for (var i=0; i<opts.length; i++) {
        var li = document.createElement('li');
        var txt = document.createTextNode(opts[i].text);
        
        li.appendChild(txt);
        li.selIndex = i;
        li.selectID = obj.id;
        li.onclick = function() {
          selectMe(this);
          if (ul.exChange) ul.exChange();
        };
        if (i == selectedOpt) {
        //if (opts[i].selected) {
          li.className = 'selected';
          li.onclick = function() {
            this.parentNode.className = 'selectReplacement selectOpen';
            this.onclick = function() {
              selectMe(this);

            };
          };
        }
        ul.appendChild(li);
      }
      obj.onfocus = function() {
        ul.className += ' selectOpen selectFocused';
      };
      obj.onblur = function() {
        ul.className = 'selectReplacement';
      };
      obj.onchange = function() {
        var idx = this.selectedIndex;
        selectMe(ul.childNodes[idx]);
      };
      obj.onkeypress = obj.onchange;
      obj.parentNode.insertBefore(ul,obj);	
    }

    function selectMe(obj) {
      var lis = obj.parentNode.getElementsByTagName('li');
      for (var i=0; i<lis.length; i++) {
        if (lis[i] != obj) {
          lis[i].className='';
          lis[i].onclick = function() {
            selectMe(this);
            if (obj.parentNode.exChange) obj.parentNode.exChange();
          };
       } else {
          setVal(obj.selectID, obj.selIndex);
          obj.className='selected';
          obj.parentNode.className = 
            obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
          obj.onclick = function() {
            obj.parentNode.className += ' selectOpen';
            };
        }
      }
    }

    function setVal(objID,val) {
      var obj = document.getElementById(objID);
      obj.selectedIndex = val;
    }

    function setForm() {
      var s = document.getElementsByClassName('transformar');
      for (var i=0; i<s.length; i++) {
        selectReplacement(s[i]);
      }
    }

function containsDOM (container, containee) {
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function checkMouseLeave (element, evt) {
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) 
    return !containsDOM(element, evt.relatedTarget);
  }
