
var debug = false;

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

function PeriodicalExecuter(callback, frequency){
	this.timer = null;
	this.callback=callback;
	this.frequency=frequency;
	this.currentlyExecuting = false;
    this.stop=stop;
    this.registerCallback=registerCallback;
    this.registerCallback();
}

function registerCallback() {
    this.timer = setInterval(this.callback, this.frequency * 1000);
}

function stop() {
    if (!this.timer) return;
    clearInterval(this.timer);
    this.timer = null;
}


function hide(element) {
    element = $(element);
    element.style.display = 'none';
    return element;
  }

function show(element) {
    element = $(element);
    element.style.display = '';
    return element;
  }

function changeText(element, text) {
	element = $(element);
	
	var children = element.childNodes;
	
	for(var i = 0; i<children.length; i++) {
		element.removeChild(children[i]);
	}
	
	var newtext = document.createTextNode(text);
	element.appendChild(newtext);
}

function serializeForm(formName) {

	obj_id = formName;
	if(typeof obj_id != 'object')
	{
		obj_id =  document.getElementById(obj_id);
	}

	var elements = obj_id.elements;
	var params = new Array();
	var radio = false;
	var checkbox = false;

	for (var i = 0; i < elements.length; i++) {
		element = elements[i];

		if (element.value != null && element.type != 'file' && element.type != 'submit' && element.type != 'button' ){
		if ((element.type == 'radio') && (!radio)){
			radio = element.name;
			params.push(escape(element.name) + "=");
		}
		if ((element.type == 'checkbox') && (!checkbox)){
			checkbox = element.name;
			params.push(escape(element.name) + "=");
		}
		if (element.name == radio){
			if (element.checked){
				params[(params.length-1)] += escape(element.value);
			}
		} else if (element.name == checkbox){
			if (element.checked){
				params[(params.length-1)] += escape(element.value);
			}
		} else {
			radio = false;
			params.push(escape(element.name) + "=" + escape(element.value));
		}

		}
	}

	params = params.join("&");
	return (params);
}


function GetXmlHttp() {
  var xmlhttp = false;
  if (window.XMLHttpRequest)
  {
    xmlhttp = new XMLHttpRequest()
  }
  else if (window.ActiveXObject)

  {
    try
    {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP")
    } catch (e) {
      try
      {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
      } catch (E) {
        xmlhttp=false
      }
    }
  }
  return xmlhttp;
}



function PassAjaxResponseToFunction(url, callbackFunction, params)
{
  var xmlhttp = new GetXmlHttp();
  /*now we got the XmlHttpRequest object, send the request.*/

  if (xmlhttp)
  {

    xmlhttp.onreadystatechange =
        function ()
        {
          if (xmlhttp && xmlhttp.readyState==4)
          { /*we got something back..*/

	            if (xmlhttp.status==200)
	            {
	              var response = xmlhttp.responseText;
	              var functionToCall = callbackFunction + '(response,'+params+')';
	              if(debug)
	              {
	                alert(response);
	                alert(functionToCall);
	              }
	              eval(functionToCall);
	            } else if(debug){
	              document.write(xmlhttp.responseText);
	            }
          }
        }

    xmlhttp.open("GET",url,true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");
    xmlhttp.send(null);
  }
}



function SetInnerHTMLFromAjaxResponse(url, obj_id, evalScripts, parameters, loadingDiv){
  var xmlhttp = new GetXmlHttp();
  /**now we got the XmlHttpRequest object, send the request.**/

  if (xmlhttp)
  {

    xmlhttp.onreadystatechange =
        function ()
        {
          if (xmlhttp && xmlhttp.readyState==4)
          { /**Completado**/
        	if (loadingDiv) hide(loadingDiv);
            if (xmlhttp.status==200)
            {
	              if(debug)
	              {
	                alert(xmlhttp.responseText);
	              }

	              if(typeof obj_id != 'object')
	              {
	            	obj_id =  document.getElementById(obj_id);
	              }
	              obj_id.innerHTML = xmlhttp.responseText;

	              if (evalScripts){
	                scripts = obj_id.getElementsByTagName("script");
	                for (var i = 0; i < scripts.length; i++) {
	                	script = scripts[i];
		                if (window.execScript) {
		                	window.execScript(script.innerHTML); // eval in global scope for IE
		                } else {
		                	eval(script.innerHTML);
		                }
	                }

	              }

            } else if(debug){
              document.Write(xmlhttp.responseText);
            }
          } else if (xmlhttp && xmlhttp.readyState==1) {
        	/** Cargando**/
  			if (loadingDiv) show(loadingDiv);
          } else if (xmlhttp && xmlhttp.readyState==2) {
        	  /**Cargado**/
          }
        }

    xmlhttp.open("POST", url /*+ "?" + parameters*/,true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");
    xmlhttp.send(parameters);
  }
}


