//<![CDATA[	

/************************************************************************/
/* Funciones AJAX para la gestión de administracion
/************************************************************************/


/* FUNCIONES AJAX */
/* Usando Prototype */

function getHTML(url, pars, placeholder)
{
	var myAjax = new Ajax.Updater(placeholder, url, { method: 'get', parameters: pars });
}

/* Clase para el login de Usuarios */
/*
	divForm: Id capa del formulario
	divError: Id capa de mensaje de error
	divWait: Id capa de mensaje de espera
	urlValidate: Url de validacion
	urlRefresh (opcional): Url de refresco de la pagina
*/
function UserLogin(divForm, divError, divWait, urlValidate, urlRefresh)
{
	this.DivForm = divForm;
	this.DivError = divError;
	this.DivWait = divWait;
	this.UrlValidate = urlValidate;
	this.UrlRefresh = urlRefresh;
	
	this.Login = function(idUser, idPassword)
	{
		var md5pass = hex_md5($F(idPassword));
		var params = Form.Element.serialize(idUser) + '&usuario_md5=' + md5pass;
		var divWait = this.DivWait;
		var divError = this.DivError;
		var divForm = this.DivForm;
		var urlRefresh = this.UrlRefresh;
		$(divForm).hide();
		$(divWait).show();
		new Ajax.Request(this.UrlValidate, {
			method: 'get',
			parameters: params,
			onComplete: function(request)
			{
				if(request.status != 200)
				{
					$(divWait).hide();
					$(divForm).show();
					$(divError).innerHTML = "Error: " + request.status;
					$(divError).show();
				}
				else
				{
					if(request.responseText.charAt(0) == "/")
					{
						$(divWait, divError, divForm).invoke('hide');
						document.location = request.responseText;					
					}
					else
					{
						if(request.responseText == "ok")
						{
							$(divWait, divError, divForm).invoke('hide');
							document.location = urlRefresh;
						}
						else
						{
							$(divError, divForm).invoke('show');
							$(divWait).hide();
							$(divError).innerHTML = request.responseText;
						}
					}
				}
			}
		});
	};
	
	// LOGIN USANDO JSON
	this.LoginJSON = function(idUser, idPassword)
	{
		var md5pass = hex_md5($F(idPassword));
		var params = Form.Element.serialize(idUser) + '&usuario_md5=' + md5pass;
		var divWait = this.DivWait;
		var divError = this.DivError;
		var divForm = this.DivForm;
		var urlRefresh = this.UrlRefresh;
		$(divForm).hide();
		$(divWait).show();
		new Ajax.Request(this.UrlValidate, {
			method: 'get',
			parameters: params,
			onComplete: function(request)
			{
				if(request.status != 200)
				{
					$(divWait).hide();
					$(divForm).show();
					$(divError).innerHTML = "Error: " + request.status;
					$(divError).show();
				}
				else
				{
					var data = request.responseText.evalJSON();
					if(data.ResultOk)
					{
						$(divWait, divError, divForm).invoke('hide');

						//Redireccion
						if(data.UrlRedirect.length > 0)
							document.location = data.UrlRedirect;
						else
							document.location = this.UrlRefresh;
					}
					else
					{
						$(divError, divForm).invoke('show');
						$(divWait).hide();
						$(divError).innerHTML = data.ErrorMessage;
					}
				}
			}
		});
	};
	
}




/* ---------------------------------------------------------- */
//  Petición AJAX genérica
/* ---------------------------------------------------------- */
function AjaxRequest(url, param, placeholder)
{
	new Ajax.Request(url, {
	method: 'get',
	parameters: param,
	onLoading: function(request) {
			//$(placeholder).innerHTML += "onLoading";
			//$(placeholder).innerHTML += request.responseText;
		},
	onLoaded: function(request) {
			//$(placeholder).innerHTML += "onLoaded";
			//$(placeholder).innerHTML += request.responseText;
		},
	onInteractive: function(request) {
			//$(placeholder).innerHTML += "onInteractive";
			//$(placeholder).innerHTML = request.responseText;
		},		
	onComplete: function(request) {
		if(request.status != 200)
		{
			$(placeholder).innerHTML = "Unavailable. " + request.status;
		}
		else
		{
			$(placeholder).innerHTML = request.responseText;
		}
		}
	});
}


