
//Variables globales utilizadas por el configurador de confección de pancartas.

/*
instancia objetos
*/
var objPancarta = new Pancarta();
var entradaIzq = new EntradaTubo();
var entradaDer= new EntradaTubo();
var entradaSup = new EntradaTubo();
var entradaInf = new EntradaTubo();

var pancartaGlobal;

var todosAcabados = obtenerAcabados();  //Todos los acabados
var todosMateriales = obtenerMateriales();  //Todos los materiales
var todosOllaos = obtenerOllaos();  //Todos los ollaos
//var todosTerminaciones;
var todosTubos = obtenerTubos();

	  
var entradaTuboSupGlobal = entradaSup;  //Entrada de tubo superior de la pancarta en confección
var entradaTuboInfGlobal = entradaInf;  //Entrada de tubo inferior de la pancarta en confección
var entradaTuboIzqGlobal = entradaIzq;  //Entrada de tubo izquierda de la pancarta en confección
var entradaTuboDerGlobal = entradaDer;  //Entrada de tubo derecha de la pancarta en confección

// localiza un tipo de tubo
function localizarTubo(codTubo) {
     var tubo = null;

     for(i=0; i<todosTubos.length; i++){
        if(todosTubos[i].codAccesorio == codTubo) {
            tubo = todosTubos[i];   
            break;
        }
     }
     
     return tubo;
}

//Encuentra un acabado en el array de globales (todosAcabados) a partir de un código
function localizarAcabado(codAcabado) {
     var acabado = null;
     
     for(i=0; i<todosAcabados.length; i++){
        if(todosAcabados[i].codAcabado == codAcabado) {
            acabado = todosAcabados[i];   
            break;
        }
     }
     
     return acabado;
}

//Encuentra un material en el array de globales (todosMateriales) a partir de un código
function localizarMaterial(codMaterial) {
     var material = null;
     
     for(i=0; i<todosMateriales.length; i++){
        if(todosMateriales[i].codMaterial == codMaterial) {
            material = todosMateriales[i];   
            break;
        }
     }
     
     return material;
}

//Encuentra un ollao en el array de globales (todosOllaos) a partir de un código
function localizarOllao(codOllao) {
     var ollao = null;
     
     for(i=0; i<todosOllaos.length; i++){
        if(todosOllaos[i].codOllao == codOllao) {
            ollao = todosOllaos[i];   
            break;
        }
     }
     
     return ollao;
}

//Encuentra un material en el array de globales (todosTerminaciones) a partir de un código
function localizarTerminacion(codTerminacion, codMaterial) {
     var terminacion = null;
     var todosTerminaciones = obtenerTerminacionesDeMaterial(codMaterial)

     for(i=0; i<todosTerminaciones.length; i++){
        if(todosTerminaciones[i].codTerminacion == codTerminacion) {
            terminacion = todosTerminaciones[i];   
            break;
        }
     }
     
     return terminacion;
}

function muestraMotivo(ruta){
	var array = ruta.split("/");
	var txt = "";
	    for(i=0; i < array.length; i++){
		txt += "/"+array[i]+"<br />";
        }
		return txt;
}

//Renderizado de una pancarta (OFFLINE O ONLINE)
function renderPancarta(pancarta) {
    //1.- OBTENCIÓN DEL MATERIAL
    var material = localizarMaterial(pancarta.codMaterial);   
    //2.- OBTENCIÓN DE LOS ACABADOS
    var acabadoSuperior = localizarAcabado(pancarta.codAcabSup);
    var acabadoInferior = localizarAcabado(pancarta.codAcabInf);
    var acabadoIzquierdo = localizarAcabado(pancarta.codAcabIzq);
    var acabadoDerecho = localizarAcabado(pancarta.codAcabDer);
    
    //3.- OBTENCIÓN DE OLLAOS: Como solo habrá un tipo de ollao, en cuanto encontremos uno detenemos la búsqueda
    var ollao = localizarOllao(pancarta.codOllaoSup);
    if(ollao == null) {
        ollao = localizarOllao(pancarta.codOllaoInf);
    }
    if(ollao == null) {
        ollao = localizarOllao(pancarta.codOllaoIzq);
    }
    if(ollao == null) {
        ollao = localizarOllao(pancarta.codOllaoDer);
    }        
    
    //4.- OBTENCIÓN DE ENTRADAS DE TUBO. Las entradas de tubo están contenidas en las variables globales del    
    //configurador.
    
    //TODO: LÓGICA DE RENDERIZADO DE LA PANCARTA
}

