﻿/*
..........................................................................
:: Links en ventana nueva                                               ::
..........................................................................
*/
$(document).ready(function() {
	$("a[rel=external]").attr({target: "_blank"})
});

/*
..........................................................................
:: Comprobar email valido                                               ::
..........................................................................
*/
function validarEmail(sTesteo) {
    //var reEmail = /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/;
    var reEmail = /^\w+([\.\-ñÑ+]?\w+)*@\w+([\.\-ñÑ]?\w+)*(\.\w{2,})+$/;
    return reEmail.test(sTesteo);
}

/*
..........................................................................
:: Validar fecha                                                        ::
:: Formato correcto: dd/mm/aaaa                                         ::
:: --------------------------------------                               ::
:: Opciones por defecto del plugin del widget datepicker de jQuery UI   ::
:: Documentacion en: http://docs.jquery.com/UI/Datepicker               ::
..........................................................................
*/
function validarFecha( sFecha ) {
    var reFecha = /\b(0?[1-9]|[12][0-9]|3[01])\/([1-9]|0[1-9]|1[0-2])\/(19|20\d{2})/;
    return reFecha.test( sFecha );
}

$.datepicker.setDefaults({
	changeFirstDay: false,
	/*buttonImage: '../img/iconCalendario.gif',
	buttonText: '',*/
	buttonImageOnly: false,
	showOn: 'both'
});

