// JavaScript Document
// VERSION 2.0 10-06-2008
var HTML = {
	
	/*
	* getFormElement: Devuelve un objeto elemento a partir de la propiedad name y de un formulario
	*/
	getFormElement : function(formulario,variable){
		var form=window.document.getElementById(formulario);
		if(!form){
			return false;
		}
		var elementos=form.elements;
		for (var j=0;j<elementos.length;j++){
			if(elementos[j].name==variable){
				return elementos[j];
			}
		}
		return false;
	},
	
	/*
	* getElementByName: Devuelve un objeto elemento a partir de la propiedad name 
	*/
	getElementByName: function(variable){
		
		var elementos=document.elements;
		for (var j=0;j<elementos.length;j++){
			if(elementos[j].name==variable){
				return elementos[j];
			}
		}
		return false;
	},
	
	/*
	* rellenarDato: a partir de un id de formulario, id de variable y valor, coloca el valor en
	* el lugar correspondiente
	*/
	rellenarDato : function(formulario,variable,valor){
		
		elemento=HTML.getFormElement(formulario,variable);
		if(!elemento){
			return false;
		}
		var tipo=elemento.type;
		if(tipo=="textarea" || tipo=="text" || tipo=="hidden" || tipo=="password"){
			elemento.value=unescape(valor);
		}
		if(tipo=="checkbox"){
			var form =elemento.form;
		    for(var i=0;i<form.elements.length;i++) {
				
				if(form.elements[i].type && form.elements[i].type=='checkbox') {
					//alert(form.elements[i].name);
					if(form.elements[i].name==variable && form.elements[i].value==unescape(valor)){							//alert(form.elements[i].value);
							form.elements[i].checked=true;
					}
				}
			}
		}
		if(tipo=="select-one"){
			for(k=0;k<elemento.length;k++){
				if(elemento.options[k].value==unescape(valor)){
					elemento.options.selectedIndex=k;
				}
			}
		}
		if(tipo=="radio"){
			//puede haber varios
			//alert(valor);
			
			var form =elemento.form;
		    for(var i=0;i<form.elements.length;i++) {
				
				if(form.elements[i].type && form.elements[i].type=='radio') {
					//alert(form.elements[i].name);
					if(form.elements[i].name==variable && form.elements[i].value==unescape(valor)){							//alert(form.elements[i].value);
							form.elements[i].checked=true;
					}
				}
			}
		}
		if(tipo==undefined){
			//alert (elementos[j].id);
			return false;
		}
		return true;
	},
	
	/*
	* checkAll: a partir de un id de checkbox, selecciona o deselecciona toda la familia
	*/
	checkAll: function (elem,inverso){
		var elementos=document.getElementsByTagName('input');
		for (var j=0;j<elementos.length;j++){
			if(elementos[j].name==elem && ( elementos[j].type=="radio" || elementos[j].type=="checkbox")){
				if(inverso=='-1'){
					elementos[j].checked=false;
				}
				else{
					elementos[j].checked=true;
				}
			}
		}
		
	},
	
	/*
	* openWindow: abre una ventana nueva del tamaño especificado sin controles
	*/
	openWindow: function (url,nombre,ancho,alto){
			window.open(url,nombre,'toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width='+ancho+',height='+alto);
	},
	
	/*
	* display: cambia la propiedad display a block de un id
	*/
	display: function (elem){
		document.getElementById(elem).style.display="block";
	},
	
	/*
	* noDisplay: cambia la propiedad display de un id a none
	*/
	noDisplay: function (elem){
		document.getElementById(elem).style.display="none";
	},
	
	/*
	* getSelectedValue: devuelve el valor selectado en un select
	*/
	getSelectedValue: function (combo){
			var s=document.getElementById(combo);
			return s.options[s.selectedIndex].value;
	},
	
	/*
	* addLoadEvent: agrega la función indicada al evento onLoad()
	*/
	addLoadEvent: function(func){
			var oldonload = window.onload;
		 	if (typeof window.onload != 'function') {
				 window.onload = func;
		 	}
		 	else {
				window.onload = function() {
					oldonload();
			 		func();
				}
			}
   	  },
	  
	/*
	* addFormOnSubmitEvent: agrega la función indicada al evento onSubmit() del formulario
	* indicado. Si la función devuelve false o no devuelve nada se suspende el envío del
	* formulario
	*/
	  addFormOnSubmitEvent: function(form,func){
			 if(typeof HTML.formEvents[form]=='undefined'){
			 	HTML.formEvents[form]=new Object();
				HTML.formEvents[form][0]=func;
			 }
			 else{
				 HTML.formEvents[form][HTML.formEvents[form].length]=func;
			 }
	  },
	  
	/*
	* submitForm: Produce el envío del formulario ejecutando primero las funciones cargadas por
	* addFormOnSubmitEvent
	*/
	  submitForm: function(form){
		
		var idForm=form.id;
		var elemform=HTML.getFormElement(idForm,'form');
		if(!elemform){
			var input=document.createElement('input');
			input.type="hidden";
			input.value=idForm;
			input.name="form";
			form.appendChild(input);
		}
		else{
			elemform.value=idForm;
		}
		if(typeof HTML.formEvents[idForm]!='undefined'){
			
			var exec=true;
			 for(ItemID in HTML.formEvents[idForm]){
			 	exec=eval(HTML.formEvents[idForm][ItemID]+'()');
				if(!exec){
					return false;
				}
			 }
		}
		
		return true;
		 
	  },
	  
	  disable: function(form,tagName){
	
		var elem=HTML.getFormElement(form,tagName);
		if(elem){
			elem.disabled=true;
			var tipo=elem.type;
			if(tipo=="checkbox" || tipo=="radio"){
				var form =elem.form;
				for(var i=0;i<form.elements.length;i++) {
					if(form.elements[i].type && (form.elements[i].type=='checkbox' || form.elements[i].type=='radio')) {
						//alert(form.elements[i].name);
						if(form.elements[i].name==tagName){							
							form.elements[i].disabled=true;
						}
					}
				}
			}
		}
	},
	  
	 /* 
	 *  formEvents: Objeto auxiliar para el manejo de eventos de formulario
	 */
	 formEvents:new Object()
}

