// Copyright 2006 STRATO Rechenzentrum AG, All rights reserved.
/**
 * @version $id$
 * @author Georg Friedrich
 */

EventHandler = new Object();

EventHandler.Event = function(domElement, event, func) {
	this.domElement = domElement;
	this.event = event;
	this.func = func;
};

/**
 * Array that holds EventHandler.Event objects.
 */
EventHandler.events = new Array(); 

/**
 * Adds the given function as an event handler.<br/>
 * The following example adds an onload handler to the DOM element <i>document</i>:<br/>
 * <code>EventHandler.add('document', 'load', function() { alert('loaded'); });</code>
 * @param domElement An ID or element to which the event handler should be added
 * @param event the event
 * @param func the function that should be added
 */
EventHandler.add = function(el, event, func) {
	//domElement = $(domElement);
	var domElement = null;
	if (typeof el === "string"){
		domElement = document.getElementById(el);
	} else if (typeof el === "object" && el !== null) {
		domElement = el;
	} else {
		throw new Error("Element '"+el+"' is not ");
	}
	
	if (typeof domElement !== "object" || domElement === null) {
		throw new Error("Given DOM Element '"+el+"' is invalid.");
	}
	
	if (domElement.attachEvent) {
		// Internet Explorer, Opera
		domElement.attachEvent('on' + event, func);
	} else if (domElement.addEventListener) {
		// DOM 2 Events
		domElement.addEventListener(event, func, false);
	} else {
		var oldEvent = domElement['on' + event];
		var onEvent = !oldEvent ? func : function() {
			oldEvent();
			func();
		};
		domElement['on' + event] = onEvent;
	}

	var e = new EventHandler.Event(domElement, event, func);
	EventHandler.events.push(e);
};

EventHandler.remove = function(domElement, event, func) {
	if (domElement.detachEvent) {
		domElement.detachEvent('on' + event, func);
	} else if (domElement.removeEventListener) {
		domElement.removeEventListener(event, func, false);
	} else {
		domElement['on' + event] = null;
	}
};

/**
 * Removes all event handlers.
 * This method should be called in an onunload event to prevent memory leaks.
 */
EventHandler.unload = function() {
	for (var i=0; i<EventHandler.events.length; ++i) {
		var e = EventHandler.events[i];
		try {
			EventHandler.remove(e.domElement, e.event, e.func);
		} catch (e) {}
		EventHandler.events[i] = null;
	}
};

EventHandler.add(window, 'unload', EventHandler.unload);

/*
 * This file gets obsolte when stopping support for IE 6
 *
 *
 */


/**
 * @version $id$
 * @author Georg Friedrich
 */

FormHelper = new Object();

/**
 * Adds an onclick event handler to image labels, because IE 5.x, 6.x doesn't make them clickable.
 * 
 * Examples:
 * <input type="checkbox" name="option1" id="option1"/><label for="id1"><img src="option1.gif" width="100" height="20" alt=""/></label>
 */
FormHelper.init = function() {
    var labels = document.getElementsByTagName('label');
    if (typeof labels !== "object" || labels === null || typeof labels.length !== "number") {
            return;
    }
    
	for (var i=0; i<labels.length; ++i) {
		var lbl = labels[i];
		var node = lbl.firstChild;
		if (node && node.nodeName && node.nodeName.toLowerCase() == 'img') {
			var elementId = lbl.attributes['for'].nodeValue; // label.getAttribute('for') returns null in IE 6.0
			var element = document.getElementById(elementId);
			FormHelper.addClickHandler(element, node);
		}
	}
};

FormHelper.addClickHandler = function(el, lbl) {
	if (el && el.click) {
		EventHandler.add(lbl, 'click', function() {
			el.click();
		});
	}
};

/**
 * @version $id$
 * @author $id$
 *
 *
 *
 */


// workaround as long as help is used within iframes
if (typeof Cookies === "undefined" && typeof window.top.Cookies !== "undefined") {
	window.Cookies = window.top.Cookies;
}

var Help = {};
var helpBox = null;
var helpBoxHeader = null;
var helpBoxBody = null;
var helpBoxText = null;
var helpBoxContent = null;
var helpBoxPosX = 0;
var helpBoxPosY = 0;
var offsetX = 15;
var offsetY = 5;
var helpBoxWidth = 270;
var helpBoxHeight =140;

Help.enabled = false;
Help.initialized = false;


/**
 * Attaches mouse events to any elements whose ID corresponds to a key in Help.texts
 * Automatically attached to window.onload
 * 
 */
Help.init = function() {
	var enabledByCookie = Cookies.get('LP.help') === "on";
	
	if (enabledByCookie) {
		Help.enabled = true;
		Help.initialize();
		Help.updateGui();
	}
};

Help.initialize = function(){
	if (Help.initialized) {
		return;
	}
	
	EventHandler.add(window, 'unload', Help.hide);
	
	Help.registerElements();
	
	Help.initialized = true;
};

Help.registerElements = function(){
	var allItems = document.getElementsByTagName("*");
	
	if (typeof allItems !== "object" || allItems === null) {
		throw new Error("allItems array null or not an object when initalizing Helper");
	}
	
	for (var i=0;i < allItems.length;i++) {
		var item = allItems.item(i);
		if (item.id && Help.texts[item.id]) {
			Help.attachEvents(item, item.id);
		}
	}
};

