//Al cargar html, css y scripts

//al terminar de cargar todos los elementos de la pagina, pero sin las imágenes y objetos
$(document).ready(function(){								   
	// dibujamos las esquinas redondeadas
	$('.wrapper').drawCorners({corners: 'bl br'});
	$('.juventudIzdaPpal li.nivel1').drawCorners();
	$('.juventudIzdaPpal li.nivel1 A.nivel2').drawCorners({corners: 'tr br'});
	$('.lateralDcha .listadoCompleto .cmContentItem').drawCorners({targetAll: true });
	$('.lateralDcha .direccion').drawCorners({corners: 'tl tr'});
	$('.lateralDcha .menuDireccion').drawCorners({corners: 'bl br'});
	$('.lateralDcha .menuDireccion li').drawCorners();
	$('.rotativoPortada .contentData').drawCorners();
	$('.imageGalleryBox, .resourcesBox, .videosBox, .roundedBox, #mapaWeb LI.cmWebMapLevel1').drawCorners();
	$('.popupContainer').drawCorners({corners: 'bl br', offset: 1 }); //popups
	$('.cmMainCalendar').drawCorners();
	$('table.cmCalendar td.cmCalendarShiftLeft A').drawCorners({corners: 'tl bl', targetAll: true});
	$('table.cmCalendar td.cmCalendarShiftRight A').drawCorners({corners: 'tr br', targetAll: true});
	$('.cmSelectedDay #titleDiv').drawCorners({targetAll: true }); //dia del calendario
	
	//para los botones de algunos formularios hay que hacer algo especial
	var $inputs = $('.cmContactFormDiv .divBottom input, .popupButtons input, .cmSearchContainer .cmSearchButtonZone BUTTON.cmSearchButton');
	$inputs.each(function(){
		var $item = $(this);
		$wrap = $('<span class="inputWrapper"></span>');
		$item.wrap($wrap);
		$item.before('<span class="tl"></span><span class="tr"></span>').after('<span class="bl"></span><span class="br"></span>');
	});
	
	// menu principal del lateral izquierdo
	// comentado al haber solo una opcion de menu, para que se vean los elementos
	$('.juventudIzdaPpal ul.nivel2').hide();
	$('.juventudIzdaPpal li.nivel1.cmParentElem1').each(function(){
		var $liActual = $(this);
		var $showLink = $('<a href="#" class="show"></a>');
		var $lista = $liActual.children('ul');
		$showLink.toggle( 
			function(){
				$lista.show(0);
				$(".wrapper > .bl, .wrapper > .br").remove();
				$(".wrapper").drawCorners({corners: 'bl br', offset: 1});
				$liActual.addClass('open');
				return false;
			},
			function(){
			  	$lista.hide(0);
				$(".wrapper > .bl, .wrapper > .br").remove();
				$(".wrapper").drawCorners({corners: 'bl br', offset: 1});	
				$liActual.removeClass('open');
				return false;
			}
		);
		$liActual.prepend($showLink); 
	});
	//desplegamos el elemento activo del menu
	$('.juventudIzdaPpal li.nivel1.cmParentElem1.cmActiveElement a.show').click();
	
	//para los recursos y los videos, modificamos las alturas para que se vean en columna correctamente.
	$('.resourcesBox #cmContentResourcesList').equalColumns({elem: 'li', numItemsCol: 3});
	$('.videosBox .cmVideoGallery:not(".cmOnlyZoomedVideo")').equalColumns({elem: '.cmVideo', numItemsCol: 3});
	
	//en los listados de varias columnas hay que igualar las alturas
	$('.cmContentMultipleList.nColumns_2').equalColumns({elem: 'li', numItemsCol: 2});
	$('.cmContentMultipleList.nColumns_3').equalColumns({elem: 'li', numItemsCol: 3});
	
	/* mostrar la busqueda avanzada en los resultados de busqueda */
	var $advancedSearchLink = $('#content .cmAdvancedSearchLink');
	var $advancedSearch = $('#advancedSearch');
	if($advancedSearchLink && $advancedSearch ){
		$advancedSearch.hide();
		$advancedSearchLink.toggle(
			function(){
				$advancedSearch.slideDown('fast');		
				return false;
			},
			function(){
				$advancedSearch.slideUp('fast');		
				return false;
			}
		);
	}
	
	/* para las fechas del calendario añadimos una clase para distinguir si hay soporte o no de border-radius */
	if (!supportsBorderRadius()){
		$('.cmCalendarContainer').addClass('noBorderRadius');
	}
	
	/* en los eventos del calendario hay que igualar la altura de los elementos y darles clases segun la posicion */
	var $eventosCalendario = $('#eventsDiv');
	$('.cmSelectedDay #titleDiv').drawCorners({targetAll: true })
	var $listaEventos = $eventosCalendario.children('ul');
	var $eventos = $listaEventos.find('li');
	if($eventos.length > 1){
		$eventos.each(function(index){
			if(index % 2 == 0){
				$(this).addClass('evenItem');
			} else {
				$(this).addClass('oddItem');
			}
		});
		$listaEventos.equalColumns({elem: 'li', numItemsCol: 2});
	} else {
		$listaEventos.addClass('oneItem');
	}
	
	
	$('TABLE.cmCalendar button.cmCalendarButton').click(function(){
		//cada vez que se pinta un dia hay que modificar los nuevos elementos
		$('.cmSelectedDay #titleDiv').drawCorners({targetAll: true })
		var $listaEventos = $eventosCalendario.children('ul');
		var $eventos = $listaEventos.find('li');
		if($eventos.length > 1){
			$eventos.each(function(index){
				if(index % 2 == 0){
					$(this).addClass('evenItem');
				} else {
					$(this).addClass('oddItem');
				}
			});
			$listaEventos.equalColumns({elem: 'li', numItemsCol: 2});
		} else {
			$listaEventos.addClass('oneItem');
		}
	});
	
	// enlace de impresion
    var print = $('#print');
    if (print.size()>0){
       var link = $('<a class="destacado" href="#">IMPRIMIR</a>');
       link.click(function(){
          window.print();
          return false;
       })
       print.append(link);
    }
});

