//-------------------------------------------------------------------
// Author: Raul Morales <raulemofe@hotmail.com>
// WWW: http://www.morquechosdesign.com/
// Funciones de Validaciones en formularios
//-------------------------------------------------------------------
function TEValidacion(FormName, RequestRequiredBlank, RequestError, RequestOk) // Validación generica...
{
	FormName=document.getElementById(FormName);
	var Elements=FormName.length;
	if(Elements>0)
	{
		for(var i=0; i<Elements; i++)
		{
			var Class=FormName.elements[i].className;
			var Type=FormName.elements[i].type;
			FormName.elements[i].value=TETrim(FormName.elements[i].value); // Quitamos los espacios en blanco a la derecha y a la izquierda y actualizamos el Contenido del campo...
			var Value=FormName.elements[i].value; // Obtenemos el Contenido ya sin espacios en blanco...
			var Name=FormName.elements[i].name;
			var Id=FormName.elements[i].id;
			//alert("Class: "+Class+";\nType: "+Type+";\nValue: "+Value+";\nName: "+Name+";\nId: "+Id);
			if(Class)
			{
				switch(Class)
				{
					case "TEInputTextEmailRequired": 
						if(Type=='text')
						{
							if(!Value) 
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								if(RequestRequiredBlank) { alert(RequestRequiredBlank); }
								FormName.elements[i].focus();
								return false;
							}
							else if(!TEEmailValidate(Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert("Formato de correo electrónico incorrecto!"); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputTextEmailRequired'; 
							}
						}
					break;
					case "TEInputTextEmailNoRequired": 
						if(Type=='text')
						{
							if(!TEEmailValidate(Value) && (Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								if(RequestError) { alert("Formato de correo electrónico incorrecto!"); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputTextEmailNoRequired'; 
							}
						}
					break;
					case "TEInputNumRequired":
						if(Type=='text')
						{
							if(!Value) 
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								if(RequestRequiredBlank) { alert(RequestRequiredBlank); }
								FormName.elements[i].focus();
								return false;
							}
							else if(!TEisInteger(Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert("Esto no es un número entero!\nNo debe contener Letras, comas, puntos, etc."); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputNumRequired'; 
							}
						}
					break;
					case "TEInputNumNoRequired":
						if(Type=='text')
						{
							if(!TEisInteger(Value) && (Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert("Esto no es un número!\nNo debe contener Letras, comas, puntos, etc."); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputNumNoRequired'; 
							}
						}
					break;
					case "TEInputDecRequired":
						if(Type=='text')
						{
							if(!Value) 
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								if(RequestRequiredBlank) { alert(RequestRequiredBlank); }
								FormName.elements[i].focus();
								return false;
							}
							else if(!TEisNumeric(Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert("Esto no es un número!\nSolo puede contener un punto decimal\nNo debe contener comas ni algún otro signo de puntuación"); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputDecRequired'; 
							}
						}
					break;
					case "TEInputDecNoRequired":
						if(Type=='text')
						{
							if(!TEisNumeric(Value) && (Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert("Esto no es un número!\nSolo puede contener un punto decimal\nNo debe contener comas ni algún otro signo de puntuación"); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputDecNoRequired'; 
							}
						}
					break;
					case "TEInputTextRequired": 
						if((Type=='text') || (Type=='textarea') || (Type=='password') || (Type=='select-one') || (Type=='file'))
						{
							if(!Value) 
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								if(RequestRequiredBlank) { alert(RequestRequiredBlank); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputTextRequired'; 
							}
						}
					break;
					case "TEInputDateRequired":
						if(Type=='text')
						{
							if(!Value) 
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								if(RequestRequiredBlank) { alert("Escribe una fecha correcta!"); }
								FormName.elements[i].focus();
								return false;
							}
							else if(!isDate(Value,'dd/MM/yyyy'))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert(RequestError); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputDateRequired'; 
							}
						}
					break;
					case "TEInputDateNoRequired":
						if(Type=='text')
						{
							if(!isDate(Value,'dd/MM/yyyy') && (Value))
							{ 
								FormName.elements[i].style.border='1px solid #CC3333';
								FormName.elements[i].value='';
								if(RequestError) { alert("Escribe una fecha correcta!"); }
								FormName.elements[i].focus();
								return false;
							}
							else 
							{ 
								FormName.elements[i].style.border='1px solid #7f9db9';
								FormName.elements[i].className='TEInputDateNoRequired'; 
							}
						}
					break;
					case "TEInputButton": 
						if(Type=='submit' || Type=='button')
						{
							FormName.elements[i].disabled=true;
						}
					break;
					default: break;
				}
			}
		}
	}
	if(RequestOk) { alert(RequestOk); }
	return true;
}

function TEEmailValidate(Email) // Valida el formato de un email(Email) dado...
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(Email)) { return true; } 
	else { return false; }
}