/** Update Menu-Item label
  */
Help.updateGui = function(){
	var menuItem = document.getElementById('helpBoxSwitch');
	if (menuItem) {
		if (Help.enabled === true) {
			menuItem.innerHTML = "Ayuda Online Off";
		} else {
			menuItem.innerHTML = "Ayuda Online On";
		}
	}
};

/**
 * Turns on/off the help balloons (on by default).
 * Initializes and attaches to helpable elements (once) on toggle
 * 
 * We use 'visibility' for this, because show()/hide() uses 'display'.
 * This way they don't interfere with each other.
 */
Help.toggle = function () {
	Help.enabled = !Help.enabled;
	
	if (Help.enabled){
		Help.initialize();
	}
	
	// update cookie
	Cookies.set("LP.help", Help.enabled ? 'on' : 'off', null, "/");
	
	Help.updateGui();
	
	if (Help.enabled) {
		Ext.Msg.show({
			buttons: Ext.Msg.OK, title: js18.common.attention, msg: "Por favor, pase el rat&#243;n sobre los elementos de la pantalla para visualizar los avisos de ayuda."
		});
	}	
};

/**
 * Attaches mouse events to a dom element
 */
Help.attachEvents = function (item, id) {
	EventHandler.add(item, 'mouseover', function(e) {
		Help.getPosition(e);
		Help.show(id);
	});
	EventHandler.add(item, 'mouseout', function(e) {
		Help.hide();
	});
};

/**
 * Called to display help text
 *
 * @param id The key corresponding to the text to display in the help balloon
 */
Help.show = function (id) {
	// Surround with try/catch to prevent error in case the main window was closed and the balloon cannot be referenced anymore
	if(Help.enabled){
		try {
			var text = Help.texts[id];
			var balloon = Help.getBalloon();
			
			if (text && balloon) {
				balloon.firstChild.nextSibling.firstChild.firstChild.innerHTML = text;
				document.getElementById(id).focus();
				balloon.style.display = 'block';
			}
		} catch (ignore) {}	
	}
};

/**
 * Called to hide help text, usually from Help.show()
 */
Help.hide = function () {
	// Surround with try/catch to prevent error in case the main window was closed and the balloon cannot be referenced anymore
	if(Help.enabled){
		try {
		   window.top.document.getElementById('helpBox').style.left="-1500px";
		   //window.top.document.body.removeChild(window.top.document.getElementById('helpBox'));
	       //window.top.document.getElementById('helpBox').removeNode(true);
	    } catch (ignore) {}
    }
};

/**
 * Constructs and returns the help balloon.
 *
 * @return The dom element used as the help balloon, the element's position depends on the position of cursor.
 */
 Help.getBalloon = function() {
	helpBox = window.top.document.getElementById('helpBox');
 	if (helpBox) {
 		helpBox.style.left = helpBoxPosX + 'px';
	    helpBox.style.top = helpBoxPosY + 'px';
	} else {
	 	helpBox = window.top.document.createElement("DIV");
	    helpBox.id = "helpBox";
	    helpBox.className = 'helpBox';
	    
	    helpBox.style.left = helpBoxPosX + 'px';
	    helpBox.style.top = helpBoxPosY + 'px';
	
	    helpBoxHeader = window.top.document.createElement("DIV");
	    helpBoxHeader.className = "helpBoxHeader";
	    helpBoxBody = window.top.document.createElement("DIV");
	    helpBoxBody.className = "helpBoxBody";
	    helpBoxText = window.top.document.createElement("DIV");
	    helpBoxText.className = "helpBoxText";
	    helpBoxTextContent = window.top.document.createElement("DIV");
	    helpBoxTextContent.className = "helpBoxTextContent";
	    
	    helpBox.appendChild(helpBoxHeader);
	    helpBox.appendChild(helpBoxBody);
	    helpBoxBody.appendChild(helpBoxText);
	    helpBoxText.appendChild(helpBoxTextContent);
	   
	    window.top.document.body.appendChild(helpBox);
 	}
    return helpBox;
 };
 
 
/**
 * returns the position for help box.
 *
 * @return the position of the help box, which depends on the position of cursor.
 */
Help.getPosition = function(e) {
	var IE = document.all?true:false;
	
	if(IE) { 
		helpBoxPosX = event.clientX;
		helpBoxPosY = event.clientY + offsetY;
	} else {  
		helpBoxPosX = e.clientX;
		helpBoxPosY = e.clientY + offsetY;
	}
	
	var winWidth = window.top.innerWidth || window.top.document.documentElement.clientWidth;
	var winHeight = window.top.innerHeight || window.top.document.documentElement.clientHeight;   
    
    try {
	
    	if(window.top.IframeDialogWrappers.isIframeDlgVisible()){
    		var iframeLeft = window.top.IframeDialogWrappers.getIframeDlgPosition()[0];
    		var iframeTop = window.top.IframeDialogWrappers.getIframeDlgPosition()[1];
	
    		helpBoxPosX = helpBoxPosX + iframeLeft + 30;
    		helpBoxPosY = helpBoxPosY + iframeTop + 60;
	    }
    } catch(ex) { }
    
    helpBoxPosX = helpBoxWidth+helpBoxPosX > winWidth-offsetX ? helpBoxPosX-offsetX-helpBoxWidth : helpBoxPosX+offsetX;
	helpBoxPosY = helpBoxHeight+helpBoxPosY > winHeight-offsetY ? helpBoxPosY-helpBoxHeight : helpBoxPosY+offsetY;
    
    helpBoxPosX = helpBoxPosX<=0 ? offsetX : helpBoxPosX;
    helpBoxPosY = helpBoxPosY<=0 ? offsetY : helpBoxPosY;
}; 



