// JavaScript Document
/*AmcGestion*/
/*
1 - Requerido
2 - Lleno
3 - numerico
4 - controldata
5 - Email
6 - Tamaño
7 - Telefono
8 - Caracter_ilegal
9 - Combos (campos)
10 - precio
11 - Dni
12 - formatoprecio
13 - numeroentero
14 - FormatNIF
15 - comprobarfechas
16 - positivo
*/

function comprobar(formulario,tenda){
	if (formulario.cantidad){cantidad=formulario.cantidad.value}else{
		if (formulario.Cantidad){cantidad=formulario.Cantidad.value}else{cantidad = formulario.elements.length;}
	}
	if (tenda == 1){
		for (var i=0; i < cantidad; i++) {
			campo = formulario.elements[i];
			//alert(campo.name + " " + i + "" + campo.value)
			if (campo.value == "España"){
				campo = formulario.elements["Provincia"].value
				campo2 = formulario.elements["Cp"].value
				a = provincia_cp(campo,campo2)
				if (!a) {
					formulario.elements["Cp"].focus(); 
				}
			}
			else {
				a = llamada(campo);
				if (campo.type == "password" && a) {
					if (campo.value.length < 4){
						alert("El campo Password debe constar de 4 digitos mínimo.");
						campo.focus();
						return false;
					}
					else{
						i++
						campo2 = formulario.elements[i];
						a = password(campo,campo2);
					}
				}
			}
			if (!a) {
				break;
			}
		//alert(a)
		}
		return a;
	}else{
		for (var i=0; i < cantidad; i++) {
			campo = formulario.elements[i];
			a = llamada(campo);
			if (campo.type == "password" && a) {
				if (campo.value.length < 4){
					alert("El campo Password debe constar de 4 digitos mínimo.");
					campo.focus();
					return false;
				}
				else{
					i++
					campo2 = formulario.elements[i];
					a = password(campo,campo2);
				}
			}
			if (!a) {
				break;
			}
		}
		return a;	
	}
}

function llamada(campo)
{
	//alert(campo.type);
	valor = campo.alt; if (valor=="" || campo.type!="text"){a=true; return a}
	var valor_array = valor.split("_");
	
	for (var loop=0; loop < valor_array.length; loop++){
		 switch(valor_array[loop]) {
		   case "1": a = requerido(campo); break;
		   case "2": a = lleno(campo); break;
		   case "3": a = numerico(campo); break;
		   case "4": a = controldata(campo); break;
		   case "5": a = email(campo); break;
		   case "6": a = tamano(campo); break;
		   case "7": a = telefono(campo); break;
		   case "8": a = caracter_ilegal(campo); break;
		   case "9": a = combos(campo); break;
		   case "10": a = precio(campo); break;
		   case "11": a = dni(campo); break;
		   case "12": a = formatoprecio(campo); break;
		   case "13": a = numeroentero(campo); break;
		   case "14": a = FormatNIF(campo); break;
		   case "15": a = comprobarfechas(campo); break;
		   case "16": a = listarequerido(campo); break;
		}
		//alert(a);
		if (!a) {
			break;
		}
	}

	return a;
}
function foco(campo){
	if (campo.type!="hidden"){campo.focus()}
}

function requerido(campo)
 {	txtcampo=campo.title!=''?campo.title:campo.name
	if (campo.value=="")
	{
	alert("El campo " + txtcampo + " no puede estar vacio.");
	foco(campo);    
	return false;
	} 
return true;
}

function listarequerido(campo)
 {	txtcampo=campo.title!=''?campo.title:campo.name;
	if (Number(campo.value)<=0)
	{
	alert("Debe seleccionar una opcion en el campo "+txtcampo);
	foco(campo);    
	return false;
	} 
return true;
}

function lleno(campo) {	
	if (campo.value != "") {
		return true;
	} 
return false;
}

