// -------------------------------------------------------------------------- //
//
// Validacion de formularios.
// version:  d18-m06-a04
//
// -------------------------------------------------------------------------- //


// -------------------------------------------------------------------------- //
//
// Validacion de formularios.
// version:  d18-m06-a04
//
// -------------------------------------------------------------------------- //



function validarCampo (campoId, campoPrefijo, mensaje, campoObligatorio, caracteres) 
{
	var r 				= true;
	var campo 			= document.getElementById(campoId);	
	
	switch (campo.type) 
	{
		case 'select-one' :
			r = seleccionarSelect 		(campo, 	mensaje);
			break
		case 'paswword' :
			r = txtRequerido 			(campo, 	mensaje		)	&&
				sinEspacios 			(campo, 	mensaje		)	&&
				strLongitud 			(campo, 	mensaje, 5	);
			break			
		case 'radio' :
			r = seleccionarRadio 		(campo, 	mensaje);
			break				
		case 'checkbox' :
			if(campoObligatorio)
			{
				seleccionarSheck 			(campo, 	mensaje);
			}
			break	
		case ('textarea')	:
			if(campoPrefijo=='max' )
			{
				r = strMenorQue 		(campo, 	mensaje, caracteres);							
			}		
			if(r&&campoObligatorio)
			{
				r = txtRequerido 			(campo, 	mensaje);
			}				
			break
		case 'text' 	:
			if(campoPrefijo=='num' )
			{
				r = datoNumerico 		(campo, 	mensaje);							
			}
			else if(campoPrefijo=='min' )
			{					
				r = strMayorQue 		(campo, 	mensaje, caracteres);							
			}
			else if (campoPrefijo=='fecha') 
			{
					
				r = validarFecha 		(campo, 	mensaje);							
			}
			else if (campoId=='telefono') 
			{
				r = validarTelefono 	(campo, 	mensaje, 5);						
			}
			else if ((campoId.indexOf('mail')!=-1)||(campoId.indexOf('correo')!=-1 && campoId.indexOf('electronico')!=-1)) 
			{
				r = validarCorreo 		(campo, 	mensaje);								
			}				
			if (r&&campoObligatorio) 
			{
				r = txtRequerido 		(campo, 	mensaje);
			}
			break					
	}
	return r;
}
	
function validarFormulario (formulario) 
{
	var r 		 		= true;
	var	labelArr 		= formulario.getElementsByTagName('label');
	var seccion
	var mensajePrefijo 	= 'Especifique';
	
	
	for(var i=0;i<labelArr.length&&r;i++) 
	{	
	
		if(labelArr[i].parentNode.getElementsByTagName('legend')[0])
		{
			seccion = labelArr[i].parentNode.getElementsByTagName('legend')[0].firstChild.nodeValue + '"';
			seccion = ' en la sección "' + seccion + '"';
		}
		else 
		{
			seccion	= '';
		}
		
		// obtener el id del campo
		var campoId				= obtenerCampoId(labelArr[i]) //labelArr[i].getElementsByTagName('input')[0].id	

		var campoObligatorio;
		var mensaje, labelTag 
		if (labelArr[i].getElementsByTagName('strong')[0]) {
			// mensaje = labelArr[i].childNodes[3].nodeValue
			labelTag = 'strong';
			campoObligatorio 	= true;
			}
		else if (labelArr[i].getElementsByTagName('em')[0]) {
			labelTag = 'em';
			campoObligatorio 	= false;
			}	
		//alert(campoId + ' ' + campoObligatorio);
		
		mensaje = labelArr[i].getElementsByTagName(labelTag)[0].lastChild.nodeValue;
		mensaje 				= mensajePrefijo + ' "' + mensaje + '"' + seccion;	
		
		var campoPrefijo 		= campoId.substring(campoId.lastIndexOf('_')+1, campoId.length);
		
		var caracteres			= false;	
		
		if(campoPrefijo.indexOf('min')!=-1||campoPrefijo.indexOf('max')!=-1)
			{	
			caracteres 			= campoPrefijo.substring(3, campoPrefijo.length)
			campoPrefijo 		= campoPrefijo.substring(0, 3);
			}		
		// var campoObligatorio 	= (labelArr[i].childNodes.length>1);
		r = validarCampo(campoId, campoPrefijo, mensaje, campoObligatorio, caracteres);
	}
	return r;
}

// obtener el id del campo
function obtenerCampoId (etiqueta) {

	var campoTipo;
	if(etiqueta.getElementsByTagName('select')[0])
	{	
		campoTipo 		= 'select';
	}
	else if(etiqueta.getElementsByTagName('textarea')[0])
	{
		campoTipo 		= 'textarea';
	}
	else if(etiqueta.getElementsByTagName('input')[0])
	{
		campoTipo 		= 'input';
	}	

	return etiqueta.getElementsByTagName(campoTipo)[0].id;
}

	
	

// Funciones generales.
// -------------------------------------------------------------------------- //

function txtRequerido (obj, mensaje, silenciar)
{
	var s=obj.value, r=(s!='');
	if(!r&&!silenciar){ alert(mensaje); obj.focus();} return r;
}

function sinEspacios (obj, mensaje)
{
	var s=obj.value,r=(s.indexOf(' ')==-1);
	if(!r){alert(mensaje); obj.focus();} return r;
}

function strMayorQue (obj, mensaje, largo)
{
	var r=true,s=obj.value; if (s != ''){r=s.length>=largo;
	if(!r){alert(mensaje); obj.focus();}} return r;
}

