//	Funciones para controlar la entrada de fechas.
function IsNumeric (valor) {
	var log=valor.length;
	var sw = "S";
	for (x=0; x<log; x++) {
		v1 = valor.substr(x,1);
		v2 = parseInt(v1);
		// Comprobación de valor numérico.
		if (isNaN(v2)) {
			sw = "N";
		}
	}
	if (sw == "S") {
		return true;
	} else {
		return false;
	}
}

var primerslap = false;
var segundoslap = false;
function formateafecha (fecha) {
	var longitud = fecha.length;
	var dia;
	var mes;
	var ano;
	
	if ((longitud >= 2) && (primerslap == false)) {
		dia = fecha.substr(0,2);
		if ((IsNumeric(dia) == true) && (dia <= 31) && (dia != "00")) {
			fecha = fecha.substr(0,2)+"/"+fecha.substr(3,7);
			primerslap = true;
		} else {
			fecha = "";
			primerslap = false;
		}
	} else {
		dia = fecha.substr(0,1);
		if (IsNumeric(dia) == false) {
			fecha = "";
		}
		if ((longitud <= 2) && (primersalp=true)) {
			fecha = fecha.substr(0,1);
			primerslap = false;
		}
	}
	if ((longitud >=5) && (segundoslap == false)) {
		mes = fecha.substr(3,2);
		if ((IsNumeric(mes)==true) && (mes <= 12) && (mes != "00")) {
			fecha = fecha.substr(0,5) + "/" + fecha.substr(6,4);
			segundoslap = true;
		} else {
			fecha = fecha.substr(0,3);
			segundoslap = false;
		}
	} else {
		if ((longitud <= 5) && (segundoslap == true)) {
			fecha = fecha.substr(0,4);
			segundoslap = false;
		}
	}
	if (longitud >= 7) {
		ano = fecha.substr(6,4);
		if (IsNumeric(ano) == false) {
			fecha = fecha.substr(0,6);
		} else {
			if (longitud == 10) {
				if ((ano == 0) || (ano < 1900) || (ano > 2100)) {
					fecha = fecha.substr(0,6);
				}
			}
		}
	}
	
	if (longitud >= 10) {
		fecha = fecha.substr(0,10);
		dia = fecha.substr(0,2);
		mes = fecha.substr(3,2);
		ano = fecha.substr(6,4);
		// Ano no bisiesto y es febrero y el dia es mayor a 28
		if (((ano % 4 != 0) && ((ano % 100 != 0) || (ano % 400 == 0))) && (mes == 02) && (dia > 28)) {
			fecha = fecha.substr(0,2) + "/";
		}
	}
	
	return fecha;
}

// Formato de hora
var dospuntos = false;
function formateahora (hora) {
	var longitud = hora.length;
	var horas;
	var minutos;
	
	if ((longitud >= 2) && (dospuntos == false)) {
		horas = hora.substr(0,2);
		if ((IsNumeric(horas) == true) && (horas <= 23)) {
			hora = hora.substr(0,2) + ":" + hora.substr(3,5);
			dospuntos = true;
		} else {
			hora = hora.substr(0,1);
			dospuntos = false;
		}
	} else {
		horas = hora.substr(0,1);
		if ((IsNumeric(horas) == false) || ((horas >= 3))) {
			hora = "";
		} else {
			if ((longitud <= 2) && (dospuntos = true)) {
				horas = hora.substr(0,1);
				dospuntos = false;
			}
		}
	}
	if (longitud == 4) {
		minutos = hora.substr(3,1);
		if ((!IsNumeric(minutos)) || (minutos > 5)) {
			hora = hora.substr(0,3);
		}
	}
	
	if (longitud == 5) {
		minutos = hora.substr(3,2);
		if ((!IsNumeric(minutos)) || (minutos > 59)) {
			hora = hora.substr(0,4);
		}
	}
	
	return (hora);
}

// Función para cambiar de campo utilizando Enter
function cambiaEnter (e, obj) {
	//	Control 0 (ninguno) 1 (fecha) 2 (hora)
	tecla = (document.all) ? e.keyCode : e.which;
	if (tecla==13) {
		document.getElementById(obj).focus();
		return false;
	} else {
		return true;
	}
}

/**********************************************
 ***	Funciones para controles de colores	***
 **********************************************/
function suckerfish(type, tag, parentId) {
	if (window.attachEvent) {
		window.attachEvent("onload", function() {
			var sfEls = (parentId==null)?document.getElementsByTagName(tag):document.getElementById(parentId).getElementsByTagName(tag);
			type(sfEls);
		});
	}
}

sfHover = function(sfEls) {
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}

sfFocus = function(sfEls) {
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onfocus=function() {
			this.className+=" sffocus";
		}
		sfEls[i].onblur=function() {
			this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
		}
	}
}

sfActive = function(sfEls) {
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmousedown=function() {
			this.className+=" sfactive";
		}
		sfEls[i].onmouseup=function() {
			this.className=this.className.replace(new RegExp(" sfactive\\b"), "");
		}
	}
}

sfTarget = function(sfEls) {
	var aEls = document.getElementsByTagName("A");
	document.lastTarget = null;
	for (var i=0; i<sfEls.length; i++) {
		if (sfEls[i].id) {
			if (location.hash==("#" + sfEls[i].id)) {
				sfEls[i].className+=" sftarget";
				document.lastTarget=sfEls[i];
			}
			for (var j=0; j<aEls.length; j++) {
				if (aEls[j].hash==("#" + sfEls[i].id)) aEls[j].targetEl = sfEls[i];
				aEls[j].onclick = function() {
					if (document.lastTarget) document.lastTarget.className = document.lastTarget.className.replace(new RegExp(" sftarget\\b"), "");
					if (this.targetEl) this.targetEl.className+=" sftarget";
					document.lastTarget=this.targetEl;
					return true;
				}
			}
		}
	}
}	
suckerfish(sfFocus, "INPUT");
suckerfish(sfFocus, "TEXTAREA");
suckerfish(sfFocus, "SELECT")