function numerico(campo){
  var isNum=true;
  toCheck = campo.value
  txtcampo=campo.title!=''?campo.title:campo.name
  if ((toCheck==null)||(toCheck=='')){ campo.value=0
	/*alert("El campo " + campo.name + " debe ser numérico.");
	foco(campo);    
	isNum=false;*/
	isNum=true
   return isNum;
   }
   for (j=0; j<toCheck.length; j++){
		if ((toCheck.substring(j,j+1)!='0')&&
			(toCheck.substring(j,j+1)!='1')&&
			(toCheck.substring(j,j+1)!='2')&&
			(toCheck.substring(j,j+1)!='3')&&
			(toCheck.substring(j,j+1)!='4')&&
			(toCheck.substring(j,j+1)!='5')&&
			(toCheck.substring(j,j+1)!='6')&&
			(toCheck.substring(j,j+1)!='7')&&
			(toCheck.substring(j,j+1)!='8')&&
			(toCheck.substring(j,j+1)!='9')){
			isNum=false;
		}
   }
   if (isNum == false) {
  	alert("El campo " + txtcampo + " debe ser numérico.");
	foco(campo);    
	}
   return isNum;
}
function positivo(campo){
	if (campo.value!="") {
	if (numerico(campo) || (campo.value<0)){
		alert("Error, el campo borde debe ser mayor que cero");
		foco(campo);
		return false
	}else{return true}
	}else{return true}
}
function precio(campo){
  var isNum=true;
  toCheck = campo.value
  if ((toCheck==null)||(toCheck=='')){
	alert("El campo " + campo.name + " debe ser numérico.");
	foco(campo);    
	isNum=false;
   return isNum;
   }
   for (j=0; j<toCheck.length; j++){
    if ((toCheck.substring(j,j+1)!='0')&&
        (toCheck.substring(j,j+1)!='1')&&
        (toCheck.substring(j,j+1)!='2')&&
        (toCheck.substring(j,j+1)!='3')&&
        (toCheck.substring(j,j+1)!='4')&&
        (toCheck.substring(j,j+1)!='5')&&
        (toCheck.substring(j,j+1)!='6')&&
        (toCheck.substring(j,j+1)!='7')&&
        (toCheck.substring(j,j+1)!='8')&&
        (toCheck.substring(j,j+1)!='9')&&
        (toCheck.substring(j,j+1)!=',')&&
        (toCheck.substring(j,j+1)!='.')){

		isNum=false;
    }
   }
   if (isNum == false) {
  	alert("El campo " + campo.name + " debe ser numérico.");
	foco(campo);    
	}
   return isNum;
}


function controldata(campo){
pData=campo.value
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
var matchArray = pData.match(datePat);
if (lleno(campo)){
if (matchArray == null){
	alert("El campo " + campo.name + " ha de tener uno de estos dos formatos: (dd/mm/aaaa) o (dd-mm-aaaa).");
	foco(campo);    
	return false;
}
day = matchArray[1];
month = matchArray[3];
year = matchArray[4];

if (month < 1 || month > 12) {
	return false;
}

if (day < 1 || day > 31) {
	return false;
}

if ((month==4 || month==6 || month==9 || month==11) && day==31){
	return false;
}

if (month == 2){
	var g = parseInt(year / 4);

	if (day > 29 || (day == 29 && (year / 4) != g)) {
		return false;
	} 
}
}
return true;
}

function email(campo) {
  if (campo.value!=''){
	  if ((campo.value.indexOf("@")==-1) || (campo.value.indexOf(".")==-1))
	   {
		alert("El Mail no es correcto.");
		foco(campo);    
		return (false);
	   } 
   }   
	return (true);
}

function tamano(campo)
 {	
	if (campo.value.length >= campo.id){
		return (true);
	}
	else{
		alert("El tamaño del campo " + campo.name + " ha de ser mínimo de " + campo.id + " dígitos.");
		foco(campo);    
		return (false);
	}
}

