//::: Función Validar - Controla los datos ingresados en un formulario ::::::::::::::::::.

function validar(){		//v2.0

	var idForm=validar.arguments[0];
	var llave=0;	//llave Obligatoria
	var llave2=0;	//llave Pregunta
	var cadena="Ud. no ha completado o corregido los siguientes campos:\n\n";
	var campos=validar.arguments.length;

	for(i=1;i<campos;i+=4){
		idInput=validar.arguments[i];  //el nombre del elemento dentro del formulario
		inputN=validar.arguments[i+1];	//el título del elemento
		inputT=validar.arguments[i+2];	//el tipo de datos a validar 0-vacío, 1-numérico, 2-fecha, 3-hora
		inputO=validar.arguments[i+3];	//Pregunta  0-obligatorio, 1-pregunta
		
		inputV=idInput.value;			//el valor de cada elemento
		switch(inputT){
			case 0:		//no puede quedar vacío
				if(inputV==""){
					llave+=(inputO==0)?1:0;
					llave2+=(inputO==1)?1:0;
					idFoco=i;
					carRelleno="";
					cadena+="\t- "+inputN+"\n";
					}
				break;
			case 1:		//debe ser numérico
				if(isNaN(inputV)){
					llave+=(inputO==0)?1:0;
					llave2+=(inputO==1)?1:0;
					idFoco=i;
					carRelleno="0";
					cadena+="\t- "+inputN+" (debe ser numérico)\n";
					}
				break;
			case 2:		//arma la fecha en un hidden
				idHidden=inputN;
				anhio=document.forms[idForm].elements["anhio"+idHidden].value
				mes=document.forms[idForm].elements["mes"+idHidden].value
				dia=document.forms[idForm].elements["dia"+idHidden].value
				if((dia==31)&(mes==2|mes==4|mes==6|mes==9|mes==11)|(dia==30&mes==2)){
					llave+=(inputO==0)?1:0;
					llave2+=(inputO==1)?1:0;
					idFoco=0;
					carRelleno="";
					cadena+="\t- "+inputN+" (debe ser una fecha válida)\n";
					}
				validar.arguments[i].value= anhio+"-"+mes+"-"+dia;
				break;
			case 3:		//arma la hora en un hidden
				idHidden=inputN;
				hora=document.forms[idForm].elements[idHidden+"_hor"].value
				minuto=document.forms[idForm].elements[idHidden+"_min"].value
				validar.arguments[i].value= hora+":"+minuto;
				break;
			}
		}
		if(llave>0){
			cadena+="\t\tGracias."
			if(validar.arguments[idFoco].type=="text"){
				validar.arguments[idFoco].focus()			
				}
			alert(cadena)
			return false;
			}
		else{
			if(llave2>0){
				cadena+="\n\tDesea Ud. continuar?."
				if(confirm(cadena)){
					document.forms[idForm].submit()
					}
				else{	
					if(validar.arguments[idFoco].type=="text"){
						validar.arguments[idFoco].focus();
						}
					return false;
					}
				}
			else{
				document.forms[idForm].submit();
				}
			}
}
//::: Fin de Función Validar :::::::::::::::::::::::::::::::::::::::::

//::: Función vinheta(id_elemento); ::::::::::::::::::::::::::::::::::
//::: Expande o contrae un <div> mediante clases de css ::::::::::::::
function vinheta(id_elemento){

	elemento=document.getElementById("cnt0"+id_elemento);
	clase=elemento.className;
	if(clase=="mnu01"){
		cc("cnt0"+id_elemento,"mnu02");
		}
	else{
		cc("cnt0"+id_elemento,"mnu01");
		}
	}
//::: Fin de Función vinheta(id_elemento); :::::::::::::::::::::::::::


//::: Función vinheta(aQuien,clase); :::::::::::::::::::::::::::::::::
//::: Coloca al elemento de di aQuien la clase clase :::::::::::::::::
function cc(aQuien,clase){
	if(!document.layers){	//No es NN
		elemento=document.getElementById(aQuien)
		elemento.className=clase
		}
	}
//::: Fin de Función vinheta(aQuien,clase); :::::::::::::::::::::::::

function cC(idd,clase){
	idd.className=clase;
	}
function daClick(link){
	document.location.href=link;
	}
function daClick_vieja(elemento){
	elemento.children.tags('A')[0].click();
	}

	
//::: Función subselect(formu,valores,opciones,separadores,valor);
//::: coloca valores tomados de 'valores' según 'valor' en
//::: el select 'opciones' del formulario 'formu', los 'separadores'
//::: son para armar las matrizes

function subselect(formu,valores,opciones,separadores,valor){
	
	// variables
	formu=document.forms[formu];							// el formulario en sí
	valores=formu.elements[valores].value;					// los valores que están el hidden
	opciones=formu.elements[opciones];						// el select a cargar con valores
	sep1=separadores.substr(0,1);							// separa los registros
	sep2=separadores.substr(1,1);							// separa el id principal del resto, es el que se busca según valor
	sep3=separadores.substr(2,1);							// separa el valor del texto
	mtx_principal=valores.split(sep1);						// se obtiene el listado de opciones
	
	for(i=0;i<opciones.length;i++){							// se borran las opciones
		opciones.options[i]=null;
		}
	
	cual=0;													// la opción a completar
	for(i=0;i<mtx_principal.length;i++){					// recorre los registros
		registro=mtx_principal[i];
		mtx_secundaria=registro.split(sep2);				// se separa en id_principal y en valores	
		if(mtx_secundaria[0]==valor){						// el id es igual al valor solicitado?
			mtx_terciaria=mtx_secundaria[1].split(sep3);	// se separa los valores que van en el select
			if(mtx_terciaria[0]!=""){						// no está vacío?
				opcion=new Option(mtx_terciaria[1],mtx_terciaria[0],false,false);
				opciones.options[cual]=opcion;
				cual++;
				}
			}
		else{
			opciones.options[i]=null;
			}
		}
	
	
	}
//::: Fin de Función subselect(formu,valores,opciones,separadores,valor);

//::: Función cambia_forma();
//::: Maneja el select de id_forma de la página productos_editar.php
function cambia_forma(valor){
	
	check=document.forms["frm_producto"].elements["cambia_id_forma"];
	select=document.forms["frm_producto"].elements["id_forma"];
	div="div_forma";
	
	if(check.checked){	// si no está chequeado
		
		if(confirm("Si modifica la forma se eliminarán\nlos datos del anexo\n¿Desea continuar?")){	// ok, lo cambia
			cc(div,"vis");	// se muestra el selec
			}
		else{
			check.checked=false;
			return false;
			}
		
		}
	else{	// se deschequea
		select.value=valor;	// se coloca el valor original
		cc(div,"inv");
		}
	
	}
//::: Fin de Función cambia_forma();

