var ruta_v = "http://www.pancarta.com/";

/*
Representación de controles
*/

function GeneraControlAcabados(pos,obj,atributo,indice){
	
    var j = 0;
	var bt = "";
	bt = "<div id='menu_"+atributo+"'>";
    for(j=0; j<obj.length; j++){
	bt += "<img src='icos/"+obj[j].icono+"_"+pos+".png' alt=\""+obj[j].nombre+"\" title=\""+margenes(pos)+"-"+obj[j].nombre+"\" ";
	//bt += "onclick='asignarAtributos(atributo, \""+obj[j].nombre+"\",\""+pos+"\") asignaAtributos(pancarta,\""+pos+"\",\""+elemento+"\",\""+ind+"\","+eval("obj[j]."+ind)+")' />";
   	bt += "onclick='asignarAtributos(\""+atributo+"\", \""+eval("obj[j]."+indice)+"\",\""+pos+"\")' />"; //asignarAtributos(atributo, valor, pos)
    } 
	document.write(bt += "</div>");	
}

/*
Muestra caja para numero de ollaos
*/
function GeneraControlOllaos(pos){
    var j = 0;
	var bt = "";	
	bt = "<div id='menu_numOllaos"+pos+"'>";
	bt += imgHTML('icos/dist_ollao.png','dist ollaos','Distancia entre ollaos',null);
	bt += "<input id='numOllaos_"+pos+"' type='text' class='txtMiniMini' autocomplete ='OFF'  title='Indicar distancia entre Ollaos en cm.' onchange='esNumerico(this.value,\"numOllaos_"+pos+"\");  evaluaNumeroOllaos(this.value,\""+pos+"\")' /> cm";
	bt += imgHTML('icos/num_ollao.png','dist ollaos','Distancia entre ollaos',null); 
	bt += "<input id='nOllaos_"+pos+"' type0'text' class='txtMiniMini' autocomplete ='OFF' readOnly='true' title='Numero de ollaos' > Oll.";
	document.write(bt += "</div>");
	
}

 function tipoDeTubos(pos, valor){
  	txt = "<span style='display:block;float:left' >"+imgHTML('icos/diametro.png','Diametro','Diametro Tubo')+"</span><span class='select-box' style='display:inline;'>"+GeneraCombo('distTubo_'+pos,obtenerAccesoriosDeTipo('6'),'codAccesorio','nombre','asignarEntTubo(\'diametro\', getValorListaCombo(\'distTubo_'+pos+'\'), \''+pos+'\')', 'txtComboMini' )+"</span>";
	return txt;
 }


function GeneraControlTubo(pos){
	var bt = "";	
	
		bt = "<div id='menu_codTubo"+pos+"' >";
		
        bt += "<div>";
		bt += imgHTML('icos/EntradaTubo.png', 'EntradaTubo', 'Indica la Entrada del Tubo',null);
	if (pos == 'Sup' || pos == 'Inf'){
		bt += imgHTML('icos/flecha_Izq.png','EntIzq','Entrada de tubo por la izquierda','asignarEntTubo("abiertoIzq", 1, \"'+pos+'\")');
		bt += imgHTML('icos/flecha_Der.png','EntDer','Entrada de tubo por la derecha','asignarEntTubo("abiertoDer", 1, \"'+pos+'\")');
		bt += imgHTML('icos/cruz.png','SinEntrada','Cerrado','asignarEntTubo("abiertoDer", 0, \"'+pos+'\"); asignarEntTubo("abiertoIzq", 0, \"'+pos+'\")') ;
	}else{
		bt += imgHTML('icos/flecha_Sup.png','EntIzq','Entrada de tubo por la izquierda','asignarEntTubo("abiertoIzq", 1, \"'+pos+'\")');
		bt += imgHTML('icos/flecha_Inf.png','EntDer','Entrada de tubo por la derecha','asignarEntTubo("abiertoDer", 1, \"'+pos+'\")');
		bt += imgHTML('icos/cruz.png','SinEntrada','Cerrado','asignarEntTubo("abiertoIzq", 0, \"'+pos+'\"); asignarEntTubo("abiertoDer", 0, \"'+pos+'\")') ;
	}
	    bt += "</div>";
		
		bt += "<div  style='width: 95px; margin-bottom: 3px;'>";
	
		bt += tipoDeTubos(pos, null )+"</div>";
		
		bt += "<div style='width: 95px;'>"+imgHTML('icos/long.png','Longitud','Longitud del Tubo')+"";
		bt += "<input id='longTubo_"+pos+"' type='text' autocomplete ='OFF' title='Indicar la longitud del tubo en Cm' class='txtMiniMini' onchange='esNumerico(this.value,\"longTubo_"+pos+"\"); asignarEntTubo(\"longitud\", this.value, \""+pos+"\")' />Cm";
	
bt += "</div>";

		document.write(bt += "</div>");
	
}

/*
AsignaAtributos
*/