/* ---------------------------------------------------------- */
//  Petición AJAX Mover
/* ---------------------------------------------------------- */
function PeticionAjaxMover(url, param, urlRecarga)
{
	//alert(url + " " + param);
	alert(urlRecarga);
	new Ajax.Request(encodeURIComponent(url), {
	method: 'get',
	parameters: param,
	onLoading: function(request) {
			//$(placeholder).innerHTML += "onLoading";
			//$(placeholder).innerHTML += request.responseText;
		},
	onLoaded: function(request) {
			//$(placeholder).innerHTML += "onLoaded";
			//$(placeholder).innerHTML += request.responseText;
		},
	onInteractive: function(request) {
			//$(placeholder).innerHTML += "onInteractive";
			//$(placeholder).innerHTML = request.responseText;
		},		
	onComplete: function(request) {
		if(request.status != 200)
		{
			alert("Unavailable. " + request.status + url);
		}
		else
		{
			if(request.responseText == "ok")
			{
				//request.responseText;
				alert("Elemento movido");
				if(window.opener)
				{
					window.opener.document.location = window.opener.document.location;
				}
				window.close();
			}
			else
			{
			}
		}
		}
	});
}

/* ---------------------------------------------------------- */
//  Petición AJAX Nuevo elemento y Eliminar
/* ---------------------------------------------------------- */
function PeticionAjaxProceso(url, param, urlRecarga, mensaje)
{
	new Ajax.Request(url, {
	method: 'get',
	parameters: param,
	onLoading: function(request) {
			//$(placeholder).innerHTML += "onLoading";
			//$(placeholder).innerHTML += request.responseText;
		},
	onLoaded: function(request) {
			//$(placeholder).innerHTML += "onLoaded";
			//$(placeholder).innerHTML += request.responseText;
		},
	onInteractive: function(request) {
			//$(placeholder).innerHTML += "onInteractive";
			//$(placeholder).innerHTML = request.responseText;
		},		
	onComplete: function(request) {
		if(request.status != 200)
		{
			alert("Error: " + request.status + url);
		}
		else
		{
			if(request.responseText == "ok")
			{
				document.location = urlRecarga;
			}
			else
			{
				alert(request.responseText);
			}
		}
		}
	});
}



/* ---------------------------------------------------------- */
//  Petición AJAX para cambio de visibilidad
/* ---------------------------------------------------------- */
function sendVisibility(IdPanel, url, param)
{
	new Ajax.Request(url, {
	method: 'get',
	parameters: param,
	onComplete: function(request) {
		if(request.status != 200)
		{
			alert("Error: " + request.status + url);
		}
		else
		{
			if(request.responseText.length == 0)
			{
				$(IdPanel).toggle();
				var IdObj = $(IdPanel).previous(0).id;
			
				if($(IdObj).hasClassName('header_panel'))
				{
					$(IdObj).removeClassName('header_panel');
					$(IdObj).addClassName('header_panel_inactive');
				}
				else
				{
					if($(IdObj).hasClassName('header_panel_inactive'))
					{
						$(IdObj).removeClassName('header_panel_inactive');
						$(IdObj).addClassName('header_panel');
					}
				}
			}
		}
		}
	});
}


/* ---------------------------------------------------------- */
//  Petición AJAX de CheckBoxes
/* ---------------------------------------------------------- */
function sendCheck(objCheck, url, param)
{
	new Ajax.Request(url, {
	method: 'get',
	parameters: param,
	onComplete: function(request) {
		if(request.status != 200)
		{
			alert("Error: " + request.status + url);
		}
		else
		{
			if(request.responseText.length != 0)
			{
				objCheck.checked = false;
			}
		}
		}
	});
}





