var LOADS = Array();
var GROUPS = Array();
var Ajax = new Ajax;

function $onEnter(key,fun) {
    var unicode
    if (key.charCode)
        unicode=key.charCode;
    else
        unicode=key.keyCode;
    if (unicode == 13)
        eval(fun);
}

function $(id)
{
    return document.getElementById(id);
}

function Group(ids){  
  this.sids = new String(ids);
  this.vids = this.sids.split(',');
  this.getValues = function (){
    values = "";
    for (var i=0; i < this.vids.length; i++) {     
      if($(this.vids[i])!=null){
        if(values!="") values += "&";
        values += this.vids[i]+"="+$(this.vids[i]).value;
      }       
    };
    return values;
  }
}

function addValuesGroup(name,grupo){
  GROUPS[name] = new Group(grupo);
}

function getValuesGroup(name){
  return GROUPS[name];
}

function Ajax()
{
    this.update = function (name,source,div,seconds){
      $load(name,"GET",source,div,'',seconds,'');
    }    
    this.unique = function (name,source,div){
      $load(name,"GET",source,div,'',0,'');
    }
    this.request = function (name,source,div,method,pars,ini){
      $load(name,method,source,div,pars,0,ini); 
    }
    return this;
}

function $load(p_id,p_met,p_url,p_div,p_par,p_seconds,p_ini){
    if(p_seconds>0){     
      p_seconds *=1000;
      if(!LOADS[p_id]){
        LOADS[p_id] = new  $uniqueLoad(p_id,p_met,p_url,p_par,p_div,p_ini,true);
      }else{
        LOADS[p_id].req.parameters=p_par;
      }
      LOADS[p_id].load();
      setInterval("LOADS['"+p_id+"'].load()",p_seconds);
    }else{
      if(!LOADS[p_id]){
        LOADS[p_id] = new  $uniqueLoad(p_id,p_met,p_url,p_par,p_div,p_ini,false);
      }else{
        LOADS[p_id].req.parameters=p_par;
      }     
      LOADS[p_id].load();      
    }
}

function $uniqueLoad(p_id,p_met,p_url,p_par,p_div,p_ini,p_update)
{    
    this.loading="";
    this.div=p_div;
    this.ini=p_ini;
    this.update=p_update;     
    this.req = new request(this,p_met,p_url,p_par);
    this.load = function (){     
      if(this.loading!=p_id){
        this.loading=p_id;            
        this.req.load(p_par);
      }
    }   
    this.ok = function (){
      this.loading = "";
      eval(this.ini);
    }    
    return this;
}

function request(p_resp,p_met,p_url,p_par)
{
    this.url = p_url;
    this.req = null;
    this.parameters = p_par;
    this.load = function (){         
      if (window.XMLHttpRequest) {
          this.req = new XMLHttpRequest();        
      } else if (window.ActiveXObject) {
          this.req = new ActiveXObject("Microsoft.XMLHTTP"); 
      }
      this.req.onreadystatechange = state;
      this.req.resp = this.resp;
      if(this.method == "POST"){
          this.req.open('POST', this.url, true);
          this.req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          this.req.setRequestHeader("Content-length", this.parameters.length);
          this.req.setRequestHeader("Connection", "close");
          this.req.send(this.parameters);
      }else{
          if(this.parameters!='') var tempurl = this.url+"?"+this.parameters;
          else var tempurl = this.url;
          this.req.open("GET",tempurl, true);       
          this.req.send(null);
      } 
    }
    this.resp = p_resp;
    this.method = p_met;      
}

function state(){
    var response = document.getElementById(this.div);
    if(this.readyState == 4){  
        if(this.resp.div!="" && $(this.resp.div)){
          $(this.resp.div).value=this.responseText;
          $(this.resp.div).innerHTML=this.responseText;          
        }          
        this.resp.ok();   
    } else {
        if(this.resp.div!="" && $(this.resp.div) && this.resp.update==false) $(this.resp.div).innerHTML="Loading...";
    }
}
