var xml = new ActiveXObject("Microsoft.XMLDOM");

function abrirCalendario2(obj){
	var fecha; var dato=obj.value;
	obj.disabled=true ;
	fecha = window.showModalDialog('calendariocont.asp?fecha='+dato,'','dialogWidth:275px;dialogHeight:200px;center:yes;help:no;status:no');
	//fecha = window.open('calendariocont.asp?fecha='+dato,'','height=200px,width=275px,center=yes,help=no,status=no');
	obj.value = fecha ; 
	obj.disabled=false;
}

function llenarForm(form, obj, qry){

	try {
		xml.async = false;
		xml.onreadystatechange=verify;
		//document.getElementById('test').innerText = "xmlSelect.asp?qry="+qry;
		xml.load("xmlSelect.asp?qry="+qry);		
		xmlObj = xml.documentElement;		
	} catch(e) {return false}

	if (!xmlObj) return false;
	if (xmlObj.hasChildNodes()) {		
		var nodos = xmlObj.childNodes;
		if (eval(nodos[0].text)) {
			var registro = nodos[1].childNodes;
			for (i=0; i<registro.length; i++) {
				if(eval(form+'.'+registro[i].attributes[0].value)||
				   eval(form+'.'+registro[i].attributes[0].value[0])){	// si existe el campo en el form
					switch (registro[i].attributes[1].value) { // tipo de campo
						case '11': 
							eval(form+'.'+registro[i].attributes[0].value+'[0].checked = ' + registro[i].text);
							eval(form+'.'+registro[i].attributes[0].value+'[1].checked = !' + registro[i].text);
							break;
						default:
							eval(form+'.'+registro[i].attributes[0].value+'.value=\''+registro[i].text+'\'');
					}
				}
			}
			return true;
		} 
	}
	return false;
}

function abrirCalendario(obj){
	var fecha;
	obj.disabled = true;
	fecha=window.showModalDialog('calendario.asp?fecha='+obj.value,'','dialogWidth:275px;dialogHeight:280px;center:yes;help:no;status:no');
	
	if (!isNaN(parseInt(fecha,10))) obj.value = fecha;
	obj.disabled = false;
}
//ADMINISTRADORAS DEL BUSCADOR
function traerData(ingresado, tabla, identificador, criterio, campos, formulario, cantidad, funcion, procesador) {
	if (ingresado=='') return false;
	MM_openBrWindow(
		'_buscador1.asp?autoLoad=si&ingresado='+ingresado
			+'&tabla='+tabla
			+'&identificador='+identificador
			+'&criterio='+criterio
			+'&campos='+campos
			+'&formulario='+formulario
			+'&procesador='+procesador
			+'&cantidad='+cantidad
			+'&funcion='+funcion,
		'popUp','scrollbars=yes,width=600,height=500');
}

function buscador(ingresado, tabla, identificador, criterio, campos, formulario, cantidad, funcion, procesador) {
	MM_openBrWindow(
		'_buscador1.asp?ingresado='+ingresado
			+'&tabla='+tabla
			+'&identificador='+identificador
			+'&criterio='+criterio
			+'&campos='+campos
			+'&formulario='+formulario
			+'&procesador='+procesador
			+'&cantidad='+cantidad
			+'&funcion='+funcion,
		'popUp','scrollbars=yes,width=600,height=500');
}
function traerData2(ingresado, tabla, identificador, criterio, campos, formulario, cantidad, funcion, busqueda, procesador) {
	if (ingresado=='') return false;
	MM_openBrWindow(
		'_buscador1.asp?autoLoad=si&ingresado='+ingresado
			+'&tabla='+tabla
			+'&identificador='+identificador
			+'&criterio='+criterio
			+'&campos='+campos
			+'&formulario='+formulario
			+'&procesador='+procesador
			+'&cantidad='+cantidad
			+'&funcion='+funcion
			+'&busqueda='+busqueda,
		'popUp','scrollbars=yes,width=600,height=500');
}

