/*
CLASES PARA LOS DESPLEGABLES DE LOS PUERTOS
*/

//array de objetos lineas para representar todas las lineas disponibles
var Lineas = new Array();
var origenSeleccionado; //Es el num del puerto de origen seleccionado
//var ptodSeleccionado;


/**
* Objeto Puerto. 
* Como atributos tiene el codigo de puerto y el texto
*
**/
function CPuerto(codigo, texto){
	
	this.codigo = codigo;
	this.texto = texto;	
}

/**
* Objeto Acomodacion. 
* Como atributos tiene el codigo de acomodacion y el texto
*
**/
function CAcomodacion(codigo, texto){
	
	this.codigo = codigo;
	this.texto = texto;	
}

/**
* Objeto Vehiculo. 
* Como atributos tiene el codigo del vehiculo y el texto
*
**/
function CVehiculo(codigo, texto){
	
	this.codigo = codigo;
	this.texto = texto;	
}

/**
* Objeto Bonificacion. 
* Como atributos tiene el codigo de la bonificacion y el texto
*
**/
function CBonificacion(codigo, texto){
	
	this.codigo = codigo;
	this.texto = texto.replace(/&atilde;/, "ã");
}


/**
* Objeto Linea. 
* Representa una linea (trayecto) entre un origen y un destino
* Tiene como atributo un puerto Origen, un array de puertos Destino, 
* un array de acomodaciones y un array de Vehiculos.
**/

//añade un puerto destino a la linea
function addPtod (codigo, texto) {
  this.ptosd[this.ptosd.length++] = new CPuerto(codigo, texto);
}

//añade una acomodacion para el origen a la linea
function addAcomodacionO (ptod, codigo, texto) {
  this.acomodacionesO[ptod][this.acomodacionesO[ptod].length++] = new CAcomodacion(codigo, texto);
}

//añade una acomodacion para el destino a la linea
function addAcomodacionD (codigo, texto) {
  this.acomodacionesD[this.acomodacionesD.length++] = new CAcomodacion(codigo, texto);
}

//añade un vehiculo  a la linea
function addVehiculo (ptod, codigo, texto) {
  texto = texto.replace(/&aacute;/, "á");
    texto = texto.replace(/&eacute;/, "é");
	  texto = texto.replace(/&iacute;/, "í");
	    texto = texto.replace(/&oacute;/, "ó");
		  texto = texto.replace(/&uacute;/, "ú");
this.vehiculos[ptod][this.vehiculos[ptod].length++] = new CVehiculo(codigo, texto);
}

//añade una bonificacion  a la linea
function addBonificacion (ptod, codigo, texto) {
  this.bonificaciones[ptod][this.bonificaciones[ptod].length++] = new CBonificacion(codigo, texto);
}

//CLASE EN SÍ
function CLinea(ptoo){
	
	this.ptoo = ptoo; //objeto puerto con el puerto de origen de la linea
	this.ptosd = new Array();//ptosd;	//array de objetos puerto con los destinos posibles 
	this.acomodacionesO = new Array();//acomodaciones; //array de objetos acomodaciones con las acomodaciones de origen
	this.acomodacionesD = new Array();//acomodaciones; //array de objetos acomodaciones con las acomodaciones de destino
	this.vehiculos = new Array();//vehiculos; //array de objetos vehiculos con los vehiculos para la linea
	this.bonificaciones = new Array();
	this.addPtod = addPtod; //añade un puerto destino sobre ptosd.
	this.addAcomodacionO = addAcomodacionO; //añade una acomodacion.
	this.addAcomodacionD = addAcomodacionD; //añade una acomodacion.
	this.addVehiculo = addVehiculo; //añade un vehiculo.		
	this.addBonificacion = addBonificacion;
	//this.setAcomodacion = setAcomodacion; //pone las acomodaciones de una linea.
	//this.setVehiculos = setVehiculos; //pone los vehículos de una línea.
}
/**
* FIN CLASE LINEA
**/

//funcion que devuelve el índice del puerto Origen seleccionado
function getPtooSeleccionado (codPtoo) {
	
	var i = 0;
	var j = null;
	
	for (i=0; i < Lineas.length; i++) {
		if (Lineas[i].ptoo.codigo == codPtoo) {
			j=i;
			return j;
		}
	}
	return j;
}

