/**
 * Declare an object to which we can add real functions.
 */
if (goshme == null) var goshme = {};
if (goshme.util == null) goshme.util = {};
if (GoshmeUtil == null) var GoshmeUtil = goshme.util;

/**
 * Declare constants
 */
var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE = 3;
var READY_STATE_COMPLETE = 4;

/* Get HTML element  */
goshme.util.getElement = function (id) {
  return document.getElementById ? document.getElementById(id) : (document.all ? document.all[id] : 0);
}

/* Set element value  */
goshme.util.setValue = function (name, value){
  var ele = goshme.util.getElement(name);
  if(!ele)
    return;
  ele.innerHTML = value;
}


goshme.util.setClassName = function(ele, className) {
  ele = goshme.util.getElement(ele);
  if (ele == null) return;
  ele.className = className;
}

goshme.util.addClassName = function(ele, className) {
  ele = goshme.util.getElement(ele);
  if (ele == null) return;
  ele.className += " " + className;
}

goshme.util.removeClassName = function(ele, className) {
  ele = goshme.util.getElement(ele);
  if (ele == null) return;
  var regex = new RegExp("(^|\\s)" + className + "(\\s|$)", 'g');
  ele.className = ele.className.replace(regex, '');
}

/* Toogle visibility from element */
goshme.util.toogle = function (id, show) {
  var ele = goshme.util.getElement(id);
  if (! ele) return;
  if (show) {
    ele.style.display = '';
    if(ele.tagName == 'DIV'){
    	ele.style.display = 'block';
    }
  } else {
    ele.style.display = 'none';
  }
}

/* Remove todas as divs de nomes em comuns de seus respectivos pais. Não funciona no IE*/
goshme.util.removeSonDivs = function(name){
	var divsOpened = document.getElementsByName(name);
	for(z=0; z<divsOpened.length; z++)
	{
		divsOpened[z].parentNode.removeChild(divsOpened[z]);
	}
}

/* Remove a determinada div a partir do id */
goshme.util.removeDiv = function(id){
	var div = document.getElementById(id);
	div.parentNode.removeChild(div);
}

/* Send HTTPRequest  */
goshme.util.sendRequest = function (url,params,HttpMethod){
  if (!HttpMethod){
     HttpMethod="GET";
  }
  var req=getXMLHttp();

  if (req){
     req.onreadystatechange= function onReadyState()
     {
		var ready=req.readyState;
		var data=null;
		if (ready==READY_STATE_COMPLETE && req.status == 200){
		     data=req.responseText;
		     //alert(data);
		     eval(data);
		}else{
		     data="loading...["+ready+"]";
		}
     };

     req.open(HttpMethod, url, true);

     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
     req.send(params);
  }
}

/* Create HTTPRequest  */
function getXMLHttp(){
    var xmlhttp;
    try{
        xmlhttp = new XMLHttpRequest();
    }catch(ee){
        try{
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
            try{
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(E){
                xmlhttp = false;
            }
        }
    }
    return xmlhttp;
}