/* At some places the help needs to initialize later (after building the menu)
 */

if (typeof Config !== "undefined" && (Config.isW1 || Config.isW2 || Config.isW6 || (Config.isW4 && !Config.hasOldEditor && !Config.isPhotoalbum))) {
	EventHandler.add(window, 'load', Help.init);
}

/**
 * Array of areas to monitor
 */
Help.areas = [];

/**
 * Texts to monitor. The key corresponds to the ID of the element or area.
 * Keys need to be unique across all of LivePages, and are named accordingly.
 */
Help.texts = {
	// login page
	w0_login_submit: "Por favor introduzca aqu&#237; el nombre de su dominio y la contrase&#241;a del Servicio de Atenci&#243;n al Cliente.",
	w0_login_sendpassword: "En caso de que haya olvidado la contrase&#241;a, puede solicitarle al Servicio de Atenci&#243;n al Cliente que le vuelva a enviar su contrase&#241;a.",

	// used on both register page and requesting password page
	w0_requestdata: "!!!MISSING_KEY:js.balloon.r2.1!!!",

	// w1 trees
	branch: "Seleccione primero un sector profesional principal. Obtendr&#225; entonces una lista de los subsectores. Tomando como base el sector profesional que haya elegido le propondremos una serie de dise&#241;os para su p&#225;gina web. La selecci&#243;n de sectores se aplica tambi&#233;n a las p&#225;ginas web particulares, no s&#243;lo a las comerciales.",
	subbranch: "En cuanto haya elegido un subsector, el programa le conducir&#225; autom&#225;ticamente a la selecci&#243;n de dise&#241;os.",

	// w2 floater navigation
	tab_designs: "Hemos seleccionado un dise&#241;o adecuado para el sector profesional que Ud. ha elegido. Puede adoptar este dise&#241;o o seleccionar otro para este sector profesional. Haciendo clic en &#34;todos los dise&#241;os&#34;, podr&#225; elegir cualquier dise&#241;o de entre todos los que pone a su disposici&#243;n LivePages.",
	tab_keyv: "Aqu&#237; puede elegir una imagen para su gr&#225;fico principal, ya sea de nuestras sugerencias o de sus propias im&#225;genes. Alternativamente, tambi&#233;n puede elegir &#34;Ninguna imagen principal&#34;.",
	colorschemes: "Aqu&#237; tiene la posibilidad de seleccionar otra variante crom&#225;tica para su dise&#241;o b&#225;sico.",
	naviFontSelector: "Seleccione aqu&#237; la fuente que va a emplearse en todo su sitio web. En el paso &#34;4&#176; Contenido&#34;, en el punto del men&#250; &#34;Texto&#34; encontrar&#225; otras posibilidades de formatear el texto .",
	tab_menu: "Seleccione aqu&#237; el dise&#241;o del men&#250; de su sitio web.",
	tab_logo: "Aqu&#237; puede incluir los datos y el logo de su empresa. Estos datos figurar&#225;n en todas las p&#225;ginas de su sitio web.",
	//w2_nav_uebernehmen: "Si hace clic en el bot&#243;n &#34;aceptar&#34; el sistema guardar&#225; todas las preconfiguraciones y le llevar&#225; autom&#225;ticamente al paso &#34;3&#176; Estructura&#34;.",

	// w2 company data
	//w2_companydata: "Aqu&#237; puede incluir los datos y el logo de su empresa. Estos datos figurar&#225;n en todas las p&#225;ginas de su sitio web.",

	// w3
	w3_proposal_form_head: "Seleccione aqu&#237;  las p&#225;gina m&#225;s utilizadas. Nuestras propuestas ya est&#225;n seleccionadas.",
	w3_pagetree_head: "<p>Administre aqu&#237; los elementos de su p&#225;gina web. Cada elemento en la estructura corresponde a una p&#225;gina de su proyecto LivePages.</p><p>Con la funci&#243;n de arrastrar y soltar, puede colocar los elementos del men&#250; de su p&#225;gina como usted desee. Haga clic en un elemento del men&#250; y c&#225;mbielo en la posici&#243;n que desee. Suelte la tecla izquierda del rat&#243;n para colocar el elemento del men&#250; en esa posici&#243;n.</p><p>Cuando el elemento del men&#250; seleccionado es colocado en otro elemento del men&#250;, es ordenado como subp&#225;gina de ese elemento del men&#250;. </p><p>La funciones m&#225;s utilizadas las puede tener tambi&#233;n en un men&#250; y puede abrirlas haciendo clic en la tecla derecha del rat&#243;n. </p>",
	w3_toolbar_head: "Seleccione aqu&#237; otras posibilidades para la administraci&#243;n de los elementos del men&#250; de su p&#225;gina web.",
	w3_selectall: "Seleccione todas las p&#225;ginas disponibles de una vez.",
	w3_apply: "Renombre con ap&#243;strofos la p&#225;ginas marcadas en su estructura.",
	w3_continue: "Dir&#237;jase al paso 4 para editar el contenido de sus p&#225;ginas.",
	w3_undo: "Anule las &#250;ltimas modificaciones haciendo clic en este bot&#243;n.",
	w3_redo: "Restaure las &#250;ltimas anulaciones haciendo clic en este bot&#243;n.",
	w3_exp: "Abra todos los elementos del men&#250; incluidas las subp&#225;ginas y la p&#225;ginas ocultas.",
	w3_col: "Cierre todos los elementos del men&#250;. Ser&#225;n mostrados s&#243;lo los elementos del men&#250; en la capa m&#225;s alta de la estructura.",
	w3_add: "<p>A&#241;ada a su p&#225;gina web una nueva p&#225;gina. Seleccione para ello entre  los diferentes tipos de p&#225;ginas que le son ofertadas haciendo clic.</p><p>Seleccione la posici&#243;n bajo la cual debe ser insertada la nueva p&#225;gina. Puede modificar la posici&#243;n en cualquier momento arrastrando y soltando.</p>",
	w3_addsubpage: "<p>Una subpp&#225;gina es colocada  debajo de la capa seleccionada.</p><p>Como m&#225;ximo son posibles 3 capas.</p>",
	w3_addlinkedpage: "<p>No se muestra una p&#225;gina siguiente en el men&#250; de su p&#225;gina web. Son posibles enlaces a esta p&#225;gina. </p><p>Si desea construir bajo un elemento del men&#250; una p&#225;gina con un contenido extenso, le recomendamos dividir ese contenido en las p&#225;ginas siguientes.</p>",
	w3_addsubpage_cp: "<p>Una subpp&#225;gina es colocada  debajo de la capa seleccionada.</p><p>Como m&#225;ximo son posibles 3 capas.</p>",
	w3_addlinkedpage_cp: "<p>No se muestra una p&#225;gina siguiente en el men&#250; de su p&#225;gina web. Son posibles enlaces a esta p&#225;gina. </p><p>Si desea construir bajo un elemento del men&#250; una p&#225;gina con un contenido extenso, le recomendamos dividir ese contenido en las p&#225;ginas siguientes.</p>",
	w3_edit: "Modifique el nombre de una p&#225;gina seleccionada.",
	w3_up: "Mueva la p&#225;gina marcada a una capa hacia arriba. Como m&#225;ximo son posibles tres capas.",
	w3_down: "Mueva la p&#225;gina marcada a una capa hacia abajo. Como m&#225;ximo tres capas.",
	w3_append: "<p>Cuelge una p&#225;gina seleccionada como siguiente p&#225;gina a la p&#225;gina anterior.</p><p>En el men&#250; de su p&#225;gina web no se muestra una p&#225;gina siguiente. Sin embargo es posible realizar enlaces a esta p&#225;gina.</p>",
	w3_split: "Separe una p&#225;gina siguiente ya existente. La p&#225;gina siguiente es un elemento regular del men&#250;.",
	w3_link: "Modifique la direcci&#243;n de Internet a la que remite el enlace seleccionado.",
	w3_hide: "<p>Elimine (temporalmente) un elemento del men&#250;  desde el men&#250; de navegaci&#243;n de su p&#225;gina web.</p><p>La p&#225;gina se conserva, puede ser editada y hacerse accesible atrav&#233;s de un enlace en el contenido de sus p&#225;ginas.</p>",
	w3_show: "Visualice de nuevo la p&#225;gina marcada en el men&#250; de navegaci&#243;n de su p&#225;gina web.",
	w3_del: "Elimine una p&#225;gina completa. Se perder&#225; todo el contenido.",
	w3_save: "Guardar cambios.",
	w3_textImg: "Configure p&#225;ginas con ayuda de texto, fotos, v&#237;deos, tablas y muchos m&#225;s nuevos elementos de p&#225;ginas.",
	w3_photoalbum: "Configure un &#225;lbum de fotos con marcos, edici&#243;n de foto.",
	w3_diashow: "Configure un Foto Show de diferentes fotos con comentarios encima y debajo de las fotos , edici&#243;n de foto",
	w3_guestbook: "A&#241;ada su p&#225;gina web un libro de visitas en que sus visitantes puedan dejar notas p&#250;blicas.",
	w3_forum: "A&#241;ada a su p&#225;gina web un foro en el que sus visitantes puedan discutir con usted y otros.",
	w3_survey: "A&#241;ada a su p&#225;gina web un p&#225;gina para encuestas y administre diferentes encuestas directamente en LivePages.",
	w3_contact: "A&#241;ada un formulario de contacto y admin&#237;strelo directamente en LivePages.",
	w3_linkpage: "A&#241;ada al men&#250; de navegaci&#243;n de su p&#225;gina web enlaces a direcciones de Internet externas.",
	w3_intro: "<p>Active una introduci&#243;n animada para su p&#225;gina principal.</p><p> Encontrar&#225; la configuraci&#243;n de la introducci&#243;n en el paso &#34;4. Contenidos&#34;. Seleccione aqu&#237; la opci&#243;n del men&#250;  &#34;Configuraci&#243;n&#34;-> &#34;Intro&#34;.<p>",
	
	// w4 body and navigation
	w4_edit_area: "Todos los contenidos quedan guardados autom&#225;ticamente en cuanto selecciona otro punto del men&#250; en el editor y al pasar a otro texto o bloque gr&#225;fico, al acceder a un nuevo punto del men&#250; para editar o al cambiar a otro paso.",
	w4_navigation: "Para modificar el men&#250; de su sitio web vaya al paso anterior &#34;3&#176; Estructura&#34;.",

	menu_uploadFiles: "Con esta opci&#243;n puede cargar archivos como p. ej. formularios .pdf, documentos de Word, hojas de Excel, etc., para enlazarlos con textos o con im&#225;genes. El visitante de su p&#225;gina web puede descargarse estos archivos haciendo clic en el enlace.",
	menu_selectBackgroundSound: "Con esta opci&#243;n puede poner un sonido de fondo en su p&#225;gina web. &#201;ste puede ser reproducido una &#250;nica vez o continuamente mientras se est&#233; mostrando la p&#225;gina en el navegador del visitante.",
	menu_intro: "Con esta opci&#243;n puede crear una introducci&#243;n para su p&#225;gina web. &#201;sta se reproducir&#225; una vez, antes de que el usuario llegue a su p&#225;gina principal. Tiene la posibilidad de incluir el logo y el t&#237;tulo de su p&#225;gina web en la introducci&#243;n.",
	menu_counter: "Con esta opci&#243;n puede integrar un contador de visitantes en una o en todas sus p&#225;ginas. Con independencia de d&#243;nde lo coloque, el contador de visitantes cuenta siempre s&#243;lo el acceso a su p&#225;gina principal (la superior en su estructura).",
	menu_password: "Con esta opci&#243;n puede proveer de contrase&#241;as a p&#225;ginas sueltas o a su p&#225;gina web completa, para permitirle el acceso a las p&#225;ginas s&#243;lo a personas determinadas.",
	menu_insertImage: "Con esta opci&#243;n puede integrar una imagen en su p&#225;gina web. La imagen se colocar&#225; en el lugar que usted haya marcado.",
	menu_insertVideo: "Con esta opci&#243;n puede integrar un video en su p&#225;gina web. El video se colocar&#225; en el lugar que usted haya marcado.",
	menu_editProperties: "Con esta opci&#243;n puede modificar el tama&#241;o y otras propiedades de su imagen o de su video, as&#237; como a&#241;adir una descripci&#243;n.",
	menu_imageHAlign: "Seleccione una alineaci&#243;n horizontal para su imagen o bien para su video.", // more HAligns defined below
	menu_imageVAlign: "Seleccione una alineaci&#243;n vertical para su imagen o bien para su video.",   // more VAligns defined below
	menu_removeImage: "Con esta opci&#243;n puede eliminar una imagen o un video de su p&#225;gina. La imagen se encuentra ahora como antes en su MediaPool y puede volver a incorporarla en otro momento.",
	menu_newPage: "&#34;Introducir nueva p&#225;gina&#34; le lleva de vuelta al paso &#34;3. Estructura&#34;, donde puede introducir una nueva p&#225;gina en su proyecto. Marque para ello la posici&#243;n en la lista de su estructura y seleccione &#34;Nueva p&#225;gina&#34; o bien &#34;P&#225;gina interactiva&#34;.",
	menu_preview: "&#34;Vista previa&#34; le muestra el aspecto que tendr&#237;a la p&#225;gina despu&#233;s de publicar su proyecto.",
	menu_quit: "&#34;Finalizar&#34; cierra su proyecto. De esta manera se desconecta. Si quiere trabajar de nuevo en su proyecto, tiene que volver a conectarse con su nombre de usuario y su contrase&#241;a.",
	menu_edit: "Aqu&#237; encuentra comandos para la elaboraci&#243;n de textos. Haga clic con el rat&#243;n en un bloque de texto en su p&#225;gina para activar el men&#250;.",
	menu_pageLayout: "Seleccione una maquetaci&#243;n para su p&#225;gina. Decida cu&#225;ntos bloques de texto o de imagen desea integrar en su p&#225;gina.",
	menu_text: "Modifique su texto. Haga clic con el rat&#243;n en un bloque de texto de su p&#225;gina para activar el men&#250;.",
	menu_table: "Introduzca una nueva tabla o modifique su tabla. Haga clic con el rat&#243;n en un bloque de texto de su p&#225;gina para activar el men&#250;.",
	menu_list: "Introduzca una nueva lista o modifique su lista. Haga clic con el rat&#243;n en un bloque de texto en su p&#225;gina para activar el men&#250;.",

	w4_intro: "Marque la introducci&#243;n que elija con un clic del rat&#243;n. Intercale otras informaciones en su introducci&#243;n y establezca su elecci&#243;n del color. Defina a qu&#233; velocidad debe ser reproducida la introducci&#243;n. &#34;1&#34; es muy lento, &#34;120&#34; es muy r&#225;pido. A continuaci&#243;n haga clic en &#34;OK&#34;.",
	w4_counter: "Si pone el contador a cero surtir&#225; tambi&#233;n efecto de manera inmediata en su p&#225;gina web publicada en Internet. Todos los dem&#225;s ajustes se guardar&#225;n en su proyecto haciendo clic en &#34;OK&#34; o en &#34;Guardar&#34; y ser&#225;n activados s&#243;lo mediante la siguiente publicaci&#243;n.",
	w4_password: "Aqu&#237; define usted los derechos de acceso a una p&#225;gina o a todas las p&#225;ginas a la vez. Cuando se visita una p&#225;gina web protegida, el visitante tiene que introducir un nombre de usuario (y su contrase&#241;a) de la lista derecha &#34;Usuario con derechos de acceso&#34;.",
	w4_background_sound: "Haga clic en &#34;Seleccionar&#34; para cargar por medio de MediaPool un sonido de su disco duro o para seleccionar un sonido del archivo de sonidos. El sonido puede reproducirse una sola vez cuando se abra la p&#225;gina o repetirse continuamente mientras se est&#233; mostrando la p&#225;gina.",
	w4_image_properties: "Aqu&#237; puede escribir el texto que se mostrar&#225; sobre y bajo la imagen. Internet Explorer muestra el &#34;texto de sustituci&#243;n de la imagen&#34; pasando el rat&#243;n por encima. El formato de los textos se estableci&#243; mediante la configuraci&#243;n en el paso 2 y aqu&#237; no se puede modificar.",
	w4_guestbook: "Realice los ajustes para el libro de visitas y haga clic a continuaci&#243;n en &#34;Guardar&#34;, para guardar la configuraci&#243;n en su proyecto. &#161;Si su libro de visitas ya ha sido publicado, estos ajustes tambi&#233;n afectar&#225;n directamente a la visualizaci&#243;n del libro de visitas publicado!",
	w4_forum: "Realice los ajustes para el foro y haga clic a continuaci&#243;n en &#34;Guardar&#34;, para guardar la configuraci&#243;n en su proyecto. &#161;Si su foro ya ha sido publicado, estos ajustes tambi&#233;n afectar&#225;n directamente a la visualizaci&#243;n del foro publicado!",
	w4_poll: "Realice los ajustes para la encuesta y haga clic a continuaci&#243;n en &#34;Guardar&#34;, para guardar la configuraci&#243;n en su proyecto. &#161;Si su encuesta ya ha sido publicada, estos ajustes tambi&#233;n afectar&#225;n inmediatamente a la visualizaci&#243;n de la encuesta publicada!",
	w4_contact: "Realice sus ajustes para el formulario de contacto y haga clic a continuaci&#243;n en &#34;Enviar&#34; para guardar la configuraci&#243;n en su proyecto. &#161;Cuando su formulario de contacto ya sea publicado, estos ajustes afectar&#225;n directamente tambi&#233;n a la visualizaci&#243;n del formulario de contacto publicado!",
	
	// w6 site publish properties
	w6_settings: "Aqu&#237; puede Usted elegir, de entre sus direcciones de Internet, aquella a la cual su proyecto deber&#225; corresponder.",
	seoForm: "Aqu&#237; puede modificar las palabras clave para la indexaci&#243;n en los buscadores y la descripci&#243;n del proyecto.",
	w6_ftppath: "Con la publicaci&#243;n, su proyecto actual estar&#225; disponible en Internet bajo &#233;sta direcci&#243;n.",
	publish_now: "Si quiere publicar su proyecto en seguida, aseg&#250;rese entonces de que est&#225; activado el ajuste &#34;publicar inmediatamente&#34;.",
	publish_later: "Si no quiere publicar su proyecto en seguida, indique aqu&#237; la fecha y la hora en que quiera que tenga lugar la publicaci&#243;n.",
	
	// w6 settings
	w6_p3_domain: "!!!MISSING_KEY:js.balloon.p3.1!!!",
	w6_p3_stlp: "!!!MISSING_KEY:js.balloon.p3.2!!!",
	w6_p3_stwh: "!!!MISSING_KEY:js.balloon.p3.3!!!",
	w6_p3_oth: "!!!MISSING_KEY:js.balloon.p3.4!!!",

	// ftp settings, used on p31, p32, and p33
	w6_ftp_username: "Introduzca aqu&#237; su nombre de usuario para acceder al servidor FTP de su sitio web.",
	w6_ftp_password: "Introduzca aqu&#237; su contrase&#241;a para acceder al servidor FTP de su sitio web.",
	
	// ftp settings used on p33
	w6_ftp_domain: "Introduzca por favor el dominio en que quiera publicar su proyecto.",
	w6_ftp_passive: "Esta es una opci&#243;n del protocolo FTP. Cambie los valores preconfigurados s&#243;lo si est&#225; absolutamente seguro de las repercusiones.",
	w6_ftp_port: "Introduzca aqu&#237; el puerto en el que el servidor FTP establece la conexi&#243;n de datos. Normalmente se emplea el puerto 21. Cambie este valor s&#243;lo si est&#225; absolutamente seguro de las repercusiones.",
	
	top_back: "Le lleva a un paso hacia atr&#225;s.",
	top_forward: "Le lleva a un paso hacia delante.",
	top_preview: "le muestra el aspecto que tendr&#237;a su p&#225;gina despu&#233;s de la publicaci&#243;n de su proyecto.",
	top_help: "Abra o cierre aqu&#237; la ayuda online.",
	top_faq: "Cambie usted aqu&#237; a la base de datos de preguntas frecuentes de STRATO.",
	top_service: "Entre aqu&#237; en nuestro CustomerContactCenter. En caso de duda o de incidencia, nuestro Servicio de Atenci&#243;n al Cliente est&#225; disponible para usted en cualquier momento por e-mail o por tel&#233;fono.",
	top_backup: "Aqu&#237; puede guardar el estado actual de su proyecto y restablecerlo despu&#233;s. LivePages administra solamente un &#250;nico &#34;Punto de restablecimiento&#34; por proyecto. Usted puede poner este punto o bien restablecer su proyecto en el estado en el que ha sido guardado anteriormente.",
	top_delete: "Con esta opci&#243;n usted elimina su proyecto de LivePages de manera definitiva. Usted empieza entonces de nuevo en el paso &#34;1. Actividad&#34;.",
	top_project_password: "Con esta opci&#243;n usted puede cambiar la contrase&#241;a con la que entra en su proyecto de LivePages. Por razones de seguridad, su contrase&#241;a no deber&#237;a tener menos de 5 caracteres. Puede tener hasta 32 caracteres.",
	top_survey: "!!!MISSING_KEY:js.help.top.survey!!!",
	
	cp_survey: "!!!MISSING_KEY:js.help.cp.survey!!!",
	cp_backup_backup: "Inicia la elaboraci&#243;n de una copia de seguridad. LivePages administra una &#250;nica copia de seguridad. Cuando se hace una nueva copia de seguridad, se borra la que se ha hecho con anterioridad de forma irrecuperable.",
	cp_backup_restore: "Inicia la recuperaci&#243;n de su proyecto. El contenido actual de su proyecto se perder&#225; de esta manera definitivamente.",
	cp_backup_general: "LivePages le muestra si existe una copia de seguridad y cu&#225;ndo fue creada. Usted puede reproducir &#233;sta en su proyecto, aunque de esta forma se perder&#225; definitivamente el contenido actual del proyecto. O puede desechar la copia de seguridad existente y realizar una nueva.",
	
	photoalbum_edit: "Haga clic aqu&#237; para modificar el texto del t&#237;tulo para su &#225;lbum de fotos. Si la opci&#243;n &#34;T&#237;tulo del &#225;lbum de fotos&#34; est&#225; activada, el texto del t&#237;tulo se muestra en cada p&#225;gina del &#225;lbum de fotos. Mediante la modificaci&#243;n del texto se activa esta opci&#243;n autom&#225;ticamente.",
	photoalbum_select: "Abre MediaPool para seleccionar un sonido de fondo para el &#225;lbum de fotos. Primero cargue por favor aqu&#237; un nuevo archivo de audio. La opci&#243;n &#34;Sonido de fondo&#34; conecta o desconecta el sonido. Si su &#225;lbum de fotos se compone de varias p&#225;ginas, la configuraci&#243;n &#34;una vez&#34; es v&#225;lida para cada p&#225;gina.",
	photoalbum_apply: "Guarda los ajustes para la visualizaci&#243;n de la numeraci&#243;n de las p&#225;ginas, para la cantidad de im&#225;genes por p&#225;gina, para la posici&#243;n de las descripciones de las p&#225;ginas y para la disponibilidad de la vista de cada una de las im&#225;genes. La desconexi&#243;n de la vista de cada una de las im&#225;genes sirve para ahorrar espacio de almacenamiento en su presencia en Internet.",
	photoalbum_frame: "Muestra los dise&#241;os disponibles para el gr&#225;fico del marco de las im&#225;genes. Seleccione uno de los nueve dise&#241;os disponibles o desactive completamente la visualizaci&#243;n de los marcos de im&#225;genes.",
	photoalbum_upload: "Abre MediaPool para seleccionar im&#225;genes para su &#225;lbum de fotos o para cargar nuevas. Usted puede incluir hasta 48 im&#225;genes en su &#225;lbum de fotos. Puede volver a eliminar una imagen haciendo primero clic en la imagen y despu&#233;s en &#34;Eliminar imagen&#34; del men&#250; de elaboraci&#243;n.",
	
	diashow_color: "Establezca el color de fondo de la ventana de Pop-up que desee. Tenga en cuenta que el color azul oscuro del bot&#243;n de operaci&#243;n no pude ser modificado. Si no se realiza ning&#250;n cambio, el fondo permanecer&#225; blanco.",
	diashow_sound: "Abrir el MediaPool, para elegir un sonido de fondo para el Diashow. Por favor, antes cargue un archivo de sonido.",
	diashow_preview: "Abrir la ventana Pop-up con la presentaci&#243;n para que as&#237;, m&#225;s tarde, su visitante pueda indicar la p&#225;gina de presentaci&#243;n.",
	diashow_add: "Abrir la biblioteca de medios para elegir im&#225;genes para su presentaci&#243;n. Puede incluir hasta 48 im&#225;genes. Si desea eliminar una imagen, haga clic sobre la imagen y en la parte de di&#225;logo, hacer clic en &#34;Eliminar imagen&#34;."
	
	//mediapool_document: "Cargue aqu&#237; sus propios archivos. Haga clic en &#34;A&#241;adir nuevo archivo&#34; para seleccionar archivos de su disco duro. Marque entonces el archivo en MediaPool y seleccione &#34;OK&#34; para utilizar el archivo en su proyecto de LivePages como el destino de un enlace.",
	//mediapool_picture: "Haga clic en &#34;A&#241;adir nuevas im&#225;genes&#34; para seleccionar archivos de imagen de su disco duro. Marque entonces las im&#225;genes en MediaPool y seleccione &#34;OK&#34;, para cargar la imagen en su proyecto de LivePages.",
	//mediapool_video: "Haga clic en &#34;A&#241;adir nuevos videos&#34; para seleccionar archivos de video de su disco duro. Marque entonces los videos en MediaPool y seleccione &#34;OK&#34;, para cargar el video en su proyecto de LivePages.",
	//mediapool_sound: "Haga clic en &#34;A&#241;adir nuevos sonidos&#34; para seleccionar un archivo de audio de su disco duro. Marque entonces el archivo en MediaPool y seleccione &#34;OK&#34; para incluir el sonido en su proyecto de LivePages. Tambi&#233;n puede seleccionar un sonido del archivo de sonidos."
};

