/** function init()
	Se ejecuta cuando se carga la pagina y también cuando se refresca alguna capa con ajax.
	Aquí se deben de programar todas las rutinas de carga oportunas.
**/
function init() {
		
	/* para que mozilla no marque los link como seleccionados al pinchar en ellos */
	$$('a').each( function(enlace) {
									enlace.onclick = function() {
																			this.blur();
																	 }
								} );

	
	$$('.calendario_undanet').each( function(calendario) {
		var id_calendario = calendario.id.toString();
		if($(id_calendario).getProperty('direction')) {
 			myCal2 = eval(" new Calendar( { " + id_calendario + " : 'd/m/Y' }, { classes: ['dashboard'], direction: " + $(id_calendario).getProperty('direction') + " } );");
 		} else {
 			myCal2 = eval(" new Calendar( { " + id_calendario + " : 'd/m/Y' }, { classes: ['dashboard'] } );");
 		}
 	} );
	
	/* siempre que haya un textarea en un formulario con el class='editor_undaet' automaticamente lo transforma en un editor visual */
	
	$$('textarea').each( function(tipo_textarea) {
		//iframes = tipo_textarea.getElements('iframe');
		textarea_display = $(tipo_textarea.id).getStyle('display');
	
		//var editor_clase='editor_undanet_d_descripcion';
		if(tipo_textarea.hasClass('editor_undanet_'+tipo_textarea.id) && textarea_display=='inline'){

			tinyMCE.init({
				mode : "textareas",
				theme : "advanced",
				language : "es",
				plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
				theme_advanced_buttons1 : "bold,italic,underline,separator,link,justifyleft,justifycenter,justifyright, justifyfull",
				theme_advanced_buttons2 : "",
				theme_advanced_buttons1_add: "pastetext,pasteword",
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				theme_advanced_resizing : true,
				apply_source_formatting : false,
				width : "254",
				editor_selector : 'editor_undanet_'+tipo_textarea.id
				
			});
		}
	} );
}
window.onload = init;


/** function ir_a(id_j_frame, servicio, [otros_parametros='',] [run_js=false,] [codificacion='utf-8'])
	*	[id_j_frame] id de la capa que se va a refrescar.
	*	[servicio] es el valor que pasara como parametro servicio a index.php.
	*	[otros_parametros] es una cadena con el resto de parametros que queremos
	*	  pasar por GET a la pagina del servicio, el formato seria
	*	  '&nompar1=valpar1&nompar2=valpar2...' ya que la funcion concatenara este
	*	  campo tal cual a la url. Por defecto su valor es ''.
	* [run_js] boolano que determina si se deben ejecutar los scripts que se encuentren
	*		en el resultado obtenido tras ejecutar ajax y tambien la funcion init.
			Por defecto su valor es false.
	*	[codificacion] es el parametro que determina el encoding que queremos utilizar,
	*	Por defecto su valor es 'utf-8'.
	*	[remove_textarea] va a determinar si borramos las instancias de los textareas o no
	* Por defecto sera false es decir q no lo borre;
	*	Envia una peticion de servicio por get mediante la libreria mootools-ajax.js
**/
function ir_a(id_j_frame, servicio, otros_parametros, run_js, codificacion,remove_textarea)
{
	if( ! otros_parametros ) otros_parametros = '';
	if( ! run_js ) run_js = false;
	if( ! codificacion) codificacion = 'utf-8';
	if( ! remove_textarea ) remove_textarea = false;
	if (remove_textarea) {tinyMCE.removeTinyMCE();}	
	var parametros = 'servicio=' + servicio + otros_parametros;
	var miAjax = new Ajax('index.php', {
		method			:	'get',
		encoding		: codificacion,
		data				:	parametros,
		update			:	$(id_j_frame),
		onRequest   : function() {
										show_loadings();
									},
										
		onSuccess   : function() {						
										
										hide_loadings();
										if(run_js) init();
									},
		evalScripts	:	run_js
	} );
	miAjax.request();
}

function ir_a_desplega(id_campo, id_j_frame, servicio, otros_parametros, run_js, codificacion)
{
	ir_a(id_j_frame, servicio, otros_parametros, run_js, codificacion);
	$('btn_flecha_desc'+id_campo).setStyle('visibility','visible');
	$('btn_flecha_desc'+id_campo).setStyle('display','block');
	$('btn_flecha_der'+id_campo).setStyle('visibility','hidden');
	$('btn_flecha_der'+id_campo).setStyle('display','none');
}
function ir_a_encoge(id_campo, id_j_frame)
{
	$(id_j_frame).setHTML('');
	$('btn_flecha_der'+id_campo).setStyle('visibility','visible');
	$('btn_flecha_desc'+id_campo).setStyle('display','none');
	$('btn_flecha_desc'+id_campo).setStyle('visibility','hidden');
	$('btn_flecha_der'+id_campo).setStyle('display','block');
}


