/*
 * Metodo que comprueba que el campo este relleno.
 * @param valor Valor del campo a comprobar.
 */
function relleno(valor) {
	var ret = valor.length > 0;

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un DNI valido.
 * @param valor Valor del campo a comprobar.
 */
function validarDNI(valor) {
	var ret = true;

	valor = valor.toUpperCase();

	if (valor.indexOf('X') != -1) {
		// Tarjeta de residencia empieza siempre por X, ignorar la X.
		valor = valor.substring(1, valor.length);
	}

	var miLetra = valor.substring(valor.length - 1, valor.length);

	var dni = valor.substring(0, valor.length - 1);

	if (dni > 0 && dni < 99999999) {
		var letra;

		resto = dni % 23; // Resto de la division entre 23.

		switch (resto) {
			// En funcion del resto asigna letra.
			case 0:	letra = "T";
					break;
			case 1:	letra = "R";
					break;
			case 2:	letra = "W";
					break;
			case 3:	letra = "A";
					break;
			case 4:	letra = "G";
					break;
			case 5:	letra = "M";
					break;
			case 6:	letra = "Y";
					break;
			case 7:	letra = "F";
					break;
			case 8:	letra = "P";
					break;
			case 9:	letra = "D";
					break;
			case 10:letra = "X";
					break;
			case 11:letra = "B";
					break;
			case 12:letra = "N";
					break;
			case 13:letra = "J";
					break;
			case 14:letra = "Z";
					break;
			case 15:letra = "S";
					break;
			case 16:letra = "Q";
					break;
			case 17:letra = "V";
					break;
			case 18:letra = "H";
					break;
			case 19:letra = "L";
					break;
			case 20:letra = "C";
					break;
			case 21:letra = "K";
					break;
			case 22:letra = "E";
					break;
			case 23:letra = "U";
					break;
		}

		if (letra != miLetra) {
			ret = false;
		} else {
			ret = true;
		}
	} else {
		ret = false;
	}

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un Codigo Postal valido.
 * @param valor Valor del campo a comprobar.
 */
function validarCP(valor) {
	var ret = (valor.length == 5);
	ret &= (valor >= 0) && (valor <= 99999);

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un Telefono valido.
 * @param valor Valor del campo a comprobar.
 */
function validarTelefono(valor) {
	var ret = (valor.length == 9);
	ret &=
		((valor >= 600000000) && (valor <= 699999999)) ||
		((valor >= 700000000) && (valor <= 799999999)) ||
		((valor >= 800000000) && (valor <= 899999999)) ||
		((valor >= 900000000) && (valor <= 999999999))
		;

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un E-Mail valido.
 * @param valor Valor del campo a comprobar.
 */
function validarEmail(valor) {
	var at     = "@";
	var dot    = ".";
	var lat    = valor.indexOf(at);
	var lvalue = valor.length;
	var ldot   = valor.indexOf(dot);
	
	if	(
			valor.indexOf('!') >= 0 || valor.indexOf('?') >= 0 || valor.indexOf('*') >= 0 || valor.indexOf('$') >= 0 ||
			valor.indexOf('#') >= 0 || valor.indexOf('%') >= 0 || valor.indexOf('&') >= 0 || valor.indexOf('/') >= 0 ||
			valor.indexOf('(') >= 0 || valor.indexOf(')') >= 0 || valor.indexOf('=') >= 0 || valor.indexOf('?') >= 0 ||
			valor.indexOf('[') >= 0 || valor.indexOf(']') >= 0 || valor.indexOf('{') >= 0 || valor.indexOf('}') >= 0
		)
	{
		return false;
	}

	if (valor.indexOf(at) == -1) {
		return false
	}

	if (valor.lastIndexOf(at) != valor.indexOf(at)) {
		return false
	}

	if (valor.indexOf(at) == -1 || valor.indexOf(at) == 0 || valor.indexOf(at) == lvalue) {
		return false
	}

	if (valor.indexOf(dot) == -1 || valor.indexOf(dot) == 0 || valor.indexOf(dot) == lvalue) {
		return false
	}

	if (valor.indexOf(at, (lat + 1)) != -1) {
		return false
	}

	if (valor.substring(lat - 1, lat) == dot || valor.substring(lat + 1, lat + 2) == dot) {
		return false
	}

	if (valor.indexOf(dot, (lat + 2)) == -1) {
		return false
	}

	if (valor.indexOf(" ") != -1 || valor.indexOf('/') != -1) {
		return false
	}

	//Check if we have addresses like something@somewhere.dkjfkdfjkldjkfldklf
	var afterDot = valor.substring(ldot + 1, lvalue);
	if (afterDot.length < 2) {
		return false;
	}


	return true;
}

/*
 * Metodo que comprueba que el campo contenga una Fecha valida.
 * @param valor Valor del campo a comprobar.
 */
function validarFecha(valor, patron) {
//	alert('validarFecha: ' + valor + ' - ' + patron);
	var ret = true;

	// TODO REVISAR.

	if(valor.indexOf("-") > 0) {
		var idx1 = valor.indexOf("-");
		var idx2 = valor.indexOf("-", idx1 + 1);

		var dia  = valor.substring(0, idx1);
		var mes  = valor.substring(idx1 + 1, idx2);
		var anno = valor.substring(idx2 + 1);

		if((dia.length == 2) && (mes.length == 2) && (anno.length == 4)) {
			ret =
				((dia  > 0) && (dia  <=   31)) &&
				((mes  > 0) && (mes  <=   12)) &&
				((anno > 0) && (anno <= 9999));
		} else {
			ret = false;
		}
	} else {
		ret = false;
	}

//	alert('ret: ' + ret);
	return ret;
}

/*
 * Metodo que comprueba que el campo de seleccion tenga un valor seleccionado.
 * @param valor Valor del campo a comprobar.
 */
function seleccionado(valor) {
	var ret = valor != -1;

	return ret;
}

/*
 * Metodo que comprueba que el campo no supere el limite de caracteres.
 * @param valor Valor del campo a comprobar.
 * @param limite Limite de caracteres para el campo.
 */
function longitud(valor, limite) {
	var ret = valor.length <= limite;

	return ret;
}

function validarNumero(valor) {
	return !isNaN(valor);
}


/*
 * Metodo que comprueba que el campo este relleno.
 * @param valor Valor del campo a comprobar.
 */
function relleno(valor) {
	var ret = valor.length > 0;

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un DNI valido.
 * @param valor Valor del campo a comprobar.
 */
function validarDNI(valor) {
	var ret = true;

	valor = valor.toUpperCase();

	if (valor.indexOf('X') != -1) {
		// Tarjeta de residencia empieza siempre por X, ignorar la X.
		valor = valor.substring(1, valor.length);
	}

	var miLetra = valor.substring(valor.length - 1, valor.length);

	var dni = valor.substring(0, valor.length - 1);

	if (dni > 0 && dni < 99999999) {
		var letra;

		resto = dni % 23; // Resto de la division entre 23.

		switch (resto) {
			// En funcion del resto asigna letra.
			case 0:	letra = "T";
					break;
			case 1:	letra = "R";
					break;
			case 2:	letra = "W";
					break;
			case 3:	letra = "A";
					break;
			case 4:	letra = "G";
					break;
			case 5:	letra = "M";
					break;
			case 6:	letra = "Y";
					break;
			case 7:	letra = "F";
					break;
			case 8:	letra = "P";
					break;
			case 9:	letra = "D";
					break;
			case 10:letra = "X";
					break;
			case 11:letra = "B";
					break;
			case 12:letra = "N";
					break;
			case 13:letra = "J";
					break;
			case 14:letra = "Z";
					break;
			case 15:letra = "S";
					break;
			case 16:letra = "Q";
					break;
			case 17:letra = "V";
					break;
			case 18:letra = "H";
					break;
			case 19:letra = "L";
					break;
			case 20:letra = "C";
					break;
			case 21:letra = "K";
					break;
			case 22:letra = "E";
					break;
			case 23:letra = "U";
					break;
		}

		if (letra != miLetra) {
			ret = false;
		} else {
			ret = true;
		}
	} else {
		ret = false;
	}

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un Codigo Postal valido.
 * @param valor Valor del campo a comprobar.
 */
function validarCP(valor) {
	var ret = (valor.length == 5);
	ret &= (valor >= 0) && (valor <= 99999);

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un Telefono valido.
 * @param valor Valor del campo a comprobar.
 */
function validarTelefono(valor) {
	var ret = (valor.length == 9);
	ret &=
		((valor >= 600000000) && (valor <= 699999999)) ||
		((valor >= 700000000) && (valor <= 799999999)) ||
		((valor >= 800000000) && (valor <= 899999999)) ||
		((valor >= 900000000) && (valor <= 999999999))
		;

	return ret;
}

/*
 * Metodo que comprueba que el campo contenga un E-Mail valido.
 * @param valor Valor del campo a comprobar.
 */
function validarEmail(valor) {
	var at     = "@";
	var dot    = ".";
	var lat    = valor.indexOf(at);
	var lvalue = valor.length;
	var ldot   = valor.indexOf(dot);
	
	if	(
			valor.indexOf('!') >= 0 || valor.indexOf('?') >= 0 || valor.indexOf('*') >= 0 || valor.indexOf('$') >= 0 ||
			valor.indexOf('#') >= 0 || valor.indexOf('%') >= 0 || valor.indexOf('&') >= 0 || valor.indexOf('/') >= 0 ||
			valor.indexOf('(') >= 0 || valor.indexOf(')') >= 0 || valor.indexOf('=') >= 0 || valor.indexOf('?') >= 0 ||
			valor.indexOf('[') >= 0 || valor.indexOf(']') >= 0 || valor.indexOf('{') >= 0 || valor.indexOf('}') >= 0
		)
	{
		return false;
	}

	if (valor.indexOf(at) == -1) {
		return false
	}

	if (valor.lastIndexOf(at) != valor.indexOf(at)) {
		return false
	}

	if (valor.indexOf(at) == -1 || valor.indexOf(at) == 0 || valor.indexOf(at) == lvalue) {
		return false
	}

	if (valor.indexOf(dot) == -1 || valor.indexOf(dot) == 0 || valor.indexOf(dot) == lvalue) {
		return false
	}

	if (valor.indexOf(at, (lat + 1)) != -1) {
		return false
	}

	if (valor.substring(lat - 1, lat) == dot || valor.substring(lat + 1, lat + 2) == dot) {
		return false
	}

	if (valor.indexOf(dot, (lat + 2)) == -1) {
		return false
	}

	if (valor.indexOf(" ") != -1 || valor.indexOf('/') != -1) {
		return false
	}

	//Check if we have addresses like something@somewhere.dkjfkdfjkldjkfldklf
	var afterDot = valor.substring(ldot + 1, lvalue);
	if (afterDot.length < 2) {
		return false;
	}


	return true;
}

/*
 * Metodo que comprueba que el campo contenga una Fecha valida.
 * @param valor Valor del campo a comprobar.
 */
function validarFecha(valor, patron) {
//	alert('validarFecha: ' + valor + ' - ' + patron);
	var ret = true;

	// TODO REVISAR.

	if(valor.indexOf("-") > 0) {
		var idx1 = valor.indexOf("-");
		var idx2 = valor.indexOf("-", idx1 + 1);

		var dia  = valor.substring(0, idx1);
		var mes  = valor.substring(idx1 + 1, idx2);
		var anno = valor.substring(idx2 + 1);

		if((dia.length == 2) && (mes.length == 2) && (anno.length == 4)) {
			ret =
				((dia  > 0) && (dia  <=   31)) &&
				((mes  > 0) && (mes  <=   12)) &&
				((anno > 0) && (anno <= 9999));
		} else {
			ret = false;
		}
	} else {
		ret = false;
	}

//	alert('ret: ' + ret);
	return ret;
}

/*
 * Metodo que comprueba que el campo de seleccion tenga un valor seleccionado.
 * @param valor Valor del campo a comprobar.
 */
function seleccionado(valor) {
	var ret = valor != -1;

	return ret;
}

/*
 * Metodo que comprueba que el campo no supere el limite de caracteres.
 * @param valor Valor del campo a comprobar.
 * @param limite Limite de caracteres para el campo.
 */
function longitud(valor, limite) {
	var ret = valor.length <= limite;

	return ret;
}

function validarNumero(valor) {
	return !isNaN(valor);
}


// Optimization for touch devices
function isTouchDevice() {
    return "ontouchstart" in window;
}
$(document).ready(function() {
        if (isTouchDevice()) {
			$("body").removeClass("no-touch");
//			$(".loginBox").addClass('loginBoxJs');
//			$(".loginBoxOk").addClass('loginBoxOkJs');
			$("ul#menu li.text a.text").bind("click", function(e) {
				e.preventDefault();
				return false;
			});
        }
        $(document).bind("touchstart", function(e) {
                var target = $(e.target);
                if (target.is("a.text")) {
                        target = target.parent();
                }
                var isItem = $(target).is("li.text") && $(target).parent().is("ul#menu");
                if (isItem) {
                        var opened = target.hasClass("sfHover");
                        $("ul#menu li.text").removeClass("sfHover");
						$(".loginBox").hide(); $(".loginBoxOk").hide();
                        if (opened) {
								location.href = $(target).find("a.text").attr("href");
                                return false;
                        }
                        e.preventDefault();
                        target.addClass("sfHover");
                        return false;
                }
                if ($(target).parents("ul#menu li.text").size() != 0) {
                        return true;
                }
				var isRibbon = $(target).is(".myVodafone a.open");
				if (isRibbon) {
					if (!$(".loginBox").hasClass('loginBoxJs')) {
						$(".loginBox").show().addClass('loginBoxJs');
						$(".loginBoxOk").show().addClass('loginBoxOkJs');
					} else {
						$(".loginBox").toggle();
						$(".loginBoxOk").toggle();
					}
					$("ul#menu li.text").removeClass("sfHover");
					return false;
				}
				if ($(target).parents(".loginBox").size() != 0) {
					return true;
				}
                $("ul#menu li.text").removeClass("sfHover");
				$(".loginBox").hide(); $(".loginBoxOk").hide();
                return true;
        }); 
	// ribbon para navegador
	if (!isTouchDevice()) {
		// Apertura: raton
		$(".myVodafone a.open").mouseover(function(e) {
			e.preventDefault();
			$(".loginBox").show().addClass('loginBoxJs');
			$(".loginBoxOk").show().addClass('loginBoxOkJs');
		});
		// Cierre: raton
		$(".loginBox").mouseup(function() {
			return false
		});
		$(".loginBoxOk").mouseup(function() {
			return false
		});
		$(document).mouseup(function(e) {
			if($(e.target).parent(".myVodafone a").length==0 ) {
				$(".loginBox").hide();
				$(".loginBoxOk").hide();
			}
		}); 
	}
});