function strMenorQue (obj, mensaje, largo)
{
	var r=true,s=obj.value; if (s != ''){r=s.length<=largo;
	if(!r){alert(mensaje); obj.focus();}} return r;
}

function strLongitud (obj, mensaje, largo)
{
	var r=true,s=obj.value; if (s != ''){r=(s.length==largo);
	if(!r){alert(mensaje); obj.focus();}} return r;
}

function validarCorreo (obj, mensaje)
{
	var  s=obj.value; if(s=='')return true;
	r=((s.indexOf('@')!=-1)&&(s.indexOf('@')!=0)&&(s.indexOf('@')!=s.length-1)&&(s.indexOf('.') != -1)&&(s.indexOf('.')!=0)&&(s.indexOf('.')!= s.length -1))  
	if(!r){alert(mensaje); obj.focus();} return r;
}

function validarTelefono (obj, mensaje, largo)
{	
	var s=obj.value, r=(s=='');	
	if (!r) {r=(!s.match(/[^\d\s-]/)); if(r)r=(s.length>=largo);} 	
	if(!r){alert(mensaje); obj.focus();} return r;
}

function compararCampos (obj1, obj2, mensaje)
{
	var s1=obj1.value,s2=obj2.value, r=(s1 == s2);
	if(!r){alert(mensaje); o2.focus();} return r;
}

function seleccionarSelect (obj, mensaje, silenciar)
{
	var x=obj.selectedIndex, val=obj.options[x].value; 
	r=((val!=null)&&(val!='')&&(val!=0));
	if(!r&&!silenciar){alert(mensaje); obj.focus();} return r;
	}

function datoNumerico (obj, mensaje)
{
	var s=obj.value, r=(!isNaN(s));
	if (!r) {alert(mensaje); obj.focus(); }
	return r;
}

function seleccionarRadio (obj, mensaje)
{
	var o=MM_findObj(id),r=false;
	for(i=0;((i<obj.length)&&(!r));i++) r=(o[i].checked);
	if(!r){alert(mensaje); o[0].focus(); } return r;
}

function seleccionarSheck (obj, mensaje, silenciar)
{
	var c=obj.length, r=false;
	if (obj.length) {for(i=0;((i<c)&&(!r));i++)r=o[i].checked;} else{r=obj.checked;}	
	if (!r&&!silenciar) {alert(mensaje); if(obj.length)o=o[0]; obj.focus(); } return r;	
}


function validarFecha (obj, 	mensaje)
	{	
		r = FDK_ValidateDate(obj,false,'','','4',mensaje);
		r=r=='';
		if(!r)
		{
			alert(mensaje);
		}
		return r;
	}	
	

function FDK_ValidateDate(FormElement,Required,MinDate,MaxDate,Format,ErrorMsg)
{
	
	var msg = "";
	var theString = FormElement.value;
	//theString contiene fecha con formato dd/mm/aaaa
	alert (date());
	
	var dateVar = new Date(theString);
	var peavd = ErrorMsg;
	var d = dateVar;

	var fullYear = d.getYear();
	if (fullYear <= 10) fullYear += 2000;
	if (fullYear <= 200) fullYear += 1900;
    d.setYear(fullYear)
    dateVar.setYear(fullYear)


	var theLen = FDK_StripChars(" ",theString).length
	if (theLen == 0)
	{
		if (!Required) return "";
		else return peavd;
	}

	if (isNaN(dateVar.valueOf()) || (dateVar.valueOf() == 0))
		return peavd;

	// Check for correct range.
	if (MinDate != "")
	{
		var Today = new Date(MinDate);
		if (dateVar <= Today)
		  return peavd;
	}
	if (MaxDate != "")
	{
		var Today = new Date(MaxDate);
		if (dateVar >= Today)
		return peavd;
	}

	// We have a valid date. Reformat it and write it back to the control
	var style = Format;

	if (style == "2") {
	  var date_string = d.getDate() + "/" + (d.getMonth()+1) + "/" + fullYear;
	  }
	  else if (style == "3") {
	  var date_string = d.getDate() + "-" + (d.getMonth()+1) + "-" + fullYear;
	  }
	  else if (style == "4") {
	  var date_string = d.getDate() + "/" + (d.getMonth()+1) + "/" + fullYear;
	  }
	  else if (style == "5") {
	  var date_string = d.getDate() + " " + getMonthName(d) + ", " + fullYear;
	  }
	  else if (style == "6") {
	  var date_string = getDayName(d) + " " + getMonthName(d) + " " + d.getDate() + ", " + fullYear;
	  }
	  else if (style == "7") {
	  var date_string = d.toLocaleString();
	  }
	  else if (style == "1") {
	  var date_string = theString;
	  }
	  else {
	  var date_string = d.toGMTString();
  }

	FormElement.value=date_string;
	return msg;
}

function FDK_StripChars(theFilter,theString)
{
	var strOut,i,curChar

	strOut = ""
	for (i=0;i < theString.length; i++)
	{		
		curChar = theString.charAt(i)
		if (theFilter.indexOf(curChar) < 0)	// if it's not in the filter, send it thru
			strOut += curChar		
	}	
	return strOut
}



// Registrar eventos.
// -------------------------------------------------------------------------- //
/*
function addEvent(obj, evType, fn){  
	if (obj.addEventListener)
		{
		obj.addEventListener( evType, fn, true );
		return true;			
	}else if (obj.attachEvent)
		{
		var r = obj.attachEvent( 'on' + evType, fn );
		return r;		
	}else{
		//return false;
		inicializar();
		}		
	}	
*/



//addEvent(window, 'load', inicializar); 

