/** UTILIDADES BASICAS DE AJAX **/

var TidAjax = new Object();
TidAjax.configuration = new Object();
TidAjax.configuration.logIExplorer = false;

/**
 * Carga una URL a traves de AJAX para que la trate una funcion determinada
 */
function cargarAJAX(url, funcion)
{
	if (window.XMLHttpRequest)
	{
		httpRequest = new XMLHttpRequest();
	} else if (window.ActiveXObject)
	{
		try
 		{
  			httpRequest = new ActiveXObject("MSXML2.XMLHTTP");
 		} catch (e)
		{
  			try
  			{
   				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  			} catch (e)
  			{
   				httpRequest = false;
  			}
 		}
	}

	if (!httpRequest)
	{
		log("No ha sido posible crear una instancia de XMLHttpRequest");
		return false;
	}
	httpRequest.onreadystatechange = funcion;

	httpRequest.open('GET',url, true);
	httpRequest.send(null);
	return httpRequest;
}

function cargarHTMLDOM () {
	if (document.execute) {
	}
}

/**
 * Logea simplemente un mensaje dependiendo del navegador
 */
function log (mensaje)
{
	try {
		if (console) {
			console.log(mensaje);
		}
	} catch(e)
	{
		if (TidAjax.configuration.logIExplorer) {
			alert(mensaje);
		}
	}
}

/**
 * Intercambia la visibilidad de un menu
 */
function switchMenu(id) {
	var menu = document.getElementById(id);
	if (menu!=null) {
		if (menu.style.display.indexOf("block")>=0) {
			menu.style.display="none";
		} else {
			menu.style.display="block";
		}
	}
}

/**
 * Hace visible un menu oculto
 */
function displayMenu(id) {
	var menu = document.getElementById(id);
	if (menu!=null) {
		menu.style.display="block";
	}
}

/**
 * Oculta un menu
 */
function hideMenu(id) {
	var menu = document.getElementById(id);
	if (menu!=null) {
		menu.style.display="none";
	}
}

/**
 * Aņade texto a un determinado elemento
 */
function addTextContent(node, text) {
	if (node) {
		log("removing nodes");
		while(node.firstChild) {
			node.removeChild(node.firstChild);
			log("one node removed");
		}
		var textNode = document.createTextNode(text);
		log("created text node "+textNode);
		node.appendChild(textNode);
		log("text node appended "+textNode);
	}
}

/**
 * Aņade un atributo a un nodo
 */
function addAttribute(node, name, value) {
	if (node) {
		node.setAttribute(name,value);
	}
}

/**
 * Devuelve el primer nodo XPath
 */
function getXPathFirstNode(node, expr) {
	if (node && expr) {
		var xpathResult = false;
		if (node.nodeType==9) {
			xpathResult = document.evaluate(expr,node,null,XPathResult.ANY_TYPE,null);
		} else {
			var id = node.getAttribute("id");
			xpathResult = document.evaluate("//*[@id='"+id+"']"+expr,node,null,XPathResult.ANY_TYPE,null);
		}
		if (xpathResult) {
			return xpathResult.iterateNext();
		}
	}
}

/** FIN DE UTILIDADES BASICAS DE AJAX **/

/** COMIENZAN LAS UTILIDADES DE EFECTOS **/

/**
 * Efecto de fade in
 */
function fadeIn(id,vel) {
	var element = document.getElementById(id);
	if (element && element.style && element.style.opacity) {
		var opacity = eval(element.style.opacity);
		if (opacity < 1) {
			opacity += 0.1;
			element.style.opacity = opacity;
			setTimeout("fadeIn('"+id+"')",vel);
		}
	}
}

/**
 * Efecto de Zoom In
 */
function zoomIn(id,size,incSize, endSize,vel) {
	var element = document.getElementById(id);
	var width = size + incSize;
	var pos = (100 - width)/2;
	if (size<endSize) {
		size = size + incSize;
		element.style.width=width+"%";
		element.style.height=width+"%";
		element.style.top=pos+"%";
		element.style.left=pos+"%";
		setTimeout("zoomIn('"+id+"',"+size+","+incSize+","+endSize+","+vel+")",vel);
	}
}

function getCursorPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    }
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX +
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY +
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

/** FIN DE UTILIDADES DE EFECTOS **/

/** COMIENZAN LAS UTILIDADES DE COMUNICACIONES **/

function loadExternalDocument (url) {
	var lib=document.createElement('script');
	// var sipURI = "sip:" + user;
	lib.src=url;
	lib.type="text/javascript";
	var id = "tsdk_tajx_"+getIdFromURL(url);
	lib.id=id;
	document.getElementsByTagName("HTML")[0].getElementsByTagName("HEAD")[0].appendChild(lib);
	setTimeout("_removeExternalDocumentLibrary('"+id+"')",5000);
}

function jmaf(url){
	alert(url);

	var lib=document.createElement('script');

	alert("Creado Elemento");
        // var sipURI = "sip:" + user;
        lib.src=url;
        lib.type="text/javascript";
        var id = "tsdk_tajx_"+getIdFromURL(url);
        lib.id=id;
        document.getElementsByTagName("HTML")[0].getElementsByTagName("HEAD")[0].appendChild(lib);
        alert("script appended");
	setTimeout("_removeExternalDocumentLibrary('"+id+"')",5000);
}

function _removeExternalDocumentLibrary (id) {
	log("<tidAjax>\tRemoving external document library "+id);
	var lib = document.getElementById(id);
	lib.parentNode.removeChild(lib);
}

function getIdFromURL (url) {
	return url.replace(/[\/:?&=\s]/g,"");
}

function loadStylesheet (url) {
	var link = document.createElement('link');
	addAttribute(link,"rel","stylesheet");
	addAttribute(link,"href",url);
	addAttribute(link,"type","text/css");
	document.getElementsByTagName("HTML")[0].getElementsByTagName("HEAD")[0].appendChild(link);
}

/** FIN DE UTILIDADES DE COMUNICACIONES **/
