/********************************************************************************************************************************************************
 * Archivo que tiene funciones genericas usadas por otros archivos  .                                                                                   *
 * 21 - 11 - 2001. Version 1.0                                                                                                                          *
 ********************************************************************************************************************************************************/


/********************************************************************************************************************************************************
 * Esta función obtiene el valor de un objeto HTML dado, ya sea lista, caja o área de texto, radio o checkbox y regresa el valor obtenido. Recibe el    *
 * nombre del campo.
 ********************************************************************************************************************************************************/

function getValue(field){
    var element  = eval(raiz+field+'.type');
    var val = "";
    if(element != undefined){
	    if (element == 'select-one'){
	         val = eval(raiz+field+".options["+raiz+field+".selectedIndex].value");
	    }else {
	         val = eval(raiz+field+".value");
	    }    
    }else{
	   var checkedOne = false;
	   for(var xy = 0;xy < field.length;xy++){
	       if(field[xy].checked){
	           checkedOne = true;
	           val = field[xy].value;
	       }
	    } 
	    if(checkedOne == false){
	       val = '';  
	    }
	}    
    return val;
}

function getValueField(field){
	if (field.type == 'text' ||
            field.type == 'text' ||
            field.type == 'hidden' ||
            field.type == 'textarea' ||
            field.type == 'file' ||
            field.type == 'select-one' ||
            field.type == 'radio' ||
            field.type == 'checkbox' ||
            field.type == 'password')  {
        var value = '';
		var text = '';
		if (field.type == "select-one") {
			if (field.selectedIndex > -1) {
				var si = field.selectedIndex;
				value = field.options[si].value;
				if(si >= 0 && value == -1) {
					value = '';
				}
			}else{
					value = '';				
			}
		} else {
			value = field.value;
		}
    } else if (field.type == undefined) {
	   var checkedOne = false;
	   for(var xy = 0;xy < field.length;xy++){
           if(field[xy].checked){
	           checkedOne = true;
	           value = field[xy].value;
	       }
	    } 
	    if(checkedOne == false){
	       value = '';  
	    }            
	}
	return value;
}

function doFocus(focusField, fields){
    if (fields.length > 0) {
        if (focusField.type == undefined ){
        	focusField[0].focus();
        }else{
        	focusField.focus();
        }
        alert(fields.join('\n'));
    }
}

function trim(s) {
    return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}


var raiz = 'this.document.forms[0].'; //variable global de ruta de la forma

reqFields = new Array(); 
nameReqFields = new Array();


function returnToPage(page){
	eval('opener.location="'+page+'"');
	window.close();
}

/*
*	Funcion que habilita una caja de texto cuando el usuario escoge un valor determinado en un 
*	select.Esta función se coloca en el onChange del select, funciona para Netscape y Explorer 5
*	o superior.
*
*	Parámetros: nombre del objeto select. 
*				valor (value) del select en que se habilitara la caja de texto.
*				nombre del objeto text.	
*/

function deshabilitaTextCombo(select, value, text){
	var form = this.document.forms[0];
	if(getValueField(form[select]) == value){
		form[text].disabled = false;
	}else{
		form[text].value = "";
		disableControl(form[text]);		
	}
}


/*
*	Funcion que deshabilita una caja de texto hasta que el usuario escoge un valor determinado en un 
*	select y pone el foco en la caja de texto. Esta función se coloca en el onFocus de la caja de 
*	texto, funciona para Netscape para	Netscape 4.51
*
*	Parámetros: nombre del objeto select. 
*				valor (value) del select en que se habilitara la caja de texto.
*				nombre del objeto text.	
*/

function deshabilitaTextNets4(select, value, text){
	var form = this.document.forms[0];
	if(getValueField(form[select]) == value){
		form[text].disabled = false;
	}else{
		form[text].value = "";
		disableControl(form[text]);		
	}
}

/*
*	Funcion que deshabilita una caja de texto hasta que el usuario escoge un valor determinado en un 
*	select y pone el foco en la caja de texto. Esta función se coloca en el onFocus de la caja de 
*	texto, funciona para Netscape para	Netscape 4.51
*
*	Parámetros: nombre del objeto select. 
*				valor (value) del select en que se habilitara la caja de texto.
*				nombre del objeto text.	
*/

function deshabilitaTextNets4OnValue(select, value, text){
	var control = eval(raiz + select);
	//alert("Valor seleccionado: " +control.options[control.selectedIndex].value);
	if(control.options[control.selectedIndex].value != value){
		eval(raiz + text + '.value = ""');
		eval(raiz + text + '.blur()');	
	}
}

/*
*	Funcion que inhabilita un objeto en todas la versiones de Navegadores.
	Parametros:	nombre del objeto a inhabiltar.
*
*/

function inhabilita(control){
   eval(raiz + control + '.blur()');
}


