/*	Hints v1.00 (c) Copyright 2010, AnimeHD - www.animehd.org */
var HDHints = new function() {
	var Hints = [
		['480p', 'Video en formato progresivo con 480 líneas de altura, común en DVDs NTSC.',],
		['576p', 'Video en formato progresivo con 576 líneas de altura, común en DVDs PAL.',],
		['AAC', 'Advanced Audio Coding es el códec que ha sustituido al MP3. Permite obtener una mejor calidad con un bitrate menor que el MP3.',],
		['ASS', 'Advanced SubStation Alpha. Formato de subtítulos, basado en un archivo de texto. Es una versión avanzada de SSA (versión 4+) que permite algunos efectos nuevos.',],
		['AviSynth', 'Herramienta (frameserver) utilizado por otros programas para editar y procesar audio y video.<br /><a href="http://www.avisynth.org">Pagina de AviSynth</a><br /><a href="http://sourceforge.net/project/showfiles.php?group_id=57023">Pagina de descarga</a>',],
		['Crop', 'Eliminar los bordes de una imagen, normalmente para quitar desperfectos o mantener el AR (Aspect Rate / Relación de Aspecto)',],
		['Entrelazado', 'Video que es reproducido al doble de sus fps, pero en cada frame solo se actualizan la mitad de las líneas, alternando las pares e impares. Esto produce artefactos en líneas verticales.',],
		['FFDShow', 'Decoder de prácticamente todos los formatos de audio y video (e.o. DivX, XVID y h.264).<br /><a href="http://ffdshow-tryout.sourceforge.net/">Pagina de FFDShow</a>',],
		['Haali Media Splitter', 'Actualmente conocido como Matroska Spliter sirve para poder reproducir: MKV (Matroksa), MP4, AVI, OGG/OGM y MPEG TS<br /><a href="http://haali.cs.msu.ru/mkv/">Pagina de Haali Media Splitter</a>',],
		['Matroska Splitter', 'Tambien conocido como Haali Media Spliter sirve para poder reproducir: MKV (Matroksa), MP4, AVI, OGG/OGM y MPEG TS<br /><a href="http://haali.cs.msu.ru/mkv/">Pagina de Haali Media Splitter</a>',],
		['Media Player Classic', 'Reproductor recomendado para reproducir video.<br /><a href="http://sourceforge.net/project/showfiles.php?group_id=205650&package_id=245753">Pagina de descarga</a>',],
		['MKV', 'Matroska en un contenedor universal. Puede contener entre otras cosas tanto audio y video, como subtítulos y fuentes adicionales.<br />Requiere un splitter: <a href="http://haali.cs.msu.ru/mkv/">Pagina de Haali Media Splitter</a>',],
		['MKVToolnix', 'Herramienta para crear y modificar archivos Matroska (*.mkv)<br /><a href="http://www.bunkus.org/videotools/mkvtoolnix/downloads.html">Pagina de descarga</a>',],
		['MP4', 'Contenedor oficial para audio y video en formato MPEG-4 (DivX, XVID, 3IVX, h.264, AVC).<br />MP4 es el sucesor de AVI.',],
		['SSA', 'SubStation Alpha. Formato de subtítulos, basado en un archivo de texto.',],
		['V.O.S.', 'Versión Original Subtítulada',],
		['VirtualDub', 'Programa para la captura y edición (basica) de video.<br /><a href="http://www.virtualdub.org/">Pagina de VirtualDub</a>',],
		
		['Ecchi', 'Genero: contiene erotismo; escenas sexuales no demasiado explícitas y amenudo con aspectos humorísticos',],
		['Gore', 'Genero: contiene violencia extrema (sangre, descuartizaciones)',],
		['Harem', 'Genero: su trama principal está protagonizada por un grupo de personajes femeninas, que poseen actitudes muy dispares y que conviven con un unico hombre.',],
		['Hentai', 'Genero: tiene contendio pornográfico',],
			['Ero-Guru', 'Subgenero de hentai con sangre, mutilaciones, o escatologia (Erotico-grotesco - abreviado: guro)',],
			['Futanari', 'Subgenero de hentai donde las protagonistas son hermafroditas.',],
			['Kemonomimi', 'Subgenero de hentai donde las protagonistas, aun siendo humanos, poseen alguna característica animal.',],
			['Lolicon', 'Subgenero de hentai donde algunas personajes son chicas con aspecto de menor.',],
			['Shotacon', 'Subgenero de hentai donde algunas personajes son chicos con aspecto de menor.',],
		['Kodomo', 'Genero: dirigido al público infantil. Su tema principal se puede comprender facilmente.',],
		['Mecha', 'Genero: sobre vehiculos pilotados que se desplazan con patas',],
		['Josei', 'Genero: dirigido a mujeres de mediana edad. Su trama principal narra historias de experiencias femeninas.',],
		['Seinen', 'Genero: dirigdo a hombres de mediada edad. Su trama suele estar relacionado, con negocios y la politica.',],
		['Shojo', 'Genero: dirigido al público femenino. Normalmente la historia se centra en las relaciones humanas, particularmente el amor.',],
		['Shonen', 'Genero: dirigido al público masculino. Normalmente contiene mucha accion.',],
		['Yaoi', 'Genero: su tema principal son las relaciones sexuales entre hombres',],
		['Yuri', 'Genero: su tema principal son las relaciones sexuales entre mujeres',],

		['Bishonen', 'Chico guapo',],
		['Bishojo', 'Chica guapa',],
		['Cosplay', 'Disfrazarse',],
		['Fanservice', 'Mostrar lo que quieren ver (suele ser ecchi y es común en el genero shonen)',],
		['Kohai', 'Contario de Senpai; estudiante de un curso inferio o una persona con menos experiencia.',],
		['Lolita', 'Chica joven e inocente',],
		['Sensei', 'Profesor, doctor o cualquier otra persona con una profesion que requiere un titulo universitario, las personas que enseñan artes marciales o que trabajan en la politica. Normalmente se usa para mostrar respeto.',],
		['Senpai', 'Persona con mas experiencia: un estudiante de un curso superior, alguien que lleva practicando durante mas tiempo un deporte o cualquier otra persona que se dedica a lo mismo, pero que lleva haciendolo desde antes.',]
		];
	$(document).ready(function () {
		HintLayer = document.createElement("div");
		HintLayer.className = "hint";
		$(HintLayer).mouseleave(function(){$(this).fadeTo("slow", 0.0, function() {this.style.display = "none";})});
		HintTitle = document.createElement("div");
		HintTitle.className = "hinttitle";
		HintBody = document.createElement("div");
		HintBody.className = "hintbody";
		HintLayer.appendChild(HintTitle);
		HintLayer.appendChild(HintBody);
		$(HintLayer).css({'opacity' : 0.0, 'display' : 'none'});
		document.body.appendChild(HintLayer);
		$("div.postbody").each(HDHints.SetHintsBody);
	});

	return {
		HintIt: function(a, index){
			HintTitle.innerHTML = Hints[index][0];
			HintBody.innerHTML = Hints[index][1];
			$('a', HintBody).attr('target', '_blank');
			$(HintLayer).stop();
			$(HintLayer).css({'opacity' : 0.0});
			$(HintLayer).show();
			Top = Math.max(document.documentElement.scrollTop, 0);	//Safari and OmniWeb 4.5+ no scroll = -8
			Height = window.innerHeight;	//Todos excepto IE
			if (Height == null)	//Todos excepto IE5-7 quirks
				Height = document.documentElement.clientHeight;
			if ((Height == null) || (Height == 0))	//solo IE5-7 quirks
				Height = document.body.clientHeight;
			var Offset = HDHints.AbsoluteOffset(a);
			if (Height < Offset.y - Top + HintLayer.offsetHeight)
			{
				HintLayer.style.top = Top + Math.max(Height - HintLayer.offsetHeight, 0) + "px";
			}
			else
			{
				HintLayer.style.top = Offset.y + "px";
			}
			if (document.body.offsetLeft + document.body.offsetWidth < Offset.x + HintLayer.offsetWidth)
				HintLayer.style.left = Math.max(document.body.offsetLeft + document.body.offsetWidth - HintLayer.offsetWidth, 0) + "px";
			else
				HintLayer.style.left = Offset.x +"px";
			$(HintLayer).fadeTo("slow", 0.95);
		},
	
		AbsoluteOffset: function(domElement)
		{
			var r = { x: 0, y: 0 };
			do {
				r.x += domElement.offsetLeft;
				r.y += domElement.offsetTop;
			} while (domElement = domElement.offsetParent);
			return r;
		},
		
		SetHints: function(index, domElement)
		{
			if (this.nodeValue)
			{
				oldText = this.nodeValue;
				newText = oldText;
				for (i in Hints)
				{	// \b no funciona para el final; añade (sp) y busca non-word char
					if (Hints[i][2]) continue;
					x = (newText + ' ').search(new RegExp('\\b' + Hints[i][0].replace(/\./g, '\\.') + '\\W', 'i'));
					if (x == -1) continue;
					tl = Hints[i][0].length;
					Hints[i][2] = true;
					newText = newText.substr(0, x) + '<span class=\"tip\" onmouseover=\"HDHints.HintIt(this, ' + i + ');\">' + newText.substr(x, tl) + '</span>' + newText.substr(x + tl);
					if (newText.charAt(0) == ' ') newText = '&nbsp;' + newText.substr(1);
				}
				if (oldText != newText)
				{
					newspan = document.createElement("span");
					newspan.innerHTML = newText;
					this.parentNode.replaceChild(newspan, this);
				}
			}
			$(this).contents(":not(a)").each(HDHints.SetHints);
		},

		SetHintsBody: function(index, domElement)
		{
			$(domElement).contents(":not(a)").each(HDHints.SetHints);
			for (i in Hints)
				Hints[i][2] = false;
		}
	}
}