function telefono(campo)
{
  var isNum=true;
  toCheck = campo.value
  txtcampo=campo.title!=''?campo.title:campo.name
  if ((toCheck==null)||(toCheck=='')){return true;}
   for (j=0; j<toCheck.length; j++){
		if ((toCheck.substring(j,j+1)!='0')&&
			(toCheck.substring(j,j+1)!='1')&&
			(toCheck.substring(j,j+1)!='2')&&
			(toCheck.substring(j,j+1)!='3')&&
			(toCheck.substring(j,j+1)!='4')&&
			(toCheck.substring(j,j+1)!='5')&&
			(toCheck.substring(j,j+1)!='6')&&
			(toCheck.substring(j,j+1)!='7')&&
			(toCheck.substring(j,j+1)!='8')&&
			(toCheck.substring(j,j+1)!='9')){
			isNum=false;
		}
   }
   if (isNum == false) {
  	alert("El campo " + txtcampo + " debe ser numérico.");
	foco(campo);    
	}
   return isNum;
}

function caracter_ilegal(campo) {
	mensaje="El campo "+campo.name+" No puede contener ninguno de los siguientes caracteres:\n  \\ / : ; , * ? ' \" % $ # < > |";
	  if ((campo.value.indexOf("?")!=-1) || (campo.value.indexOf("%")!=-1) || (campo.value.indexOf("$")!=-1) || (campo.value.indexOf("#")!=-1) || (campo.value.indexOf("*")!=-1) || (campo.value.indexOf("<")!=-1) || (campo.value.indexOf(">")!=-1) || (campo.value.indexOf("'")!=-1) || (campo.value.indexOf("\"")!=-1) || (campo.value.indexOf("/")!=-1) || (campo.value.indexOf("\\")!=-1) || (campo.value.indexOf(":")!=-1) || (campo.value.indexOf(";")!=-1) || (campo.value.indexOf("|")!=-1) || (campo.value.indexOf(",")!=-1)){
		alert(mensaje);
		foco(campo);    
		return false;
   }
return true;
}

function dni(campo)
{
	DNI_error="El campo DNI no es correcto.(ej. 12345678X)";

	num_dni = campo.value;
	numero = num_dni.substr(0,8);
	letra = num_dni.substr(8,1);
	letra = letra.toUpperCase()
   	resto = numero % 23;
	if (isNaN(resto))  {
		alert(DNI_error);
		foco(campo);    
		return (false);
	}
   	 switch(resto) {
	   case 0: l="T"; break;
   	   case 1: l="R"; break;
	   case 2: l="W"; break;
	   case 3: l="A"; break;
	   case 4: l="G"; break;
	   case 5: l="M"; break;
   	   case 6: l="Y"; break;
   	   case 7: l="F"; break;
   	   case 8: l="P"; break;
   	   case 9: l="D"; break;
   	   case 10:l="X"; break;
       case 11:l="B"; break;
   	   case 12:l="N"; break;
   	   case 13:l="J"; break;
   	   case 14:l="Z"; break;
   	   case 15:l="S"; break;
   	   case 16:l="Q"; break;
   	   case 17:l="V"; break;
   	   case 18:l="H"; break;
   	   case 19:l="L"; break;
   	   case 20:l="C"; break;
   	   case 21:l="K"; break;
   	   case 22:l="E"; break;
       case 23:l="U"; break;
   	 }
	if (l != letra) {
		alert(DNI_error);
		foco(campo);    
		return (false);
	}
	return (true);
   }
   