function asignarAtributos(atributo, valor, posicion) {
		
	 
	if (valor != null && atributo != null){
		  eval("objPancarta."+atributo+posicion+" = valor"); 
		  renderPancarta();
	}

	if (posicion != '' && posicion != null ) {
		
		if (atributo == "codOllao"  && parseFloat(localizarOllao( valor ).precio) > 0 || atributo == "numOllaos"){	
			document.getElementById("menu_numOllaos"+posicion).style.display = "block";
		}else{
			eval("objPancarta.numOllaos"+posicion+" = 0");	
			document.getElementById("menu_numOllaos"+posicion).style.display = "none";
			document.getElementById("numOllaos_"+posicion).value = "";
			document.getElementById("nOllaos_"+posicion).value = "";
		}
	
		if ( atributo == "codAcab" && parseInt(localizarAcabado( valor ).entradaTubo ) ){
			document.getElementById("menu_codTubo"+posicion).style.display = "block";
		}else{
			vaciarEntradasTubo(posicion);
		}
	}
}

/*
Asigna entradas de tubo
*/

function asignarEntTubo(atributo, valor, posicion) {
	
	if (atributo == 'longitud' && valor != ""){
		valor = parseFloat(valor / 100);
	}
	
	 
	if (valor != null && atributo != null){
		  eval("entrada"+posicion+"."+atributo+" = valor");
		  renderPancarta();
	}
	
}

/*
Vacia las entradas de tubo para un lateral dado (pos)
*/
function vaciarEntradasTubo(pos){
	
	atributos = new Array('diametro','longitud','abiertoIzq','abiertoDer');

		for(i=0; i<atributos.length; i++){
			eval("entrada"+pos+"."+atributos[i]+" = null");
			}
		document.getElementById("menu_codTubo"+pos).style.display = "none";
		document.getElementById("distTubo_"+pos).value = "";
		document.getElementById("longTubo_"+pos).value = "";
		renderPancarta();
}

/*
Funciones auxiliares
*/

function imgHTML(src, alt, title,evento){
	if (evento != null){
		var evento = "onClick='"+evento+"'";
	}else{
		evento = "";
	}
	return "<img src='"+src+"' alt='"+alt+"' title='"+title+"' "+evento+" />";
	
}

/* escribeCapa escribe un texto en un bloque segun los parametros facilitados  
   ID nombre del bloque en el que se va a escribir
   parentID frame en el que se encuentra, puede ser "null"
   sText cadena de texto a escribir, en formato html
*/
function escribeCapa(ID,parentID,sText) {
	
	if (document.layers) {
		var oLayer = (parentID)? eval('document.' + parentID + '.document.' + ID + '.document') : document.layers[ID].document;
		oLayer.open();
		oLayer.write(sText);
		oLayer.close();
	}
	else if (document.all) document.all[ID].innerHTML = sText
	else if (parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") {
		document.getElementById(ID).innerHTML = sText;
	}
}

/* cuenta el numero de ollaos por lado y se lo asigna a la pancarta*/

function evaluaNumeroOllaos(dOllaos,pos){ 

	 var dimension = null;
	 if (pos == 'Sup' || pos == 'Inf'){
	 	dimension = dameDimensiones('ancho');
	 }else{
	 	dimension = dameDimensiones('alto');
	 }
	 if (dOllaos > 2){
	 	nOllaos = Math.ceil(dimension / dOllaos);
	 	
	    document.getElementById('nOllaos_'+pos).value = nOllaos;
	    asignarAtributos("numOllaos", nOllaos,pos);
		
	 }else{
		alert('Debes introduccir un valor mayor de 2cm'); 
	 }
}

/*
carga el combo de terminaciones
*/
function llamarTerminaciones(idMat){
	var posicion = ""; 
	
	txt = "<label>Acabados:"+GeneraCombo('idTerminacion',obtenerTerminacionesDeMaterial(idMat),'codTerminacion','nombre','asignarAtributos(\'codTerminacion\',this.value, posicion)' )+"</label>";	
	escribeCapa('layerTerminaciones',null,txt);

}

function borrarMotivo(){
document.getElementById('nArchivo').value = '';
escribeCapa('infoMotivo',null,"");
objPancarta.motivoPropuesta = "";

}

function llamarArchivos(usuario, uid, sid){
	
	misArchivos = recuperarArchivosCliente(usuario); 
													   
	
	upload = "<img src='icos/upload.png' style='cursor:pointer; float:left;' align='absmiddle'  onclick='javascript:popUpWindow(\"upload/upload.php?id="+usuario+"&uid="+uid+"&sid="+sid+"\", 100, 100, 375, 390)' title='subir nuevo archivo' />";
	boton = "<img src='icos/image.png' style='cursor:pointer; float:left;' align='absmiddle' onclick='javascript:popUpWindow(\"predisenhos/predisenhos.php?id="+usuario+"&uid="+uid+"&sid="+sid+"\", 10, 10, 700, 700)' title='Nuestro ClipArt' />&nbsp;";
	borrar = "<img src='icos/cross.png' style='cursor:pointer; float:left;' align='absmiddle' onclick='borrarMotivo()' title='Borrar Archivo Motivo' />&nbsp;";
	if (misArchivos[0] != 'null' ){
		combo = "Mis Archivos:"+GeneraCombo('nArchivo',crearArrays(misArchivos,","),null,null,'asignarAtributos(\'motivoPropuesta\',\''+usuario+'\'+\'/\'+this.value, posicion)' );
	}else{
		combo = "No hay archivos de usuario<input name='nArchivo' id='nArchivo' type='hidden' value='' />";
		
	}
	txt = "<label style='float:inherit; width:150px' >"+combo+boton+"&nbsp;"+upload+borrar+"</label>";

	escribeCapa('layerArchivos',null,txt);

}