// assign duplicate pointers (if two items ever share the same text but need different IDs)
Help.texts.menu_imageHAlign_left = Help.texts.menu_imageHAlign;
Help.texts.menu_imageHAlign_center = Help.texts.menu_imageHAlign;
Help.texts.menu_imageHAlign_right = Help.texts.menu_imageHAlign;
Help.texts.menu_imageVAlign_top = Help.texts.menu_imageVAlign;
Help.texts.menu_imageVAlign_middle = Help.texts.menu_imageVAlign;
Help.texts.menu_imageVAlign_bottom = Help.texts.menu_imageVAlign;

/** Define prototype's famous $()
  * @param el Element Name as String, Number (pos. Integer) or DOM Element
  * @returns DOM Element or null if not found
  */
if (typeof $ !== "function") {
	window.$ = function(el){
		if (typeof el === "number") {
			el = parseInt(el, 10);
			if (!isNaN(el) && el >= 0) {
				el = String(el);
			} else {
				el = null;
			}
		}
		
		if (typeof el === "string" && el.length > 0) {
			el = document.getElementById(el);
		}
		
		if (typeof el !== "object" || el === null) {
			return null;
		}
		
		return el;
	};
}


/* common.js is included almost everywhere,
 * 
 * I'll move some functions that are put into single files into this file to spare 
 * one small request.
 * 
 * Write a comment where a function comes from and with what it might be substituted.
 */