//Valida una fecha y además comprueba si es bisiesto o no el año.
function esFecha(dia,mes,anio) /* Devuelve si una fecha pasada sus tres parámetros [dia,mes,año] es válida */
{
	//Creo la cadena con la fecha en formato "dd/mm/yyyy"
	if(dia < 10)
		var miDia = '0' + dia;
	else
		var miDia = dia;
	if(mes < 10)
		var miMes = '0' + mes;
	else
		var miMes = mes;
	
	var miFecha = miDia + '/' + miMes + '/' + anio;

	//Comprobamos si es un formato correcto
	var objRegExp = /^([0][1-9]|[12][0-9]|3[01])(\/|-)(0[1-9]|1[012])\2(\d{4})$/;

	if(!objRegExp.test(miFecha))
	{
		return false; //Es una fecha incorrecta porque no cumple el formato
	}
	else
	{
		var strSeparator = miFecha.substring(2,3);

		//Creamos el array con los parámetros de la fecha [dia,mes,año]
		var arrayDate = miFecha.split(strSeparator);
		//Array con el número de días que tiene cada mes excepto febrero que se valida aparte
		var arrayLookup = { '01' : 31,'03' : 31,'04' : 30,'05' : 31, '06' : 30,'07' : 31,
		'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}

		var intDay = parseInt(arrayDate[0],10);
		var intMonth = parseInt(arrayDate[1],10);
		var intYear = parseInt(arrayDate[2],10);

		//Comprobamos que el valor del día y del mes sean correctos
		if (intMonth != null) 
		{
			if(intMonth != 2)
			{
				if (intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
				{
					return true;
				}
			}
		}

		//Comprobamos si es febrero y si el valor del día es correcto [Cambia si es bisiesto o no el año]
		if (intMonth == 2)
		{
			if (intDay > 0 && intDay < 29)
			{
				return true;
			}
			else if (intDay == 29)
			{
				if ((intYear % 4 == 0) && (intYear % 100 != 0) || (intYear % 400 == 0))
				{
					return true;
				}
			}
		}
	}

	return false; //Cualquier otro valor, falso
}

//Validar una URL
function esURL(sURL)
{
	var regexURL = /^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\"\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\"\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\"\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$/i;
	if(sURL.length > 0 && sURL.match(regexURL)){
		return true;
	}else{
		return false;
	}
}

/*
..........................................................................
:: Plugin de jQuery para cambiar PNG's para IE6 dentro de un elemento   ::
:: Ej. uso: $('div.fulanito img').pngIE6()                              ::
:: El parametro 'blank' debe ser la ruta de un GIF transparente de 1x1  ::
:: --------------------------------------                               ::
:: Despues, plugin para agitar cosas molonamente con una sola orden     ::
:: --------------------------------------                               ::
:: Ademas, plugin para hacer fadeOut y despues destruir un elemento     ::
..........................................................................
*/
jQuery.fn.extend({
    pngIE6: function(blank) {
        if (!($.browser.msie && $.browser.version < 7)) return this;
        if (!blank) blank = 'img/blank.gif';
        return this.each( function() {
            this.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+ this.src +',sizingMethod=image)';
            this.src = blank;
        });
    },
    shakeIt: function(o) {
    	return this.each( function(){
		    /* Almacenaremos en un atributo del objeto del DOM a mover los valores originales que poseia 
		     * la primera que se llama a la funcion para evitar que al llamarla dos veces seguidas se
		     * produzcan animaciones desde una posicion incorrecta del margen.
		     * El objeto 'o' que se puede pasar como parametro esta destinado a la configuracion de la
		     * animacion. Por ejemplo $('#idCualquiera').shakeit({velocidad: 200, amplitud: 40, veces: 5})
		     */
    		var $this = $(this),
    		    o     = o || {},
    		    mL    = this.mLCache || parseInt($this.css('marginLeft')),
    		    mR    = this.mRCache || parseInt($this.css('marginRight')),
    		    vel   = parseInt(o.velocidad) || 120,
    		    ampl  = parseInt(o.amplitud) || 15,
    		    veces = parseInt(o.veces) || 2;
    		this.wCache = $this.css('width');
    		$this.css('width', $this.width()+'px');
    		this.mLCache = mL;
    		this.mRCache = mR;
    		for (var i = 0; i < veces; ++i) {
    			$this.animate({
    				marginLeft: (mL + ampl) + 'px',
    				marginRight: (mR - ampl) + 'px'
				}, vel).animate({
					marginLeft: (mL - ampl) + 'px',
					marginRight: (mR + ampl) + 'px'
				}, vel);
    		}
    		// volvemos al estado primigenio
    		$this.animate({
    			marginLeft: mL + 'px',
    			marginRight: mR + 'px'
    		}, vel, function() {
    			$this.css('width', this.wCache);
    		});
    	});
    },
    fundidoANada: function(o) {
    	var o = o || {};
    	o.velocidad = o.velocidad || 600;
    	return this.each( function() {
    		$(this).fadeOut(o.velocidad, function() {
    			$(this).remove();
    		});
    	});
    }
});

/*
..........................................................................
:: Arreglo de PNG's pasado a filter:progid:... para elementos puntuales ::
..........................................................................
*/
$( function() {
    if (!($.browser.msie && $.browser.version < 7)) return; // SOLO PARA IE6!!!
    var transparenciasIE = {
        '#wrap':'scale',
        'div.mascaraBoton':'crop',
        '#footer':'crop',
        '#nav a':'crop',
        '#tarjetaLeft':'crop',
        '#tarjetaRight':'crop',
        'span.fotoPerfil a,span.fotoPerfilBlog a,span.fotoPerfilGrande a':'image',
        'span.fotoPerfil a,span.fotoPerfilBlog a,span.fotoPerfilGrande a':'image',
        'span.miniSnapshot a':'image',
        'div.EstadoDafo0':'scale',
        'div.EstadoDafo1':'scale',
        'div.EstadoDafo2':'scale',
        'div.EstadoDafo3':'scale'
    };    
    for (elem in transparenciasIE) {
        $(elem).each( function() {
        	var ruta,
        		$this =  $(this);
        	ruta  = $this.css('backgroundImage').replace('url(', '').replace(')', '');
        	$this.get(0).style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+ ruta +',sizingMethod='+ transparenciasIE[elem] +')';
        	$this.css('backgroundImage', 'none');
        });
    }
});

/*
 * Desplegables genericos a peticion                                                                            
 * Ej. uso: crearDesplegables('selector jQuery boton', 'selector jQuery desplegables', {opciones: 'apetecaun'}) 
 * Opciones disponibles {
 *     efecto: string con cualquiera de los efectos de jQuery UI disponibles (por defecto: 'slide')
 *     opciones: objeto con las opciones del efecto de jQuery UI
 *               (por defecto: {direction: 'up'} si no se define el efecto
 *     			 las propias del jQuery UI si se define otro efecto)
 *     velocidad: duracion del efecto (por defecto: 600)
 * }
 */
function crearDesplegables(desplegar, desplegable, o) {
    var desplegar   = $(desplegar),
        desplegable = $(desplegable),
        incompatibles= false;
        o = o || {};
    if (desplegar.length != desplegable.length) {
        alert('Error en la funcion crearDesplegables()\ndesplegar.length != desplegable.length');
        return false;
    };
    if (!o.efecto) {
        o.efecto = 'slide';
        o.opciones =  {direction: 'up'};
    }
    desplegar.each(function(indice) {
    	if (desplegable.eq(indice).find('form.busquedaAv').length) {
    		this.incompatibilidad = 'noBusquedaAv';
    	}
    	if (this.className.indexOf('activo') == -1) {
    		desplegable.eq(indice).hide();
    	} else {
			desplegable.eq(indice).show();
		}
        $(this).click( function() {
			$(this).toggleClass('activo');
            desplegable.eq(indice).toggle(o.efecto, o.opciones, o.velocidad, o.callback);
            if (this.incompatibilidad) {
                $('div.'+this.incompatibilidad).toggle(o.efecto, o.opciones, o.velocidad, o.callback);	
            }
            return false;
        });
    });
}

function crearPestanyas(pestanya, ficha, o) {
    var pestanya   = $(pestanya),
        ficha = $(ficha),
        o = o || {};
    // OJO!!!
    // DEFINIMOS VARIABLE GLOBAL:
    flagPestanyas = false;
    pestanya.eq(0).addClass('activo');
    ficha.not(':first').hide();
    if (pestanya.length != ficha.length) {
        alert('Error en la funcion crearfichas()\npestanya.length != ficha.length');
        return false;
    };
    if (!o.efecto) {
        o.efecto = 'slide';
        o.opciones =  {direction: 'up'};
    }
    pestanya.each(function(indice) {
    	var $this = $(this);
        $this.click( function() {
        	if ($this.hasClass('activo') || flagPestanyas) return false;
        	flagPestanyas = true;
			ficha.filter(':visible').hide(o.efecto, o.opciones, o.velocidad, function() {
	        	pestanya.removeClass('activo');
				$this.addClass('activo');
				ficha.eq(indice).show(o.efecto, o.opciones, o.velocidad, function() {
					flagPestanyas = false;
				});
			});
            return false;
        });
    });
}

function crearError(textoError, contenedor) {
    crearError(textoError, contenedor, false);
}

function crearError(textoError, contenedor, moverScroll) {
    crearError(textoError, contenedor, moverScroll, false)
}

function crearError(textoError, contenedor, moverScroll, positionAbsolute) {
	// contenedor debe ser el elemento del DOM donde mostrar el error
	// o un String para llegar al elemento via jQuery
	
	var link = '';
	
	if(moverScroll){
	    link = '<a name="MiError" style="display:block;"></a>';
	}
	
	var $c = $(contenedor);
	if ($c.find('div.ko').length) { // si ya existe el div.ko ...
		$c.find('div.ko').html(link + textoError).shakeIt();
		if(positionAbsolute){
		    $c.find('div.ko')[0].style.position = 'absolute';
		}
	} else { //... si no lo creamos
		$('<div class="ko" style="display:none" >' + link + textoError + '</div>').prependTo($c).slideDown('fast');
		if(positionAbsolute){
		    $c.find('div.ko')[0].style.position = 'absolute';
		}
	}
	
	if(moverScroll){
	    document.location = '#MiError';
	}
}

function mascaraCancelar(texto, contenedor, funcionConfirmada) {
	// contenedor debe ser el elemento del DOM que se pretende eliminar (o no)
	// o un String para llegar al elemento via jQuery
	var $c = $(contenedor);
	var $superC = $(contenedor).parents('[class^=wrap]').eq(0);
	
	var $anterior = $superC.children('[class^=confirmar]').eq(0);
	
	if($anterior.length > 0)
	{
	    //Eliminar el anterior
	    $superC.remove($anterior);
	}
	
	/* Creamos el elemento del DOM y le asignamos estilos.
	 * Estructura creada:
	 * <div class="confirmar">
	 *     <div class="pregunta">
	 *         <span>Texto de confirmacion aqui</span>
     *         <button class="btMini">Si</button>
	 *         <button class="btMini">No</button>
	 *     </div>
	 *     <div class="mascara"></div>
	 * </div>
	 */
	 //TODO : LOZA --> Crear control para popups propios con mas contenido y personalizables.
	var $confirmar = $(['<div class="confirmar"><div class="pregunta"><span>',texto,'</span><button onclick="return false;" class="btMini">',borr.si,'</button><button onclick="return false;" class="btMini">',borr.no,'</button></div><div class="mascara"></div></div>'].join(''));
	$confirmar.find('div').css({
		top       :$c.offset().top  + 'px',
		left      :$superC.offset().left + 'px',
		height    :($c.height()/2)+15+'px',
		paddingTop:($c.height()/2)-15+'px',
		width     :$superC.width() +'px',
		display: 'none'
	}).filter('.pregunta').fadeIn().end().filter('.mascara').show().fadeTo(600, 0.8);
	// Incrustamos el elemento a la vez que lo mostramos y definimos los eventos: 
	$confirmar.prependTo($superC)
		.find('button').click( function() { // Ambos botones hacen desaparecer la mascara
			$confirmar.fundidoANada();
		}).eq(0).click(funcionConfirmada); // pero solo el primero activa la funcionConfirmada
}

function mascaraCancelarSiNo(texto, contenedor, funcionConfirmada, funcionNo) {
	// contenedor debe ser el elemento del DOM que se pretende eliminar (o no)
	// o un String para llegar al elemento via jQuery
	var $c = $(contenedor);
	var $superC = $(contenedor).parents('[class^=wrap]').eq(0);
	
	var $confirmar = $(['<div class="confirmar"><div class="pregunta"><span>',texto,'</span><button onclick="return false;" class="btMini">',borr.si,'</button><button onclick="return false;" class="btMini">',borr.no,'</button></div><div class="mascara"></div></div>'].join(''));
	$confirmar.find('div').css({
		top       :$c.offset().top  + 'px',
		left      :$superC.offset().left + 'px',
		height    :($c.height()/2)+15+'px',
		paddingTop:($c.height()/2)-15+'px',
		width     :$superC.width() +'px',
		display: 'none'
	}).filter('.pregunta').fadeIn().end().filter('.mascara').show().fadeTo(600, 0.8);
	// Incrustamos el elemento a la vez que lo mostramos y definimos los eventos: 
	$confirmar.prependTo($superC)
		.find('button').click( function() { // Ambos botones hacen desaparecer la mascara
			$confirmar.fundidoANada();
		}).eq(0).click(funcionConfirmada);// pero solo el primero activa la funcionConfirmada
		
	$confirmar.find('button').eq(1).click(funcionNo);
}

function mascaraCancelar2(texto, contenedor, funcionConfirmada,textoInferior) {
	// contenedor debe ser el elemento del DOM que se pretende eliminar (o no)
	// o un String para llegar al elemento via jQuery
	var $c = $(contenedor);
	var $superC = $(contenedor).parents('[class^=wrap]').eq(0);
	
	var $anterior = $superC.children('[class^=confirmar]').eq(0);
	
	if($anterior.length > 0)
	{
	    //Eliminar el anterior
	    $superC.remove($anterior);
	}
	/* Creamos el elemento del DOM y le asignamos estilos.
	 * Estructura creada:
	 * <div class="confirmar">
	 *     <div class="pregunta">
	 *         <span>Texto de confirmacion aqui</span>
     *         <button class="btMini">Si</button>
	 *         <button class="btMini">No</button>
	 *     </div>
	 *     <div class="mascara"></div>
	 * </div>
	 */
	var $confirmar = $(['<div class="confirmar"><div class="pregunta"><span>',texto,'</span><br><br><button onclick="return false;" class="btMini">',borr.si,'</button><button onclick="return false;" class="btMini">',borr.no,'</button><p class="small"><br>',textoInferior,'</p></div><div class="mascara"></div></div>'].join(''));
	$confirmar.find('div').css({
		top       :$c.offset().top  + 'px',
		left      :$superC.offset().left + 'px',
		height    :$c.height()+'px',
		paddingTop:'20px',
		width     :$superC.width() +'px',
		display: 'none'
	}).filter('.pregunta').fadeIn().end().filter('.mascara').show().fadeTo(600, 0.8);
	// Incrustamos el elemento a la vez que lo mostramos y definimos los eventos: 
	$confirmar.prependTo($superC)
		.find('button').click( function() { // Ambos botones hacen desaparecer la mascara
			$confirmar.fundidoANada();
		}).eq(0).click(funcionConfirmada); // pero solo el primero activa la funcionConfirmada
}

function mascaraCancelarAlturaFija2Textos(texto, contenedor,altura, funcionConfirmada,textoInferior) {
	// contenedor debe ser el elemento del DOM que se pretende eliminar (o no)
	// o un String para llegar al elemento via jQuery
	var $c = $(contenedor);
	var $superC = $(contenedor).parents('[class^=wrap]').eq(0);
	
	var $anterior = $superC.children('[class^=confirmar]').eq(0);
	
	if($anterior.length > 0)
	{
	    //Eliminar el anterior
	    $superC.remove($anterior);
	}
	/* Creamos el elemento del DOM y le asignamos estilos.
	 * Estructura creada:
	 * <div class="confirmar">
	 *     <div class="pregunta">
	 *         <span>Texto de confirmacion aqui</span>
     *         <button class="btMini">Si</button>
	 *         <button class="btMini">No</button>
	 *     </div>
	 *     <div class="mascara"></div>
	 * </div>
	 */
	var $confirmar = $(['<div class="confirmar"><div class="pregunta"><span>',texto,'</span><br><br><button onclick="return false;" class="btMini">',borr.si,'</button><button onclick="return false;" class="btMini">',borr.no,'</button><p class="small"><br>',textoInferior,'</p></div><div class="mascara"></div></div>'].join(''));
	$confirmar.find('div').css({
		top       :$c.offset().top  + 'px',
		left      :$superC.offset().left + 'px',
		height    :altura+'px',
		paddingTop:'20px',
		width     :$superC.width() +'px',
		display: 'none'
	}).filter('.pregunta').fadeIn().end().filter('.mascara').show().fadeTo(600, 0.8);
	// Incrustamos el elemento a la vez que lo mostramos y definimos los eventos: 
	$confirmar.prependTo($superC)
		.find('button').click( function() { // Ambos botones hacen desaparecer la mascara
			$confirmar.fundidoANada();
		}).eq(0).click(funcionConfirmada); // pero solo el primero activa la funcionConfirmada
}

function mascaraAlerta(texto, contenedor) {
	var $c = $(contenedor);
	var $superC = $(contenedor).parents('[class^=wrap]').eq(0);
	var $confirmar = $(['<div class="confirmar"><div class="pregunta"><span>',texto,'</span><button onclick="return false;" class="btMini">Aceptar</button></div><div class="mascara"></div></div>'].join(''));
	$confirmar.find('div').css({
		top       :$c.offset().top  + 'px',
		left      :$superC.offset().left + 'px',
		height    :($c.height()/2)+15+'px',
		paddingTop:($c.height()/2)-15+'px',
		width     :$superC.width() +'px',
		display: 'none'
	}).filter('.pregunta').fadeIn().end().filter('.mascara').show().fadeTo(600, 0.8);
}


function miniConfirmar(texto, contenedor, funcionConfirmada) {
	// contenedor debe ser el elemento del DOM que se pretende eliminar (o no)
	// o un String para llegar al elemento via jQuery
	var $c = $(contenedor);
	/* Creamos el elemento del DOM y le asignamos estilos.
	 * Estructura creada:
	 * <div class="miniConfirmar">
	 *     <span>Texto de confirmacion aqui</span>
     *     <button class="btMini">Si</button>
	 *     <button class="btMini">No</button>
	 * </div>
	 */
	var $miniC = $(['<div class="miniConfirmar"><span>',texto,'</span><button class="btMini">',borr.si,'</button><button class="btMini">',borr.no,'</button></div>'].join(''));
	$miniC.css({display: 'none'}).fadeIn();
	// Incrustamos el elemento a la vez que lo mostramos y definimos los eventos: 
	$miniC.prependTo($c)
		.find('button').click( function() { // Ambos botones hacen desaparecer la mascara
			$miniC.fundidoANada();
		}).eq(0).click(funcionConfirmada); // pero solo el primero activa la funcionConfirmada
}

// menu de edicion desplegable para los listados
//$(function() {
//	$('div.editarElemento').find('li:last-child').addClass('ultimo').end()
//	.children('a,img').click(function(evento) {
//		var editar_eliminar = function(instaKill) {
//			$('div.editar-desplegado').removeClass('editar-desplegado');
//			if(instaKill){$clon.remove()}else{
//				$clon.fadeOut('fast',function(){$(this).remove()});
//			}
//		};
//		var $padre = $(evento.target).parent();
//		var $clon = $('#editar-clon');
//		if ($padre.hasClass('editar-desplegado') && $clon.length) {
//			clearTimeout($clon.get(0).temporizador);
//		} else {
//			//nos cargamos el que habia
//			editar_eliminar(true);
//			// y creamos el otro
//			$padre.addClass('editar-desplegado');
//			$clon = $padre.find('ul:first').clone(true).attr('id', 'editar-clon')
//			.appendTo('body').css({
//				opacity: '0',
//				display: 'block'
//			});
//			// ahora que el clon nuevo ya existe y tiene dimensiones podemos ajustar que aparezca donde interesa
//			$clon.css({
//				top: $padre.offset().top + $padre.height() + 'px',
//				left: $padre.offset().left + $padre.width() - $clon.width(),
//				opacity: '1',
//				display: 'none'
//			}).fadeIn('fast').add($padre).hover(function() {
//				clearTimeout($clon.get(0).temporizador);
//			}, function() {
//				$clon.get(0).temporizador = setTimeout(editar_eliminar, 1000);
//			});
//			
//		}
//		return false;
//		
//	});
//});

//LOZA : Funcion para desplegar el menu de acciones, aadirsela al onclick (onclick="javascript:mostrarMenu(event);") del enlace, y meter la imagen que lleve al lado dentro del propio enlace
function mostrarMenu(evento) {
        if (!evento) var evento = window.event;
		var editar_eliminar = function(instaKill) {
			$('div.editar-desplegado').removeClass('editar-desplegado');
			if(instaKill){$clon.remove()}else{
				$clon.fadeOut('fast',function(){$(this).remove()});
			}
		};
		if(!evento.target){
		var hijo = evento.srcElement;
		}
		else{
		var hijo = evento.target;
		}
		if(hijo.nodeName == 'IMG'){
		    hijo = $(hijo).parent();
		}
		var $padre = $(hijo).parent();
		
		
		var $clon = $('#editar-clon');
		if ($padre.hasClass('editar-desplegado') && $clon.length) {
			clearTimeout($clon.get(0).temporizador);
		} else {
			//nos cargamos el que habia
			editar_eliminar(true);
			// y creamos el otro
			$padre.addClass('editar-desplegado');
			$clon = $padre.find('ul:first').clone(true).attr('id', 'editar-clon')
			.appendTo('body').css({
				opacity: '0',
				display: 'block'
			});
			// ahora que el clon nuevo ya existe y tiene dimensiones podemos ajustar que aparezca donde interesa
			$clon.css({
				top: $padre.offset().top + $padre.height() + 'px',
				left: $padre.offset().left + $padre.width() - $clon.width(),
				opacity: '1',
				display: 'none'
			}).fadeIn('fast').add($padre).hover(function() {
				clearTimeout($clon.get(0).temporizador);
			}, function() {
				$clon.get(0).temporizador = setTimeout(editar_eliminar, 1000);
			});
			
		}
		return false;
		
	}

function realizarFuncion(funcion, contexto){
eval(funcion);
}


//LOZA : Funcion para cambiar entre dos pestaas con efecto slide verical
//DesplegarPestanyas(
//                      id del boton(o elemento de cabecera tipo LI) que hacemos click, 
//                      id del panel al que se asocia el elemento anterior,
//                      id del boton(o elemento de cabecera tipo LI) que se encontraba activo,
//                      id del panel al que se asocia el elemento anterior)
function DesplegarPestanyas(pBoton, pPanel,pBoton2,pPanel2) {
    var boton   = $(document.getElementById(pBoton));
    var boton2   =$(document.getElementById(pBoton2));
    if(boton2[0].className == 'activo'){
        panel = $(document.getElementById(pPanel));
        panel2 = $(document.getElementById(pPanel2));
        o = {efecto:'blind', opciones:{direction:'vertical'}};
        if (!o.efecto) {
            o.efecto = 'blind';
            o.opciones =  {direction: 'vertical'};
        }
        panel2.toggle(o.efecto, o.opciones, o.velocidad, function() {
		    boton.toggleClass('activo');
	        boton2.toggleClass('activo');
		    panel.toggle(o.efecto, o.opciones, o.velocidad, null);
	    });
        return false;
    }
}


function EjecutarScriptsIniciales(){

	var id = setInterval("EjecutarScriptsIniciales2()",100);
	setTimeout("clearInterval("+id+")",1000);
}
//LOZA, funcion para ejecutar los scripts iniciales en cada callback, para aadir transparencias y demas
function EjecutarScriptsIniciales2(){
    jQuery.fn.extend({
    pngIE6: function(blank) {
        if ($.browser.msie && $.browser.version < 7)
        {
        if (!blank) blank = 'img/blank.gif';
        return this.each( function() {
            this.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+ this.src +',sizingMethod=image)';
            this.src = blank;
            });
        }

    },
    shakeIt: function(o) {
    	return this.each( function(){
		    /* Almacenaremos en un atributo del objeto del DOM a mover los valores originales que poseia 
		     * la primera que se llama a la funcion para evitar que al llamarla dos veces seguidas se
		     * produzcan animaciones desde una posicion incorrecta del margen.
		     * El objeto 'o' que se puede pasar como parametro esta destinado a la configuracion de la
		     * animacion. Por ejemplo $('#idCualquiera').shakeit({velocidad: 200, amplitud: 40, veces: 5})
		     */
    		var $this = $(this),
    		    o     = o || {},
    		    mL    = this.mLCache || parseInt($this.css('marginLeft')),
    		    mR    = this.mRCache || parseInt($this.css('marginRight')),
    		    vel   = parseInt(o.velocidad) || 120,
    		    ampl  = parseInt(o.amplitud) || 15,
    		    veces = parseInt(o.veces) || 2;
    		this.wCache = $this.css('width');
    		$this.css('width', $this.width()+'px');
    		this.mLCache = mL;
    		this.mRCache = mR;
    		for (var i = 0; i < veces; ++i) {
    			$this.animate({
    				marginLeft: (mL + ampl) + 'px',
    				marginRight: (mR - ampl) + 'px'
				}, vel).animate({
					marginLeft: (mL - ampl) + 'px',
					marginRight: (mR + ampl) + 'px'
				}, vel);
    		}
    		// volvemos al estado primigenio
    		$this.animate({
    			marginLeft: mL + 'px',
    			marginRight: mR + 'px'
    		}, vel, function() {
    			$this.css('width', this.wCache);
    		});
    	});
    },
    fundidoANada: function(o) {
    	var o = o || {};
    	o.velocidad = o.velocidad || 600;
    	return this.each( function() {
    		$(this).fadeOut(o.velocidad, function() {
    			$(this).remove();
    		});
    	});
    }
});


$( function() {
    if (!($.browser.msie && $.browser.version < 7)) return; // SOLO PARA IE6!!!
    var transparenciasIE = {
        '#wrap':'scale',
        'div.mascaraBoton':'crop',
        '#footer':'crop',
        '#nav a':'crop',
        '#tarjetaLeft':'crop',
        '#tarjetaRight':'crop',
        'span.fotoPerfil a,span.fotoPerfilBlog a,span.fotoPerfilGrande a':'image',
        'span.miniSnapshot a':'image',
        'div.EstadoDafo0':'scale',
        'div.EstadoDafo1':'scale',
        'div.EstadoDafo2':'scale',
        'div.EstadoDafo3':'scale',
        'img':'crop'
    };    
    for (elem in transparenciasIE) {
        $(elem).each( function() {
        	var ruta,
        		$this =  $(this);
        	if($this.css('filter')==''){
        	    ruta  = $this.css('backgroundImage').replace('url(', '').replace(')', '');
        	    $this.get(0).style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+ ruta +',sizingMethod='+ transparenciasIE[elem] +')';
        	    $this.css('backgroundImage', 'none');
        	}
        });
    }
    
});

//Muestra los paneles con la clase panelOcultar
$( function() {
	var divsPanelOcultar =$('div.panelOcultar');
	var i;
	for(i=0;i<divsPanelOcultar.length;i++)
	{
        divsPanelOcultar[i].style.display = "block";
	}
});

//Muestra los '+' en los desplegables de las descripciones que tengan la clase TextoTiny
$( function() {
	var divsTextoTiny =$('div.TextoTiny');
	var i;
	for(i=0;i<divsTextoTiny.length;i++)
	{
	    if(divsTextoTiny[i].id != "")
	    {
		    if(divsTextoTiny[i].offsetHeight < divsTextoTiny[i].scrollHeight)
		    {
//		    setTimeout(EjecutarScripsIniciales(), 2000);
//		    if($(document.getElementById(divsTextoTiny[i].id)).find('script').length > 0)
//		    {
//		        alert($(document.getElementById(divsTextoTiny[i].id)).find('script').length);
//		        }
//		        if($(document.getElementById(divsTextoTiny[i].id)).find('script').length > $(document.getElementById(divsTextoTiny[i].id)).find('object').length)
//		        {
//		             setTimeout("", 500);
//		        }
//                var inicio = new Date().getTime();
//                while ((new Date().getTime() - inicio) < 2000){}
//                setTimeout('EjecutarScripsIniciales()', 2000);

		        if($(document.getElementById(divsTextoTiny[i].id)).find('object').length > 0)
		        {
		            var objeto = $(document.getElementById(divsTextoTiny[i].id)).find('object')[0];
		            if(objeto.width > divsTextoTiny[i].offsetWidth)
		            {
		                objeto.height = objeto.height / (objeto.width / divsTextoTiny[i].offsetWidth);
		                objeto.width = divsTextoTiny[i].offsetWidth;
		            }
		        }
    		    
		        $(document.getElementById(divsTextoTiny[i].id)).find('object').hide();
			    if(document.getElementById(divsTextoTiny[i].id + '_DesplegarTexto') != null)
			    {
				    document.getElementById(divsTextoTiny[i].id + '_DesplegarTexto').style['display'] = '';
			    }
		    }
		    else
		    {
			    divsTextoTiny[i].style['height'] = '';
		    }
		}
	}
});

//Muestra los '+' en los desplegables de las etiquetas y categorias desplegarEtiquetas
$( function() {
	var divsDesplegarEtiquetas =$('div.desplegarEtiquetas');
	var i;
	for(i=0;i<divsDesplegarEtiquetas.length;i++)
	{
	    if(divsDesplegarEtiquetas[i].id != "")
	    {
			var imagenMas = $(document.getElementById(divsDesplegarEtiquetas[i].id)).find('img.mas')[0];
			var imagenMenos = $(document.getElementById(divsDesplegarEtiquetas[i].id)).find('img.menos')[0];
			
			imagenMas.style.display = "none";
			imagenMenos.style.display = "none";
				
		    if(divsDesplegarEtiquetas[i].offsetHeight < divsDesplegarEtiquetas[i].scrollHeight)
		    {
				imagenMas.style.display = "";
				imagenMenos.style.display = "";
			
                var alturaMaxima = divsDesplegarEtiquetas[i].getBoundingClientRect().top + divsDesplegarEtiquetas[i].offsetHeight -14; //offsetTop maximo del ultimo elemento
                var enlaces = $(divsDesplegarEtiquetas[i]).find('a');
                var j;
		        for (j=0; j<enlaces.length;j++)
		        {
		            if(enlaces[j].getBoundingClientRect().top > alturaMaxima || enlaces[j].innerText == "")
		            {
		                break;
		            }
		        }
		        j = j-1;

		        imagenMas.style.position = "relative";
		        imagenMas.style.top = "0px";
		        imagenMas.style.left = "0px";
		        imagenMas.style.top = enlaces[j].getBoundingClientRect().top - imagenMas.getBoundingClientRect().top + 3 + 'px';
		        imagenMas.style.left = enlaces[j].getBoundingClientRect().right - imagenMas.getBoundingClientRect().right + imagenMas.offsetWidth + 3 + 'px';
			    if ($(divsDesplegarEtiquetas[i]).find('span.tag').length > 0)
			    {
			        imagenMas.style.display = "none";
			        divsDesplegarEtiquetas[i].style['height'] = '';
			    }
		    }
		    else
		    {
			    divsDesplegarEtiquetas[i].style['height'] = '';
		    }
		}
	}
});

	//Oculta los paneles con la clase panelOcultar [Miguel]
    $( 
        function()
        {
	        var divsPanelOcultar = $('div.panelOcultar');
	        try
            {
	            var desplegadosDiv = document.getElementById('ctl00_ctl00_CPH1_CPHBandejaContenido_desplegadosHack').value;
	            var i;
	            for(i=0;i<divsPanelOcultar.length;i++)
	            {
	                //Miramos si no está desplegado para ocultarlo
	                if (desplegadosDiv.match(divsPanelOcultar[i].id) == null)
	                {
                        divsPanelOcultar[i].style.display = "none";
                    }
                    else
                    {
                        //Ponemos la ficha de desplegado activo [por si ha hecho F5 se repinte bien]
                        document.getElementById('Titulo' + divsPanelOcultar[i].id).className = "desplegable activo";
                    }
	            }
	        }
	        catch(err)
	        {
	            var i;
	            for(i=0;i<divsPanelOcultar.length;i++)
	            {
                    divsPanelOcultar[i].style.display = "none";
	            }
	        }
        }
     );

}

function DesplegarDescripcionMasNueva(imagen, panelId, alturaMin)
{
	var panel = document.getElementById(panelId);
	if(panel.offsetHeight < panel.scrollHeight)
	{
		EstirarPanel(panel);
		$(imagen).find('img')[0].src = $(imagen).find('img')[0].src.replace('verMas.gif', 'verMenos.gif');
		$(document.getElementById(panelId + '_DesplegarTexto')).find('span')[0].innerHTML = "";
		$(document.getElementById(panelId)).find('object').show();
		
	}
	else
	{
		EncogerPanel(panel, alturaMin);
		$(imagen).find('img')[0].src = $(imagen).find('img')[0].src.replace('verMenos.gif', 'verMas.gif');
		$(document.getElementById(panelId + '_DesplegarTexto')).find('span')[0].innerHTML = "...";
		$(document.getElementById(panelId)).find('object').hide();
	}
}

function DesplegarEtiquetaMas(panelId, alturaMin)
{
	var imagen = $(document.getElementById(panelId)).find('img.mas')[0];
	var panel = document.getElementById(panelId);
	if(panel.offsetHeight < panel.scrollHeight)
	{
		EstirarPanel(panel);
		imagen.style.display = "none";
	}
	else
	{
		EncogerPanel(panel, alturaMin);
		imagen.style.display = "";
	}
}

function EstirarPanel(panel)
{
	if(panel.offsetHeight < panel.scrollHeight){
		panel.style.height = panel.offsetHeight + panel.scrollHeight / 20 + "px";
		//panel.style.height = panel.offsetHeight + 12 + "px";
		if(panel.offsetHeight > panel.scrollHeight){
			panel.style.height = panel.scrollHeight;
		}
		setTimeout("EstirarPanel(document.getElementById('" + panel.id + "'))",1);
	}
	else
	{
		panel.style.height = panel.scrollHeight + "px";
	}
}

function EncogerPanel(panel,alturaMin)
{
	if(panel.offsetHeight > alturaMin){
		panel.style.height = panel.offsetHeight - panel.scrollHeight / 20 + "px";
		//panel.style.height = panel.offsetHeight - 12 + "px";
		if(panel.offsetHeight <alturaMin){
			panel.style.height = alturaMin;
		}
		setTimeout("EncogerPanel(document.getElementById('" + panel.id + "')," + alturaMin + ")",1);
	}
	else
	{
		panel.style.height = alturaMin + "px";
	}
}

function isDate(texbox) {
    var fecha = texbox.value;
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = fecha.match(datePat); // is the format ok?

    if (matchArray == null) {
        //alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
        return false;
    }
    
    if(calendario.idioma == "es")
    { 
        day = matchArray[1];// pasamos la fecha a variables
        month = matchArray[3];
    }
    else
    {
        month = matchArray[1]; // pasamos la fecha a variables
        day = matchArray[3];
    }
    year = matchArray[5];

    if (month < 1 || month > 12) { // comprobamos el mes
        return false;
    }

    if (day < 1 || day > 31) {
        return false;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
    }

    if (month == 2) { // comprobamos el 29 de febrero
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            return false;
        }
    }
    if(calendario.idioma == "es")
    {
        texbox.value = day + "/" + month + "/" + year;
    }
    else
    {
        texbox.value = month + "/" + day + "/" + year;
    }
    return true; // fecha es valida
}

function ComprobarFechas(fecha1, fecha2, fechaCambiada){
    if(fecha1.value != calendario.desde && fecha1.value != calendario.desde && fecha1.value != "")
    {
        if (isDate(fecha1))
        {
            if(fecha2.value != calendario.desde && fecha2.value != calendario.desde && fecha2.value != "")
            {
                var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
                if(fechaCambiada == "1")
                {
                    var fecha1Array = fecha1.value.match(datePat)
                    var fecha2Array = fecha2.value.match(datePat)
                }
                else
                {
                    var fecha2Array = fecha1.value.match(datePat)
                    var fecha1Array = fecha2.value.match(datePat)
                }
                
                var day1, day2, month1, month2, year1, year2;
                
                if(calendario.idioma == "es")
                { 
                    if(fecha1Array != null)
                    {
                        day1 = fecha1Array[1]; // pasamos la fecha a variables
                        month1 = fecha1Array[3];
                    }
                    if(fecha2Array != null)
                    {
                        day2 = fecha2Array[1];
                        month2 = fecha2Array[3];
                    }
                }
                else
                {
                    if(fecha1Array != null)
                    {
                        month1 = fecha1Array[1]; // pasamos la fecha a variables
                        day1 = fecha1Array[3];
                    }
                    if(fecha2Array != null)
                    {
                        month2 = fecha2Array[1];
                        day2 = fecha2Array[3];
                    }
                }
                if(fecha1Array != null)
                {
                    year1 = fecha1Array[5];
                }
                if(fecha2Array != null)
                {
                    year2 = fecha2Array[5];
                }
                
                var resultado = false; 
                if (year1 > year2)
                {
                    resultado = true; 
                }
                else 
                { 
                    if (year1 == year2)
                    { 
                        if (month1 > month2)
                        {
                            resultado = true; 
                        }
                        else 
                        { 
                            if (month1 == month2)
                            {
                                if (day1 > day2) 
                                {
                                    resultado = true; 
                                }
                            }
                        } 
                    } 
                }
                if(resultado)
                {
                    if(fechaCambiada == "1")
                    {
                        fecha1.value = calendario.desde;
                        fecha2.value = calendario.hasta;
                    }
                    else
                    {
                        fecha1.value = calendario.hasta;
                        fecha2.value = calendario.desde;
                    }
                }
            }
        }
        else
        {
            if(fechaCambiada == "1")
            {
                fecha1.value = calendario.desde;
            }
            else
            {
                fecha1.value = calendario.hasta;
            }
        }
    }
}
/*                                                                              Grafico Trabajo
 *---------------------------------------------------------------------------------------------

 */
$(function() {
	var $context = $('#graficoTrabajo'),
		$dt = $('dt', $context),
		$li = $('li', $context),
		maxH = 0,
		totalW = $context.width();
	
	$dt.each(function(index) {
		var $t = $(this),
			proposedW = Math.floor(totalW * parseInt($t.find('big').text(), 10)/100),
			deltaW = $t.width()-proposedW;
		// preparamos los css
		$t.css('cursor', 'pointer');
		$t.width( proposedW + 'px' );
		maxH = Math.max(maxH, $t.height());
		// preparamos los eventos del DD
		$t.mouseover(function() {
			$t.next().show().css({
				left:$t.offset().left + 'px',
				top:$t.offset().top - 12 - $t.next().height() + 'px'
			})
		}).mouseout(function() {
			$t.next().hide();
		});
	}).height(maxH);
});
/*                                                                                Tooltips (Tt)
 *---------------------------------------------------------------------------------------------
 */
$(function() {
	var posicionarTt = function(event) {
		var tPosX = event.pageX - 10;
		var tPosY = event.pageY - 17 - ($("div.tooltip").height() || 0);
		$("div.tooltip").css({
			top: tPosY,
			left: tPosX
		});
	}

	var mostrarTt = function(event){
	    $("div.tooltip").remove();
		var textoTt = (this.tooltipData) ? this.tooltipData : $(this).text();
		$("<div class='tooltip' style='display:none;'>" + textoTt + "</div>")
		   .appendTo("body")
		   .fadeIn();
	    posicionarTt(event);
	}

	var ocultarTt = function() {
		$("div.tooltip").remove();
	}

	$(".conTt").each(function() {
		if (this.title) {
			this.tooltipData=this.title;
			this.removeAttribute('title');
		}
	}).hover(mostrarTt, ocultarTt).mousemove(posicionarTt);
});