function formatoprecio(campo)
{
	var formatocoma=/(,)/; formatopunto=/(.)/;
	valor=campo.value;
	cantcomas=valor.split(",") // cantidad de comas, verificar si solo hay una
	if (cantcomas.length-1>1){
			alert("En el campo "+campo.name+" debe respetar el formato");
			foco(campo);    
			return false;
	}else{
		if (cantcomas.length-1 == 0){
			valor+=",00"
		}else{
			while (cantcomas[cantcomas.length-1].length < 2){
				cantcomas[cantcomas.length-1]= cantcomas[cantcomas.length-1] + "0"
				valor=valor+"0";
			}
		} 
		
	}
	cantcomas=valor.split(",") // cantidad de comas, verificar si solo hay una
	entero=cantcomas[0];
	decimal=cantcomas[1];
	cantpuntosdp=decimal.split(".") // vetificar cantidad de puntos = 0 despues de la coma /
	if (cantpuntosdp.length-1>0){
		alert("En el campo "+campo.name+" existe errores en deccimales");
		foco(campo);    
		return false;
	}else{
		decimales="," + decimal.substr(0,2)
	}
	//entero=nocerosizq(entero);
	while ((entero.substr(0,1) == "0") && (entero.length>1)){ //quitar ceros a la izquierda
		entero=entero.substr(1,entero.length);
	}	
	cantpuntosap=entero.split(".") // calcular cantidad de puntos antes de la coma /
	if (cantpuntosap.length-1==0){
		longitud=entero.length;
		resultado="";
		caracter=".";
		while (longitud != 0){
			if (resultado!=""){
				resultado=caracter.concat(resultado);
			}
			i=1;
			while ((i<=3) && (longitud!=0)){
					temporal=entero.charAt(longitud-1);
					temporal=temporal.concat(resultado);
					resultado=temporal;
					longitud--;
					i++;
			}
		}
		entero=resultado;
	}else{
		millares=entero.split(".")
		i=millares.length
		while (i>1){
			if (millares[i-1].length != 3){
				alert("En el campo "+campo.name+" existe errores en la colocacion de los millares");
				foco(campo);    
				return false;
			}
			i--
		}
			if ((millares[i-1]=="") || (millares[i-1].length > 3)){
				alert("En el campo "+campo.name+" existe errores en la colocacion de los millares");
				foco(campo);    
				return false;
			}
	}
	campo.value=entero+decimales;
	return true;
}
function nocerosizq(valor){
	while ((valor.substr(0,1) == "0") && (valor.length>1)){ //quitar ceros a la izquierda
		valor=valor.substr(1,valor.length);
	}
	nocerosizq=valor;	
}
function numeroentero(campo)
{
	var numero=campo.value; longitud=campo.value.length; isNum=!isNaN(numero.charAt(longitud-1));
	while ((longitud-1>=0) && (isNum==true)){
		longitud--
		isNum=!isNaN(numero.charAt(longitud-1));
	}
	if (isNum!=true){
		alert('En el campo '+campo.name+' debe escribir un numero entero')
		foco(campo);    
		return false;
	}
	while ((numero.substr(0,1) == "0") && (numero.length>1)){ //quitar ceros a la izquierda
		numero=numero.substr(1,numero.length);
	}
	campo.value=numero;
	return true;
}
function numeroentero2(campo)   
{
	var numero=campo.value; longitud=campo.value.length;
	//alert(longitud + " " + numero.substr(0,longitud-1))
	if (isNaN(numero.charAt(longitud-1))){
		numero=numero.substr(0,longitud-1)
	}
	campo.value=numero
}
function provincia_cp(campo,campo2)
{
	if (campo2.substr(0,2)!=campo){
		alert("El Código postal no pertenece a la Província.");
		//Retocada por Ivan 13-05-04 para que funcione el registro de usuarios
		//si se ha de modificar o descomentar la linea inferior hay que tenerlo en cuenta
		//foco(campo);
		return (false);
	}
	return (true);
}

function password(campo,campo2)
{
   if (campo.value!=campo2.value)
   {
	alert("La confirmación de la contraseña no coincide con la contraseña.");
	foco(campo);    
	return (false);
   }
   return (true);
}  

function combos(campo)
{
	if (campo.value == 0)
	{
		alert("Debe seleccionar una de las opciones del campo " + campo.name + "." );
		foco(campo);    
		return (false);
	}
	return (true);
}

function multi_seleccion(campo) {
	
	x = campo.registro_mostrado.value;
	for (i=0;i<=x;i++){	
		if (campo.elements[i].checked){
			return (true);
			break;
		}
	}	  
	alert("Debe seleccionar algun campo para ejecutar esta acción." );
	return (false);
}

