var AJAX_RESPONSE_STATUS = 0;
var AJAX_RESPONSE_TEXT   = 1;

function fxAjaxGet(u,e) {
  var httpObj = fxNewHttpObj();

  if (httpObj == null) {
    fxMsgBox("No support for AJAX");
    return;
  }

  httpObj.onreadystatechange = function () {
   if (httpObj.readyState == 4 || httpObj.readyState == "complete") {
     if (httpObj.statusText == 200 || httpObj.statusText == "OK") {
       e(true, httpObj.responseText);
     } else {
       e(false, "");
     }
   }
  }

  httpObj.open("GET", u, true);
  httpObj.send(null);
}

function fxAjaxPost(u,p,e) {
  var httpObj = fxNewHttpObj();

  if (httpObj == null) {
    fxMsgBox("No support for AJAX");
    return;
  }

  httpObj.onreadystatechange = function () {
   if (httpObj.readyState == 4 || httpObj.readyState == "complete") {
     if (httpObj.statusText == 200 || httpObj.statusText == "OK") {
       e(true, httpObj.responseText);
     } else {
       e(false, "");
     }
   }
  }

  httpObj.open("POST", u, true);
  httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  httpObj.setRequestHeader("Content-Length", p.length);
  httpObj.send(p);
}

function fxCheckedValue(o) {
  if (o.length) {
    for (var i=0; i<o.length; i++) {
      if (o[i].checked) {
        return o[i].value;
      }
    }
  } else {
    if (o.checked) {
      return o.value;
    }
  }
  return "";
}

function fxIsEmail(s) {
  return (s.indexOf("@")!=-1 && s.indexOf(".")!=-1);
}

function fxIsEmpty(s)
{ return /^\s*$/.test(s); }

function fxMsgBox(s)
{ alert(s); }

function fxNewHttpObj() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
  return null;
}

function fxParseResponse(s) {
  if (s.indexOf("$")==-1) {
    return ["Erro", ""];
  }
  return s.split("$");
}

function fxRedirect(u) {
  location.href = u;
}

function fxSelectedValue(o) {
  var retVal = "";

  if (o.selectedIndex != null) {
    if (o.selectedIndex >= 0) {
      retVal = o.options[o.selectedIndex].value;
    }
  }

  return retVal;
}

function fxSerializeForm(f) {
  var i =  0;
  var j =  0;
  var s = "";

  for (i=0; i<f.elements.length; i++) {
    if (f.elements[i].tagName.toUpperCase() == "INPUT") {
      if (f.elements[i].name) {
        if (f.elements[i].type.toUpperCase()=="RADIO" || f.elements[i].type.toUpperCase()=="CHECKBOX") {
          if (f.elements[i].checked) {
            if ( s != "" ) {
              s += "&";
            }
            s += f.elements[i].name + "=" + escape(f.elements[i].value);
          }
        } else {
          if ( s != "" ) {
            s += "&";
          }
          s += f.elements[i].name + "=" + escape(f.elements[i].value);
        }
      }
    } else if (f.elements[i].tagName.toUpperCase() == "SELECT") {
      if (f.elements[i].name) {
        if (f.elements[i].multiple) {
          for (j=0; j<f.elements[i].options.length; j++) {
            if (f.elements[i].options[j].selected) {
              if ( s != "" ) {
                s += "&";
              }
              s += f.elements[i].name + "=" + escape(f.elements[i].options[j].value);
            }
          }
        } else {
          if ( s != "" ) {
            s += "&";
          }
          s += f.elements[i].name + "=" + escape(f.elements[i].options[f.elements[i].selectedIndex].value);
        }
      }
    } else if (f.elements[i].tagName.toUpperCase() == "TEXTAREA") {
      if (f.elements[i].name) {
        if ( s != "" ) {
          s += "&";
        }
        s += f.elements[i].name + "=" + escape(f.elements[i].value);
      }
    }
  }

  return s;
}

function fxSetEnabled(o,b) {
  o.disabled = !b;
}

function fxSetFormEnabled(f,b) {
  for (var i=0; i<f.elements.length; i++) {
    fxSetEnabled(f.elements[i], b);
  }
}

function fxSetInnerHtml(d,h) {
  d.innerHTML = h;
}

function fxSetFocus(o)
{ o.focus(); }

function fxUnescape(value) {
  value = value.replace(/&aacute;/g, "á");
  value = value.replace(/&atilde;/g, "ã");
  value = value.replace(/&acirc;/g, "â");
  value = value.replace(/&ccedil;/g, "ç");
  value = value.replace(/&eacute;/g, "é");
  value = value.replace(/&iacute;/g, "í");
  value = value.replace(/&oacute;/g, "ó");
  return value;
}