//Funciones comunes de javascript

//Funciones rollin--------------------------------------------------
function rollin(src,Color) {
    if (!src.contains(event.fromElement)) {
	  src.style.cursor = 'hand';
	  src.bgColor = Color;}}
function rollout(src,Color2) {
	if (!src.contains(event.toElement)) {
	  src.style.cursor = 'default';
	  src.bgColor = Color2;}}
function pulsar(src) {
    if(event.srcElement.tagName=='TD'){
	  src.children.tags('A')[0].click();}}      


function abrirVentana(definition)
{
   newwin = window.open(definition , "whatever", "scrollbars,width=650,height=400");
}


//-------------------------------------------------------------------

//Funciones para formularios-----------------------------------------

function ComprobarCampo(nm,etiq){
	if ((nm=="") || (nm=="--") || (nm=="----")){
		alert("Error: Faltan datos. Campo " + etiq);
		return (false);
	}
	return (true);
}

function ComprobarNumero(nm,etiq){
	if (nm==""){
		alert("Error: Faltan datos en el campo " + etiq);
		return (false);
	}
	if (isNaN(nm)){
		alert("Error: Sólo valores númericos en el campo " + etiq);
		return (false);
	}else{
		return (true);
	}
}

function ComprobarFormato(nm,etiq){

	//var expreg = /\W/i\@;
	if ( nm=="" ){
		alert("Error: Faltan datos en el campo '" + etiq + "'");
		return (false);
	}
	//if ( expreg.test(nm) ){
	//	alert("Error: Valor no válido en el campo '" + etiq +"'\nCaracteres permitidos: a-zA-Z0-9.");
	//	return (false);
	//}
	return (true);
}



function ComprobarVacio(nm,etiq){
	if (nm==""){
		alert("Error: Faltan datos en el campo " + etiq);
		return (false);
	}
	return (true);
}


function SeleccionarTodo(formselect){
	//Seleccionar todo
	var items = eval('document.form1.'+formselect+'.options.length');
	for(var i = items - 1; i >= 0; i--) {
		eval('document.form1.'+formselect+'.options[i].selected = true');
	}
	return (false);
}	

//-------------------------------------------------------------------

//Funciones sobre cadenas y números----------------------------------
function TransformarANumero(nm){
	nm=CambiarPunto(nm,",",".");
	if (nm=="") return (0);
	if (isNaN(nm)){
		return (0);
	}else{
		return (parseFloat(nm));
	}
}

function CambiarPunto(cadena,punto,coma){
	if (cadena.indexOf(punto)>-1){
		posComa=cadena.indexOf(punto);
		cadena=cadena.substring(0,posComa)+coma+cadena.substring(posComa+1,cadena.length);
	}
	return (cadena);
}//fin CambiarPunto

function NormalizarSalida(n){
	//Realizar redondeo a dos decimales
	n=(Math.round(n * 100)/100);
	cad=''+n;
	cad=CambiarPunto(cad,'.',',');
	return (cad);
}//fin NormalizarSalida	

//-------------------------------------------------------------------


//Funciones validación DNI/CIF---------------------------------------
function nif_valido(dni,letranif)
{
	var tira = 'TRWAGMYFPDXBNJZSQVHLCKET', letra;
	letra = tira.charAt(dni%23);
	if (letranif == letra){
		return true
	}
	return false
}	


function tratarimpar(vl){
	mul=eval(vl+"*2");
	str=String(mul);
	if (str.length==2)
		mul=eval(str.charAt(0)+"+"+str.charAt(1));
	else
		mul=eval(str);
	return mul;
}
	

function cif_valido(cif)
{
	partecif=cif.substr(1,7);
	pares=cif.charAt(2)+"+"+cif.charAt(4)+"+"+cif.charAt(6);
	sumapares=eval(pares);
	v=tratarimpar(cif.charAt(1));
	v+=tratarimpar(cif.charAt(3));
	v+=tratarimpar(cif.charAt(5));
	v+=tratarimpar(cif.charAt(7));
	C=sumapares+v;
	str=String(C);

	D=eval("10 - "+str.charAt(str.length-1));
	digcontrol=eval(cif.charAt(cif.length-1));
	if (D==digcontrol)
		return (true);
	else
		return(false);
}	


function Verificar_Cif(cif){

	cif=cif.toUpperCase();
	if (cif.length==9){
		if (!isNaN(cif.charAt(0))){
			letraAux=cif.charAt(8);
			dniAux=cif.substr(0,8);
			return nif_valido(dniAux,letraAux);
		}else{
			letra=cif.charAt(0);
			str="ABCDEFGHPQSKLMX";
			if (str.indexOf(letra)==-1){
				return (false);
			}else{
				if (letra=="X"){
					letraAux=cif.charAt(8);
					dniAux="0"+cif.substr(1,7);
					return nif_valido(dniAux,letraAux);
				}else{
					pares=cif.charAt(2)+"+"+cif.charAt(4)+"+"+cif.charAt(6);
					sumapares=eval(pares);
					v=tratarimpar(cif.charAt(1));
					v+=tratarimpar(cif.charAt(3));
					v+=tratarimpar(cif.charAt(5));
					v+=tratarimpar(cif.charAt(7));
					C=sumapares+v;
					str=String(C);

					D=eval("10 - "+str.charAt(str.length-1));
					if (D==10) D=0;
					digcontrol=eval(cif.charAt(cif.length-1));
					str2="PQS";
					if (str2.indexOf(letra)!=-1){
						//control tipo letra						
						return (cif.charAt(8)==String.fromCharCode(64+digcontrol));
					}else{
						//control tipo número
						if (D==digcontrol)
							return (true);
						else
						return(false);
					}
				}
			}
		}
	}
	return (false);
}