/** function ir_a_formulario(id_j_frame, id_formulario, [run_js=true,] [codificacion='utf-8'])
	* [id_j_frame] id de la capa que se va a refrescar.
	* [id_formulario] id del formulario que queremos enviar.
	* [run_js] boolano que determina si se deben ejecutar los scripts que se encuentren
	*		en el resultado obtenido tras ejecutar ajax y tambien la funcion init.
			Por defecto su valor es false.
	*	[codificacion] es el parametro que determina el encoding que queremos utilizar,
	*	Por defecto su valor es 'utf-8'.
	*	
	*	Envia el formulario mediante la libreria mootools-ajax.js
	*	Si el formulario requiere subir objetos de tipo file mediante multi-part esta
	* funcion no sirve, ya que utiliza Ajax que envia los datos mediante SOAP que al
	*	fin y al cabo es un xml. Luego en caso de necesitar subir ficheros es mejor
	*	hacerlo mediante el envio normal post de formularios.
**/
function ir_a_formulario(id_j_frame, id_formulario, run_js, codificacion)
{
	if( ! run_js ) run_js = false;
	if( ! codificacion) codificacion = 'utf-8';
	
	$(id_formulario).send( {
		update: $(id_j_frame),
		encoding		: codificacion,
		onRequest   : function() {		
										show_loadings();
									},
										
		onSuccess   : function() {
										hide_loadings();
										if(run_js) init();
									},
		evalScripts	:	run_js
	} );
}

/** function abrir_ventana(servicio, [parametros='',] [alto='auto',] [ancho='auto',] [tiene_scroll='yes'])
	*	[servicio] es el valor que pasara como parametro servicio a index.php.
	*	[parametros] es una cadena con el resto de parametros que queremos
	*	  pasar por GET a la pagina del servicio, el formato seria
	*	  '&nompar1=valpar1&nompar2=valpar2...' ya que la funcion concatenara este
	*	  campo tal cual a la url. Por defecto su valor es ''.
	*	[alto] determina el alto (en pixeles) que tendra la ventana. Por defecto su valor es 'auto'.
	*	[anchoo] determina el ancho (en pixeles) que tendra la ventana. Por defecto su valor es 'auto'.
	*	[tiene_scroll] determina si queremos que el navegador presente barras de scroll en la ventana.
	*		Por defecto su valor es 'yes'.
	*
	*	Envia una peticion por get que se realizara en una nueva ventana. Si ya se abrio previamente una ventana
	* mediante esta funcion para el mismo servicio utilizara nuevamente dicha ventana gracias a que tendra
	* el mismo target. Es decir, el target determina que ventana utilizar. Además fuerza a que la ventana tome
	*	el foco y refresque el contenido.
**/
function abrir_ventana(servicio, parametros, alto, ancho, tiene_scroll)
{
	if( ! parametros ) parametros = '';
	if( ! alto ) alto = 'auto';
	if( ! ancho ) ancho = 'auto';
	if( ! tiene_scroll ) tiene_scroll = 'yes';
	
	url_contenido = 'index.php?servicio=' + servicio + parametros;
	target_ventana = 'ventana_' + servicio;
	opciones = 'channelmode=true'
						+	',directories=no'
						+	',fullscreen=no'
						+	',height=' + alto
						+	',left=50'
						+	',location=no'
						+	',menubar=no'
						+	',resizable=no'
						+	',scrollbars=' + tiene_scroll
						+	',status=no'
						+	',toolbar=no'
						+	',top=150'
						+	',width=' + ancho;
	refrescar = true;
	nueva_ventana = window.open(url_contenido,target_ventana,opciones,refrescar);
	nueva_ventana.focus();
}

/**
  * hide_loadings()
  * oculta la capa cargando que se muestra en la esquina
  * Pone a default el cursor del ratón
 **/
function hide_loadings(){
	$('capa_cargando').setStyle('visibility','hidden');
	$$('body').setStyle('cursor','default');	
	$$('a').setStyle('cursor','pointer');	
}

/**
  * show_loadings()
  * muestra la capa cargando en la esquina
  * Muestra el cursor del ratón la imagen de cargando
 **/
function show_loadings(){
	$$('body').setStyle('cursor','wait');	
	$$('a').setStyle('cursor','wait');	
	tamano=$('capa_cargando').getSize();
	valor_x=tamano['size']['x'];					
	$('capa_cargando').setStyle('left',( window.getScrollWidth() - valor_x ) );	
	$('capa_cargando').setOpacity(0.6);	
	$('capa_cargando').setStyle('visibility','visible');
}

/** show_error(msg_err_general)
	[msg_err_general] determina el mensaje de error a visualizar.
	Los errores que queramos mostrar al usuario deben mostrarse siempre mediante esta
	función, dado que así, en caso de que quisieramos cambiar en algún momento el
	formato visual de todos los mensajes de error solo habria que modificar esta
	función.
**/
function show_error(msg_err_general) {
	$('contenido_emergente_error').setHTML(msg_err_general);
	show_emergente_error(465,216);
}

