var image1 = new Image(); 
image1.src = "/gifsv/iconos/alg.gif";
var imagenG='<img src="/gifsv/iconos/al.gif" width="42" height="42" />';
var imagenP='<img src="/gifsv/iconos/al.gif" width="16" height="16" />';

// Ej:
// onclick="javascript:marcaChecks('chk',this.checked);"
function toggleChecked2(el, nombre) {
	
	var nombrechecks = (nombre) ? nombre : el.name;
	var oFormulario = el.form;
	var nElementos = oFormulario.elements.length;
	
	for(var i=0; i < nElementos; i++ ) {
		if(oFormulario.elements[i].type =="checkbox" && 
				(oFormulario.elements[i].name == nombrechecks ||
					oFormulario.elements[i].name.toString().indexOf(nombrechecks+'[')>0)
				)
			oFormulario.elements[i].checked = el.checked;
		
	}
}


function toggleChecked(oElement, nombre ) { 
	var nombrechecks = (nombre) ? nombre : oElement.name;
    oForm = oElement.form; 
	oElement = oForm.elements[nombrechecks]; 
	if(oElement.length) { 
	  bChecked = oElement[0].checked; 
	  for(i = 1; i < oElement.length; i++) 
		oElement[i].checked = bChecked; 
	} 
}

function verificarborrado() {
	return confirm("Se dispone a eliminar un registro de la lista. \n ¿Esta seguro de la acción?");	
}

function verificaborravarios(desurl) {
	return confirm("Se dispone a eliminar varios registros de la lista.\n ¿Esta seguro de la acción?"); //) {
	//	document.miform.action=desurl; 
	//	document.miform.submit();
	//}
	//return false;
}

function showHideDiv (id) {
	
	var el = document.getElementById(id);
	if(el.style.display == "" || el.style.display == "block" ) 
		el.style.display = 'none';
	else
		el.style.display = 'block';
}

function simboloDiv (id, respuesta) 
{
	
	var el = document.getElementById(id);
	var res = document.getElementById(respuesta);

	if(el.style.display == "" || el.style.display == "block" ) 
		res.innerHTML="&nbsp;-";
	else
		res.innerHTML="&nbsp;+";
}

function nif(dni) 
{
	
	var inicio=dni.charAt(0);

	inicio=parseInt(inicio);

	if (isNaN(inicio)==false)
	{
		if (dni.length==9)
		{
			var numero = dni.substr(0,dni.length-1);
			var let = dni.substr(dni.length-1,1);
			let = let.toUpperCase();
			numero = numero % 23;
			//var letra='TRWAGMYFPDXBNJZSQVHLCKET';
			var letra='TRWAGMYFPDXBNJZSQVHLCKE';
			
			letra=letra.substring(numero,numero+1);
			if (letra!=let) 
			{
				mensaje("El DNI introducido es incorrecto, la letra del DNI debería ser "+letra,true);
				return false;
			}
			else 
				return true;
				//var regex = /^[0-9]{8}[a-zA-Z]{1}$/;
				//return regex.test(txt);
		}
		else
		{
			mensaje("El DNI introducido es incorrecto, debe tener 8 dígitos y una letra",true);
			return false;
		}
	}
	else return true;
}

function isEmpty(txt) {
   if ((txt.toString().length==0) ||
   (txt.toString()==null)) {
      return true;
   }
   else { return false; }	
}

// Funcion para comprobar si es numero y/o con decimales.
function isFloat (txt) {
	txt = txt.toString().replace(".","");
	txt = txt.toString().replace(",",".");
	var regex=/^([+-]?)\d*\.\d+$/; 0
	return regex.test(txt);
}

// Comprueba que un email es correcto.
function isMail(txt)
{
    var regex  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(txt);
}

// Comprueba si un numero esta en un rango determinado.
function isIntegerInRange (n,Nmin,Nmax){
	var num = Number(n);
	if(isNaN(num)){
		return false;
	}
	if(num != Math.round(num)){
		return false;
	}
	return (num >= Nmin && num <= Nmax);
}

// Comprueba fechas (dia-mes-año).
function isDate(date) {
	var regex = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/([2][0]|[1][9])\d{2})$/;
	return regex.test(date);
}

// Pasa una fecha a tiempo (segundos)
// es para formato español
function dateToTime (fecha, es) {
	
	if(es=="") es=true;
	
	// comprobar separadores
	var separador = fecha.toString().indexOf('-') ? '-' : '/';
	var aFecha = inicio.split("-");
	var fFecha = new Date();
	
	// Meter valorse fecha
	if(es) {
		fFecha.setFullYear(aFecha[2]);
		fFecha.setMonth(aFecha[1]);
		fFecha.setDate(aFecha[0]);
	} else {
		fFecha.setFullYear(aFecha[0]);
		fFecha.setMonth(aFecha[1]);
		fFecha.setDate(aFecha[2]);
	}
	
	return fFecha.getTime();
}

