function confirmar_borrado() {
	return confirm("¿Seguro que desea borrar este elemento?");
}

function cambiar_orden(id, nuevo_orden, viejo_orden) {
	document.forms['form_orden'].idcategoria.value = id;
	document.forms['form_orden'].valor.value = nuevo_orden;
	document.forms['form_orden'].valor_viejo.value = viejo_orden;
	document.forms['form_orden'].submit();
}

function nuevaventana(url, nombre, anchura, altura, coordx, coordy) {

// Anchura de la ventana

	if(anchura.indexOf('%',0)!=-1){
		anchura=screen.availWidth*parseInt(anchura)*.01
	}

// Altura de la ventana

	if(altura.indexOf('%',0)!=-1){
		altura=screen.availHeight*parseInt(altura)*.01
	}

// Posicion X de la ventana

	if(coordx.indexOf('%',0)!=-1){
		coordx=parseInt(coordx)*.01*(screen.availWidth - anchura)
	}

// Posicion Y de la ventana	

	if(coordy.indexOf('%',0)!=-1){
		coordy=parseInt(coordy)*.01*(screen.availHeight - altura)
	}	

// Abre la ventana

        popup = window.open(url, nombre,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=' + anchura + ',height=' + altura + ',left=' + coordx + ',top=' + coordy);
}


// Select multiple
function seleccionar(elem, siono) {
	for (i = elem.options.length - 1; i >= 0; i--) {
		elem.options[i].selected = siono
	}
}

function seleccionarTodos(elem) {
	seleccionar(elem, true)
}

function seleccionarNinguno(elem) {
	seleccionar(elem, false)
}

    /**
    * script para permitir al usuario introducir en una caja de texto solo caracteres predefinidos
    *Autor   Luciano Moreno ( http://www.terra.es/personal6/morenocerro2/ )
    */

      /**
      * var global correctos >> matriz que contiene los caracters permitidos al usuario   
      */
      var correctos = new Array("0","1","2","3","4","5","6","7","8","9","/",":")

      /***
      * var global estado     >> variable booleana, true si el caracter introducido es correcto y false en caso contrario
      * var global codigoTecla   >>  valor ASCII de la tacla pulsada para cada navegador (son diferentes)
      * var global cadenaTecla  >>  cadena que representa a la tecla pulsada (igual para todos los navegadores)
      */
      var estado=false;
      var codigoTecla, cadenaTecla;   

      /**
      * function pulsada >> funcion principal  >> comprueba la tecla pulsada y la escribe o no
      * si es correcta      >>  retorna true al manejador de eventos de la caja de texto >> se escribe el caracter
      * si es incorrecta   >>  retorna false al manejador de eventos de la caja de texto >> no se escribe el caracter   
      */
      function pulsada(e) 
      {
 
          estado=false

          if(document.all)
          {
              codigoTecla = event.keyCode
              cadenaTecla = (String.fromCharCode(event.keyCode));
          }
          else if(document.layers)
          {
              codigoTecla = e.which
              cadenaTecla = String.fromCharCode(e.which);
          }
          else if(document.getElementById)
          {
              codigoTecla = (window.Event) ? e.which : e.keyCode;
              cadenaTecla=(String.fromCharCode(codigoTecla));
          }

          for(i=0;i<correctos.length;i++)
          {
              if(cadenaTecla==correctos[i])
                  estado=true;
          }

          if(estado==false)
          {
              if(document.all)
                  event.returnValue = false;
              else
                  return false;
          }
      }
     
    /**
    * fin del script
    */         


/* Funciones de filtrado de fechas */

	function dosCifras(cadena) {
		if (cadena.length == 1) {
			return "0" + cadena
		} else {
			return cadena
		}
	}

	function fechaVacia(fecha) {
		var valoresVacios = new Array("", "00/00/0000")
		for (i = 0; i < valoresVacios.length; i++) {
			if (fecha == valoresVacios[i]) {
				return true
			}
		}
		return false
	}

	function filtrarFecha(fecha) {
	// Filtra la fecha de acuerdo al formato DD/MM/AAAA
		vfecha = fecha.split("/")
		if (vfecha.length == 3) {	// Hay 2 barras de separacion => 3 grupos (dia, mes y agno)
			dia = vfecha[0]
			mes = vfecha[1]
			agno = vfecha[2]
			if ((dia >= 1) && (dia <= 31) && 
				(mes >= 1) && (mes <= 12) && 
				(agno >= 0) && (agno <= 3000)) {	// Valores validos

				dia_filtrado = dosCifras(dia)
				mes_filtrado = dosCifras(mes)
				agno_aux = dosCifras(agno)			// Si tienen 1 cifra, agnadir un "0"
				if (agno_aux.length == 2) {			// Si el agno tiene 2 cifras
					if (agno_aux < 50) {
						agno_filtrado = "20" + agno_aux		// Pasarlo a 20XX...
					} else {
						agno_filtrado = "19" + agno_aux		// ... o 19XX
					}
				} else {
					agno_filtrado = agno_aux
				}
				if (agno_filtrado.length == 4) {	// Agno con 4 cifras
					fecha_filtrada = dia_filtrado + "/" + mes_filtrado + "/" + agno_filtrado
					return fecha_filtrada			// Fecha con formato DD/MM/AAAA
				}
			}
		}
		return false
	}	

	function filtrarInputFecha(elinput) {
	// Si la fecha es valida la guarda en el input, si no error
		if (fecha = filtrarFecha(elinput.value)) {
			elinput.value = fecha
			return true
		} else {
			alert("Fecha no valida")
			elinput.focus()
			return false
		}
	}

	function insertarCaracter(cadena, caracter, pos) {
	// Agnade el "caracter" en la posicion "pos" de la "cadena"
		return cadena.substring(0, pos) + caracter + cadena.substring(pos)
	}

	function insertarBarra(cadena, pos) {
		v = cadena.split("/")
		if ((v.length < 3) && 				// Si hay menos de 2 barras
			(cadena.length >= pos) && 		// Y la cadena supera la posicion de insercion
			(cadena.substring(pos, pos + 1) != "/")) {		// Y el caracter de esa posicion NO es "/"
			cadena = insertarCaracter(cadena, "/", pos)		// Se inserta la barra
			return cadena
		} else {
			return false
		}
	}

	function insertarDosPuntos(cadena, pos) {
		v = cadena.split(":")
		if ((v.length < 2) && 				// Si no hay ":"
			(cadena.length >= pos) && 		// Y la cadena supera la posicion de insercion
			(cadena.substring(pos, pos + 1) != ":")) {		// Y el caracter de esa posicion NO es ":"
			cadena = insertarCaracter(cadena, ":", pos)		// Se inserta ":"
			return cadena
		} else {
			return false
		}
	}

	function insertarBarrasInput(elem) {
		if (cadena = insertarBarra(elem.value, 2)) {
			elem.value = cadena;
		}
		if (cadena = insertarBarra(elem.value, 5)) {
			elem.value = cadena;
		}
	}

	function insertarDosPuntosInput(elem) {
		if (cadena = insertarDosPuntos(elem.value, 2)) {
			elem.value = cadena;
		}
	}

	function comprobarFecha(elem) {
		insertarBarrasInput(elem)
		return filtrarInputFecha(elem)
	}

	var campo_estado		= "ESTADO"
	var campo_f_entrega		= "FECHA_ENTR"
	var campo_incidencia	= "INCIDENCIA"
	var campo_f_prevista	= "FECHA_PREVISTA"
	var campo_obs_ag 		= "OBSERVACI_AGENCIA"
	var campo_situacion		= "Situacion"
	var campo_idp			= "id"
	var campo_exped			= "EXPEDICION";
	var campo_f_salida		= "FECHA_SALI"

	function anteriorASalida(elem) {
		n = numeroLinea(elem.name, campo_f_entrega)
		formul = elem.form

		f_salida = obtenerValor(formul, campo_f_salida + n)
		if (diferenciaFechas(elem.value, f_salida) < 0) {
			alert("La fecha de entrega no puede ser anterior a la de salida")
			elem.select()
			return true
		}
		return false
	}

	var hoy = new Date()
	var f_hoy = hoy.getDate() + "/" + (hoy.getMonth() + 1) + "/" + hoy.getYear()

	function posteriorAHoy(elem) {
		if (diferenciaFechas(elem.value, f_hoy) > 0) {
			alert("La fecha de entrega no puede ser posterior a la de hoy")
			elem.select()
			return true
		}
		return false
	}

	function comprobarFechaEntrega(elem) {
		n = numeroLinea(elem.name, campo_f_entrega)
		formul = elem.form
		if (fechaVacia(elem.value)) {
// Si el campo F Entrega es vaciado, implica que Estado pasará a 470 e Incidencia a ZZZZ
			cambiarValor(formul, campo_estado + n, "470")
			cambiarValor(formul, campo_incidencia + n, "ZZZZ")
		} else if (comprobarFecha(elem) && !anteriorASalida(elem) && !posteriorAHoy(elem)) {
// La modificación de este campo implica que el campo estado cambia a 999 y el campo Incidencia cambia a 0000 si su contenido es ZZZZ o vacío; en caso de que Incidencia tenga previamente otro valor, éste se mantendrá.
			cambiarValor(formul, campo_estado + n, "999")
			incidencia = obtenerValor(formul, campo_incidencia + n)
			if ((incidencia == "") || (incidencia == "ZZZZ")) {
				cambiarValor(formul, campo_incidencia + n, "0000")
			}
		} else {
			return false
		}
		calcularSituacion(formul, n)
		return true
	}

	function comprobarFechaPrevista(elem) {
		n = numeroLinea(elem.name, campo_f_prevista)
		formul = elem.form
		if (comprobarFecha(elem)) {
// La modificacion de F Prevista daria como resultado que Observacion Agencia tomara el valor "Fecha concertada"
			cambiarValor(formul, campo_obs_ag + n, "Fecha concertada")
		} else {
			return false
		}
		calcularSituacion(formul, n)
	}

	function diaSemana(fecha) {
		dia = fecha.getDay()
		if (!dia) {
			dia = 7
		}
		return dia
	}

	function diferenciaFechas(fecha1, fecha2) {
		v1 = fecha1.split("/")
		date1 = new Date(v1[2], v1[1] - 1, v1[0])	// Agno, mes(0-11), dia
		v2 = fecha2.split("/")
		date2 = new Date(v2[2], v2[1] - 1, v2[0])	// Agno, mes(0-11), dia
		return date1.getTime() - date2.getTime()
	}

	function calcularSituacion(formul, n) {
		var DIA = 1000*60*60*24
		var nueva_situacion = ""
		estado = obtenerValor(formul, campo_estado + n)
		if ((estado == "") || (estado == 400)) {
			nueva_situacion = "No Salido"
		} else {
			if (fechaVacia(f_entrega = obtenerValor(formul, campo_f_entrega + n))) {
				nueva_situacion = "No Confirmado"
			} else {
				f_prevista = obtenerValor(formul, campo_f_prevista + n)
				diferencia = diferenciaFechas(f_entrega, f_prevista)
				if (diferencia <= 0) {
					nueva_situacion = "En Plazo"
				} else {
// IF (Weekday(fecha_entr) < Weekday(fecha_prevista), 
//		TO_DAYS(fecha_entr) - TO_DAYS(fecha_prevista) - 2, 
//		TO_DAYS(fecha_entr) - TO_DAYS(fecha_prevista)
//	) = 1
					v1 = f_entrega.split("/")
					date_entrega = new Date(v1[2], parseInt(v1[1]) - 1, v1[0])
					v2 = f_prevista.split("/")
					date_prevista = new Date(v2[2], parseInt(v2[1]) - 1, v2[0])	// Agno, mes(0-11), dia
					dia_e = diaSemana(date_entrega)
					dia_p = diaSemana(date_prevista)
					if (dia_e < dia_p) {
						diferencia -= 2 * DIA
					}
					if (diferencia <= DIA) {
						nueva_situacion = "Plazo+1"
					} else {
						nueva_situacion = "> Plazo+1"
					}
				}
			}
		}
		cambiarValor(formul, campo_situacion + n, nueva_situacion)
	}

	function actualizarExped(formul, n, exped) {
		cambiarValor(formul, campo_exped + n, exped)
	}

	function numeroLinea(nombre, base) {
		return parseInt(nombre.substring(base.length))
	}

	function cambiarValor(formul, elem, valor) {
		if (input = formul.elements[elem]) {
			switch (input.type) {
				case "text":
				case "hidden":		input.value = valor
									break
				case "checkbox":	input.checked = (input.value == valor)
									break
//				case "radio":
				case "select-one":	for (i = 0; i < input.length; i++) {
										if (input.options[i].value == valor) {
											input.selectedIndex = i
										}
									}
									break
			}
		}
	}

	function obtenerValor(formul, elem) {
		if (input = formul.elements[elem]) {
			switch (input.type) {
				case "checkbox":	
				case "text":
				case "hidden":		return input.value
									break
				case "select-one":	return input.options[input.selectedIndex].value
									break
			}
		} else {
			return false
		}
	}

	var ir_o_no = true
	function irFechaEntrega(formul, n) {
		if (ir_o_no && (input = formul.elements[campo_f_entrega + n])) {
			ir_o_no = false
			input.focus()
		} else {
			ir_o_no = true
		}
		return false
	}
	