function DigitoCuenta(entidad,oficina,cuenta){
	DC = new Array(1,2,4,8,5,10,9,7,3,6);

	//dígito de control de la oficina y la entidad	
	s="00"+entidad+oficina;
	x=0;
	for (i=0;i<10;i++){
		x=x+(parseInt(s.charAt(i))*DC[i]);
	}
	x=11-(x % 11);
	if (x==10) x=1;
	if (x==11) x=0;
	DCCuenta=String(x);

	//dígito de control del nº de cuenta
	s=cuenta;
	x=0;
	for (i=0;i<10;i++){
		x=x+(parseInt(s.charAt(i))*DC[i]);
	}
	x=11-(x % 11);
	if (x==10) x=1;
	if (x==11) x=0;
	DCCuenta=DCCuenta+String(x);
	return DCCuenta;
}


//Funciones usadas en administración-----------------------------------------
function ModoFuncionar(modo){
	document.form2.modo.value=modo;
	return true;
}

function SeleccionarTodos(){
	for (var i=0;i<form2.elements.length;i++)
	{
		var e = form2.elements[i];
		if (e.type=='checkbox')
			e.checked = true;
	}	
	return false;
}


//--------------------------------------------------------------------------


//Función para controlar la paginación de las búsquedas
function IrPagina(pg,formName,action){
	var myString1 = "document."+formName+".page.value="+pg+";";
	var myString2 = "document."+formName+"."+action+"();";
	eval(myString1);
	eval(myString2);
	return false;
}
//--------------------------------------------------------------------------


//Función para confirmar una acción determinada
function confirmarTarea(msg) {
var respuesta = confirm("Ha decidido resolver '" + msg + "'. Una vez realizado no podrá deshacer su opción, continuar?");
return respuesta;
}

//Función para confirmar la acción de pago
function confirmarPago(form) {
	var i
	var opcionValor = ''; 
    for (i=0;i<form.length;i++){ 
       if (form[i].checked){
		  opcionValor = form[i].value;
          break;
       }
    } 
	if ((opcionValor==null) || (opcionValor=='')){
		alert('Error: Es necesario seleccionar una forma de pago.');
		return false;
	}
	var respuesta = confirm("Ha elegido realizar el pago mediante '" + opcionValor + "'. Una vez realizado no podrá deshacer su opción, continuar?");
	return respuesta;
}

//Función para confirmar una acción determinada
function confirmarVisto() {
var respuesta = confirm("Ha decidido ver esta tarea. Una vez vista, automáticamente queda asignada a su cuenta, continuar?");
return respuesta;
}

//Función para confirmar una acción determinada
function confirmar(msg) {
var respuesta = confirm(msg);
return respuesta;
}
//--------------------------------------------------------------------------


//Funciones para mostrar cargador
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function Cargador(){
	MM_showHideLayers('cargador','','hide','contenido'  ,'','show');
}
//--------------------------------------------------------------------------


//Funciones para mover elementos de una lista a otra
var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function addOption(theSel, theText, theValue)
{
	var newOpt = new Option(theText, theValue);
	var selLength = theSel.length;
	theSel.options[selLength] = newOpt;
}

function deleteOption(theSel, theIndex)
{	
	var selLength = theSel.length;
	if(selLength>0)
	{
		theSel.options[theIndex] = null;
	}
}

function moveOptions(theSelFrom, theSelTo)
{
	
	var selLength = theSelFrom.length;
	var selectedText = new Array();
	var selectedValues = new Array();
	var selectedCount = 0;
	
	var i;
	
	// Find the selected Options in reverse order
	// and delete them from the 'from' Select.
	for(i=selLength-1; i>=0; i--)
	{
		if(theSelFrom.options[i].selected)
		{
			selectedText[selectedCount] = theSelFrom.options[i].text;
			selectedValues[selectedCount] = theSelFrom.options[i].value;
			deleteOption(theSelFrom, i);
			selectedCount++;
		}
	}
	
	// Add the selected text/values in reverse order.
	// This will add the Options to the 'to' Select
	// in the same order as they were in the 'from' Select.
	for(i=selectedCount-1; i>=0; i--)
	{
		addOption(theSelTo, selectedText[i], selectedValues[i]);
	}
	
	if(NS4) history.go(0);
}

//--------------------------------------------------------------------


function Desactivar(obj,obj2){
	campo = document.getElementById(obj);
	campo2 = document.getElementById(obj2);	
	if (campo!=null){
		campo.value = 'Enviando ...';
		campo.disabled = true;
	}
	if (campo2!=null){
		campo2.value = 'Enviando ...';
		campo2.disabled = true;		
	}
	campoIrA = document.getElementById('bEnv');
	if (campoIrA!=null){
		campoIrA.value = 'Enviar a Visar';	
	}
	GetDatosVisadoForm.submit();
}