function isNum(numstr,decimal) {

	if(!decimal) {
		for ( i = 0; i < numstr.length; i++ ) {
			valor = parseInt(numstr.charAt(i)); // me permite convertir letra por letra en numero y si no es un numero entonces no regresa nada
			if (isNaN(valor)) {
				return false;
			}
		}
		return true;
	} else {
		// Return immediately if an invalid value was passed in
		if (numstr+"" == "undefined" || numstr+"" == "null" || numstr+"" == "")	
			return false;
	
		var isValid = true;
		var decCount = 0;		// number of decimal points in the string
	
		// convert to a string for performing string comparisons.
		numstr += "";	
	
		// Loop through string and test each character. If any
		// character is not a number, return a false result.
		// Include special cases for negative numbers (first char == '-')
		// and a single decimal point (any one char in string == '.').   
		for (i = 0; i < numstr.length; i++) {
			// track number of decimal points
			if (numstr.charAt(i) == ".")
				decCount++;
	
			if (!((numstr.charAt(i) >= "0") && (numstr.charAt(i) <= "9") || 
					(numstr.charAt(i) == "-") || (numstr.charAt(i) == ","))) {
			isValid = false;
			break;
			} else if ((numstr.charAt(i) == "-" && i != 0) ||
					(numstr.charAt(i) == "," && numstr.length == 1) ||
				  (numstr.charAt(i) == "," && decCount > 1)) {
			isValid = false;
			break;
		  }         	         	       
	//if (!((numstr.charAt(i) >= "0") && (numstr.charAt(i) <= "9")) || 
	   } // END for   
	   
		return isValid;
	}
	
}

// Para mostrar mensajes desde js

var aMensajes = new Array();
function mensaje(msg,__error) {
	var __error = (__error) ? true : false;	
	aMensajes[aMensajes.length] = new Array(msg,__error);
}

function verMensajes() {
	var id = 'textoMensajes';
	var nmsgs = aMensajes.length;
	var divContenedorMensajes = document.getElementById('contenedorMensajes');
	divContenedorMensajes.style.display = 'none';
	var divMensaje = document.getElementById(id);
	
	divMensaje.innerHTML ='';
	if(nmsgs > 0) {
		//toolbarMain.style.display='block';
		//mySlideToolBar.slideIn();
		divContenedorMensajes.style.display = 'block';
		for(var i=0; i < nmsgs; i++) {
			divMensaje.innerHTML += '<div class="'+((aMensajes[i][1])?"mensaje-error":"mensaje-info")+'">'+aMensajes[i][0]+'</div>';
		}
	}
	aMensajes = new Array();
}

function rellenaComboByArray(idcombo,arr) {
	var combo = document.getElementById(idcombo);
	if(combo) {
		if(arr && arr.length>0) {
			for(var i=0; i < arr.length; i++){
				combo.options[combo.options.length] = new Option(arr[1],arr[0]);
			}
		}
	}
}

function validarcuenta(cuentabancaria) 
{
  
	var banco=cuentabancaria.substring(0,4);
	var sucursal=cuentabancaria.substring(4,8);
	var dc=cuentabancaria.substring(8,10);
	var cuenta=cuentabancaria.substring(10,20);
	//alert ("banco: "+banco+" sucursal: "+sucursal+" dc: "+dc+" cuenta: "+cuenta);
	
	if (banco == ""  || sucursal == "" || dc == "" || cuenta == "")
	{  
		mensaje("Por favor, introduzca todos los datos de su cuenta",true);
		//verMensajes();
		return false;
	}
  	else 
  	{
	    if (banco.length != 4 || sucursal.length != 4 || dc.length != 2 || cuenta.length != 10)
	    {
	      mensaje("Por favor, introduzca correctamente los datos de su cuenta, no están completos",true);
	      // verMensajes();
	      return false;
	    }
	    else 
	    {
	      if (!numerico(banco) || !numerico(sucursal) || !numerico(dc) || !numerico(cuenta))
	      {
	        mensaje("Por favor, introduzca correctamente los datos de su cuenta; no son numericos",true);
	       // verMensajes();
	        return false;
	      }
	      else 
	      {
	        if (!(obtenerDigito("00" + banco + sucursal) == parseInt(dc.charAt(0))) || !(obtenerDigito(cuenta) == parseInt(dc.charAt(1))))
	        {
	          mensaje("Los dígitos de control no se corresponden con los demás números de la cuenta",true);
	        //  verMensajes();
	          return false;
	        }
	        else return true;
	      }
	    }
  	}
}

function numerico(valor)
{
  cad = valor.toString();
  for (var i=0; i<cad.length; i++) 
  {
    var caracter = cad.charAt(i);
	if (caracter<"0" || caracter>"9")
	  return false;
  }
  return true;
}


function obtenerDigito(valor)
{
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  control = 0;
  for (i=0; i<=9; i++)
    control += parseInt(valor.charAt(i)) * valores[i];
  control = 11 - (control % 11);
  if (control == 11) control = 0;
  else if (control == 10) control = 1;
  return control;
}