/**
* Función que es llamada desde el checkbox a través del evento onClick
* y que sirve para deshabilitar todos los controles de la forma.
*/
function enableDisableForm(control){
	var checked = control.checked;
	if(checked){
		disable();
	}else{
		enable();
	}
}


/**
* Función que habilita los controles de la forma, solo para el caso de
* los navegadores Netscape Version 4.7 o superior y Microsoft Explorer.
*/
function enable(){
	form = this.document.forms[0];
	var numItems = form.length;

	if ((navigator.appName=="Netscape" && parseFloat(navigator.appVersion)>=4.7) ||
		navigator.appName=="Microsoft Internet Explorer") {
	     // Declaraciones para clientes que utilizan el Gecko engine, como Mozilla y NS6

		for (var i=0;i<numItems ;i++ ){
			var nameControl = form.elements[i].name;
			var type = form.elements[i].type;			
			if ( (type=='radio') || (type = undefined) ){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					form[nameControl][j].disabled=false;
				}
			}else{
				form[nameControl].disabled=false;
			}
		}
	}
}

/**
* Función que deshabilita todos los controles de la forma, excepto el checkbox 
* y los controles de tipo botón (button, submit y reset).
*/
function disable(){
	resetAll();	//Función que limpia los controles de tipo texto y select.
	var numItems = this.document.forms[0].length;
	for (var i=1;i<numItems ;i++ ){
		var type = this.document.forms[0].elements[i].type;
		var nameControl = this.document.forms[0].elements[i].name;
		if(type=='radio'){
			var lengthRadio = eval(raiz +nameControl+'.length');
			for(var j=0;j<lengthRadio;j++){
				disableControl(eval(raiz+nameControl+'['+j+']'));
			}
		}else if(!(type=='submit'||type=='button'||type=='reset')){
			disableControl(eval( raiz+nameControl));
		}
	}
}

/**
* Esta función deshabilita un control (que se pasa como parámetro) de la forma, 
* esta función toma valida entre tipos de navegador.
*/
function disableControl(control){
	if ((navigator.appName=="Netscape" && parseFloat(navigator.appVersion)>=4.7) ||
		navigator.appName=="Microsoft Internet Explorer") {
     // Declaraciones para clientes que utilizan el Gecko engine, como Mozilla y NS6
		control.blur();
		control.disabled=true;
	} else if (navigator.appName=="Netscape" && parseFloat(navigator.appVersion)<4.7)  {
     // Declaraciones para Navigator 4.51 o menor a 4.7
		if(control.type=='radio'){
			control.checked = false;
		}else{
			control.blur();
		}
	}
}


/**
* Esta función habilita un control (que se pasa como parámetro) de la forma, 
* esta función toma valida entre tipos de navegador.
*/
function enableControl(control){
	if ((navigator.appName=="Netscape" && parseFloat(navigator.appVersion)>=4.7) ||
		navigator.appName=="Microsoft Internet Explorer") {
     // Declaraciones para clientes que utilizan el Gecko engine, como Mozilla y NS6
		control.disabled=false;
	} else if (navigator.appName=="Netscape" && parseFloat(navigator.appVersion)<4.7)  {
     // Declaraciones para Navigator 4.51 o menor a 4.7
		if(control.type=='radio'){
			control.checked = false;
		}
	}
}


/**
* Esta función se encarga de quitar el foco de un control cuando
* el checkbox que controla la deshabilitación de la forma esta 
* seleccionado. Esto funciona para el Navegador Netscape 4.51
*/
function disableWithChecked(control){
    if(this.document.forms[0].elements[0].checked)
		disableControl(control);
}

/**
* Esta función se encarga de establecer el contenido de la forma a su 
* valor inicial, una vez que se deshabilita la forma.
*/
function resetAll(){
	var numItems = this.document.forms[0].length;

	for (var i=1;i<numItems;i++ ){
		var type = this.document.forms[0].elements[i].type;
		var nameControl = this.document.forms[0].elements[i].name;
		if(type=='select-one'){
			eval(raiz + nameControl+'.selectedIndex=-1');
		}else if(type=='radio'){
			eval(raiz + nameControl+'[0].checked=false');
			eval(raiz + nameControl+'[1].checked=false');
		}else if(type=='text'||type=='textarea'){
			eval(raiz + nameControl+".value=''");
		}
	}
	
}
/*
*	Funcion que habilita una caja de texto cuando el usuario escoge un valor determinado en un 
*	ckeckbox.Esta función se coloca en el onClick del checkbox, funciona para Netscape y Explorer 5
*	o superior.
*
*	Parámetros: nombre del objeto checkbox 
*				nombre del objeto text.	
*/

function deshabilitaTextCheckbox(checkbox, text){
	var form = this.document.forms[0];
	if( form[checkbox].checked){
		form[text].disabled = false;
	}else{
		form[text].value = "";
		form[text].disabled = true;		
	}
}

