// JavaScript Document

//********************************************************************************************************
//*************************  DEFINICION DE VARIABLE GLOBALES PARA LA VALIDACION  *************************
//********************************************************************************************************

var SummaryError = "";
var CountError = 0;
var ReportingError = false;
var message = "";
var status = true;
var ValEmpty = false;

//********************************************************************************************************
//***********************************  CONSTRUCTOR DE LA VALIDACION   ************************************
//********************************************************************************************************
function ValidarData(element,type,name,require)
{						
		// Type Definition
		// Alphanumeric		
		// Alfabetico  --> checkletter(data, name)
		// Number  -> checknumber(data, name)
		// Mail  --> checkmail(data, name)
		// Phone  --> checkphone(data, name)
		// NameOwn  --> checkNombrePropio(data, name)
		// NameSeveral -->checkNombresVarios(data, name)
		// Comparador -->(data, name)
		// Letters -->(data, name)
		// 
		if ( type != "Radio") 
		{
			data = document.getElementById(element).value; 
			
		}
		else
		{ data = 0;}
		
		// SE determina si el campo es requerido.
		// ValEmpty  = es una variable que nos idica con su valor si el campo mencionado contiene valor vacio.(True = vacio. / False = Con dato.)
		ValEmpty = false;
		if (require == true)
		{
			checkempty(data,name);
			if ( ValEmpty == false)
			{
				switch (type) 
					{
						case 'Alfabetico': 							
							checkletter(data, name);	
							break;
						case 'Alphanumeric': 
							checkalfanumeric(data, name);
							break;
						case 'Number':
							checknumber(data, name);	
							break;
						case 'Letters':
							checkNombrePropio(data, name);	
							break;
						case 'Phone': 
							checkphone(data, name);	
							break;
						case 'Sltcombo': 
							checkSlt(element, name, 0);	
							break;
						case 'Mail': 
							checkmail(data, name);	
							break;
						case 'NameOwn': 
							resp = checkNombrePropio(data, name);	
							break;
						case 'Radio':							
							checkRadio(element,name);
							break;
						case 'Comparador':							
							checkComparador(element,name);
							break;
						case 'Comparador':							
							checkComparador(element,name);
							break;
						case 'SltAjax': 
							resp = checkSltAjax(element, name);	
							break;
						default: result = 'unknown';
					}										
			}
		}
		
		if (require == false )
		{					
			switch (type) 
				{
					case 'Alfabetico': 							
						checkletter(data, name);	
						break;
					case 'Alphanumeric': 
						checkalfanumeric(data, name);
						break;
					case 'Number':
					 	checknumber(data, name);	
						break;
					case 'Letters':
						checkNombrePropio(data, name);	
						break;
					case 'Phone': 
						checkphone(data, name);	
						break;
					case 'Sltcombo': 
						checkSlt(element, name, 0);	
						break;
					case 'Mail': 
						checkmail(data, name);	
						break;
					case 'NameOwn': 
						checkNombrePropio(data, name);	
						break;
					case 'Radio':						
						checkRadio(element,name);
						break;
					case 'Comparador':							
						checkComparador(element,name);
						break;
					case 'SltAjax': 
						resp = checkSltAjax(element, name);	
						break;
					case 'NameSeveral': 
						checkNombresVarios(data, name);	
						break;
					default: result = 'unknown';
				}																
		}				
}


function ViewError()
{
		var message = "Se han detectado los siguientes errores:\n\n" + SummaryError +"\npor favor, verifique e intente de nuevo. ";
		alert(message);		
		status = false;
		SummaryError = "";	
		ReportingError = false;
}



//********************************************************************************************************
//*************************  FUNCIONES DE VALIDIDACION DE DATOS  SEGUN SU TIPO  **************************
//********************************************************************************************************

function checkSltAjax(element, name)
{
	var val = document.getElementById(element).value
	if(val == 0)
		{ SummaryError = SummaryError + " - Debe seleccionar una opcion en el campo "+ name + ".\n";  ReportingError=true; }			
	
}


function checkComparador(ListElement,ListName)
{
	alert('hola mundo')
	/*ElemName = ListElement.split(",");
	dato1 = document.getElementById(ElemName[0]).value;
	dato2 = document.getElementById(ElemName[1]).value;
	alert(dato1);
	NameOpc = ListName.split(",");
	if(dato1 != dato2)
	{ 
		SummaryError = SummaryError + " - El campo "+ NameOpc[0] + " y el campo " + NameOpc[1] + "no coinciden.\n"; 
		ReportingError=true; 
	}	*/
	
}

function checkletter(data, name)
{
 	var x=data;
	var aletter =   /[^a-zA-Z]|'|á|é|í|ó|ú|ñ|ü|Á|É|Í|Ó|Ú|Ñ|Ü|/;
	if (x !='')
	{
		if (!aletter.test(x)) 			
		{ SummaryError = SummaryError + " - El campo "+ name + " posee caracteres invalidos.\n"; ReportingError=true; }		
	}
}