function completaCursoEscolar (idEl) {
	var el = document.getElementById(idEl);
	if(el && el.value.length>3) {
		var curso = el.value.substring(0,4);
		el.value = curso.toString() + '/' +( parseInt(curso)+1).toString(); 
	}
}

// Parsear query a objeto
// Ej: curso=13&funcion=buscarCurso ===> {"curso":13,"funcion":"buscarCurso"}
function queryToJson (query) {
	query = query.replace(/\?/g,"");
	var aQuery = query.split("&");
	var size = aQuery.length;
	var oQuery = new Object();
	var aParam;
	
	for( var i=0; i < size; i++ ){
		aParam = aQuery[i].split("=");
		if(aParam[1] != undefined) {
			aParam[0] = aParam[0].replace(/;/g,"");
			eval('oQuery.'+aParam[0]+'="'+aParam[1]+'";');
		} 
	}
	return oQuery;
}

//Convertir select en input con autocompletado
// necesario meter funcino enn /gifsv/codigo/ajax/ajaxauto.php
function convertToAutocompleter(idEl,postVar,query,fn,options,urlfunc) {

	var oAuto = $(idEl);
	
	if(oAuto && oAuto.options && oAuto.options.length > 0) {
		
		var idHidden = oAuto.id;
		oAuto.id = "_"+idHidden;
		
		var oHidden = new Element('input',{
			"id" : idHidden,
			"name" : idHidden,
			"type" : "hidden",
			"value": oAuto.options[oAuto.options.selectedIndex].value}
		).injectBefore(oAuto);	

		var ancho = parseInt(oAuto.getCoordinates().width,10);
		var oInput = new Element('input',{
			"id" : 'ac_'+idHidden,
			"name" : 'ac_'+idHidden,
			"type" : "text",
			"class" : oAuto.className,
			"value": oAuto.options[oAuto.options.selectedIndex].text}
		).setStyle('width',ancho+'px').injectBefore(oAuto);

		if(isEmpty(oHidden.value)) oInput.addClass('auto-sin-id');
		else oInput.addClass('auto-con-id');
				
		oAuto.id = null; oAuto.name = null;
		oAuto.setStyle('display','none');

		var options = new Object();
		options.inheritWidth = false;
		options.postVar = postVar;
		options.postData = queryToJson(query);
		options.onRequest = function (el) {
			//alert(this.oldValue);
			if(this.oldValue != $('ac_'+idEl).value) {
				$(idEl).value = '';
				//$('ac_'+idEl).setStyle('border','2px solid #1f1f1f');
				this.observer.element.removeClass('auto-con-id');
				this.observer.element.addClass('auto-sin-id');
			}
		}

		options.fn = fn;
		
		var indicator = new Element('div', {'class': 'autocompleter-loading',
			'styles': {'display': 'none'}}).setHTML('').injectAfter(oInput);

		if(!urlfunc)
			urlfunc = '/gifsv/codigo/ajax/ajaxauto.php';	
		var completer = new Autocompleter.Ajax.Xhtml(oInput, urlfunc, options);
		return completer;		
	
	} else {
		alert('El elemento '+idEl+' no se encuentra o no es un elemento de tipo SELECT');
	}


}


// Seleccionar todos los elementos de una lista
function selectAllList (idList) {
	var oList = document.getElementById(idList);
	
	for(var i=0; i < oList.options.length; i++ ) {
		oList.options[i].selected = true;
	}

}

//Eliminar todos los seleccionados de una lista
function eliminarDeLista(idLst) {
	var lst = $(idLst);
	for(var i=0; i<lst.options.length;i++) {
		if(lst.options[i].selected) {
			lst.options[i] = null;
			i--;
		}
	}
}

function addToList(valor,idLst) {
	
	var lst = document.getElementById(idLst);
	
	for(var i=0; i< lst.options.length; i++) {
		if(lst.options[i].value == valor)
			return;
	}
	
	lst.options[lst.options.length-1] = new Option(valor,valor);
}

function comprobarNIFCIF(cif)
{
	par = 0;
	non = 0;
	letras="ABCDEFGHKLMNPQS";
	let=cif.charAt(0);

	if (!isNaN(let))
	{
		return nif(cif);
	}

	if (cif.length!=9)	{ return false;	}

	if (letras.indexOf(let.toUpperCase())==-1) { return false; }

	for (zz=2;zz<8;zz+=2)
	{
		par = par+parseInt(cif.charAt(zz));
	}

	for (zz=1;zz<9;zz+=2)
	{
		nn = 2*parseInt(cif.charAt(zz));
		if (nn > 9) nn = 1+(nn-10);
		non = non+nn;
	}

	parcial = par + non;
	control = (10 - ( parcial % 10));

	if (control!=cif.charAt(8)) { return false;	}
	
	return true;
}

