﻿function $Ajax()
{
	document.ajaxProxy = new _$ajaxProxy();
	
	this.AjaxCall = function(url, objectId)
	{
			document.ajaxProxy.AjaxCall(url, objectId);
	}
	
	this.AjaxExec = function(url)
	{
			document.ajaxProxy.AjaxExec(url, objectId);
	}
	
	this.AjaxGet = function(url, fnc, async)
	{
			document.ajaxProxy.AjaxGet(url, fnc, async, "GET", null);
	}
	
	this.AjaxPost = function(url, fnc, async, params)
	{
			document.ajaxProxy.AjaxGet(url, fnc, async, "POST", params);
	}	
}

function _$ajaxProxy()
{	

	this.AjaxCall = function(url, objectId)
	{
		//return;
		var objXMLHttp = document.ajaxProxy.getXMLHttp();
		if(objXMLHttp == null)
		{
			document.getElementById(objectId).innerHTML = "Error de Ajax";
			return;
		}
		objXMLHttp.onreadystatechange = function()
		{
			if (objXMLHttp.readyState == 4 && (objXMLHttp.status==200 || window.location.href.indexOf("http")==-1))
			{
				var responseText = objXMLHttp.responseText;
				objXMLHttp = null;
				document.getElementById(objectId).innerHTML = responseText;
			}		
		}
		if(url.indexOf("?") == -1)
			url += "?" + Math.random(); 	
		else
			url += "&" + Math.random(); 	
		objXMLHttp.open("GET", url, true) // asignamos los mtodos open y send
		objXMLHttp.send(null)
	}
	
	this.AjaxExec = function(url)
	{
		var objXMLHttp = document.ajaxProxy.getXMLHttp();
		if(objXMLHttp != null)
		{
			objXMLHttp.open("POST", url, true) // asignamos los mtodos open y send
			objXMLHttp.send(null)  
		}
		objXMLHttp = null;
	}
	
	this.AjaxGet = function(url, fnc, async, method, params)
	{
		if(url.indexOf("?") == -1)
			url += "?" + Math.random(); 	
		else
			url += "&" + Math.random(); 	
		var objXMLHttp = document.ajaxProxy.getXMLHttp();
				
		if(objXMLHttp != null)
		{
			objXMLHttp.open(method, url, async) // asignamos los mtodos open y send
			if(async)
			{
				objXMLHttp.onreadystatechange = function()
				{
					if (objXMLHttp.readyState == 4 && (objXMLHttp.status==200 || window.location.href.indexOf("http")==-1))
					{
						var responseText = objXMLHttp.responseText;
						objXMLHttp = null;
						fnc(responseText);
					}					
				}	
			}
			if(params != null)
			{
				objXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				objXMLHttp.setRequestHeader("Content-length", params.length);
				objXMLHttp.setRequestHeader("Connection", "close");				
			}
			objXMLHttp.send(params);  
			if(!async)
			{
						var responseText = objXMLHttp.responseText;
						objXMLHttp = null;
						fnc(responseText);				
			}			
		}
	}

	this.getXMLHttp = function() 
	{
		var xmlhttp = null;
		try 
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (ea) 
		{
			try 
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (eb) 
			{
				xmlhttp = false;
			}
		}
		if (!xmlhttp && typeof(XMLHttpRequest) != "undefined") 
			xmlhttp = new XMLHttpRequest();
		return xmlhttp
	}	
}


function MessageDiv(show, text)
{
	if(show == null)
		show = true;
	if(text == null)
		text = "Cargando...";
	var objBlockDiv = document.getElementById("divBlock");
	if(show)
	{
		if(objBlockDiv == null)
		{
			objBlockDiv = document.createElement("DIV");
			objBlockDiv.id = "divBlock";
			objBlockDiv.style.display = "none";
			objBlockDiv.style.position = "absolute";
			document.body.appendChild(objBlockDiv);
		}
	
		//documentElement
		var clientWidth = "10px"; /*document.body.clientWidth;*/
		var clientHeight = "10px"; /*document.body.clientHeight;*/


		if(navigator.appName == "Netscape")
		{
			clientWidth += "px";
			clientHeight += "px";
			document.body.style.overflow="hidden"; 
		}    
		else
			document.body.scroll="no"; 
 		//objBlockDiv.style.top = document.body.scrollTop + "px";
    //objBlockDiv.style.left = document.body.scrollLeft + "px";    
		objBlockDiv.style.width = clientWidth;
		objBlockDiv.style.height = clientHeight;
		var blockStyle = "z-index: 1; background-color: #000000; color: #ffffff; font-family: Arial; font-size: 12px; font-weight: bold; border: 1px outset; vertical-align: middle; FILTER: alpha(opacity=40);moz-opacity: 0.4; opacity: 0.4; khtml-opacity: 0.4;";
		objBlockDiv.innerHTML = "<table border=\"0\" cellpadding=\"10\" cellspacing=\"0\" width=\"" + objBlockDiv.style.width + "\" height=\"" + objBlockDiv.style.height + "\" style=\"" + blockStyle + "\"><tr><td valign=\"middle\">" + text + "</td></tr></table>";
		objBlockDiv.style.display = "";
		CenterElementOnScreen(objBlockDiv);		
	}
	else
	{
		if(objBlockDiv != null)		
			objBlockDiv.style.display = "none";
		if(navigator.appName == "Netscape")
			document.body.style.overflow = "visible"; 
		else
			document.body.scroll = "auto"; 			
	}
}

function CenterElementOnScreen(element)
{
	var scrollTop = document.body.scrollTop;
	var scrollLeft = document.body.scrollLeft;
	
	var viewPortHeight = document.body.clientHeight;
	var viewPortWidth = document.body.clientWidth;
	
	if (document.compatMode == "CSS1Compat")
	{
		viewPortHeight = document.documentElement.clientHeight;
		viewPortWidth = document.documentElement.clientWidth;
		
		scrollTop = document.documentElement.scrollTop;
		scrollLeft = document.documentElement.scrollLeft;
	}
	
	var topOffset = Math.ceil(viewPortHeight/2 - element.offsetHeight/2);
	var leftOffset = Math.ceil(viewPortWidth/2 - element.offsetWidth/2);
	
	//var top = scrollTop + topOffset - 40;
	//var left = scrollLeft + leftOffset - 70;
	
	var top = scrollTop;
	var left = scrollLeft;
	
	element.style.position = "absolute";
	element.style.top = top + "px";
	element.style.left = left + "px";
} 
