/**
SCRIPT DE FUNCIONES VARIAS
FECHA: 22/05/2007
**/

/**
* Chequea si hay algún item repetdo en un array
*/

function checkRepeats(matriz)
{
	var num_items = matriz.length;
	for (i=0;i<num_items;++i)
	{
		for (j=(i+1);j<num_items;++j)
		{
			if (matriz[i]==matriz[j])
				return j;
		}
	}
	return 0;
}

/**
* Comprueba que el nif es correcto
*/

var letras = new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
var letrasNIF = new Array("A","B","C","D","E","F","G","H","I","J");

function nif(obj)
{
	numero=obj.value.toString().toUpperCase();
	if (numero.length!=9)
		return false;
	extranjero=numero.charAt(0);
	if (isNaN(extranjero))
	{
		if (isNaN(numero.substr(1,8)))
		{
			alert("El NIF es incorrecto.");
			obj.focus();
			return false;
		}
		if (extranjero=="X") //Es extranjero
		{
			numero=numero.replace("X","0");
			if (!comprobarDNI(numero))
			{
				obj.focus();
				return false;
			}
			else
				return true;
		}
		else //Es un NIF
		{
			numeroCort = numero.substr(1,7);
			var sumaPar = 0;
			var sumaImpar = 0;
			var sumaTotal = 0;
			var control = 0;
			var producto = 0;
			suma = 0;
			for (i=0;i<numeroCort.length;++i)
			{
				if (mod(i,2))
				{
					sumaPar+=eval(numeroCort.charAt(i));
				}
				else
				{
					producto=eval(numeroCort.charAt(i))*2;
					for (j=0;j<producto.toString().length;++j)
					{
						suma+=eval(producto.toString().charAt(j));
					}
					producto = 0;
					sumaImpar+=suma;
					suma=0;
				}
			}
			sumaTotal=sumaPar+sumaImpar;
			control=10-eval(sumaTotal.toString().charAt(sumaTotal.toString().length-1));
			control = control.toString().charAt(control.toString().length-1);
			numControl = numero.charAt(numero.length - 1);
			if (numControl!=control)
			{
				alert("El NIF es incorrecto.");
				obj.focus();
				return false;
			}
			else
			{
				/*letraNIF = numero.charAt(0);
				letraControl = letrasNIF[(control-2)];
				if(letraNIF!=letraControl)
				{
					alert("El NIF es incorrecto.");
					obj.focus();
					return false;
				}
				else
					return true;*/
				return true;
			}
		}
	}
	else
	{
		letra=numero.charAt(8);
		if (isNaN(numero.substring(0,8)))
		{
			alert("El DNI es incorrecto.");
			obj.focus();
			return false;
		}
		else
		{
			num=eval(numero.substring(0,8));
			if(letras[num-Math.floor(num/23)*23]!=letra.toUpperCase())
			{
				alert("El DNI es incorrecto.");
				obj.focus();
				return false;
			}
			return true;
		}
	}
}

/**
* Comprueba que el DNI sea correcto
*/

function comprobarDNI(numero)
{
	letra=numero.charAt(8);
	if (isNaN(numero.substring(0,8)))
	{
		alert("El DNI es incorrecto.");
		return false;
	}
	else
	{
		num=eval(numero.substring(0,8));
		if(letras[num-Math.floor(num/23)*23]!=letra.toUpperCase())
		{
			alert("El DNI es incorrecto.");
			return false;
		}
		return true;
	}
}
/**
* Comprueba que una cuenta corriente sea correcta
*/
function cuentaCorrecta(obj)
{
	var peso=new Array(6,3,7,9,10,5,8,4,2,1);
	var dig1=obj.substr(0,8);
	var dig2=obj.substr(10,10);
	var dc1=0;
	var dc2=0;
	var dc=0;
	for(i=0;i<8;++i)
		dc1+=eval(dig1.charAt(7-i))*peso[i];
	for(i=0;i<10;++i)
		dc2+=eval(dig2.charAt(9-i))*peso[i];
	dc1=11-mod(dc1,11);
	dc2=11-mod(dc2,11);
	if(dc1>9)
		dc1=1-mod(dc1,10);
	if(dc2>9)
		dc2=1-mod(dc2,10);
	dc=dc1.toString() + dc2.toString();
	rdc=obj.substr(8,2);
	return (dc==rdc && eval(dig1)!=0 && eval(dig2!=0));
}

/**
* Devuelve el valor de una cookie pasada
*/

function getCookie(name)
{
	var cookie = document.cookie.split("; ");
	var cookieName = "";
	var cookiePosition = 0;
	for (i=0; i<cookie.length; ++i)
	{
		cookieTemp = cookie[i];
		cookiePosition = cookie[i].indexOf("=");
		cookieName = cookie[i].substr(0, cookiePosition);
		if (cookieName == name)
		{
			while (cookie[i].indexOf("%2F") != -1)
				cookie[i] = cookie[i].replace("%2F", "/");
			return cookie[i].substr(cookiePosition + 1, cookie[i].length);
		}
	}
	return false;
}

function setCookie(name, value, expires, path, domain, secure)
{	
	var expires_date = new Date(expires);
	
	document.cookie = name + "=" +escape(value) +
		((expires) ? ";expires=" + expires_date.toGMTString() : "") + 
		((path) ? ";path=" + path : "") + 
		((domain) ? ";domain=" + domain : "") +
		((secure) ? ";secure" : "");
}

function showWindow(page, winName, winStyle)
{
	winStyle = winStyle || "menubar=no,location=no,resizable=no,scrollbars=no,status=no";
	window.open(page, winName, winStyle);
}

function soloNumeros(ev, permitidos)
{
	permitidos = permitidos == null ? "" : permitidos.split("");
	for (i=0;i<permitidos.length; ++i)
		permitidos[i] = permitidos[i].charCodeAt(0);
		
	if (navigator.appName!="Netscape")
	{
		var e=window.event;
		for (i=0;i<permitidos.length; ++i)
		{
			if (e.keyCode==permitidos[i])
				return true;
		}
		if (e.keyCode<48 || e.keyCode>57)
			e.keyCode=0;
	}
	else
		return soloNumerosNetscape(ev, permitidos);
}

function soloNumerosNetscape(e, permitidos)
{
	for (i=0;i<permitidos.length; ++i)
	{
		if (e.which==permitidos[i])
			return true;
	}
	if (!((e.which>47 && e.which<58) || e.keyCode==9 || (e.keyCode>32 && e.keyCode<41) || e.keyCode==45 || e.keyCode==46 || e.keyCode==8 || e.keyCode==116))
		return false;
}

function swapColor(obj)
{
	if (obj.style.backgroundColor=="#2c779e" || obj.style.backgroundColor=="rgb(44, 119, 158)" || obj.style.backgroundColor=="")
		obj.style.backgroundColor="black";
	else
		obj.style.backgroundColor="#2c779e";
}

function swapImage(obj, image)
{
	obj.src=image;
}

function swapText(obj,text)
{
	obj.innerHTML=text;
}

function validateForm(form)
{
	for (i=0;i<form.elements.length;++i)
	{
		if (form.elements[i].id.substr(0,1) == "_")
		{
			if (form.elements[i].value == "")
				return form.elements[i];
		}
	}
}

function mod(dividendo,divisor)
{
	return (Math.round((dividendo/divisor-Math.floor(dividendo/divisor))*divisor));
}