//funcion que devuelve el nombre de uno de los textos
function getTextoPtoo (codPtoo) {
	
	var i = 0;
	var j = null;
	
	//alert ('entraaaaa')
	for (i=0; i < Lineas.length; i++) {
		if (Lineas[i].ptoo.codigo == codPtoo) {
			j=i;
			return Lineas[i].ptoo.texto;
		}
	}
	return "";
}

//funcion que devuelve el índice del puerto Destino seleccionado
function getPtodSeleccionado (codPtoo, codPtod) {
	
	var i, j, h;
	j = null;
	i = getPtooSeleccionado (codPtoo);
	
	if (i != null) {
		for (j=0; j < Lineas[i].ptosd.length; j++) {
		  if (Lineas[i].ptosd[j].codigo == codPtod) {
			h =j;
			break;
		  }
		}
	}
	return h;	
}


function cargaOrigenes() {
	 
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
		
	//número de lineas que hay	
	selectOrigen.length = Lineas.length+1;
	
	for (i=0; i < Lineas.length; i++) {
		selectOrigen.options[i+1].value = Lineas[i].ptoo.codigo;
		selectOrigen.options[i+1].text = Lineas[i].ptoo.texto;
	
	//alert ('Puerto. Cod: ' + Lineas[i].ptoo.codigo + ' Texto: ' + Lineas[i].ptoo.texto);
	} 
}

function cargaDestinos() {
	
	var nombreForm = arguments[0];
	//alert ('el nombre del form es: '+ nombreForm);
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	
	//ponemos los selects
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;
	origenSeleccionado = getPtooSeleccionado(selectOrigen.value);

	selectDestino.selectedIndex = 0;
	if (origenSeleccionado == null) {
		selectDestino.length = 1;
		return;
	}
	selectDestino.length = Lineas[origenSeleccionado].ptosd.length+1;
		
	for (i=0; i < Lineas[origenSeleccionado].ptosd.length; i++) {
		selectDestino.options[i+1].value = Lineas[origenSeleccionado].ptosd[i].codigo;
		selectDestino.options[i+1].text = Lineas[origenSeleccionado].ptosd[i].texto;
		//alert ('Puerto. Cod: ' + Lineas[origenSeleccionado].ptosd[i].codigo + ' Texto: ' + Lineas[origenSeleccionado].ptosd[i].texto);
	}
	
}

//NUEVO ATEIGH DESIGN: para cargas las bonificaciones.
function cargaBonificaciones() {
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;
	var selectBonificaciones = document.forms[nombreForm].tipoBonificacion;
	var ptod = selectDestino.value;
		
	if (ptod) {
		selectBonificaciones.length = Lineas[origenSeleccionado].bonificaciones[ptod].length+1;	
		selectBonificaciones.selectedIndex = 0;
		
		for (i=0; i < Lineas[origenSeleccionado].bonificaciones[ptod].length; i++) {
			
			//alert ('Puerto. Cod: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].codigo + ' Texto: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].texto);
			selectBonificaciones.options[i+1].value = Lineas[origenSeleccionado].bonificaciones[ptod][i].codigo;
			selectBonificaciones.options[i+1].text = Lineas[origenSeleccionado].bonificaciones[ptod][i].texto;		
			if (Lineas[origenSeleccionado].bonificaciones[ptod].length == 1) selectBonificaciones.selectedIndex = 1;
		}
	}
}

function cargaAcomodacionesO() {

	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;
	var selectAcomodaciones = document.forms[nombreForm].tipoAcomodacion;
	
	var ptod = selectDestino.value;
	
	if (ptod) {
		selectAcomodaciones.length = Lineas[origenSeleccionado].acomodacionesO[ptod].length+1;
		selectAcomodaciones.selectedIndex = 0;	
		
		for (i=0; i < Lineas[origenSeleccionado].acomodacionesO[ptod].length; i++) {
			
			//alert ('Puerto. Cod: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].codigo + ' Texto: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].texto);
			selectAcomodaciones.options[i+1].value = Lineas[origenSeleccionado].acomodacionesO[ptod][i].codigo;
			selectAcomodaciones.options[i+1].text = Lineas[origenSeleccionado].acomodacionesO[ptod][i].texto;		
			if (Lineas[origenSeleccionado].acomodacionesO[ptod].length == 1) selectAcomodaciones.selectedIndex = 1;
		}
	}
	//if ( cmbAcomodaciones.length == 2 ) { cmbAcomodaciones.selectedIndex = 1; }
}