function checkalfanumeric(data, name)
{	
	var x=data;
	var alfabetic =  /[^a-zA-Z0-9]|'|á|é|í|ó|ú|ñ|ü|Á|É|Í|Ó|Ú|Ñ|Ü|/;  
	if (x !='')
	{
		if (!alfabetic.test(x))			
		{ SummaryError = SummaryError + " - El campo "+ name + " no es alfanum\u00E9rico.\n"; ReportingError=true;}										
	}		
}  

function checkRadio (CadElement, name)
{	
	Marcador = 0;
	ElemName = CadElement.split(",");
	Cant  = ElemName.length;	
	for ( var i = 0; i < Cant; i++)
	{		
		if (document.getElementById(ElemName[i]).checked == true ) 
		{ Marcador = 1 }
	}
	if (  Marcador == 0 ) 
	{ SummaryError = SummaryError + " - El Conjunto de la opcion: "+ name + " no tiene una selecci\u00F3n valida.\n"; ReportingError=true; }		
}
function checkNombrePropio(data, name)
{
 	var x=data;
	var aletter =  /^([a-zA-Z]|'|á|é|í|ó|ú|ñ|ü|Á|É|Í|Ó|Ú|Ñ|Ü|\s|\'|\-)+$/;  
	if (x !='')
	{
		if (!aletter.test(x))			
		{ SummaryError = SummaryError + " - El campo "+ name + " no es un nombre valido.\n"; ReportingError=true; }									
	}
}

function checkNombresVarios(data, name)
{
 	var x=data;
	var aletter =  /^([0-9]|[a-z]|[A-Z]|'|á|é|í|ó|ú|ñ|ü|Á|É|Í|Ó|Ú|Ñ|Ü|\s|\'|-)+$/;
	if (x !='')
	{
		if (!aletter.test(x))		
		{ SummaryError = SummaryError + " - El campo "+ name + " no es un nombre valido.\n"; ReportingError=true; }										
	}
}

function checknumber(data, name)
{
	var x=data;
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	if (x !='')
	{
		if (!anum.test(x)) 		
		{ SummaryError = SummaryError + " - El campo "+ name + " no es num\u00E9rico.\n"; ReportingError=true; }
	}
}
function checkmail(data, name)
{
	var x=data;
	var amail=/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/
	if (x !='')
	{		
		if (!amail.test(x)) 	
		{ SummaryError = SummaryError + " - El campo "+ name + " no es un E-mail valido.\n"; ReportingError=true; }
	}
}
function checkphone(data, name)
{
	var x=data;
	var aphone=/^([0-9\s\+\-])+$/
	if (x !='')
	{
		if (!aphone.test(x))	
		{ SummaryError = SummaryError +  " - El campo "+ name + " no es un tel\u00E9fono valido.\n"; ReportingError=true; }						
	}
}


function checkempty(data,name)
{
	if(data=="")
	{ SummaryError = SummaryError + " - El campo "+ name + " esta vacio.\n"; ValEmpty = true;  ReportingError=true; }	
}

function checkSlt2(_id,_value, name)
{
		var error = true;
		var oSelect = document.getElementById(_id);		
		var _valSel = oSelect.options[oSelect.selectedIndex].value		
		if (_value==_valSel)
		{ SummaryError = SummaryError + " - Debe seleccionar una opcion en el campo "+ name + ".\n";   ReportingError=true; }	
}

function checkSlt(_id, name )
{
		var error = true;
		var oSelect = document.getElementById(_id);
		
		if(oSelect.type=="select-one")
		{
			if (oSelect.selectedIndex==0) 
			{ SummaryError = SummaryError + " - Debe seleccionar una opcion en el campo "+ name + ".\n"; error = false;  ReportingError=true; }							
		}		
		return error;
}

function esSeleccionado(_id, _value)
{
		var error 	= true;
		var oSelect = document.getElementById(_id);
		
		var _valSel = oSelect.options[oSelect.selectedIndex].value
		
		if (_value==_valSel)
			error =false
		
		return error;
}

function checkimagen(element, name)
{
	 extensiones_permitidas = new Array(".gif", ".jpg", ".jpge"); 
	 
	  if (element) 
   		{ 
      //recupero la extensión de este nombre de archivo 
      extension = (element.substring(element.lastIndexOf("."))).toLowerCase(); 
      //compruebo si la extensión está entre las permitidas 
      permitida = false; 
      for (var i = 0; i < extensiones_permitidas.length; i++) { 
		  if (extensiones_permitidas[i] == extension) { 
		 permitida = true; 
		 
         break; 
         } 
      } 
	   if (!permitida) { 
	   SummaryError = SummaryError + " - El campo "+ name + " tiene formato no valido. \n"; error = false;  ReportingError=true; 
       }
	  }
}