function hide_emergente() {
  hide_transparente();
	var myFx = new Fx.Style('capa_emergente', 'opacity').start(1,0);	
}

function hide_emergente_error() {
  hide_transparente_error();
	tamano=$('capa_emergente_error').getSize();
	valor_x=tamano['size']['x'];
	valor_y=tamano['size']['y'];	
	var miEfecto = new Fx.Style('capa_emergente_error', 'margin-top', {	transition: Fx.Transitions.Back.easeInOut,	duration: 700,	unit: 'px'}).addEvent('onComplete', function(){
   $('capa_emergente_error').setStyle('display','none');
	});
	
	
	miEfecto.start((window.getHeight()/2)+(valor_y/2), 0);
	var myFx = new Fx.Style('capa_emergente_error', 'opacity').start(1,0);	

}

function hide_transparente() {
  $('capa_semitransparente').setStyle('visibility','hidden');
	$('capa_semitransparente').setStyle('display','none');
	var myFx_transparente = new Fx.Style('capa_semitransparente', 'opacity').set(0.6);
	var myFx_transparente = new Fx.Style('capa_semitransparente', 'opacity').start(0.6,0);
}

function hide_transparente_error() {
  $('capa_semitransparente_error').setStyle('visibility','hidden');
	$('capa_semitransparente_error').setStyle('display','none');
	var myFx_transparente = new Fx.Style('capa_semitransparente_error', 'opacity').set(0.6);
	var myFx_transparente = new Fx.Style('capa_semitransparente_error', 'opacity').start(0.6,0);
}

function ir_a_emergente(valor_x,valor_y,servicio,parametros, run_js, codificacion){
	ir_a('contenido_emergente',servicio,parametros, run_js, codificacion);
	show_emergente(valor_x,valor_y);
}

function show_transparente() {
  $('capa_semitransparente').setStyle('width',window.getWidth());
  $('capa_semitransparente').setStyle('height',window.getHeight());
  $('capa_semitransparente').setStyle('visibility','visible');
  $('capa_semitransparente').setStyle('display','block');
  $('capa_semitransparente').setStyle('background-color','#d1d1d1');
  var myFx_transparente = new Fx.Style('capa_semitransparente', 'opacity').set(0);
	var myFx_transparente = new Fx.Style('capa_semitransparente', 'opacity').start(0,0.6);		 	  
}
function show_emergente(valor_x,valor_y) {
 //Recupero los tamaños de la ventana
  show_transparente();
	var myFx = new Fx.Style('capa_emergente', 'opacity').set(1);
	var alto_contenido =$('contenido_emergente').getStyles('height');
	$('capa_emergente').setStyles({'width':valor_x,'height':valor_y,'top':30 ,'left':((window.getWidth()/2)-(valor_x/2)) ,'visibility':'visible' ,'display':'block'}); 
	//var myFx = new Fx.Style('capa_emergente', 'opacity').start(0,1);	
	$('capa_emergente').makeDraggable(
		{ 
			handle: $('barra_emergente'),
			onStart: function(){
				$('capa_emergente').setOpacity(0.5);
			}.bind(this),
			 
			onComplete: function(){
				$('capa_emergente').setOpacity(1);
			}
		} );
}

function show_emergente_error(valor_x,valor_y) {
 //Recupero los tamaños de la ventana
  show_transparente_error();
  $('capa_emergente_error').setStyles({'width':valor_x,'height':valor_y,'top':-(valor_y) ,'left':((window.getWidth()/2)-(valor_x/2)) ,'visibility':'visible' ,'display':'block'});
	var myFx = new Fx.Style('capa_emergente_error', 'opacity').set(0);
	var miEfecto = new Fx.Style('capa_emergente_error', 'margin-top', {	transition: Fx.Transitions.Back.easeInOut,	duration: 1500,	unit: 'px'});
	var alto_contenido =$('contenido_emergente_error').getStyles('height');

	miEfecto.start(0, (window.getHeight()/2)+(alto_contenido['height'].toInt()/4));
	var myFx = new Fx.Style('capa_emergente_error', 'opacity').start(0,1);	
}

function show_transparente_error() {
  $('capa_semitransparente_error').setStyle('width',window.getWidth());
  $('capa_semitransparente_error').setStyle('height',window.getHeight());
  $('capa_semitransparente_error').setStyle('visibility','visible');
  $('capa_semitransparente_error').setStyle('display','block');
  $('capa_semitransparente_error').setStyle('background-color','#d1d1d1');
  var myFx_transparente = new Fx.Style('capa_semitransparente_error', 'opacity').set(0);
	var myFx_transparente = new Fx.Style('capa_semitransparente_error', 'opacity').start(0,0.6);		 	  
}