/* Comes from sidebar.js
 * - no special substitution yet -
 */
function setInnerHTML(id, str, default4EmptyStr) {
	document.getElementById(id).innerHTML = ((!str || str == '') && default4EmptyStr) ? default4EmptyStr : str;
}

/* Comes from input_tag.js, is re-defined in TextEditTag
 * Is used in guestbook, forum, feedback
 * Perhaps write ad inplace-editing tool that takes all work to make a field editable and saveable
 */
function toggleTitleBorder (obj, black){         
	 document.getElementById(obj+'_non_edit').style.border = (black ? '1px solid #000000' : '1px solid #DDDDDD');
}

/* Comes from input_tag.js
 * Is used in guestbook, forum, feedback (TextEditTag)
 * Perhaps write ad inplace-editing tool that takes all work to make a field editable and saveable
 */
function toggleEdit(obj,show) {
  
  elem=document.getElementById(obj+'_non_edit');
  if(elem){
  	elem.style.display=(show ? 'none' : 'block');
  }	
  elem=document.getElementById(obj+'_edit');
  if(elem){	
  	textArea = document.getElementById(obj);
  	textArea.value=trimString(textArea.value); 
  	if(show){
  		elem.style.display='block';                     
  		textArea.focus();  	
  	}else{
  		elem.style.display='none';                     
  	} 	
	}
}

