// funciones comunes a todos los navegadores
// implementadas por Gustavo Cerdá, desarrollador de tr3sw.
// Copyright © 2001 tr3sw
// www.tr3sw.com
// name: nombre de la variable que instancia el objeto.
// x: posicion x donde aparecera la ventana.
// y: posicion y donde aparecera la ventana.
// w: ancho del marco, por defecto 400.
// h: ancho del marco, por defecto 300.
// d: documento donde se encuentra el objeto
// b: numero de botones. Por defecto 2

// Variables globales relacionadas con las instancias de la clase
var marcoIns=0;
function marco(name,x,y,w,h,d,b){
// Variables de clase
	marcoIns++;
// Varibles privadas
	this.numPesta = 5;
	this.timer = 1;													// variable con el timer de repeticion
// Variables miembro
	this.instancia=marcoIns;	// Contador de instancias
	this.isOpen = false;			// Flag de apertura
	this.d = (d != null) ? d : document;		// Documento que contiene el objeto
	this.name = name;					// Nombre de la handle del objeto
	this.ventana = dimensionVentana();
	this.width = ((w != null && w > 400) ? w : 400) + "px";		// Ancho del marco
	this.height = ((h != null && h > 300) ? h : 300) + "px";	// Alto del marco
	this.numBotones = new Array(5);					// Handle para los botones
	this.altura = parseInt(this.height);		// Altura del contenido de las tarjetas
	this.numero = 0;												// Numero de tarjeta activa
	this.imgMarco = new Array();					// array con las imagenes que pertenecen al objeto
	
// Cadenas de texto que mostrará el marco
	this.strDescripcion = " ";
	this.strTecnicos = " ";
	this.strTitulo = " ";
	this.strAplicacion = " ";
	this.strEmpleo = " ";
	this.strAlmacena = " ";
	this.temp = "";

// Objetos necesarios para el marco
	this.marco = null;
	this.tit = null;
	this.numTarjetas = new Array(5);
	this.contenidos = null;
	this.subir = null;
	this.bajar = null;

// Asignación de métodos al objeto
	this.draw = drawMethod;
	this.inicializa = inicializaMethod;
	this.cerrar = cerrarMethod;
	this.abrir = abrirMethod;
	this.descrip = descripMethod;
	this.tecnic = tecnicMethod;
	this.aplic = aplicMethod;
	this.empleo = empleoMethod;
	this.almace = almaceMethod;
	this.titul = titulMethod;
	this.reemplaza = reemplazaMethod;
	this.mostrarTarjeta = mostrarTarjetaMethod;
	this.subirContenido = subirContenidoMethod;
	this.bajarContenido = bajarContenidoMethod;
	this.print = printMethod;

// Precarga de las imagenes que componen el marco
	var ii=0,i=0;

	this.imgMarco[i++] = preload("./img/print.gif");
	this.imgMarco[i++] = preload("./img/close.gif");
	for (ii = 0; ii < (this.numPesta) ; ii++){
		this.imgMarco[i++] = preload("./img/pestana"+ii+".gif");
	}
	this.imgMarco[i++] = preload("./img/arriba.gif");
	this.imgMarco[i++] = preload("./img/abajo.gif");

// Funciones de inicialización
	//this.draw();

// Implementación de los métodos del objeto
	function drawMethod(){
		var i=0;
		var str = "";
		str +="<div id=\"ventanaDIV"+this.instancia+"\" class=\"ventana\">";
		str +="<table LANG=\"ES\" BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=\""+this.width+"\" HEIGHT=\"40px\" BGCOLOR=black>";
		str +="<tr>";
		str +="<td COLSPAN=\"7\" WIDTH=\""+this.width+"\" HEIGHT=\"20px\">&nbsp;<div id=\"titulo"+this.instancia+"\" class=\"tituloDIV\">&nbsp;</div></td>";
		str +="</tr>";
		str +="<tr>";
		str +="<td width=\"100%\" height=\"20px\">&nbsp;</td>";//"+(parseInt(this.width)-337)+"
		str +="<td width=\"16px\" height=\"20px\"><a href=\"javascript:"+this.name+".print();\" onMouseOver=\"window.status='Presentaci&oacute;n para la impresi&oacute;n'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Presentaci&oacute;n preliminar\" width=\"16px\" height=\"14px\" border=\"0\"></a></td>";
		str +="<td width=\"5px\" height=\"20px\">&nbsp;</td>"; // Espacio entre iconos
		str +="<td width=\"12px\" height=\"20px\"><a href=\"javascript:"+this.name+".cerrar();\" onMouseOver=\"window.status='Cerrar ventana de datos'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Cerrar ventana\" width=\"12px\" height=\"12px\" border=\"0\"></a></td>";
		str +="<td width=\"5px\" height=\"20px\">&nbsp;</td>"; // Espacio entre iconos
		str +="</tr>";
		str +="</table>";
		str +="<div id=\"pesta0"+this.instancia+"\" class=\"pestana\"><a href=\"javascript:"+this.name+".mostrarTarjeta(0);\" onMouseOver=\"window.status='Ver descripci&oacute;n del elemento'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Ver descripci&oacute;n\" width=\"65px\" height=\"20px\" border=\"0\"></a></div>";
		str +="<div id=\"pesta1"+this.instancia+"\" class=\"pestana\"><a href=\"javascript:"+this.name+".mostrarTarjeta(1);\" onMouseOver=\"window.status='Ver datos t&eacute;cnicos del elemento'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Ver datos t&eacute;cnicos\" width=\"65px\" height=\"20px\" border=\"0\"></a></div>";
		str +="<div id=\"pesta2"+this.instancia+"\" class=\"pestana\"><a href=\"javascript:"+this.name+".mostrarTarjeta(2);\" onMouseOver=\"window.status='Ver aplicaciones del elemento'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Ver aplicaciones\" width=\"65px\" height=\"20px\" border=\"0\"></a></div>";
		str +="<div id=\"pesta3"+this.instancia+"\" class=\"pestana\"><a href=\"javascript:"+this.name+".mostrarTarjeta(3);\" onMouseOver=\"window.status='Ver empleo del elemento'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Ver empleo\" width=\"65px\" height=\"20px\" border=\"0\"></a></div>";
		str +="<div id=\"pesta4"+this.instancia+"\" class=\"pestana\"><a href=\"javascript:"+this.name+".mostrarTarjeta(4);\" onMouseOver=\"window.status='Ver modo de almacenamiento del elemento'; return true;\" onMouseOut=\"window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" alt=\"Ver almacenamiento\" width=\"65px\" height=\"20px\" border=\"0\"></a></div>";
		str +="<div id=\"contenido"+this.instancia+"\" class=\"contenidoDiv\">";
		str +="<div id=\"tarjeta0"+this.instancia+"\" class=\"tarjeta\">&nbsp;</div><div id=\"tarjeta1"+this.instancia+"\" class=\"tarjeta\">&nbsp;</div><div id=\"tarjeta2"+this.instancia+"\" class=\"tarjeta\">&nbsp;</div><div id=\"tarjeta3"+this.instancia+"\" class=\"tarjeta\">&nbsp;</div><div id=\"tarjeta4"+this.instancia+"\" class=\"tarjeta\">&nbsp;</div>";
		str +="</div>";
		str +="<div id=\"scrollup"+this.instancia+"\" class=\"scrollClass\"><a href=\"#\" onMouseOver=\""+this.name+".subirContenido(true); window.status='subir'; return true;\" onMouseOut=\""+this.name+".subirContenido(false);window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" width=\"11px\" height=\"15px\" border=\"0\" alt=\"subir\"></a></div>";
		str +="<div id=\"scrolldown"+this.instancia+"\" class=\"scrollClass\"><a href=\"#\" onMouseOver=\""+this.name+".bajarContenido(true); window.status='bajar'; return true;\" onMouseOut=\""+this.name+".bajarContenido(false);window.status=''; return true;\"><img src=\""+this.imgMarco[i++].src+"\" width=\"11px\" height=\"15px\" border=\"0\" alt=\"bajar\"></a></div>";
		str +="</div>";
		escribeDIV(this.d, str);
		this.inicializa();
	}
	
	function inicializaMethod(){
		var i=0;
		clearTimeout(this.timer);
		for(i=0; i<this.imgMarco.length; i++){
			if(!this.imgMarco[i].complete){
				window.status="Cargando marco";
				this.timer = setTimeout(this.name + ".inicializa()",30);
				return true;
			}else{
				window.status="Marco cargado";
			}
		}
		this.marco = document.getElementByIds("ventanaDIV" + this.instancia);
		this.marco.setWidth(this.width); this.marco.setHeight(this.height); this.marco.clipInit();
		this.marco.moveTo(this.ventana.width+20,50); this.marco.dragDrop();
		this.contenidos = document.getElementByIds("contenido"+this.instancia);
		this.contenidos.setWidth(parseInt(this.width)-2); this.contenidos.setHeight(parseInt(this.height)-42);
		this.contenidos.clipInit();
		this.subir=document.getElementByIds("scrollup" + this.instancia); this.subir.moveTo(parseInt(this.width)-18,this.contenidos.getTop()+2); this.subir.oculta();
		this.bajar=document.getElementByIds("scrolldown" + this.instancia); this.bajar.moveTo(parseInt(this.width)-18,parseInt(this.height)-18); this.bajar.oculta();
		var i=0;
		var cadena="";
		for(i=0; i<this.numBotones.length; i++){
			this.numBotones[i]=document.getElementByIds("pesta" +i.toString()+this.instancia.toString());
			this.numBotones[i].moveTo(i*65,20); this.numBotones[i].oculta();
			this.numTarjetas[i]=document.getElementByIds("tarjeta"+i.toString()+this.instancia.toString());
			this.numTarjetas[i].setWidth(parseInt(this.width)-2);
			this.numTarjetas[i].limites = new Limites(this.contenidos,this.numTarjetas[i]);
			this.numTarjetas[i].scroll = new ScrollObj(this.numTarjetas[i],this.numTarjetas[i].limites);
			this.numTarjetas[i].scroll.velocidad = 30;
			//this.numTarjetas[i].setHeight(parseInt(this.height)+42);
			//this.numTarjetas[i].clipInit();
		}		
		this.marco.oculta();
		this.tit = document.getElementByIds("titulo"+this.instancia); this.tit.oculta();
		// Estas lineas deben ir antes que escribamos en las capas, para NetScape.
		this.tit.setWidth(parseInt(this.width)-2); this.tit.setHeight(18);
		this.tit.clipInit();
	}

	function cerrarMethod(){
		if(this.marco.getClip("bottom") > 0){
			this.marco.clipBy(0,0,-20,0);setTimeout(this.name + ".cerrar()",30);
		}
		else{
			this.tit.oculta(); this.marco.oculta(); this.contenidos.oculta();
			var i;
			for(i=0; i<this.numBotones.length; i++){
				this.numBotones[i].oculta();this.numTarjetas[i].oculta();
			}		
			this.marco.clipInit();this.marco.moveTo(this.ventana.width+20,50);this.isOpen = false;
		}
	}

	function abrirMethod(s1, s2, s3, s4, s5, s6){
		if(this.isOpen == false){
			var args=this.abrir.arguments;
			var i;
			for(i=0; i<(args.length-1); i++){
				this.numBotones[i].muestra();
			}
			this.titul(s1); this.descrip(s2); this.tecnic(s3);
			if(args.length > 3) this.aplic(s4);
			else this.aplic("");
			if(args.length > 4) this.empleo(s5);
			else this.empleo("");
			if(args.length > 5) this.almace(s6);
			else this.almace("");
			this.marco.muestra(); this.tit.muestra(); this.contenidos.muestra(); this.mostrarTarjeta(0);
			this.isOpen = true;
			var temp = (this.ventana.width+parseInt(this.width))/2+20;
//			this.marco.moveBy(-temp,0);
//			slideBy(-temp,0,30,30,this.marco.indice,null);
			this.marco.slideBy(-temp,0,30,30);
		}
	}
	
	function mostrarTarjetaMethod(numero){
		var i;
		this.numero = numero;
		for(i=0; i<this.numBotones.length; i++){
			this.numTarjetas[i].oculta();
			this.numBotones[i].moveTo(i*65,20);
		}
		this.numBotones[numero].moveBy(0, 2);
		this.numTarjetas[numero].muestra();
		if(this.numTarjetas[numero].getHeightContent()>this.contenidos.getHeight()){
			this.numTarjetas[numero].scroll.incremento = this.numTarjetas[numero].scroll.calculaIncremento(this.numTarjetas[numero]);
			this.subir.muestra(); this.bajar.muestra();
		}else{
			this.subir.oculta(); this.bajar.oculta();
		}
	}
	
	function subirContenidoMethod(condicion){
		if(condicion){
			this.numTarjetas[this.numero].scroll.bajar();
		}else{
			this.numTarjetas[this.numero].scroll.stop();
		}
	}

	function bajarContenidoMethod(condicion){
		if(condicion){
			this.numTarjetas[this.numero].scroll.subir();
		}else{
			this.numTarjetas[this.numero].scroll.stop();
		}
	}
	
	function descripMethod(str){
		this.strDescripcion = "<P>" + str + "</P>";
		this.numTarjetas[0].escribeCapa(this.strDescripcion);
	}

	function tecnicMethod(str){
		this.strTecnicos = str;
		this.numTarjetas[1].escribeCapa(this.strTecnicos);
	}

	function aplicMethod(str){
		this.strAplicacion = str;
		this.numTarjetas[2].escribeCapa(this.strAplicacion);
	}

	function empleoMethod(str){
		this.strEmpleo = str;
		this.numTarjetas[3].escribeCapa(this.strEmpleo);
	}

	function almaceMethod(str){
		this.strAlmacena = str;
		this.numTarjetas[4].escribeCapa(this.strAlmacena);
	}

	function titulMethod(str){
		this.temp = str;
		this.strTitulo = "<div class=\"tituloMarco\">" + str + "</div>";
		this.tit.escribeCapa(this.strTitulo);
	}
	
	function printMethod(){
		var str = "";
		var ventana=window.open("","Ventana_Imprimir","status=no,toolbar=no,scrollbars=yes,height=410,width=610");
		str += "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"DTD/xhtml1-transitional.dtd\">";
		str += "<html xmlns=\"http://www.w3.org/1999/xhtml\" LANG=\"es\">";
		str += "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; CHARSET=iso-8859-1\">";
		str += "<META name=\"Author\" content=\"Gustavo Cerdá (tr3sw)\">";
		str += "<HEAD><TITLE>Impresi&oacute;n</TITLE>";
		str += "<link rel=\"StyleSheet\" type=\"text/css\" href=\"./css/marcoprint.css\"></HEAD>";
//		str += "<body bgcolor=\"#ffffff\"><hr><a href=\"javascript:window.print();\"><img src=\"./img/print.gif\" alt=\"Imprimir\" width=\"16px\" height=\"14px\" border=\"0\"></a><a href=\"javascript:window.close();\"><img src=\"./img/close.gif\" alt=\"Cerrar Ventana\" width=\"12px\" height=\"12px\" border=\"0\"></a>";
		str += "<body bgcolor=\"#00aaaa\" /**/onload=\"window.print(); return true;\">";
		
		str += "<table width=\"100%\" bgcolor=\"#00FFFF\" cellspacing=\"0\" cellpadding=\"4\" border=\"0\">";
		str += "<tr>";
		str += " <td align=\"right\"><img src=\"./img/cabeceraPrint.png\" width=\"150px\" height=\"65px\" alt=\"Petelsa\" border=\"0\"></td>";
		str += " <td align=\"left\"><font face=\"Verdana\" size=\"1px\">Crta. de Huesca km. 9,600<br>Pol&iacute;gono Industrial Villanueva de G&aacute;llego, Calle E. Naves 5 y 7<br>50830 VILLANUEVA DE G&Aacute;LLEGO (ZARAGOZA)<br>Telf.: 976 185 962, Fax: 976 180 691</font></td>";
		str += " <td valign=\"top\">";
		str += "  <table width=\"18px\" height=\"18px\" bgcolor=\"#00FFFF\" cellspacing=\"0\" cellpadding=\"2\" border=\"1\">";
		str += "  <tr>";
		str += "   <td align=\"center\"><a href=\"javascript:window.print();\"><img src=\"./img/print.png\" alt=\"Imprimir\" width=\"16px\" height=\"14px\" border=\"0\"></a></td>";
		str += "   <td align=\"center\"><a href=\"javascript:window.close();\"><img src=\"./img/close2.png\" alt=\"Cerrar Ventana\" width=\"16px\" height=\"16px\" border=\"0\"></a></td>";
		str += "  </tr></table>";
		str += " </td>";
		str += "</tr></table>";
		
		str += "<hr>" + this.strTitulo + "<hr>";
		str += "<P align=\"center\"><u>Descripci&oacute;n</u></P>"; str += this.strDescripcion;
		str += "<P align=\"center\"><u>Datos t&eacute;cnicos</u></P>"; str += this.strTecnicos;
		if(this.strAplicacion != "")
			str += "<P align=\"center\"><u>Aplicaci&oacute;n</u></P>"; str += this.strAplicacion;
		if(this.strEmpleo != "")
			str += "<P align=\"center\"><u>Empleo</u></P>"; str += this.strEmpleo;
		if(this.strAlmacena != "")
			str += "<P align=\"center\"><u>Almacenamiento</u></P>"; str += this.strAlmacena;
		str += "</BODY></HTML>";
		escribeDIV(ventana.document,str);
	}

	function reemplazaMethod(str){
		var re = /<subcat>/gi;
		var texto = str.replace(re, "<div class=\"subcat\">");
		re = /<\/subcat>/gi;
		var texto2 = texto.replace(re, "</div>");
		re = /<cat>/gi;
		texto = texto2.replace(re, "<div class=\"cat\">");
		re = /<\/cat>/gi;
		texto2 = texto.replace(re, "</div>");
		return texto2;
	}
}