/* ---------------------------------------------------------- */
// Realiza la petición Ajax para el login de usuarios
/* ---------------------------------------------------------- */
function AjaxRequestValidation(url, param, id_input, contador)
{
	new Ajax.Request(url, {
	method: 'get',
	parameters: param,
	onLoading: function(request) {
		},
	onLoaded: function(request) {
		},
	onInteractive: function(request) {
		},		
	onComplete: function(request) {
			if(request.status != 200)
			{
				alert("error: " + request.status);
			}
			else
			{
				if(request.responseText != "ok")
				{
					if(!$('error_validacion_' + contador))
					{
						new Insertion.Bottom($(id_input).up().previous('label'), '<span id=\"error_validacion_' + contador + '\" class=\"error_validacion\">' + request.responseText + '</span>');
						$('frmMain').onsubmit = function() {return false;};
					}
				}
				else
				{
					Element.remove('error_validacion_' + contador);
					$('frmMain').onsubmit = function() {return true;};
				}
			}
		}
	});
}





/* ---------------------------------------------------------- */
//  Clase Ventana 
/* ---------------------------------------------------------- */
function WindowCore(pName)
{
	if(pName)
	{
		this.Name = pName;
		if(this.Name.length == 0)
			this.Name = "popUp";
	}
	else
	{
		this.Name = "popUp";
	}
	this.Width = arguments[1];
	this.Height = arguments[2];
	this.Top = arguments[3];
	this.Left = arguments[4];
	var oWindow = 0;

	var _openWindow = function(_Url, _Name, _Options)
	{
		if(oWindow)
		{
			if(!oWindow.closed) oWindow.close();
		}
		oWindow = window.open(_Url, _Name, _Options);
	};
	
	this.OpenWindow = function(url, width, height, top, left)
	{
		if(!width) width = this.Width;
		if(!height) height = this.Height;
		if(!top) top = this.Top;
		if(!left) left = this.Left;
		
		if(!width || !height)
		{
			width = 840;
			height = 620;
			top = (screen.height - 620)/2;
			left = (screen.width - 840)/2;
		}
		if(!top || !left)
		{
			top = (screen.height - 620)/2;
			left = (screen.width - 840)/2;
		}

		if(url)
			_openWindow(url, this.Name, 'toolbar=no,location=yes,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',screenX=' + left + ',screenY=' + top);

		return false;
	};
}


function reloadPage(oWindow, url)
{
	if(oWindow)
	{
		if(!url)
		{
			oWindow.location = oWindow.location.href;
		}
		else
		{
			oWindow.location = sLocation;
		}
	}
}













function tabberSelecction(idtabber, position)
{
  var oldOnLoad;
  oldOnLoad = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = function() {
      var tab = document.getElementById(idtabber);
      var c = tab.tabber.cookie;
      var i = position;
      setCookie(c, i);
      tab.tabber.tabShow(position);
    };
  } else {
    window.onload = function() {
      oldOnLoad();
      var tab = document.getElementById(idtabber);
      var c = tab.tabber.cookie;
      var i = position;
      setCookie(c, i);
      tab.tabber.tabShow(position);
    };
  }
}




/* -------------------------------------------------------- */
/* Agrega un evento al body onload respetando los que ya existen */
/* -------------------------------------------------------- */
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

/* -------------------------------------------------------- */
/* Recarga la ventana "opener" */
/* -------------------------------------------------------- */
function ReloadOpenerWindow(page)
{
	if(page)
		opener.window.location.href = page;
	else
		opener.window.location.href = opener.window.location.href;
}






/* -------------------------------------------------------- */
/* Mueve los elementos de un select multiple */
/* -------------------------------------------------------- */
function MoveSelectedOptions(idListA, idListB)
{
	var optionsList = new Array();
	var listA = $(idListA);
	var listB = $(idListB);
	var i=0;
	
	for(i=0; i<listA.options.length; i++)
	{
		if(listA.options[i].selected)
		{
			optionsList.push(i);
		}
	}
	for(i=0; i<optionsList.length; i++)
	{
		listB.options[listB.length] = new Option(listA.options[optionsList[i]].text, listA.options[optionsList[i]].value);
	}
	for(i=0; i<optionsList.length; i++)
	{
		listA.options[optionsList[i]] = null;
	}
}




//]]>