/*  SOURCE FILE: contest_ajax.js */
/* SE USA CONTRA : ajax/ajax_contests.php */
/* HISTORY:
August 02 - 2007 : Created initial version.
*/
/*
Los concursos usan el socket ajax para ejecutar procesos en el servidor y recuperar un mensaje de resultado.
Todos los procesos que se ejecutan estan en el archivo proz/ajax/ajax_contests.php

La respuesta es en formato XML
 y se divide en 2 partes principales: 
 a ) Codigo de respuesta (+ mensaje de respuesta) .
 b ) y contenido 

Usa 2 etiquetas DIV como salidas HTML:
  a) una para el mensaje de respuesta 
  b ) y otro para los datos 
En el caso de que no este seteada alguna de las salidas o no haya mensajes
para escribir en el alguna de ellas se ignora, ya que ambas son opcionales.
PAra el caso que no esta seteada la salida de datos devuelve:
 true, si se completo la tarea
 false, si no se completo la tarea
Se puede setear el valor devuelto al evento que solicito la tarea;  <input type=check onclick="return func();"> 

El objeto (+ socket) AJAX, parsea el resultado y las funciones javascript las escriben en la salida HTML.

Exite una funcion para cada salida
y esta funcion la pasamos como callback function al abrir la conexion ajax
*/
function ca_retrieveURL(obj_params, call_back_function, obj_response_message, obj_response_results, call_back_function_support_errors, request_type) {
  var req;
  var ajax_url = "ajax/ajax_contests.php";
  //var tmp_obj_params = obj_params;
  //var tmp_call_back_function = call_back_function;
  var params_string = "";
  for (var key in obj_params) {params_string += (params_string?"&":"")+key+'='+obj_params[key];}
   //alert("Ajax params => " + params_string);   
  if (window.XMLHttpRequest) { // Non-IE browsers
    req = new XMLHttpRequest();
    req.onreadystatechange = ca_processStateChange;
    try {
      req.open("POST", ajax_url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
      req.send(params_string);
    } catch (e) { alert("Opening Socket Error => " + e); }
  } else if (window.ActiveXObject) { // IE
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = ca_processStateChange;
      req.open("POST", ajax_url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
      req.send(params_string);
    }
  }
  function ca_processStateChange() {
    switch (req.readyState) {
      case 4: { // Complete
        if (req.status == 200 || call_back_function_support_errors) { // OK response
          //retType == "text" 
          error_forced = (req.status != 200 ) ? true : false; 
          if (request_type = "text") call_back_function(req.responseText, obj_response_message, obj_response_results,obj_params, error_forced);
          else call_back_function(req.responseXML, obj_response_message, obj_response_results, obj_params, error_forced);
        } else alert("Problem => " + req.statusText);
      } break;
    }
  }
}
/*--------------------------------
  HTML Callbacks.
  Funciones que escriben las Salidas HTML 
  a partir de los datos en XML
-------------------------------- */
function ca_writeNotificationEnabledHTML(xml_doc, obj_response_message, obj_response_results, obj_params, error_forced) {
  var date = new Date();
  var date_string = date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
  if (xml_doc=="true" && !error_forced) {
    if (obj_response_message!=null) obj_response_message.innerHTML = "<font color=blue>Saved: "+date_string+"</font>";
  } else {
    // back to previous value
    if (obj_response_results) obj_response_results.checked = !obj_response_results.checked;
    if (obj_response_message!=null) obj_response_message.innerHTML = "<font color=red>Error: "+date_string+"</font>";
  }
}
function ca_writePromotionItemEnabledHTML(xml_doc, obj_response_message, obj_response_results, obj_params, error_forced) {
  var date = new Date();
  var date_string = date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
  if (xml_doc=="true" && !error_forced) {
    if (obj_response_message!=null) obj_response_message.innerHTML = "<font color=blue>Saved: "+date_string+"</font>";
  } else {
    // back to previous value
    if (obj_response_results) obj_response_results.checked = !obj_response_results.checked;
    if (obj_response_message!=null) obj_response_message.innerHTML = "<font color=red>Error: "+date_string+"</font>";
  }
}
// var response_text = "";
// for (var key in obj_params) {response_text +=  obj_params[key];}
// alert("Ajax response => " + response_text); 