function cargaAcomodacionesDestino() {
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;
	var selectAcomodaciones = document.forms[nombreForm].tipoAcomodRegreso;
	var ptod = selectDestino.value;
	
	if (ptod) {
		//alert ('Origen seleccionado: ' + origenSeleccionado + ' Destino seleccionado: ' + ptodSeleccionado);
		selectAcomodaciones.length = Lineas[origenSeleccionado].acomodacionesO[ptod].length+1;
		selectAcomodaciones.selectedIndex = 0;
		//alert ('Longitud: '+ Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado].length)
		
		for (i=0; i < Lineas[origenSeleccionado].acomodacionesO[ptod].length; i++) {
			
			//alert ('Puerto. Cod: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].codigo + ' Texto: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].texto);
			selectAcomodaciones.options[i+1].value = Lineas[origenSeleccionado].acomodacionesO[ptod][i].codigo;
			selectAcomodaciones.options[i+1].text = Lineas[origenSeleccionado].acomodacionesO[ptod][i].texto;		
			if (Lineas[origenSeleccionado].acomodacionesO[ptod].length == 1) selectAcomodaciones.selectedIndex = 1;
		} 
	}
}

function cargaVehiculos() {
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;
	var selectVehiculos = document.forms[nombreForm].tipoVehiculo;
	var ptod = selectDestino.value;
		
	if (ptod) {
		selectVehiculos.length = Lineas[origenSeleccionado].vehiculos[ptod].length+1;	
		selectVehiculos.selectedIndex = 0;
		
		for (i=0; i < Lineas[origenSeleccionado].vehiculos[ptod].length; i++) {
			
			//alert ('Puerto. Cod: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].codigo + ' Texto: ' + Lineas[origenSeleccionado].acomodacionesO[ptodSeleccionado][i].texto);
			selectVehiculos.options[i+1].value = Lineas[origenSeleccionado].vehiculos[ptod][i].codigo;
			selectVehiculos.options[i+1].text = Lineas[origenSeleccionado].vehiculos[ptod][i].texto;		
			if (Lineas[origenSeleccionado].vehiculos[ptod].length == 1) selectVehiculos.selectedIndex = 1;
		}
	}
}


function seleccionOrigen(){
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;  
	
	var seleccion = getPtooSeleccionado (puertoOrigen);
	
	if (seleccion != null) {selectOrigen.selectedIndex = seleccion+1;} else {selectOrigen.selectedIndex = 0;}	
}


function seleccionDestino(){
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;
	
	var seleccionOrigen = getPtooSeleccionado (puertoOrigen);
	var seleccionDestino = getPtodSeleccionado(puertoOrigen, puertoDestino);
	
	if (seleccionDestino != null) {selectDestino.selectedIndex = seleccionDestino+1;} else {selectDestino.selectedIndex = 0;}
}

function seleccionAcomodacion(){
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectAcomodacion = document.forms[nombreForm].tipoAcomodacion;
	
	if (selectAcomodacion) {
	
	  for (i=0; i< selectAcomodacion.length; i++) {
		if (selectAcomodacion.options[i].value == tipoAcomodacion) {
		  selectAcomodacion.selectedIndex = i;
		}
	  }
	}
}

function seleccionAcomodacionD(){
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectAcomodacion = document.forms[nombreForm].tipoAcomodRegreso;
	var regreso = document.forms[nombreForm].fechaRegreso.value;
	
	alert ('Regreso: ' + regreso);
	
	if (regreso) {
		for (i=0; i< selectAcomodacion.length; i++) {
			if (selectAcomodacion.options[i].value == tipoAcomodacion) {
			  selectAcomodacion.selectedIndex = i;
			}
		}
	}
}

function seleccionVehiculo(){
	
	var nombreForm = arguments[0];
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	var selectVehiculo = document.forms[nombreForm].tipoVehiculo;
	
	if (selectVehiculo){
	  for (i=0; i< selectVehiculo.length; i++) {
		if (selectVehiculo.options[i].value == tipoVehiculo) {
		  selectVehiculo.selectedIndex = i;
		}
	  }
	}
}

function trim(str) {
   return str.replace(/(^\s*)|(\s*$)/g,"")
}