function buscador2(ingresado, tabla, identificador, criterio, campos, formulario, cantidad, funcion, busqueda, procesador) {
	MM_openBrWindow(
		'_buscador1.asp?ingresado='+ingresado
			+'&tabla='+tabla
			+'&identificador='+identificador
			+'&criterio='+criterio
			+'&campos='+campos
			+'&formulario='+formulario
			+'&procesador='+procesador
			+'&cantidad='+cantidad
			+'&funcion='+funcion
			+'&busqueda='+busqueda,
		'popUp','scrollbars=yes,width=600,height=500');
}
//////////////
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 removeChar( strValue, char ) {
  var objRegExp = new RegExp(char, "g"); //search for char globally
  return strValue.replace(objRegExp,'');
}

function replaceChar( strValue, char, char1 ) {
  var objRegExp = new RegExp(char, "g"); //search for char globally
  return strValue.replace(objRegExp,char1);
}

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) {
	x = removeChar(x, '\'');
	var aux = x;
	aux = removeChar(aux, ' '); aux = removeChar(aux,'\r\n'); aux = removeChar(aux,'\n');
	if (aux=='') x='';
	return x;
}

function clnStrAltas(x) {
	x = removeChar(x, '\'');
	x = replaceChar(x,' ','_');
	return x;
}

function xmlCombo( combo, tabla, id, descripcion, idSelected, where ) {
	xml.async = false;
	//alert("xmlCombo.asp?tabla="+tabla+"&id="+id+"&descripcion="+descripcion+"&where="+where);
	//document.getElementById('test').innerText = "xmlCombo.asp?tabla="+tabla+"&id="+id+"&descripcion="+descripcion+"&where="+where ;
	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 xmlComboPot( combo, tabla, id, descripcion, idSelected, where ) {
	xml.async = false;
	//alert("xmlCombo.asp?tabla="+tabla+"&id="+id+"&descripcion="+descripcion+"&where="+where);
	//document.getElementById('test').innerText = "xmlCombo.asp?tabla="+tabla+"&id="+id+"&descripcion="+descripcion+"&where="+where ;
	xml.load("xmlComboPot.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 Inputs a la tabla
function addInputCell(row, col, nomfld, size, tipo, valor, display) { // agrega una celda dada una fila, su contenido y su alineacion
	var cell = row.insertCell(col);
	cell.setAttribute('align', 'left');
	var cont = document.createElement('input');
	cont.setAttribute('name', nomfld);
	cont.setAttribute('type', tipo);
	cont.setAttribute('className','dataProd');
	cont.setAttribute('size',size);
	cont.setAttribute('value',valor);
	cell.style.setAttribute('display', display);
	//cell.appendChild(cont);
	cell.innerHTML = valor ;
}

// 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', 'texto');
	tabRow.setAttribute('id', 'linea'+nuevaFila[0]);
	var col = nuevaFila.length, j=0;
	for (var i=0; i<col; i+=3)
		//addTextCell(row, col, contenido, align, display)
		//addTextCell(tabRow, j++, nuevaFila[i], nuevaFila[i+1], nuevaFila[i+2]);
		
		//addInputCell(row, col, nomfld, size, tipo, valor, display)
		addInputCell(tabRow, j++, nuevaFila[i],25,'', nuevaFila[i], 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;
	}
}
function arreglarNombre(nombre){
	var x = nombre.toString();
	if (x.length > 0) {
		x = x.substr(0,1).toUpperCase() + x.substr(1).toLowerCase();
		if (x.indexOf(' ', 0) != -1){
			var s = x.indexOf(' ',0)+1;
			x = x.substr(0,s) + arreglarNombre(x.substr(s));
		}
	}
	return x;
}
// ante un campo INPUT tipo TEXT con un checkbox asociado lo habilita o lo inhabilita limpiandolo al clikear
function habilitar(campo){
	var auxCampo = campo;

	if (eval('form1.'+auxCampo+'.disabled == true ')){
		eval('form1.'+auxCampo+'.disabled = false ;')
	}else{
		eval('form1.'+auxCampo+'.value = "" ;')
		eval('form1.'+auxCampo+'.disabled = true ;')
	}
	return true;
}