/* Comes from input_tag.js
 * Is used in guestbook, forum, feedback (TextEditTag, SettingsInputTag)
 * Perhaps write ad inplace-editing tool that takes all work to make a field editable and saveable
 */
var toggleAltTextOkCancel = function(id,show) {
    if (show) {        
	    showDiv(id+"_ok_button");
        showDiv(id+"_cancel_button");        
    } else {
        hideDiv(id+"_ok_button");
        hideDiv(id+"_cancel_button");
    }
};


/* common.js is included almost everywhere,
 * 
 * I'll move some functions that are put into single files into this file to spare 
 * one small request.
 * 
 * Write a comment where a function comes from and with what it might be substituted.
 */

/* Comes from input_tag.js
 * Might be substituted with String::trim() (by ExtJs)
 */
function trimString(sInString) {
  sInString = sInString.replace( /^\s+/g, "" );// strip leading
  return sInString.replace( /\s+$/g, "" );// strip trailing
}


/* ignore in iframes
 */
if (window === window.top && typeof Ext === "object") { 
	Ext.onReady(function (){
		var hrefs = document.getElementsByTagName("a");
		if (!hrefs){
			return;
		}
		
		for(var i = 0; i < hrefs.length; i++){
			hrefs[i].onfocus = function(){
				this.hideFocus = true;
			};
		}
	});
}

