

function form_to_string(myform) {
 var resultado='';
 for(var i=0; i<myform.elements.length; i++) {
  var n=myform.elements[i].name;
  var v=get_element_value(myform.elements[i]);
  if (!n || v==null) continue;
  n=String(n);
  if (v || n.indexOf('$')>=0) {
   if (v) {
    v=String(v).replace(/\&/gi,"%26");
    v=String(v).replace(/\+/gi,"%2B");
    v=String(v).replace(/\//gi,"%2F");
    v=String(v).replace(/\*/gi,"%2A");
   }
   resultado+='&'+n+"="+v;
  }
 }
 //alert(resultado);
 return resultado;
}

function get_element_value(elm) {
 switch(elm.type){
  case 'select-one': return elm.options[elm.selectedIndex].value;
  case "checkbox":
  case 'radio':
   if (elm.checked) return elm.value;
   break;
  case "hidden":
  case "text":
  case "textarea":
  case "password": return elm.value;
 }
}

/*
function eval_scripts(txt) {
 var ScriptFragment='(?:<script.*?>)((\n|\r|.)*?)(?:</script>)';
 var re=new RegExp(ScriptFragment, 'img');
 var scripts=txt.match(re);
 if (scripts) {
  var js='';
  for(var s=0;s<scripts.length;s++) {
   re=new RegExp(ScriptFragment, 'im');
   js+=scripts[s].match(re)[1]+'\n';
  }
  //alert(js);
  eval(js);
 }
}
*/
function eval_scripts(obj) {
 scripts=obj.getElementsByTagName("script")
 for (var i=0;i<scripts.length;i++) {
  //alert(scripts[i].innerHTML);
  //eval(scripts[i].innerHTML);
  var tag_script=document.createElement("script");
  tag_script.type='text/javascript';
  tag_script.text=scripts[i].innerHTML;
  //obj.removeChild(scripts[i]);
  document.body.appendChild(tag_script);
 }
}

function get_XMLHttpRequest() {
 try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
 try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
 try { return new XMLHttpRequest(); } catch(e) {}
 alert("XMLHttpRequest not supported");
 return null;
}

function ajax_load_post(ul,id,myform,cb) {
 ajax_load(ul,id,myform,'POST',cb);
}

function ajax_load_get(ul,id,myform,cb) {
 ajax_load(ul,id,myform,'GET',cb);
}

function ajax_load(ul,id,myform,method,cb) {
 var ajax_obj=get_XMLHttpRequest();
 var obj=document.getElementById(id);
 //obj.innerHTML="Conectando ...";
 if (!method) method='POST';
 ajax_obj.open(method, ul, true);
 ajax_obj.setRequestHeader("Method", method+" "+ ul+" HTTP/1.1");
 ajax_obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 ajax_obj.setRequestHeader("Content-Length", "0");
 ajax_obj.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
 ajax_obj.onreadystatechange=function() {
  /* 0: Uninitizalized, 1: Loading, 2: Loaded, 3: Interactive, 4: Finished */
  //if (ajax_obj.readyState==1) obj.innerHTML="Cargando ..."; else
  if (ajax_obj.readyState==4) {
   if (ajax_obj.status>=400 || ajax_obj.responseText=='') {
    //alert("Error cargando AJAX: "+ul+" => "+ajax_obj.status);
   }
   else {
    obj.innerHTML=ajax_obj.responseText;
    eval_scripts(obj);
   }
   if (cb) cb(ajax_obj);
  }
 }
 if (myform=="[object HTMLFormElement]" || (myform=="[object]" && myform.elements)) ajax_obj.send(form_to_string(myform));
 else ajax_obj.send(myform);
}


function ajax_test(ul,func,myform,method) {
 var ajax_obj=get_XMLHttpRequest();
 if (!method) method='POST';
 ajax_obj.open(method, ul, true);
 ajax_obj.setRequestHeader("Method", method+" "+ ul+" HTTP/1.1");
 ajax_obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 ajax_obj.setRequestHeader("Content-Length", "0");
 ajax_obj.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
 ajax_obj.onreadystatechange=function() {
  /* 0: Uninitizalized, 1: Loading, 2: Loaded, 3: Interactive, 4: Finished */
  //if (ajax_obj.readyState==1) eval(func+"('Cargando ...')"); 
  if (ajax_obj.readyState==4) {
   if (ajax_obj.status>=400 || ajax_obj.responseText=='') {
    alert("ajax_test: HTTP_ERROR "+ajax_obj.status);
   }
   else {
    var js=func+"('"+ajax_obj.responseText+"')";
    //alert("EJECUTANDO: "+js);
    eval(js);
   }
  }
 }
 if (myform=="[object HTMLFormElement]" || (myform=="[object]" && myform.elements)) ajax_obj.send(form_to_string(myform));
 else ajax_obj.send(myform);
}