function reseteaFormTrayecto() {

	var nombreForm = arguments[0];
	
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	document.forms[nombreForm].reset();
	document.forms[nombreForm].puertoOrigen.selectedIndex=0;
	document.forms[nombreForm].fechaSalida.value="";
	document.forms[nombreForm].fechaRegreso.value="";
	document.forms[nombreForm].tipoAcomodRegreso.selectedIndex=0;
	return false;
}

function compruebaFormulario(form, id_pagina_buscar, js01, js02, js03, js04, js05, js06, js07, js08, js09, js10, js11) {
	
	var nombreForm = form;
	if (nombreForm == "" || nombreForm == null) {nombreForm = 0;}
	
	//selects e inputs
	var inputSalida = document.forms[nombreForm].fechaSalida.value;
	var inputRegreso = document.forms[nombreForm].fechaRegreso.value;
	var selectOrigen = document.forms[nombreForm].puertoOrigen;
	var selectDestino = document.forms[nombreForm].puertoDestino;	
	var selectAcomodacion = document.forms[nombreForm].tipoAcomodacion;
	var selectAcomodacionD = document.forms[nombreForm].tipoAcomodRegreso;
	var selectVehiculos = document.forms[nombreForm].tipoVehiculo;
	var numAdultos = parseInt(document.forms[nombreForm].numAdultos.value);
	var numNinos = parseInt(document.forms[nombreForm].numNinos.value);
	var numBebes = parseInt(document.forms[nombreForm].numBebes.value);
	
	var Buscador_Inicio = document.forms[nombreForm].buscador_inicio;
	
	if ( isNaN( numAdultos ) ) Adultos = 0;
	if ( isNaN( numNinos ) ) Ninos = 0;
	if ( isNaN( numBebes ) ) Bebes = 0;
	
    // By Fran
	var MensajeOriginal = js01 + "\n\n";
	var Mensaje = MensajeOriginal;
	var Status;
	var Hoy = new Date();
	Hoy.setHours(0,0,0,0);

        if (selectOrigen.selectedIndex == 0) Mensaje = Mensaje + "- " + js02 + ".\n";
        if (selectDestino.selectedIndex == 0) Mensaje = Mensaje + "- " + js03 + ".\n";
        if (inputSalida == "") Mensaje = Mensaje + "- " + js04 + ".\n";
        if (datediff("d",objDate(inputSalida), Hoy) > 0) Mensaje = Mensaje + "- " + js05 + ".\n";
        if (datediff("d",objDate(inputSalida), objDate(inputRegreso)) < 0) Mensaje = Mensaje + "- " + js06 + ".\n";
        if ((numAdultos + numNinos + numBebes) == 0) Mensaje = Mensaje + "- " + js07 + ".\n";
        if (((numAdultos + numNinos + numBebes) == numBebes ) && ( numBebes > 0 ) ) Mensaje = Mensaje + "- " + js08 + ".\n";
        if ((numAdultos + numNinos) > 5) Mensaje = Mensaje + "- " + js09 + ".\n";
        if (selectAcomodacion.selectedIndex == 0) Mensaje = Mensaje + "- " + js10 + ".\n";
        if (Buscador_Inicio == undefined) {
        if ( selectAcomodacionD.value == '' && inputRegreso != "" ) {Mensaje = Mensaje + "- " + js11 + ".\n";}
	}
	Status = (MensajeOriginal == Mensaje);
	if (Status) {
		
		document.forms[nombreForm].puertoOrigenTexto.value = selectOrigen.options[ selectOrigen.selectedIndex ].text;
		document.forms[nombreForm].puertoDestinoTexto.value = selectDestino.options[ selectDestino.selectedIndex ].text;
		document.forms[nombreForm].tipoAcomodIdaTxt.value = selectAcomodacion.options[ selectAcomodacion.selectedIndex ].text;
		
		if (Buscador_Inicio == undefined) {
	  		document.forms[nombreForm].tipoAcomodVtaTxt.value = selectAcomodacionD.options[ selectAcomodacionD.selectedIndex ].text;
		} else {
	  		document.forms[nombreForm].tipoAcomodRegreso.value = selectAcomodacion.value;
	  		document.forms[nombreForm].tipoAcomodVtaTxt.value = selectAcomodacion.options[ selectAcomodacion.selectedIndex ].text;
		}
		selectAcomodacion.form.action = "index.php?id_pagina="+id_pagina_buscar;
		mostrarMensaje();
	}
	else alert(Mensaje);
	
	return Status;
}