/* 
Margenes normaliza codigos a definiciones facilmente legibles
*/
function margenes(txt){
	switch (txt) {
	   case 'Der':
        txt = "Margen Derecho";
       break;
       case 'Sup':
         txt = "Margen Superior";
       break;
	   case 'Inf':
         txt = "Margen Inferior";
       break;
	   case 'Izq':
         txt = "Margen Izquierdo";
       break;
	} 
	return txt;
}
/*
evalua sin un dato es numerico
*/
function esNumerico(valor,id){
	var valor = document.getElementById(id).value;
	if(isNaN(valor)){
		alert('Debes introduccir un valor numerico entero');
	}else{
		if (Math.round(valor) > 0){
	    valor = Math.round(valor);
		}
	}
	document.getElementById(id).value = valor;
}

/*
Obtiene el valor de la lista de un combo
*/

function getValorListaCombo(elemento){

var id = document.getElementById(elemento).selectedIndex;
return document.getElementById(elemento).options[id].value;

}

/* GeneraCombo(nombreComponente,objeto,ValorIndice,Nombre,Evento) 
   Genera un combo con los siguientes parametros
   id -> string que indica el nombre del componente
   obj-> con el que se construira la lista de valores
   ind-> sring con el nombre del atributo indice del objeto 
   nom-> string con el nombre del atributo  nombre
   evento-> string con el evento como respuesta a un onChange: "alert(this.value)" 
*/

//function GeneraCombo(id,obj,ind,nom,evento,class){
function GeneraCombo(id,obj,ind,nom,evento, miEstilo){
var j = 0;

if (miEstilo == null){
	miEstilo = 'txtCombo';
}

if (obj.length > 0) {
	string  = '<select id=\"'+id+'\" autocomplete =\"OFF\" class=\"'+miEstilo +'\" name=\"'+id+'\" onChange=\"'+evento+'; this.options[0].style.display = \'none\' \" >';
    string += '<option value=\"null\" >-- Selecciona --</option>'; 

    for(j=0; j<obj.length; j++){
		if (ind != null && nom != null){
	     	string += '<option value=\"'+eval("obj[j]."+ind)+'\" >'+eval("obj[j]."+nom)+'</option>';
		}else{
			string += '<option value=\"'+obj[j]+'\" >'+obj[j]+'</option>';
		}
    } 
    //if (id != "idMaterial"){
		//string += '<option value=\"null\" >-- Ninguno --</option>'; 
	//} 

return string += '</select>';
}else{
return '<br/>Sin opciones';
}
}

/*
Pop Up
*/
var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height)
{
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }
  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menub ar=no,scrollbar=1,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

/* elmina espacios vacios al principio y final de una cadena */