$(window).load(function(){ //cuando se han cargado todos los elementos de la pagina, incluidos imagenes y objetos
	if($.browser.msie && parseInt($.browser.version) <= 7){ // recargamos el flash para que se active en ie7 y anteriores
		var $headerFlash = $('.bannerSupJuventud object');
		if ($headerFlash.size() > 0){
			var $parentFlash = $headerFlash.parent();
			$parentFlash.attr('id','flashContainer');
			CreateControl("flashContainer", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", $headerFlash.attr('id'), $headerFlash.attr('width'), $headerFlash.attr('height'), $headerFlash.attr('data'), "transparent", new Array());
		}
	}
	
	// colocamos las descripciones de los mapas de imagenes correctamente
	var $imageMaps = $('map');
	if($imageMaps.size() > 0){
		$imageMaps.each(function(){
			positionImageMapDesc($(this).attr('name'));
		});
	}
});

function CreateControl(DivID, CLSID, ObjectID, WIDTH, HEIGHT, MOVIE, WMODE, OTROS_PARAMS) { //función para cargar un archivo flash con los parametros deseados
	var d = document.getElementById(DivID);
	var contenido = '';
	contenido = contenido + '<object classid="' + CLSID + '" id="' + ObjectID + '" width="' + WIDTH + '" height="' + HEIGHT +'">';
	contenido = contenido + '<param name="quality" value="high" />';
	contenido = contenido + '<param name="allowScriptAccess" value="sameDomain" />';
	contenido = contenido + '<param name="movie" value="' + MOVIE + '"/>';
	contenido = contenido + '<param name="wmode" value="' + WMODE + '"/>';
 	if(OTROS_PARAMS[0] && OTROS_PARAMS[1]) contenido = contenido + '<param name="' + OTROS_PARAMS[0] + '" value="' + OTROS_PARAMS[1] + '"/>';
	contenido = contenido + '<embed src="' + MOVIE + '" quality="high" width="' + WIDTH + '" HEIGHT="' + HEIGHT + '" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"';
  	if(WMODE != "") contenido = contenido + ' wmode="' + WMODE + '"';
  	if(OTROS_PARAMS[0] && OTROS_PARAMS[1]) contenido = contenido + ' ' + OTROS_PARAMS[0] + '="' + OTROS_PARAMS[1] + '"';
  	contenido = contenido + ' />';
  	contenido = contenido + '</object>'
  	d.innerHTML = contenido;
}

jQuery.fn.drawCorners = function(options){ //función para crear esquinas redondeadas mediante imágenes de fondo en un elemento dado
	var $items = this;
	var args = jQuery.extend({
		/* opciones por defecto */
		/* se pasan como parametros las esquinas a crear, separadas por espacios. ej: {corners:'all'}, {corners:'tl tr'} */			
		corners : "all",
		offset: 0, /* correccion para explorer 6 */
		targetAll: false /* si se crean las esquinas para todos los navegadores, incluidos webkit y firefox */
	}, options);
	
	$items.each(function(){
		var $elemActual = $(this);
		var borderRadiusSupport = supportsBorderRadius();
		var isIE = $.browser.msie
		var isIE6 = parseInt($.browser.version) == 6
		if ( (!borderRadiusSupport) || args.targetAll){
			/* solo en el caso de que no sean firefox ni navegadores basados en webkit, que las dibujan con css mediante la propiedad border-radius aplicada en las hojas de estilo */
			if (isIE && isIE6){ // activamos el hashlayout en ie6
				$(this).css('zoom',1);	
			}
			
			var corners = args.corners;
			var offset = args.offset;
			if (corners.toLowerCase().indexOf('all') != -1){ /* si hay que crear todas las esquinas */
				if(offset != 0 && isIE && isIE6){ //correccion para ie6 si se usa el parametro offset
					$elemActual.prepend('<div class="tl"></div><div class="tr"></div>').append('<div class="bl"></div><div class="br"></div>');
					//la esquina inferior izquierda
					var $cornerBL = $elemActual.find('> .bl'); 
					$cornerBL.css('bottom', (parseInt($cornerBL.css('bottom')) - offset) + 'px');
				} else { //para el resto de navegadores
					$elemActual.prepend('<div class="tl"></div><div class="tr"></div>').append('<div class="bl"></div><div class="br"></div>');
				}
			} else { /* creamos solo las esquinas pasadas en los parametros */
				if(corners.toLowerCase().indexOf('tl') != -1){
					if(offset != 0 && isIE && isIE6){ //correccion para ie6 si se usa el parametro offset
						$elemActual.append('<div class="tl"></div>');
						var $cornerTL = $elemActual.find('> .tl'); 
						$cornerTL.css('top', (parseInt($cornerTL.css('top')) + offset) + 'px');
					} else {
						$elemActual.append('<div class="tl"></div>');
					}
				}
				if(corners.toLowerCase().indexOf('tr') != -1){
					if(offset != 0 && isIE && isIE6){ //correccion para ie6 si se usa el parametro offset
						$elemActual.append('<div class="tr"></div>');
						var $cornerTR = $elemActual.find('> .tr'); 
						$cornerTR.css('top', (parseInt($cornerTR.css('top')) + offset) + 'px');
					} else {
						$elemActual.append('<div class="tr"></div>');
					}
				}
				//la esquina inferior izquierda
				if(corners.toLowerCase().indexOf('bl') != -1){
					if(offset != 0 && isIE && isIE6){ //correccion para ie6 si se usa el parametro offset
						$elemActual.append('<div class="bl"></div>');
						var $cornerBL = $elemActual.find('> .bl'); 
						$cornerBL.css('bottom', (parseInt($cornerBL.css('bottom')) - offset) + 'px');
					} else {
						$elemActual.append('<div class="bl"></div>');
					}
				}
				if(corners.toLowerCase().indexOf('br') != -1){
					if(offset != 0 && isIE && isIE6){ //correccion para ie6 si se usa el parametro offset
						$elemActual.append('<div class="br"></div>');
						var $cornerBR = $elemActual.find('> .br'); 
						$cornerBR.css('bottom', (parseInt($cornerBR.css('bottom')) - offset) + 'px');
					} else {
						$elemActual.append('<div class="br"></div>');
					}
				}
			}
		} 
	});
	
	return this;
};

jQuery.fn.equalColumns = function(options){ //función para igualar las alturas de los elementos colocados en columnas
	var $parents = this;
	var args = jQuery.extend({
		/* opciones por defecto */	
		elem: 'li',
		numItemsCol: 2
	}, options);
	
	$parents.each(function(){
		var $actualParent = $(this);
		var $items = $actualParent.find('>' + args.elem);
		var totalItems = $items.length;
		for (var i = 0 ; i < totalItems; i = i + args.numItemsCol){
			var position = i + 1; // la posicion del primer elemento de la fila en que estamos, con nth-child se empieza a contar desde 1
			var maxHeight = $actualParent.children(':nth-child(' + position + ')').innerHeight(); // se reinicia la altura en cada fila y se coge la del primer elemento
			while (position < (i + args.numItemsCol ) && position < (totalItems + 1) ){ //se ejecuta mientras estamos en la fila y no se acaban los elementos totales
				position += 1;//avanzamos
				if (maxHeight < $actualParent.children(':nth-child(' + position + ')').innerHeight()){ //si el elemento actual es mas alto que el anterior
					maxHeight = $actualParent.children(':nth-child(' + position + ')').innerHeight()
				}
			}
			for ( var j = i + 1 ; j < (i + args.numItemsCol + 1) && j < (totalItems + 1); j++){
				if (!$.browser.msie) {
				$actualParent.children(':nth-child(' + j + ')').css('min-height', maxHeight);
			} else { // para explorer 
					if(parseInt($.browser.version) < 7){
						$actualParent.children(':nth-child(' + j + ')').css('height', maxHeight);
					} else {
						$actualParent.children(':nth-child(' + j + ')').css('min-height', maxHeight);
					}
				}
			}
		}
	});
};

function supportsBorderRadius(){ //funcion para comprobar si hay soporte de la propiedad border-radius
	var s=document.body.style;
	return s.WebkitBorderRadius!== undefined||s.MozBorderRadius!==undefined||s.BorderRadius!==undefined||s.borderRadius!==undefined;
}

function zoomImage(image, imageWidth, imageHeight, imageName, imageAuthor) {
    if (imageAuthor!=''){
        url = _currentWeb +  "tkZoomImage?locale=es_ES&textOnly=false&pgseed=1257850255277&"+image+"&width="+imageWidth+"&height="+imageHeight+"&name="+escape(imageName)+"&author="+escape(imageAuthor);
    } else {
        url = _currentWeb +  "tkZoomImage?locale=es_ES&textOnly=false&pgseed=1257850255277&"+image+"&width="+imageWidth+"&height="+imageHeight+"&name="+escape(imageName);
    }
    imageHeight = imageHeight + 100;
    
    if(imageWidth < 500){
        imageWidth = 500;
    } else {
        imageWidth += 50;
    }
    
    ops = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width="+imageWidth+",height="+imageHeight;
    winZoomImage = window.open(url, "winZoomImage", ops);
    winZoomImage.focus();
}

function positionImageMapDesc(imageMapName) { // coloca la descripción del area encima de la misma
	// obtenemos los diferentes elementos
	var $image = $('img[usemap="#' + imageMapName + '"]'); //la imagen
	var $imageMap = $('map[name="' + imageMapName + '"]'); //el mapa de imagenes
	var $imageMapAreas = $imageMap.find('area'); // las areas
	
	$imageMapAreas.each(function(){
		var $areaActual = $(this);
		var idDescAreaActual = $areaActual.attr('id').replace('area','mapArea');
		var $descAreaActual = $('div[id="'+ idDescAreaActual + '"]'); //la capa con el texto a mostrar
		$('body').append($descAreaActual);
		$areaActual.mouseover( 
			function(e){
				var posX = e.pageX;
				var posY = e.pageY;
				$descAreaActual.css({
					'top': posY,
					'left': posX
				})
			}	
		);
		
	})
}
