var ajaxURL="ajax.htm";

/**
 * 
 * @param func
 * @param params
 * @param callbackFunc
 * @return
 */
function execAjaxFunc(func, params, callbackFunc) {
  if (callbackFunc == null) {
    alert("No ha sido definida función callback en 'execAjaxFunc'");
  }
  var options = {
    method: 'get',
    parameters: getAjaxParams(func, params),
    onComplete: function(transport) {
      if (callbackFunc != null) {
        if (typeof(transport.responseText) == 'string') {
          try {
            transport.responseJSON = transport.responseText.evalJSON(true);
          } catch (e) {}
        }
        callbackFunc(transport);
      }
    },
    onFailure: function(transport) {
      alert(transport.Text);
    }
  }
  var myAjax = new Ajax.Request(ajaxURL, options);
}

/**
 * 
 * @param func
 * @param params
 * @return
 */
function getAjaxParams(func, params) {
  var result = 'func=' + func;
  var item=0;
  params.split(",").each(function(param){ 
    result += "&arg" + (++item) + "=" + param;
  });
  return result;
}

function inicializarSelect(selectObj, valor, texto) {
  selectObj = $(selectObj); 
  while (selectObj.options.length > 0) {
    selectObj.remove(0);
  }
  if (valor != null || texto != null) {
    var option = document.createElement("OPTION");
    option.value = valor;
    option.text = texto
    selectObj.options.add(option);
  }
}

/**
 * Rellena un control 
 */
function rellenarSelect(selectObj, jsonObj, campoValue, campoText) {
  var nItems=0;
  if (typeof(selectObj) == 'string') {
    selectObj = $(selectObj);
  }
  if (typeof(jsonObj) == 'string') {
    jsonObj = jsonObj.evalJSON(true);
  }
  jsonObj.each(function(obj, index) {
    var option = document.createElement("OPTION");
    option.value = obj[campoValue];
    option.text = obj[campoText];
    selectObj.options.add(option);
    nItems++;
    });
  return nItems;
}

/**
 *  Rellena el control partiendo de una descarga en AJAX
 */
function rellenarSelectAjax(func, params, selectObj, campoValue, campoText, callbackFunc) {
  var options = {
     method: 'get',
     parameters: getAjaxParams(func, params),
     onComplete: function(transport) {
       var nItems = rellenarSelect($(selectObj), transport.responseText, campoValue, campoText);
       if (callbackFunc != null) {
         callbackFunc(nItems);
       }
     },
     onFailure: function(transport) {
       alert(transport.Text);
     }
  }
  var myAjax = new Ajax.Request(ajaxURL, options);
} 
