/*
Libreria de funciones, para la creacion de objetos de peticion, validaciones y
manejo de barra de estado.
*/

var out = "", indent=0;

function estaVacio(local){
	return (local=="" || local==null) ? true: false;
}


function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer") {
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}

function ajaxSend(url, callback){
	function ajaxBindCallback(){
		if (ajaxRequest.readyState == 4) {
			if (ajaxRequest.status == 200) {
				if (ajaxCallback){
					ajaxCallback(ajaxRequest.responseText);
				} 
			} 
		}
	}
	
	var ajaxRequest = null;
	var ajaxCallback = callback;
	
	if (window.XMLHttpRequest) {
		ajaxRequest = new XMLHttpRequest();
		ajaxRequest.onreadystatechange = ajaxBindCallback;
		ajaxRequest.open("GET", url, true);
		ajaxRequest.send(null);
	} 
	else if (window.ActiveXObject) { 
		ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
		if (ajaxRequest) {
			ajaxRequest.onreadystatechange = ajaxBindCallback;
			ajaxRequest.open("POST", url, true);
			ajaxRequest.send();
		}
	}
}

function ajaxSendXML(url, callback){
	function ajaxBindCallback(){
		if (ajaxRequest.readyState == 4) {
			if (ajaxRequest.status == 200) {
				if (ajaxCallback){
					ajaxCallback(ajaxRequest.responseXML.lastChild);
				}
			}
		}
	}
	
	var ajaxRequest = null;
	var ajaxCallback = callback;
	
	if (window.XMLHttpRequest) {
	ajaxRequest = new XMLHttpRequest();
	ajaxRequest.onreadystatechange = ajaxBindCallback;
	ajaxRequest.open("GET", url, true);
	ajaxRequest.send(null);
	}
	else if (window.ActiveXObject) {
	ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
	if (ajaxRequest) {
	ajaxRequest.onreadystatechange = ajaxBindCallback;
	ajaxRequest.open("GET", url, true);
	ajaxRequest.send();
	}
	}
}

/**regresa un arreglo de dos posiciones con la distancia (Offset) de desplazamiento entre el punto y el punto al mozaico k pertenece
*/
function getOffSET(x,y,z){
//public static void WGS84toXYZ(double lon, double lat, int z, long [] XY, long [] offsetXY) 
	var XYZN27 = 27;
	var ZOOM = 19;

	var zz = XYZN27 - z;

	var XY=new Array(2);
	XY[0] = x >> (z+8); // XN19
	XY[1] = y >> (z+8); // YN19
		 //z-> 19 - 2= 17
	var xr = (x >> (z));
	var yr = (y >> (z));
	var offsetXY=new Array(2);
	offsetXY[0] = xr % 256;
	offsetXY[1] = yr % 256;

	return offsetXY;
}
/** Regresa el numero a nivel 19 para el zoom(zz) corespondiente.
	auxnu27= numero a nivel 27
*/
function getNumeroZ19(auxnu27,zz){
	var z=new Number(zz);
	var nu27=new Number(auxnu27);
	
	var n =  nu27 >> (z+8); // 
	return n;
	
}

var sites=new Array();
var idGenReferencesString="";

function show(idGenReferences){	
	if(idGenReferences==undefined&&idGenReferences.length==0)
		return;	
	mySelections = 	idGenReferences;		
	var svg=document.embeds[0].getSVGDocument();
	var layerTag=svg.getElementById("Layer_GEN_REFERENCES");	
	if(layerTag != null && layerTag != undefined){
		for(var j=0;j<mySelections.length;j++){		
			for(var layer=layerTag.firstChild; layer!=null; layer=layer.nextSibling){
				for(var i=0; i<layer.childNodes.length; i++){
					var location=layer.childNodes.item(i);
					var id = Trim(location.getAttribute("id"));
					var idChild = Trim("imageReferences_"+idGenReferences[j]);
					if(id==idChild)
						location.setAttribute("visibility", "visible");				
				}
			}
		}			
	}
}
	
//----- TRYm -----//
function Trim( str ) {
	var resultStr = "";
	resultStr = TrimLeft(str);
	resultStr = TrimRight(resultStr);
	return resultStr;
}

function TrimLeft( str ) {
	var resultStr = "";
	var i = len = 0;
	if (str+"" == "undefined" || str == null) 
		return "";
	str += "";
	if (str.length == 0) 
		resultStr = "";
	else { 
		len = str.length;
		while ((i <= len) && (str.charAt(i) == " "))
			i++;
		resultStr = str.substring(i, len);
	}
	return resultStr;
}