function DniCif(campo) {
	valor=campo.value;
	alert(valor);
	if (navigator.appName=="Microsoft Internet Explorer") {
		if (valor=="Particular") {
			document.all["dni"].innerText = "Dni :";
		}
		else if (valor=="Empresa") {
			document.all["dni"].innerText = "Cif :";
		}
		else{
			document.all["dni"].innerText = "Dni / Cif :";
		}
	}
}

//Jordi 28-01-04 Format del NIF
function FormatNIF(campo) {
	//alert(document.form1.element['Pais'].value);
	var valor_NIF = campo.value
	var lenNIF = valor_NIF.length
	var abc = /[a-z]/i;
	
	if (lenNIF == 9) {
		pri = valor_NIF.substr(0,1);
		ult = valor_NIF.substr(lenNIF-1,lenNIF);
		if (abc.test(pri) && abc.test(ult)) { //davant i darrera
			cif = valor_NIF.substr(1,lenNIF-2);	//digits numerics
			if (!numcheck(cif)) {
				alert("El campo CIF no es correcto.\nEj. X12345678, 12345678X, X1234567Y")
				foco(campo);    
				return (false);
			}
		} else if (abc.test(pri)) {	//davant
			cif = valor_NIF.substr(1,lenNIF);	//digits numerics
			if (!numcheck(cif)) {
				alert("El campo CIF no es correcto.\nEj. X12345678, 12345678X, X1234567Y")
				foco(campo);    
				return (false);
			} 
		} else {	//darrera
			cif = valor_NIF.substr(0,lenNIF-1);	//digits numerics
			if (!abc.test(ult) && !numcheck(cif) || (!abc.test(ult)) || (!numcheck(cif))) {
				alert("El campo CIF no es correcto.\nEj. X12345678, 12345678X, X1234567Y");
				foco(campo);    
				return (false);
			}
		}
		return (true);//Correcte
	}	
	else if (lenNIF != 9 && document.all['Pais'].value == 'España'){
		alert("El campo CIF no es correcto.\nEj. X12345678, 12345678X, X1234567Y");
		foco(campo);    
		return (false);	
	}
	else{
		//Cif de fora d´Espanya
		return (true);
	}
}

function cfechas(fecha1,fecha2){
	d1=fecha1.value
	d2=fecha2.value
	if (lleno(fecha1) && requerido(fecha2)){
		if(controldata(fecha2)){
		}else{alert('Error en Fecha2');foco(campo)}
	}else{
		foco(campo); return false;
	}
}

function numcheck(toCheck){
  var isNum=true;
   for (j=0; j<toCheck.length; j++){
    if ((toCheck.substring(j,j+1)!='0')&&
        (toCheck.substring(j,j+1)!='1')&&
        (toCheck.substring(j,j+1)!='2')&&
        (toCheck.substring(j,j+1)!='3')&&
        (toCheck.substring(j,j+1)!='4')&&
        (toCheck.substring(j,j+1)!='5')&&
        (toCheck.substring(j,j+1)!='6')&&
        (toCheck.substring(j,j+1)!='7')&&
        (toCheck.substring(j,j+1)!='8')&&
        (toCheck.substring(j,j+1)!='9')){
        isNum=false;
    }
   }
   return isNum;
}

function Calendario(nombrecampo){
	var ppcIE=(navigator.appName == "Microsoft Internet Explorer");
	var ppcNN=((navigator.appName == "Netscape"));//campo.name... he cambiado campo.name por nombrecampo q guardará el nombre del campo
	url="modules/Calendario/Calendario.asp?e="+nombrecampo;
	formato="srollbar=no,menubar=no,locationbar=no,statusbar=no,toolbar=no,height=170,width=180,left=200,top=400,screenX=200,screenY=400"
	calendar=window.open(url,"Calendario",formato)
	//calendar.moveTo(200,400);
	/* //calendar.focus();"+event.x+""+event.y+"
	alert(event.x+" "+event.y)
	if (ppcIE){x=event.clientX; y=event.clientY}
	if (ppcNN){x=event.screenX; y=event.screenY)*/
}