/*
*	Funcion que deshabilita una caja de texto hasta que el usuario escoge un valor determinado en el
*	ckeckbox y pone el foco en la caja de texto. Esta función se coloca en el onFocus de la caja de 
*	texto, funciona para Netscape para	Netscape 4.51
*
*	Parámetros: nombre del objeto select. 
*				nombre del objeto text.	
*/

function deshabilitaTextNets4Checkbox(checkbox, text){
	 if (navigator.appName=="Netscape" && parseFloat(navigator.appVersion) < 4.7){
		if(!eval(raiz + checkbox + ".checked")){
			eval(raiz + text + '.value = ""');
			eval(raiz + text + '.blur()');	
		}
	}
}


/*
*	Funcion que deshabilita una caja de texto hasta que el usuario escoge un valor determinado en un 
*	select y pone el foco en la caja de texto. Esta función se coloca en el onFocus de la caja de 
*	texto, funciona para Netscape para	Netscape 4.51
*
*	Parámetros: nombre del objeto select. 
*				valor (value) del select en que se habilitara la caja de texto.
*				nombre del objeto text.	
*/

function deshabilitaTextSelect(select, value, text){
	var valorSeleccionado = eval(raiz + select + '.options[' + raiz + select 
			+ '.selectedIndex].value');
	if(valorSeleccionado != value){
		eval(raiz + text + '.value = ""');
		eval(raiz + text + '.blur()');	
	}
}

function disableParcial(array){
	resetParcial(array);	//Función que limpia los controles de tipo texto y select.
	var form = this.document.forms[0];
	var numItems = form.length;
	for (var i=0;i<numItems ;i++ ){
		var name = form.elements[i].name;
		if (verificaNombre(array,name)){
			var type = form[name].type;
			var nameControl = name;
			if(type=='radio'){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					disableControl(form[nameControl][j]);
				}
			}else if(type == undefined){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					disableControl(form[nameControl][j]);
				}
			}else if(!(type=='submit'||type=='button'||type=='reset'||type=='hidden')){
				disableControl(form[nameControl]);
			}
		}
	}
}

function disableFields(array){
	resetFields(array);	//Función que limpia los controles de tipo texto y select.
	var form = this.document.forms[0];
	var numItems = form.length;
	for (var i=0;i<numItems ;i++ ){
		var name = form.elements[i].name;
		if (verificaName(array,name) == true){
			var type = form[name].type;
			var nameControl = name;
			if(type=='radio'){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					disableControl(form[nameControl][j]);
				}
			}else if(type == undefined){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					disableControl(form[nameControl][j]);
				}
			}else if(!(type=='submit'||type=='button'||type=='reset'||type=='hidden')){
				disableControl(form[nameControl]);
			}
		}
	}
}

function verificaName(array, name){
	for (i=0; i<array.length ;i++ ){
		var field = array[i];
		if (field == name){
			return true;
		}
	}
	return false;
}

function enableFields(array){
	var form = this.document.forms[0];
	var numItems = form.length;
	for (var i=0;i<numItems ;i++ ){
		var name = form.elements[i].name;
		if (verificaName(array,name) == true ){
			var type = form[name].type;
			var nameControl = name;
			if(type=='radio'){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					enableControl(form[nameControl][j]);
				}
			}else if(type == undefined){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					enableControl(form[nameControl][j]);
				}
			}else if(!(type=='submit'||type=='button'||type=='reset'||type=='hidden')){
				enableControl(form[nameControl]);
			}
		}
	}
}

function resetFields(array){
	var form = this.document.forms[0];
	var numItems = form.length;

	for (var i=0;i<numItems;i++ ){
		var name = form.elements[i].name;
		if (verificaName(array,name) == true){
			var type = form[name].type;
			var nameControl = name;
			if(type=='select-one'){
				form[nameControl].selectedIndex=-1;
			}else if(type=='text'||type=='textarea'){
				form[nameControl].value='';
			}else if(type == undefined){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					form[nameControl][j].checked = false;
				}
			}
		}		
	}
	
}

function resetParcial(array){
	var form = this.document.forms[0];
	var numItems = form.length;

	for (var i=0;i<numItems;i++ ){
		var name = form.elements[i].name;
		if (verificaNombre(array,name)){
			var type = form[name].type;
			var nameControl = name;
			if(type=='select-one'){
				form[nameControl].selectedIndex=-1;
			}else if(type=='text'||type=='textarea'){
				form[nameControl].value='';
			}else if(type == undefined){
				var lengthRadio = form[nameControl].length;
				for(var j=0;j<lengthRadio;j++){
					form[nameControl][j].checked = false;
				}
			}
		}		
	}
	
}


function verificaNombre(array, name){
	for (i=0; i<array.length ;i++ ){
		var field = array[i];
		if (field == name){
			return false;
		}
	}
	return true;
}