function TrimRight( str ) {
	var resultStr = "";
	var i = 0;
	if (str+"" == "undefined" || str == null) 
		return "";
	str += "";
	if (str.length == 0) 
		resultStr = "";
	else {
		i = str.length - 1;
		while ((i >= 0) && (str.charAt(i) == " "))
			i--;
		resultStr = str.substring(0, i + 1);
	}	
	return resultStr; 
}

/*pone en top el elemento 1 del segundo
*/
function zSwap(parent, elem1, elem2)
{
   var tmp = elem1.cloneNode( true );
   parent.replaceChild( tmp, elem2 );
   parent.replaceChild( elem2, elem1 );
   delete tmp;
}

// utilities.js

function Valida_Texto(myfield, e, tipovalida)
{
	var key;
	var keychar;
	var cadena_valida;
	var cadena_valida2='';

	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
	if(key==13)
		return false;
	if(key==161)
		key = 1;//165
	if(key==209)
		key = key-44;//165
	else if(key==241)
		key = key-77;//164
	else if(key==225)
		key = key-65;//160
	else if(key==233)
		key = key-103;//130
	else if(key==237)
		key = key-76;//161
	else if(key==243)
		key = key-81;
	else if(key==250)
		key = key-87;
	else if(key==220)
		key = key-66;
	else if(key==252)
		key = key-123;
		
	/*VOCALES MAYUSCULAS*/
	else if(key==193)
		key = key-33;
	else if(key==201)
		key = key-71;
	else if(key==205)
		key = key-44;
	else if(key==211)
		key = key-49;
	else if(key==218)
		key = key-55;
	
	if ( key == 129 || key == 130 || key == 160 || key == 161 || key == 162 || 
	     key == 163 || key == 164 || key == 165 || key == 154 )
            cadena_valida2 = String.fromCharCode(key);
	//alert(key);
	
	keychar = String.fromCharCode(key);
	if(tipovalida!=null){
		if (tipovalida.toString().toLowerCase()=='t') {//acepta s?lo texto
			cadena_valida = "abcdefghijklmnopqrstuvwxyz1234567890.: ";
			cadena_valida += cadena_valida2;
		}
		else if (tipovalida.toString().toLowerCase()=='r') //acepta s?lo reales positivos
			cadena_valida = "0123456789.";
		else if (tipovalida.toString().toLowerCase()=='e') //acepta s?lo enteros positivos
			cadena_valida = "0123456789";
		else if (tipovalida.toString().toLowerCase()=='l') { //acepta s?lo letras
			cadena_valida = "abcdefghijklmnopqrstuvwxyz ";
			cadena_valida += cadena_valida2;
		}
		else if (tipovalida.toString().toLowerCase()=='h') //acepta solo numeros y :
			cadena_valida = "0123456789:";
	    
	    // Pamela
	    else if (tipovalida.toString().toLowerCase()=='a') {//acepta solo letras,numeros  . ,
	    	cadena_valida = "abcdefghijklmnopqrstuvwxyz0123456789.\"\&,' ";
	    	cadena_valida += cadena_valida2;
		}
		else if (tipovalida.toString().toLowerCase()=='b') {//acepta solo letras,numeros y -
			cadena_valida = "abcdefghijklmnopqrstuvwxyz0123456789- ";	
			cadena_valida += cadena_valida2;
		}
		else if (tipovalida.toString().toLowerCase()=='c') {//acepta solo letras,numeros
			cadena_valida = "abcdefghijklmnopqrstuvwxyz0123456789";
			cadena_valida += cadena_valida2;
		}
		if (tipovalida.toString().toLowerCase()=='d') {//direccion
			cadena_valida = "abcdefghijklmnopqrstuvwxyz1234567890,.:-_{[}]?!#&/() ";
			cadena_valida += cadena_valida2;
		}
		else if (tipovalida.toString().toLowerCase()=='g') //acepta solo numeros y ()
			cadena_valida = "0123456789()-";
		if (tipovalida.toString().toLowerCase()=='i') {//
			cadena_valida = "abcdefghijklmnopqrstuvwxyz1234567890. ";
			cadena_valida += cadena_valida2;
		}
	
		if ((cadena_valida).indexOf(keychar.toLowerCase()) > -1 || key==8 || key==13 || key==0)
		  return true;
		else
		  return false;
	}
}



