var xml = new ActiveXObject("Microsoft.XMLDOM");

function obtengoUrl() { 
	// Obtención de la URL. 
	url = document.location.href ; 
	// División en trozos con la barra como delimitador. 
	partes = url.split('/'); 
	
	auxUrl = partes[partes.length-1];
	//alert(encodeURI(auxUrl));
	window.location = 'index.asp?p=login&seccion=Login&url='+ encodeURIComponent(auxUrl);
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function removeChar( strValue, char ) {
  var objRegExp = new RegExp(char, "g"); //search for char globally
  return strValue.replace(objRegExp,'');
}

function validarEMail(strValue) {
	var objRegExp  = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
	  return objRegExp.test(strValue);
}

function clnInt(x) {
	return parseInt('0'+x, 10);
}
function clnFlt(x) {
	return parseFloat('0'+x);
}
function clnStr(x) {
	removeChar(x, '\'');
	return x;
}

function xmlCombo( combo, tabla, id, descripcion, idSelected, where ) {
	xml.async = false;
	//alert("xmlCombo.asp?tabla="+tabla+"&id="+id+"&descripcion="+descripcion);
	xml.load("xmlCombo.asp?tabla="+tabla+"&id="+id+"&descripcion="+descripcion+"&where="+where);
	xmlObj = xml.documentElement;	

	if (xmlObj.hasChildNodes()) { // atencion!!! los nombres de los campos del form deben ser iguales a los nombres de los campos de la tabla
		var obj = xmlObj.childNodes, nodos;
		nodos = obj.length;
		if((obj[0].text == 'OK') && (parseInt(nodos,10) > 1)){
			var registro = obj[1].childNodes;
			combo.length = registro.length;
			for (var i=0; i<registro.length; i++) { // recorro campos del registro obtenido
				combo.options[i].value = registro[i].attributes[0].value;
				combo.options[i].text = registro[i].attributes[1].value;
				if (registro[i].attributes[0].value == idSelected) combo.selectedIndex = i;
			}
		}
	}
}

function traerDatos( keyField, tipo ) { // Usar xmlQry.asp
	var where = keyField.name+'='+tipo+keyField.value+tipo;
	
	xml.async = false;
	xml.load("xmlQry.asp?acc=select&where="+where+'&tabla='+tabla+'&campos='+autoFill);
	xmlObj = xml.documentElement;	
	//
	if (xmlObj.hasChildNodes()) { // atencion!!! los nombres de los campos del form deben ser iguales a los nombres de los campos de la tabla
		var obj = xmlObj.childNodes, nodos;
		nodos = obj.length;
		if((obj[0].text == 'OK') && (parseInt(nodos,10) > 1)){
			var registro = obj[1].childNodes;
			for (var i=0; i<registro.length; i++) { // recorro campos del registro obtenido
				var atributos = registro[i].attributes;
				for (var j=0; j<atributos.length; j++){ // recorro los atributos del nodo
					if(atributos[j].name=='CAMPO') { // si es un campo
						if (eval('modi.'+atributos[j].value)) { // si el campo está en el form
							eval('modi.'+atributos[j].value+'.value = \''+registro[i].text+'\''); // asigno datos
						}
						if (eval('modi.'+atributos[j].value+'Hidden')) { // si tiene un campo Hidden asociado en el form
							eval('modi.'+atributos[j].value+'Hidden.value = \''+registro[i].text+'\''); // asigno datos
						}
					}
				}
			}
		} else {
			modi.reset();
		}
	}
}

function llenarTabla( campos ) { // Usar xmlQry.asp. Recibe arreglo con nombres de los campos en orden

	xml.async = false;
	xml.load("xmlQry.asp?acc=select&where=true");
	xmlObj = xml.documentElement;	
	//
	if (xmlObj.hasChildNodes()) { // atencion!!! los nombres de los campos del form deben ser iguales a los nombres de los campos de la tabla
		var obj = xmlObj.childNodes, nodos;
		nodos = obj.length;
		if((obj[0].text == 'OK') && (parseInt(nodos,10) > 1)){
			var registro = obj[1].childNodes;
			for (var i=0; i<registro.length; i++) { // recorro campos del registro obtenido
				var atributos = registro[i].attributes;
				for (var j=0; j<atributos.length; j++){ // recorro los atributos del nodo
					if(atributos[j].name=='CAMPO') { // si es un campo
						if (eval('modi.'+atributos[j].value)) { // si el campo está en el form
							eval('modi.'+atributos[j].value+'.value = \''+registro[i].text+'\''); // asigno datos
						}
					}
				}
			}
		} else {
			alert("tabla vacia");
		}
	}
}

function noExiste(obj, tipo) {
	if (obj.value=='') return true;
	var qry = "SELECT "+obj.name+" FROM "+tabla+" WHERE "+obj.name+"="+tipo+obj.value+tipo;
	if (existeRegistro(qry)) {
		return true;
	} else {
		alert('No existe un registro que tenga el valor '+obj.value+' en el campo '+obj.name);
		obj.focus();
		return false;
	}
}

function existe(obj, tipo) {
	if (obj.value=='') return true;
	
	var qry = "SELECT "+obj.name+" FROM "+tabla+" WHERE "+obj.name+"="+tipo+obj.value+tipo;
	if (!existeRegistro(qry)) {
		return true;
	} else {
		alert('El valor \''+obj.value+'\' para el campo \''+obj.name+'\' ya está siendo usado en otro registro.\nIngrese otro valor por favor.');
		obj.focus();
		return false;
	}
}

function existe2(obj, objHidden, tipo) {
	if (obj.value == '') return true;
	if (obj.value == objHidden.value) return true; // no cambió el valor, sale sin validar
	
	var qry = "SELECT "+obj.name+" FROM "+tabla+" WHERE "+obj.name+"="+tipo+obj.value+tipo;
	if (!existeRegistro(qry)) {
		return true;
	} else {
		alert('El valor \''+obj.value+'\' para el campo \''+obj.name+'\' ya está siendo usado en otro registro.\nIngrese otro valor por favor.');
		obj.focus();
		return false;
	}
}

function existeRegistro(qry) { // Usa xmlExiste.asp
	try {
		xml.async = false;
		xml.onreadystatechange=verify;
		xml.load("xmlExiste.asp?qry="+qry);
		xmlObj = xml.documentElement;
	} catch(e) {
		return false;
	}
	
	if (xmlObj.hasChildNodes()) {
		var obj = xmlObj.childNodes;
		return eval(obj(0).text);
	}
	return false;
}

function copiarRow( obj ) { // la tabla de resultados de la búsqueda debe llamarse resultadoBusqueda
	var row = obj.cloneNode(true);
	row.style.display = 'block';
	document.getElementById("resultadoBusqueda").tBodies[0].appendChild(row);
	return true;
}

function limpiarResultadosBusqueda(){ // usar los objetos contenedorResultados, noEncontre, resultadoBusqueda del ABM
	var row;
	contenedorResultados.style.display = 'none';
	noEncontre.style.display = 'none';
	
	for (var i=resultadoBusqueda.tBodies[0].rows.length-1; i>-1; i--) {
		row = resultadoBusqueda.tBodies[0].children(i);
		resultadoBusqueda.tBodies[0].removeChild(row);
	}
	return true;
}

// agrega una celda de texto dada una fila, columna, contenido, alineacion y visibilidad
function addTextCell(row, col, contenido, align, display) { 
	var cell = row.insertCell(col);
	var cont = document.createTextNode(contenido);
	cell.setAttribute('align', align);
	cell.style.setAttribute('display', display);
	cell.appendChild(cont);
}

// agrega una celda de icono dada una fila, columna, id del icono, imagen, onclick y help al pasar por arriba
function addIconCell(row, col, id, imagen, funcion, title) {
	var cell = row.insertCell(col);			
	var cont = document.createElement('img');
	cont.setAttribute('src', imagen);
	cont.setAttribute('id', id);
	cont.setAttribute('title', title);
	cont.setAttribute('className', 'iconos');			
	cont.attachEvent('onclick', function() { eval(funcion) });			
	cell.appendChild(cont);	
}

function agregarFila(tabResu, nuevaFila) {

	var tabRow = tabResu.insertRow();
	tabRow.attachEvent('onmouseout', function() { mouseOutPR('linea'+nuevaFila[0]) });			
	tabRow.attachEvent('onmouseover', function() { mouseOverPR(tabRow) });			
	tabRow.setAttribute('className', 'datalista');
	tabRow.setAttribute('id', 'linea'+nuevaFila[0]);
	
	var col = nuevaFila.length, j=0;
	for (var i=0; i<col; i+=3) 
		addTextCell(tabRow, j++, nuevaFila[i], nuevaFila[i+1], nuevaFila[i+2]);
	//
	addIconCell(tabRow, j++, 'modi'+nuevaFila[0], 'imgs/edit2.gif', 'editar(\'linea'+nuevaFila[0]+'\')', 'editar');
	if (tieneInhibir) addIconCell(tabRow, j++, 'inhi'+nuevaFila[0], 'imgs/inhibir.gif', 'removeFila', 'inhibir');
	if (tieneBaja) addIconCell(tabRow, j++, 'del'+nuevaFila[0], 'imgs/del.gif', 'removeFila()', 'borrar');
}

// Funcion que borra fila
function removeFila(obj, campoClave){	
	if (confirm('Está seguro que desea borrar definitivamente este registro?')) {
		var auxi = '';
		if (eval(obj+'[0]')) auxi='[0]';

		var paramArray = new Array(campoClave, eval(obj+auxi+'.cells[0].innerText'), 'key', campoClave);
		var row = eval(obj+auxi);
		results.tBodies[0].removeChild(row);
		divTableResults(results.tBodies[0].rows.length)
		
		// eliminar de la base
		dbXML('del', paramArray);
	}
}

function swapIconosInhibir( idRef ) {
	var auxi, arreglo = false;
	if (eval('inhi'+idRef+'[0]')) arreglo = true;
	
	var eInhi = eval('inhi'+idRef);
	var eDesinhi = eval('desinhi'+idRef);

	if (arreglo) {
		for (var i=0; i<eInhi.length; i++) {	// hacer swap
			auxi = eInhi[i].style.display;
			eInhi[i].style.display = eDesinhi[i].style.display;
			eDesinhi[i].style.display = auxi;
		}
	} else {
		auxi = eInhi.style.display;
		eInhi.style.display = eDesinhi.style.display;
		eDesinhi.style.display = auxi;
	}
}

function verify() {
	// 0 Object is not initialized
	// 1 Loading object is loading data
	// 2 Loaded object has loaded data
	// 3 Data from object can be worked with
	// 4 Object completely initialized
	if (xml.readyState != 4)
	{
		return false;
	}
}