//OBTIENE LA DESCRIPCIÓN TEXTUAL DE LA PANCARTA
function obtenerDescripcionTextual(pancarta) {
	var entradasTubo = obtenerEntradasTuboDePancarta( fuerzaTipos(pancarta.codPancarta,1) );
    var texto = "";
    var material = localizarMaterial(pancarta.codMaterial);

	var terminacion = localizarTerminacion(fuerzaTipos(pancarta.codTerminacion,1), fuerzaTipos(pancarta.codMaterial, 1) );
    //Material
    if(material != null) {
        texto += "<b>Material:</b> " + material.nombre + "<br />";
    }
	
	if(terminacion != null) {
        texto += "<b>Acabado:</b> " + terminacion.nombre + "<br />";
    }
    //Ancho y alto
    if(pancarta.ancho != null) {
        texto += "<b>Ancho:</b>" + pancarta.ancho + " Cm<br />";
    }
    if(pancarta.alto != null) {
        texto += "<b>Alto:</b>" + pancarta.alto + " Cm<br />";
    }  

	if(pancarta.motivoPropuesta != null && pancarta.motivoPropuesta != '') {
        texto += "<b>Motivo:</b><br />" +  muestraMotivo(pancarta.motivoPropuesta);
    }
    //Márgenes con acabados y ollaos
    //SUPERIOR
    var acabadoSuperior = localizarAcabado(pancarta.codAcabSup);
    var ollaoSuperior = localizarOllao(pancarta.codOllaoSup);
    var entradaTuboSuperior = entradaTuboSupGlobal;
    

    if(ollaoSuperior != null && ollaoSuperior.nombre  != 'Sin Ollao') {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Superior:</b>" + ollaoSuperior.nombre + "<br />";
		texto += "<b>Numero de Ollaos:</b>" + pancarta.numOllaosSup + "Cm<br />";
		texto += "<b>Distancia de Ollaos:</b>" + Math.round(pancarta.ancho / pancarta.numOllaosSup) + "Cm<br />";
		
    } 
	if(acabadoSuperior != null) {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Superior:</b>" + acabadoSuperior.nombre + "<br />";
   
		if(entradaTuboSuperior != null && acabadoSuperior.nombre == "Entrada de Tubo" ) {
				if ( entradasTubo[0] ){
				var tipoTubo = localizarTubo( entradasTubo[0]['diametro'] );
					if (tipoTubo != null){
					texto += "<b>Tipo Tubo:</b>" + tipoTubo['nombre'] + "<br />";
					texto += "<b>Longitud Tubo:</b>" + (entradasTubo[0]['longitud']*100) + "Cm<br />";
					}
				}
			var textoBase = "<b>Entrada Tubo:</b>";
			var abiertoArriba = entradaTuboSuperior.abiertoIzq;
			var abiertoAbajo = entradaTuboSuperior.abiertoDer;
			if(abiertoArriba == 1) {
				texto += textoBase + "izquierda: abierto";
			}
			else {
				texto += textoBase + "izquierda: cerrado";
			}
			if(abiertoAbajo == 1) {
				texto += ", derecha: abierto<br />";
			}
			else {
				texto += ", derecha: cerrado<br />";
			}        
		}
	}
    //INFERIOR
    var acabadoInferior = localizarAcabado(pancarta.codAcabInf);
    var ollaoInferior = localizarOllao(pancarta.codOllaoInf);
    var entradaTuboInferior = entradaTuboInfGlobal;    

    if(ollaoInferior != null  && ollaoInferior.nombre  != 'Sin Ollao') {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Inferior:</b>" + ollaoInferior.nombre + "<br />";
		texto += "<b>Numero de Ollaos:</b>" + pancarta.numOllaosInf + "Cm<br />";
		texto += "<b>Distancia de Ollaos:</b>" + Math.round(pancarta.ancho / pancarta.numOllaosInf) + "Cm<br />";
    } 
	if(acabadoInferior != null) {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Inferior:</b>" + acabadoInferior.nombre + "<br />";
		if(entradaTuboInferior != null  &&  acabadoInferior.nombre == "Entrada de Tubo"   ) {
				if ( entradasTubo[1] ){
				var tipoTubo = localizarTubo( entradasTubo[1]['diametro'] );
					if (tipoTubo != null){
						texto += "<b>Tipo Tubo:</b>" + tipoTubo['nombre'] + "<br />";
						texto += "<b>Longitud Tubo:</b>" + (entradasTubo[1]['longitud']*100) + "Cm<br />";
					}
				}
			var textoBase = "<b>Entrada Tubo:</b>";
			var abiertoArriba = entradaTuboInferior.abiertoIzq;
			var abiertoAbajo = entradaTuboInferior.abiertoDer;
			if(abiertoArriba == 1) {
				texto += textoBase + "izquierda: abierto";
			}
			else {
				texto += textoBase + "izquierda: cerrado";
			}
			if(abiertoAbajo == 1) {
				texto += ", derecha: abierto<br />";
			}
			else {
				texto += ", derecha: cerrado<br />";
			}        
		} 
	} 
    //IZQUIERDA
    var acabadoIzquierdo = localizarAcabado(pancarta.codAcabIzq);
    var ollaoIzquierdo = localizarOllao(pancarta.codOllaoIzq);
    var entradaTuboIzquierdo = entradaTuboIzqGlobal;    

    if(ollaoIzquierdo != null && ollaoIzquierdo.nombre  != 'Sin Ollao' ) {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Izquierdo:</b>" + ollaoIzquierdo.nombre + "<br />";
		texto += "<b>Numero de Ollaos:</b>" + pancarta.numOllaosSup + "Cm<br />";
		texto += "<b>Distancia de Ollaos:</b>" + Math.round(pancarta.alto / pancarta.numOllaosIzq) + "Cm<br />";
    }
	if(acabadoIzquierdo != null ) {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Izquierdo:</b>" + acabadoIzquierdo.nombre + "<br />";
		if(entradaTuboIzquierdo != null &&  acabadoIzquierdo.nombre == "Entrada de Tubo"   ) {
				if (entradasTubo[2]){
				var tipoTubo = localizarTubo( entradasTubo[2]['diametro'] );
					if (tipoTubo != null){
						texto += "<b>Tipo Tubo:</b>" + tipoTubo['nombre'] + "<br />";
						texto += "<b>Longitud Tubo:</b>" + (entradasTubo[2]['longitud']*100) + "Cm<br />";
					}
				}
			var textoBase = "<b>Entrada Tubo:</b>";
			var abiertoArriba = entradaTuboIzquierdo.abiertoIzq;
			var abiertoAbajo = entradaTuboIzquierdo.abiertoDer;
			if(abiertoArriba == 1) {
				texto += textoBase + "arriba: abierto";
			}
			else {
				texto += textoBase + "arriba: cerrado";
			}
			if(abiertoAbajo == 1) {
				texto += ", abajo: abierto<br />";
			}
			else {
				texto += ", abajo: cerrado<br />";
			}        
		}  
	}
    //DERECHA
    var acabadoDerecho = localizarAcabado(pancarta.codAcabDer);
    var ollaoDerecho = localizarOllao(pancarta.codOllaoDer);
    var entradaTuboDerecho = entradaTuboDerGlobal;    

    if(ollaoDerecho != null && ollaoDerecho.nombre != 'Sin Ollao' ) {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Derecho:</b>" + ollaoDerecho.nombre + "<br />";
		texto += "<b>Numero de Ollaos:</b>" + pancarta.numOllaosSup + "Cm<br />";
		texto += "<b>Distancia de Ollaos:</b>" + Math.round(pancarta.alto / pancarta.numOllaosDer) + "Cm<br />";
    }
	if(acabadoDerecho != null) {
		texto += "-------------------------------------------------";
        texto += "<br /><b>Márgen Derecho:</b>" + acabadoDerecho.nombre + "<br />";
		
		if(entradaTuboDerecho != null && acabadoDerecho.nombre == "Entrada de Tubo"  ) {
			if ( entradasTubo[3] ){
				
			var tipoTubo = localizarTubo( entradasTubo[3]['diametro'] );
				if (tipoTubo != null){
					texto += "<b>Tipo Tubo:</b>" + tipoTubo['nombre'] + "<br />";
					texto += "<b>Longitud Tubo:</b>" + (entradasTubo[3]['longitud']*100) + "Cm<br />";
				}
			}
			var textoBase = "<b>Entrada Tubo:</b> ";
			var abiertoArriba = entradaTuboDerecho.abiertoIzq;
			var abiertoAbajo = entradaTuboDerecho.abiertoDer;
			if(abiertoArriba == 1) {
				texto += textoBase + "arriba: abierto";
			}
			else {
				texto += textoBase + "arriba: cerrado";
			}
			if(abiertoAbajo == 1) {
				texto += ", abajo: abierto<br />";
			}
			else {
				texto += ", abajo: cerrado<br />";
			}        
		}  
     }
    return texto;
}