function trim(s) {
return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

/*cuenta palabras e inserta saltos de linea*/

function contarInsertar(txt) {

  textoArea = txt;
  numeroCaracteres = textoArea.length;
  inicioBlanco = /^ /
  finBlanco = / $/
  variosBlancos = /[ ]+/g 

  textoArea = textoArea.replace(inicioBlanco,"");
  textoArea = textoArea.replace(finBlanco,"");
  textoArea = textoArea.replace(variosBlancos," ");
  textoAreaDividido = textoArea.split(" ");
  numeroPalabras = textoAreaDividido.length;
  txt = "";
  for (i=0; i < numeroPalabras; i++ ) {
	  if (i%5 == 0 && i != 0){
	  	txt += textoAreaDividido[i] + "<br/>"
	  }else{
	  	txt += textoAreaDividido[i] + " ";
	  }
  } 
    return txt; 
 }

/*
verifica si es una array
*/
function isArray(testObject) {
    return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
}

/*
Obtiene las dimensiones de una pancarta.
*/
function dameDimensiones(propiedad){
	
 var valor = null;

 valor = trim(document.getElementById(propiedad).value);
 valor = eval("objPancarta."+propiedad);
 
	if (valor == '' || valor == null){
		alert('debes indicar el ' +propiedad+', previamente');
		document.getElementById(propiedad).style.backgroundColor = '#FFD5AA';
		return false;
	}else{
	return valor;	
	}
	
}

/*
devuelve un array desde una string separado por caracter.
*/

function crearArrays(objStr2,separador){
	
     var cadena = new String(objStr2);
     var miObj = cadena.split(separador);     
	 return miObj;

}

/*
Asignar valores a cajas
*/
function cargaCaja(idCaja,valor,tipo){

	switch (tipo) {
		case 'texto':
			document.getElementById(idCaja).value = valor;
		break;
		case 'combo':
			   var combo = document.getElementById(idCaja);
			  
			   if (combo){
				   for (i = 0; i < combo.length; i++) {
					  if (combo[i].value == valor) {
						 combo[i].selected = true;
					  }   
				   }
			   }
			  

			if (idCaja == "idMaterial"){
				llamarTerminaciones(valor);	
			}
		break;
		case 'layer':
		escribeCapa(idCaja,null,valor);
		break;

	}
	
}

/* obtiene y muesta la información de un material y toma la decisión de mostrar el configurador si es 
   posible la confección. la funcion es llamada desde el combo "materiales" pasando unicamente el id del material.
*/

function obtieneInfoMaterial(Idmat){
	
    infoMatArray = new Array('nombre','descripcion','anchoMax','altoMax','precioCm2');
    var j;
	var txt = '';
	if (Idmat != null && Idmat != ''){
		for(j=0; j<infoMatArray.length; j++){
			//txt += "<strong>"+infoMatArray[j]+"</strong> "+ eval("localizarMaterial("+Idmat+")."+infoMatArray[j]) +"<br />";

			if ( infoMatArray[j] == 'descripcion') {
				txt += "<strong>descripción:</strong><img src='icos/comment.png' onmouseover='Tip("+String.fromCharCode(34)+ contarInsertar( eval("localizarMaterial("+Idmat+")."+infoMatArray[j])) +String.fromCharCode(34)+")' align='absmiddle' /><br />";	
			}else{
				txt += "<strong>"+infoMatArray[j]+"</strong> "+ eval("localizarMaterial("+Idmat+")."+infoMatArray[j]) +"<br />";
			}

		}
		/* activa el panelado*/
		panelado(Idmat, dameDimensiones('ancho'), dameDimensiones('alto'));
																  
		/* evalua si la pancarta soporta confección */
		if ( Number(localizarMaterial(Idmat).confeccion) ){
			visualizaControles(true);
		}else{
			visualizaControles(false);
			
		}
		
		escribeCapa('menu_infoMat',null,txt);
		return infoMatArray;
		
	}
}

/*
   Esta funcion muestra u oculta una serie de bloques, definidos en el array bloques.

*/
function visualizaControles(mostrar){
	
    bloques = Array('container','menuCentro','menu_sup','menu_inf');
	
    var j;
	var visualizar = null;
	
	if (!mostrar){
		visualizar = 'none';
		escribeCapa('RegionConfigurador',null,"<span class='alerMsg' >Este material no admite confección</spam>");
	}else{
		visualizar = 'block';
		escribeCapa('RegionConfigurador',null,"");
	}
    for(j=0; j<bloques.length; j++){
      document.getElementById(bloques[j]).style.display = visualizar;
    }
	
}

/* funcion para controlar el panelado 
   ¿se debe controlar que la pancarta se puedra rotar para adaptarla al ancho de la impresora?

*/

function actualizarPanelado(){
	if (objPancarta.codMaterial != null){
		panelado(objPancarta.codMaterial, dameDimensiones('ancho'), dameDimensiones('alto'));
	}
}

function panelado(codMat, ancho, alto){
	
	var j = 0;
	var i = 0;
	var z = 1;
	var esPanel = true;
	var nAncho = ancho;
	var nAlto = alto;
	var panel = '';
	
	var anchoMax = localizarMaterial( codMat ).anchoMax;
	var altoMax = localizarMaterial( codMat ).altoMax;
	// conciones para panelar 
	impresora = anchoMax;
	Cx = impresora - ancho;
	Cy = impresora - alto;

		if (Cx > Cy || Cx == Cy){
			panel += " ";
		}else{
			panel += "Se rotara 90º<br/>";
			nAncho = alto;
	    	nAlto = ancho;
			Cx = impresora - nAncho;
			Cy = impresora - nAlto;
		}

		if ( Cx < 0 ){
			esPanel = true;
		}else{
			esPanel = false;
		}
	    
	
	var nPanelesX = Math.ceil(nAncho / anchoMax);
	var nPanelesY = ( Math.ceil(nAlto / altoMax) - 1 ) * nPanelesX;
	
	//if ( nPanelesX > 1 && esPanel ){
		for(j=0; j<nPanelesX; j++){
		panel += "<img src=\"icos/panel.png\" />";
		}
		panel += "<br/>";
		if ( nPanelesY > 1  ){
			for(i=0; i<nPanelesY; i++){
				if (z > j ){
					panel += "<br/>";
					z = 0;
				}
				z++;
			panel += "<img src=\"icos/panel.png\" />";
			}
		}
		panel += "<br />La pancarta estará compuesta por "+(nPanelesX+nPanelesY)+" paneles";
		escribeCapa('menu_infoPanel',null,panel);
	//}
}

/*
Renderiza la pancarta

*/

function renderPancarta(){
	// define variables
	 var elemento = null;
	 var posicion = null;
	 var icono = null;
	 var descripcion = null;
	 var valor = null;
	 var soporte = '';
	 var j = 0;
	 var i = 0;
	 var h = 0;
	 var x = 0;
	 
	 pos = new Array('Sup','Inf','Izq','Der');
	 posX = new Array('Izq','Der');
	 elementos = new Array('codAcab','codOllao','codEntTub','numOllaos','codMaterial'); 
	 
	 // Recorre acabados y zonas
	 for(j=0; j<pos.length; j++){
		for(i=0; i<elementos.length; i++){
			elemento = elementos[i];
			posicion = pos[j];
					
						switch (elemento) {
						case 'codAcab':
						      codAcabado = eval("objPancarta.codAcab"+posicion);
							  if (codAcabado != null ) {	
								  icono = localizarAcabado( codAcabado ).icono;
								  descripcion = localizarAcabado( codAcabado ).nombre;
								  entradaTubo = localizarAcabado( codAcabado ).entradaTubo;
								  //soporte += " ->"+margenes(posicion)+": "+descripcion+"\n"; 
								  document.getElementById(posicion.toLowerCase()).style.backgroundImage = "url(icos/"+icono+"_"+posicion+".png)";
							  }
							
						break;
						case 'codOllao':
							  codOllao = eval("objPancarta.codOllao"+posicion);
							  if (codOllao != null ) {	
								  icono = localizarOllao( codOllao ).icono;
								  descripcion = localizarOllao( codOllao ).nombre;
								  precio = localizarOllao( codOllao ).precio;
								 // soporte += " ->"+margenes(posicion)+": "+descripcion+"\n";
								  document.getElementById(posicion.toLowerCase()+"2").style.backgroundImage = "url(icos/"+icono+"_"+posicion+".png)";
							  }
						break;

						case 'codEntTub':
						  	     
							 for(h=0; h < pos.length; h++){
								for(x=0; x < posX.length; x++){		 
									eval("esEntrada = entrada"+pos[h]+".abierto"+posX[x]);
									
									if (Boolean(parseInt(esEntrada)) ){
										img = "entrada_"+pos[h]+"_"+posX[x]+".png";
									}else{
										img = "cerrado.png";
									}									
									document.getElementById(pos[h].toLowerCase()+"_"+posX[x].toLowerCase()).style.backgroundImage = "url(icos/"+img+")";
								}
							 }
                            
	 
						break;
						
						case 'numOllaos':
							  numOllao = eval("objPancarta.numOllaos"+posicion);
								  if (numOllao != null ) {
									 //soporte += " -> NºOllaos en "+margenes(posicion)+": "+eval("objPancarta.numOllaos"+posicion)+"\n";
								  }
						break;
						case 'codMaterial':
						codMaterial = objPancarta.codMaterial;
							  if (codMaterial != null ) {	
								  iconofondo = localizarMaterial( codMaterial ).icono;
								  document.getElementById("container").style.backgroundImage = "url(icos/"+iconofondo+")";
							  }
						break;
			
					} 

		}
					    // representa situaciones que no precisan lados:
						 
						/*// este fragmento relantiza mucho la ejecución:
						codTerminacion = objPancarta.codTerminacion;
						if (codTerminacion != null ) {	
								  iconofondo = obtenerTerminacionesDeMaterial( codTerminacion );
								  document.getElementById("layertTerminaciones").style.backgroundImage = "url(icos/"+iconofondo[0].icono+")";
						}*/
						//motivo = objPancarta.motivoPropuesta;
						if (objPancarta.motivoPropuesta ) {
							nombreMotivo = crearArrays(objPancarta.motivoPropuesta,"/");
							if (nombreMotivo.length == 3){
							nombreMotivo = nombreMotivo[2];	
							}
							if (nombreMotivo.length == 2){
							nombreMotivo = nombreMotivo[1];	
							}
							if (nombreMotivo != 'null'){
			
							linkMotivo = "<a href='"+ruta_v+"archivos/"+objPancarta.motivoPropuesta+"' style='color:#FF0000' target='_blank' title='"+objPancarta.motivoPropuesta+"' >"+recortarTexto(nombreMotivo)+"</a>";
							escribeCapa('infoMotivo',null,"<img src='icos/document.png' align='absmiddle' />"+linkMotivo);
							}else{
							escribeCapa('infoMotivo',null,"");
							}
						}else{
							escribeCapa('infoMotivo',null,"no&nbsp;seleccionado");	
						}

	 }

 escribeCapa('desCripcion',null,obtenerDescripcionTextual(objPancarta));
	
}

function DimePrecio(){
	
document.getElementById('estatus').value = "";

if ( validaCamposRequeridos() ){



	if ( objPancarta.codPancarta == null) {
		document.getElementById('estatus').value += "OK.Se calculará el precio\n";
		
		idpancarta = sincronizarModelo(0,"Pancarta", objPancarta, "codPancarta", new Array("codEntTubIzq","codEntTubDer","codEntTubSup","codEntTubInf"), "EntradaTubo", new Array(entradaIzq,entradaDer,entradaSup,entradaInf), "codEntTub"); 
			if ( idpancarta.codPancarta ){
				document.getElementById('estatus').value += "OK.Guardado, para calculo de precio,....\n";		
			}else{
				document.getElementById('estatus').value += "error.No se ha podido guardar para calculo de precio,....\n";	
			}
	}else{
		    document.getElementById('estatus').value += "OK.Se recalculará el precio\n";
		    idpancarta = sincronizarModelo(objPancarta.codPancarta,"Pancarta", objPancarta, "codPancarta", new Array("codEntTubIzq","codEntTubDer","codEntTubSup","codEntTubInf"), "EntradaTubo", new Array(entradaIzq,entradaDer,entradaSup,entradaInf), "codEntTub"); 
			if ( idpancarta.codPancarta ){
				document.getElementById('estatus').value += "OK.Guardado, para REcalculo de precio,....\n";		
			}else{
				document.getElementById('estatus').value += "error.No se ha podido guardar para Recalculo de precio,....\n";	
			}	
	}
	precioPancarta = calcularPrecioPancarta(objPancarta.codPancarta,'1');
	
	document.getElementById('estatus').value += "OK.Precio NETO: "+precioPancarta+" €\n";
	// validación de precio minimo obsoleta.
	/*if ( parseInt(precioPancarta) < parseInt(pedidoMinimo) ){
		document.getElementById('estatus').value += "InFo.Tu pedido minimo debe ser mayor de 4€ \n";
		document.getElementById('guardar_off').style.display = 'inline';
		document.getElementById('guardar_on').style.display = 'none';
	}else{
		document.getElementById('guardar_off').style.display = 'none';
		document.getElementById('guardar_on').style.display = 'inline';				
	}*/
	
	document.getElementById('estatus').value += "InFo.Recuerda guardar el proyecto para actualizar o crear tu línea de pedido\n";	
	
	
}

}

function validaCamposRequeridos(){

	var validacion = 0;

	if (!dameDimensiones("alto")) {
		document.getElementById('estatus').value += "error.Falta definir ALTO\n";
		document.getElementById('alto').style.backgroundColor = '#FFD5AA';
		validacion += 1;
	}
	if (altoMaximo <= dameDimensiones("alto")){
		document.getElementById('estatus').value += "error.Has superado el alto máximo\n";
		document.getElementById('alto').style.backgroundColor = '#FFD5AA';
		validacion += 1;	
	}
	if (anchoMaximo <= dameDimensiones("ancho")){
		document.getElementById('estatus').value += "error.Has superado el ancho máximo\n";
		document.getElementById('ancho').style.backgroundColor = '#FFD5AA';
		validacion += 1;	
	}
	
	if (!dameDimensiones("ancho")) {
		document.getElementById('estatus').value += "error.Falta definir ANCHO\n";
		document.getElementById('ancho').style.backgroundColor = '#FFD5AA';
		validacion += 1;	
	}
	
	if (altoMinimo > dameDimensiones("alto")){
		document.getElementById('estatus').value += "error.No llegas a la superficie mínima de confección, esta debe ser de "+altoMinimo+"cm de alto \n";
		document.getElementById('alto').style.backgroundColor = '#FFD5AA';
		validacion += 1;	
	}
	if (anchoMinimo > dameDimensiones("ancho")){
		document.getElementById('estatus').value += "error.No llegas a la superficie mínima de confección, esta debe ser de "+anchoMinimo+"cm de ancho \n";
		document.getElementById('ancho').style.backgroundColor = '#FFD5AA';
		validacion += 1;	
	}
	
	if (document.getElementById('idMaterial').value == 'null') {
		document.getElementById('estatus').value += "error.Falta indicar un material\n";
		document.getElementById('idMaterial').style.backgroundColor = '#FFD5AA';
		validacion += 1;	
	}else{
		if ( Number(localizarMaterial( objPancarta.codMaterial ).confeccion) ){
			if ( objPancarta.codAcabSup == null || objPancarta.codAcabInf == null || objPancarta.codAcabIzq == null || objPancarta.codAcabDer == null ){
			document.getElementById('estatus').value += "error.Debes definir el tipo de terminación (al corte, bastilla, tubo, ...) para tu proyecto \n";
			validacion += 1;
			
			}
		}
	}
	
	if (!creaPedidoTubos(0) ){
		validacion += 1;
	}
    
	if (validacion > 0){
		validacion = false;
	}else{
		validacion = true;
	}
	
	return validacion;

}

function guardarProyecto(){

var validacion = true;
document.getElementById('estatus').value = "";
document.getElementById('estatus').value += "OK.Guardando,....\n";	


if ( validaCamposRequeridos() ){
	
		if ( objPancarta.codPancarta == null || predisenho == 1 ){
		   sincronizarModelo(0,"Pancarta", objPancarta, "codPancarta", new Array("codEntTubIzq","codEntTubDer","codEntTubSup","codEntTubInf"), "EntradaTubo", new Array(entradaIzq,entradaDer,entradaSup,entradaInf), "codEntTub"); 
		}else{
		   sincronizarModelo(objPancarta.codPancarta,"Pancarta", objPancarta, "codPancarta", new Array("codEntTubIzq","codEntTubDer","codEntTubSup","codEntTubInf"), "EntradaTubo", new Array(entradaIzq,entradaDer,entradaSup,entradaInf), "codEntTub"); 
		}
			precioPancarta = calcularPrecioPancarta(objPancarta.codPancarta,'1');
			
			//if ( parseInt(precioPancarta) < parseInt(pedidoMinimo) ){
			//	document.getElementById('estatus').value += "error.El pedido mínimo debe ser superior a 4€\n";
			//}else{	
			
				if ( objPancarta.codPancarta && !Boolean(parseInt(enEdicion )) ){
					
					document.getElementById('estatus').value += "OK.Se ha almacenado el modelo\n";
					// se procede a insertar una nueva linea en el pedido
					lineaCarritoPedido = añadirLineaCarritoPedido(1, null, null, null, objPancarta.codPancarta, ""+objPancarta.motivoPropuesta+"", ""+idSesion+"", ""+codCliente+"" );
					if ( lineaCarritoPedido ){
						//enEdicion = 1;
						document.getElementById('precio_off').style.display = 'block';
						document.getElementById('precio_on').style.display = 'none';
						document.getElementById('guardar_off').style.display = 'inline';
						document.getElementById('guardar_on').style.display = 'none';				
						document.getElementById('estatus').value += "OK.Se ha añadido la línea al pedido\n";
							// se procede a totalizar el pedido
							añadirLineaPortes(lineaCarritoPedido.codCarritoPedido);
							var precio = calcularPrecioPedido(lineaCarritoPedido.codCarritoPedido);
							if ( precio ){
								document.getElementById('estatus').value += "OK.Se ha recalculado el pedido.\n";
								//añade los tubos al pedido!
								creaPedidoTubos(1);
							}else{
								document.getElementById('estatus').value += "error.No se ha podido recalcular el pedido\n";
							}
					}else{
						document.getElementById('estatus').value += "error.No se podido añadir una nueva línea al pedido, quizas debas iniciar sesión de nuevo y verificar las caracteristicas de tu pancarta\n";
					}
		
				}else{
					// proceso para actualizar una linea de pedido y total pedido
					var lineaCarritoPedido = new LineaCarritoPedido();
					lineaCarritoPedido.precioUnitario = calcularPrecioPancarta(objPancarta.codPancarta,'1');
					lineaCarritoPedido.codLinea		  = lineaPedido;
					lineaCarritoPedido.archivoMotivo  = objPancarta.motivoPropuesta;
					lineaCarritoPedido.descripcion	  = creaDescBreve();
					linea = modificarLineaCarritoPedido(lineaCarritoPedido);
					
						if ( typeof(linea) != 'undefined' && linea['codLinea'] ){
							precio = calcularPrecioPedido(codPedido);
							if ( typeof(precio) != 'undefined' && precio > 0 ){
								document.getElementById('estatus').value += "OK.Se ha actualizado la línea del pedido\n";
							}else{
								document.getElementById('estatus').value += "error.No se ha podido recalcular el pedido\n";	
							}
						}else{
								document.getElementById('estatus').value += "error.NO se ha actualizado la línea del pedido\n";	
						}
					document.getElementById('estatus').value += "info.No se ha añadido el modelo al carrito. Si estas actualizando una pancarta no es necesario. Si estas creando una pancarta nueva es probable que tu sesión haya caducado\n";
				}
	//} //fin validacion pedido minimo
	
}else{
document.getElementById('estatus').value += "error.No se puede continuar\n";	
}

}

function creaDescBreve(){
    mat = localizarMaterial(objPancarta.codMaterial);
	txt = mat['nombre'] + ' DE ' + dameDimensiones('ancho')+"x"+dameDimensiones('alto')+" Cm.";
	if ( objPancarta.motivoPropuesta ) {
		txt += " REFª IMPRESION DIGITAL "+objPancarta.motivoPropuesta;
	}
	return txt;
}

function depuradorObj(myObj){
    var txt;
	for (myKey in myObj){
	txt += "myObj["+myKey +"] = "+myObj[myKey]+"\n";
	}
    alert(txt);

}


function recuperarProyecto(idProyecto, esPropuesta){

    objPancarta = obtenerPancarta(idProyecto);
 	pos = new Array('Sup','Inf','Izq','Der');
	posX = new Array('Izq','Der');
	
	
	
	// carga algunas variables:
	cargaCaja("idMaterial",objPancarta.codMaterial,"combo");
    obtieneInfoMaterial(objPancarta.codMaterial);
	cargaCaja("ancho",objPancarta.ancho,"texto");
	cargaCaja("alto",objPancarta.alto,"texto");
    panelado(objPancarta.codMaterial,objPancarta.ancho, objPancarta.alto);
	cargaCaja("infoMotivo",objPancarta.motivoPropuesta,"layer");
    cargaCaja("idTerminacion",objPancarta.codTerminacion,"combo");
	
    // carga las entradas de tubo y los ollaos por cada lado
	for(h=0; h < pos.length; h++){
		for(x=0; x < posX.length; x++){		 
			   eval("entrada"+pos[h]+".abierto"+posX[x]+" = entradaTubo"+pos[h]+"Global.abierto"+posX[x]);
		}
	
		cargaCaja("distTubo_"+pos[h],eval("entradaTubo"+pos[h]+"Global.diametro"),"combo");
		
		//tipoDeTubos(pos[h], eval("entradaTubo"+pos[h]+"Global.diametro"));
		cargaCaja("longTubo_"+pos[h],eval("entradaTubo"+pos[h]+"Global.longitud")*100,"texto");
		//cargaCaja("longTubo_"+pos[h],eval("entradaTubo"+pos[h]+"Global.longitud"),"texto");
		eval("entrada"+pos[h]+".longitud = entradaTubo"+pos[h]+"Global.longitud");
		eval("entrada"+pos[h]+".diametro = entradaTubo"+pos[h]+"Global.diametro");
		
			if (eval("entradaTubo"+pos[h]+"Global.diametro") != null || eval("entradaTubo"+pos[h]+"Global.longitud") != null){
				document.getElementById("menu_codTubo"+pos[h]).style.display = "block";
			}
			
		cargaCaja("nOllaos_"+pos[h],eval("objPancarta.numOllaos"+pos[h]),"texto");
		
		
		if ( pos[h] == "Sup" || pos[h] == "Inf" ){
		dimension = dameDimensiones("ancho");
		}else{
		dimension = dameDimensiones("alto");
		}
		if ( eval("objPancarta.numOllaos"+pos[h]) > 0 ){
		nOllaos = Math.round( (parseInt(dimension) /  eval("objPancarta.numOllaos"+pos[h])) * 100 /100 );
		cargaCaja("numOllaos_"+pos[h],nOllaos,"texto");
		}

			if (eval("objPancarta.numOllaos"+pos[h]) != 0 ){
				document.getElementById("menu_numOllaos"+pos[h]).style.display = "block";
			}
	}

	
	// muestra la pancarta:
	renderPancarta();
	
	if (Boolean(parseInt(esPropuesta)) ){
		
		objPancarta.codPancarta = null;
		objPancarta.esPropuesta = 0;
		objPancarta.acronimo = "";
		objPancarta.precioNeto = "";
	}
	


}

/*
GuardaPrediseños (Solo para administradores)
*/

function guardaPredisenho(){
	
	DimePrecio();
	
	if ( objPancarta.codPancarta ){
			document.getElementById('estatus').value += "OK.Se ha almacenado el modelo\n";
		}else{
			document.getElementById('estatus').value += "err.No se ha almacenado el modelo\n";
		}
}

/*
Añade una línea al pedido con los datos de los tubos:

*/

function creaPedidoTubos(modo){
	
	 pos = new Array('Sup','Inf','Izq','Der');
	 posX = new Array('Izq','Der');	
	 esEntrada = 0;
	 
	
		for(h=0; h < pos.length; h++){
			 codAcabado = eval("objPancarta.codAcab"+pos[h]);
			 // primero comprueba que el acabado es una entrada de tubo, cod 3:
			 if (codAcabado == 3){
				
				//evalua si la entrada de tubo es abierta
					if (fuerzaEnteros( eval("entrada"+pos[h]+".diametro") == 0 ) ){
						
						alert("Debes especificar el diámetro del tubo");	
						document.getElementById("distTubo_"+pos[h]).style.backgroundColor = '#FFD5AA';
					return false;
					}
					
					if (!parseFloat( eval("entrada"+pos[h]+".longitud") ) > 0  ){
						alert("Debes especificar la longitud del tubo");	
						document.getElementById("longTubo_"+pos[h]).style.backgroundColor = '#FFD5AA';	
					return false;										
					}
					if (modo){
						document.getElementById('estatus').value += "Info.Se ha añadido al pedido un tubo de:"+eval("entrada"+pos[h]+".longitud")+"m\n";
						lineaCarritoPedido = añadirLineaCarritoPedido(1, ""+eval("entrada"+pos[h]+".diametro")+"",""+eval("entrada"+pos[h]+".longitud")+"", 1, '', '', ""+idSesion+"", ""+codCliente+"" );
						
						calcularPrecioPedido(""+lineaCarritoPedido.codCarritoPedido+"");
					}
		
							
			 }
			
						}


	return true;
	
}

	 function fuerzaEnteros(valor){
		 if (valor == null ){
			 valor = 0;
		 }	 
		 	valor = parseInt( valor );
		 return valor;
	 }
	 
function recortarTexto(cadena){
	var txt = "";
		if (cadena != ""){	

			txt = cadena.substring(0,20);
		}
	return txt;
}