//-------------------------------------------------------------------
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
// Trim functions (Elimina los espacios vacios de un string)
//-------------------------------------------------------------------
function TELTrim(str)
{
	if (str==null){return null;}
	for(var i=0;str.charAt(i)==" ";i++);
	return str.substring(i,str.length);
}

function TERTrim(str)
{
	if (str==null){return null;}
	for(var i=str.length-1;str.charAt(i)==" ";i--);
	return str.substring(0,i+1);
}

function TETrim(str){return TELTrim(TERTrim(str));}

//-------------------------------------------------------------------
// isBlank(value) - Devuelve verdadero si el valor enviado es vacío o contiene espacios en blanco.
//-------------------------------------------------------------------
function TEisBlank(val)
{
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) 
	{
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
	}
	return true;
}

//-------------------------------------------------------------------
// isInteger(value) - Devuelve verdaderos si todos los elementos del "val" son numeros.
//-------------------------------------------------------------------
function TEisInteger(val)
{
	if (TEisBlank(val)){return false;}
	for(var i=0;i<val.length;i++)
	{
		if(!TEisDigit(val.charAt(i))){return false;}
	}
	return true;
}

//-------------------------------------------------------------------
// isDigit(value) - Devuelve verdadero si el valor(num) es un digito numerico.
//-------------------------------------------------------------------
function TEisDigit(num) 
{
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

//-------------------------------------------------------------------
// isNumeric(value) - Devuelve verdadero si "val" es un numero
//-------------------------------------------------------------------
function TEisNumeric(val){return(parseFloat(val,10)==(val*1));}

//-------------------------------------------------------------------
// TableEditor - Funciones generales del TableEditor
//-------------------------------------------------------------------
function TEsearch() 		{	var searchStr=document.getElementById('searchInput').value; location.href = location.href + (location.search.length ? '&' : '?') + 'search=' + searchStr; }
function TEorderBy(field) 	{ location.href = location.href + (location.search.length ? '&' : '?') + 'orderby=' + encodeURIComponent(field); }
function TERowAdd() 		{ location.href = location.href + (location.search.length ? '&' : '?') + 'add=1'; }
function TERowEdit()
{
	var checkboxes=document.getElementsByTagName('input'); var edit=''; 
	for(var i=0; i<checkboxes.length; ++i) 
	{
		if(checkboxes[i].getAttribute('type') == 'checkbox' && checkboxes[i].getAttribute('id') == 'rowSelector' && checkboxes[i].checked) 
		{
			if(edit.length>0) {	alert('Solo puedes seleccionar un registro a la vez...'); return; } 
			else { edit = 'edit=' + encodeURIComponent(checkboxes[i].value); }
		}
	}
	if(edit.length==0) { alert('Selecciona un registro para modificar!'); return; }
	location.href = location.href + (location.search.length ? '&' : '?') + edit;
}
function TERowDel()
{
	var checkboxes=document.getElementsByTagName('input'); var deletes=new Array();
	for(var i=0; i<checkboxes.length; ++i) 
	{
		if(checkboxes[i].getAttribute('type') == 'checkbox' && checkboxes[i].getAttribute('id') == 'rowSelector' && checkboxes[i].checked) { deletes.push('delete[]=' + encodeURIComponent(checkboxes[i].value)); }
	}
	if(deletes.length==0) { alert('Selecciona uno o varios registros para borrar!'); return; }
	if(confirm('Estas seguro de borrar los registros seleccionados? ' + (deletes.length > 1 ? '\nPrecaución: Se seleccionaron varios registros...' : ''))) 
	{ location.href = location.href + (location.search.length ? '&' : '?') + deletes.join('&'); }
}
function TERowView()
{
	var checkboxes=document.getElementsByTagName('input'); var view='';
	for(var i=0; i<checkboxes.length; ++i) 
	{
		if(checkboxes[i].getAttribute('type') == 'checkbox' && checkboxes[i].getAttribute('id') == 'rowSelector' && checkboxes[i].checked) 
		{
			if(view.length > 0) { alert('Sólo puedes seleccionar un registro a la vez...'); return; } 
			else { view = 'view=' + encodeURIComponent(checkboxes[i].value); }
		}
	}
	if(view.length==0) { alert('Debes seleccionar un registro!'); return; }
	location.href = location.href + (location.search.length ? '&' : '?') + view;
}
function TERowCopy()
{
	var checkboxes=document.getElementsByTagName('input'); var copy='';
	for(var i=0; i<checkboxes.length; ++i) 
	{
		if(checkboxes[i].getAttribute('type') == 'checkbox' && checkboxes[i].getAttribute('id') == 'rowSelector' && checkboxes[i].checked)  
		{
			if(copy.length>0) {	alert('Debes seleccionar sólo un registro a la vez...'); return; } 
			else { copy='copy=' + encodeURIComponent(checkboxes[i].value); }
		}
	}
	if(copy.length == 0) {	alert('Debes seleccionar un registro!'); return; }
	location.href = location.href + (location.search.length ? '&amp;' : '?') + copy;
}
function TERowHighlight(trObj, checkboxObj, origClass)
{
	if (event.srcElement.tagName.toLowerCase() == 'td' || event.srcElement.tagName.toLowerCase() == 'tr') {	checkboxObj.checked = !checkboxObj.checked; } 
	else if (event.srcElement.tagName.toLowerCase() == 'input') { event.cancelBubble = true; }
	if (trObj.className == 'TEHighlightedRow') { trObj.className = origClass; } 
	else { trObj.className = 'TEHighlightedRow'; }
}

//-------------------------------------------------------------------
// Author: Raul Morales <raulemofe@hotmail.com>
// WWW: http://www.morquechosdesign.com/
// Otras Funciones
//-------------------------------------------------------------------
function TEWindowOpenPopup(Url, Name, Width, Height, Align, Bars)
{
	if(Align=="1") { var ScreenWidth=screen.width; var ScreenHeight=screen.height; var Left=(parseInt(ScreenWidth-Width)/2); var Top=(parseInt(ScreenHeight-Height)/2); }
	else { var Left=0; var Top=0; }
	if(!Name) { var Name="Popup"; }
	if(Bars==0) { var Parameters=" Scrollbars=yes, Directories=no, Location=no, Menubar=no, Status=no, Titlebar=no, Toolbar=no, Resizable=no "; }
	else if(Bars==1) { var Parameters=" Scrollbars=yes, Directories=yes, Location=yes, Menubar=yes, Status=yes, Titlebar=yes, Toolbar=yes, Resizable=yes "; }
	if(Url) { window.open(Url,Name,'width='+Width+', height='+Height+', left='+Left+', top='+Top+', '+Parameters+''); }
	else { alert("No se puede abrir el popup!"); }
}

function TEcurrentTime() // Devuelve la hora actual...
{
	var d = new Date();
	var hours   = d.getHours() > 9 ? d.getHours() : '0' + d.getHours();
	var minutes = d.getMinutes() > 9 ? d.getMinutes() : '0' + d.getMinutes();
	var seconds = d.getSeconds() > 9 ? d.getSeconds() : '0' + d.getSeconds();
	return hours + ':' + minutes + ':' + seconds;
}






