// Node Functions

if(!window.Node)
{
	var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

function checkNode(node, filter)
{
	return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
}

function getChildren(node, filter)
{
	var result = new Array();
	var children = node.childNodes;
	for(var i = 0; i < children.length; i++)
	{
		if(checkNode(children[i], filter)) result[result.length] = children[i];
	}
	return result;
}

function getChildrenByElement(node)
{
	return getChildren(node, "ELEMENT_NODE");
}

function getFirstChild(node, filter)
{
	var child;
	var children = node.childNodes;
	for(var i = 0; i < children.length; i++)
	{
		child = children[i];
		if(checkNode(child, filter)) return child;
	}
	return null;
}

function getFirstChildByText(node)
{
	return getFirstChild(node, "TEXT_NODE");
}

function getNextSibling(node, filter)
{
	for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling)
	{
		if(checkNode(sibling, filter)) return sibling;
	}
  return null;
}

function getNextSiblingByElement(node)
{
        return getNextSibling(node, "ELEMENT_NODE");
}

// Menu Functions & Properties

var activeMenu = null;

function showMenu()
{
	if(activeMenu)
	{
		activeMenu.className = "";
		getNextSiblingByElement(activeMenu).style.display = "none";
	}
	if(this == activeMenu)
	{
		activeMenu = null;
	}
	else
	{
		this.className = "active";
		getNextSiblingByElement(this).style.display = "block";
		activeMenu = this;
	}
	return false;
}

function initMenu()
{
	var menus, menu, text, a, i;
	menus = getChildrenByElement(document.getElementById("menu"));
	for(i = 0; i < menus.length; i++)
	{
		menu = menus[i];
		text = getFirstChildByText(menu);
		a = document.createElement("a");
		menu.replaceChild(a, text);
		a.appendChild(text);
		a.href = "#";
		a.onclick = showMenu;
		a.onfocus = function(){this.blur()};
	}
}

if(document.createElement) window.onload = initMenu;

/*
* Montre / Cache un div
*/
function DivStatus( nom, numero )
{
	var divID = nom + numero;
	if ( document.getElementById && document.getElementById( divID ) ) // Pour les navigateurs récents
	{
		Pdiv = document.getElementById( divID );
		PcH = true;
	}
	else if ( document.all && document.all[ divID ] ) // Pour les veilles versions
	{
		Pdiv = document.all[ divID ];
		PcH = true;
	}
	else if ( document.layers && document.layers[ divID ] ) // Pour les très veilles versions
	{
		Pdiv = document.layers[ divID ];
		PcH = true;
	}
	else
	{
		PcH = false;
	}
	if ( PcH )
	{
		Pdiv.className = ( Pdiv.className == 'cachediv' ) ? '' : 'cachediv';
	}
}
		
/*
* Cache tous les divs ayant le même préfixe
*/
function CacheTout( nom )
{	
	var NumDiv = 1;
	if ( document.getElementById ) // Pour les navigateurs récents
	{
		while ( document.getElementById( nom + NumDiv) )
		{
			SetDiv = document.getElementById( nom + NumDiv );
			if ( SetDiv && SetDiv.className != 'cachediv' )
			{
				DivStatus( nom, NumDiv );
			}
			NumDiv++;
		}
	}
	else if ( document.all ) // Pour les veilles versions
	{
		while ( document.all[ nom + NumDiv ] )
		{
			SetDiv = document.all[ nom + NumDiv ];
			if ( SetDiv && SetDiv.className != 'cachediv' )
			{
				DivStatus( nom, NumDiv );
			}
			NumDiv++;
		}
	}
	else if ( document.layers ) // Pour les très veilles versions
	{
		while ( document.layers[ nom + NumDiv ] )
		{
			SetDiv = document.layers[ nom + NumDiv ];
			if ( SetDiv && SetDiv.className != 'cachediv' )
			{
				DivStatus( nom, NumDiv );
			}
			NumDiv++;
		}
	}
}
	
/*
* Montre tous les divs ayant le même préfixe
*/
function MontreTout( nom )
{	
	var NumDiv = 1;
	if ( document.getElementById ) // Pour les navigateurs récents
	{
		while ( document.getElementById( nom + NumDiv) )
		{
			SetDiv = document.getElementById( nom + NumDiv );
			if ( SetDiv && SetDiv.className != '' )
			{
				DivStatus( nom, NumDiv );
			}
			NumDiv++;
		}
	}
	else if ( document.all ) // Pour les veilles versions
	{
		while ( document.all[ nom + NumDiv ] )
		{
			SetDiv = document.all[ nom + NumDiv ];
			if ( SetDiv && SetDiv.className != '' )
			{
				DivStatus( nom, NumDiv );
			}
			NumDiv++;
		}
	}
	else if ( document.layers ) // Pour les très veilles versions
	{
		while ( document.layers[ nom + NumDiv ] )
		{
			SetDiv = document.layers[ nom + NumDiv ];
			if ( SetDiv && SetDiv.className != '' )
			{
				DivStatus( nom, NumDiv );
			}
			NumDiv++;
		}
	}
}
		
/*
* Inverse les divs: Cache les divs visible et montre le divs cachés :)
*/
function InverseTout( nom )
{	
	var NumDiv = 1;
	if ( document.getElementById ) // Pour les navigateurs récents
	{
		while ( document.getElementById( nom + NumDiv ) )
		{
			SetDiv = document.getElementById( nom + NumDiv );
			DivStatus( nom, NumDiv );
			NumDiv++;
		}
	}
	else if ( document.all ) // Pour les veilles versions
	{
		while ( document.all[ nom + NumDiv ] )
		{
			SetDiv = document.all[ nom + NumDiv ];
			DivStatus( nom, NumDiv );
			NumDiv++;
		}
	}
	else if ( document.layers ) // Pour les très veilles versions
	{
		while ( document.layers[ nom + NumDiv ] )
		{
			SetDiv = document.layers[ nom + NumDiv ];
			DivStatus( nom, NumDiv );
			NumDiv++;
		}
	}
}

function toggle_visibility(id)
{
	var e = document.getElementById(id);
	if(e.style.display == '') e.style.display = 'none';
	else e.style.display = '';
}

// Méthode pour changer la visiblité d'une balise dont l'ID est passée en paramètre
function toggleVisibility(tagId)
{
	if (!document.getElementById)
	{
		msg = 'Votre navigateur est trop ancien pour profiter de votre visite\n';
		msg += 'Veuillez le mettre à jour ou vous en procurer un autre';
		return false;
	}
	var tagToToggle;
	try
	{ // On tente de récupérer la balise cible dont on doit changer la visibilité
		tagToToggle = document.getElementById(tagId);
	}
	catch (e)
	{ // Si échec de la récupération de la balise cible
		alert('Je n\'ai pas pu trouver la balise cible');
	}
	try
	{ // Seulement pour les non IE
		if (tagToToggle.style.display == 'none')
		{
		tagToToggle.style.display = 'inline';
		}
		else
		{
			tagToToggle.style.display = 'none';
		}
	} catch (e)
	{
	}
	// Pour IE
	if (tagToToggle.style.visibility == 'hidden')
	{
		tagToToggle.style.visibility = 'visible';
	}
	else
	{
		tagToToggle.style.visibility = 'hidden';
	}
}

function chooseForm(method)
{
	var value = method.options[method.selectedIndex].value;
	if (value == 'XDCC')
	{
		document.getElementById('form-mt').style.display = 'none';
		document.getElementById('form-xdcc').style.display = '';
	}
	else
	{
		document.getElementById('form-xdcc').style.display = 'none';
		document.getElementById('form-mt').style.display = '';
	}	
}

/* ** cartouche ********************************************************************* */
/* Script complet de gestion d'une requête de type XMLHttpRequest                     */
/* Par Sébastien de la Marck (aka Thunderseb)                                         */
/* ********************************************************************************** */

function getXMLHttpRequest() {
	var xhr = null;
	
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	
	return xhr;
}

function giveEps(serie)
{
	var value = serie.options[serie.selectedIndex].value;
	var xhr   = getXMLHttpRequest();
	document.getElementById("choix_episode").style.display = "none";
	document.getElementById("choix_type").style.display = "none";
	document.getElementById("submit").style.display = "none";
	document.getElementById("xdcc-commande").style.display = "none";
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			readEps(xhr.responseXML);
			document.getElementById("loader").style.display = "none";
		} else if (xhr.readyState < 4) {
			document.getElementById("loader").style.display = "";
		}
	};
	
	xhr.open("POST", "darkangel/XMLHttpRequest_getEpsData.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("IdAnime=" + value);
}

function readEps(eps) {
	var nodes   = eps.getElementsByTagName("item");
	var oSelect = document.getElementById("choix_episode");
	var oOption, oInner;
	
	oSelect.innerHTML = "<option value=\"none\">-- Episode --</option>";
	for (var i=0, c=nodes.length; i<c; i++) {
		oOption = document.createElement("option");
		oInner  = document.createTextNode(nodes[i].getAttribute("numero"));
		oOption.value = nodes[i].getAttribute("id");
		
		oOption.appendChild(oInner);
		oSelect.appendChild(oOption);
	}
	oSelect.style.display = "";
}

function giveTypes(episode)
{
	var value = episode.options[episode.selectedIndex].value;
	var xhr   = getXMLHttpRequest();
	document.getElementById("choix_type").style.display = "none";
	document.getElementById("submit").style.display = "none";
	document.getElementById("xdcc-commande").style.display = "none";
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			readTypes(xhr.responseXML);
			document.getElementById("loader").style.display = "none";
		} else if (xhr.readyState < 4) {
			document.getElementById("loader").style.display = "";
		}
	};
	
	xhr.open("POST", "darkangel/XMLHttpRequest_getTypesData.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("IdEpisode=" + value);
}

function readTypes(eps) {
	var nodes   = eps.getElementsByTagName("item");
	var oSelect = document.getElementById("choix_type");
	var oOption, oInner;
	
	oSelect.innerHTML = "<option value=\"none\">-- Version --</option>";
	for (var i=0, c=nodes.length; i<c; i++) {
		oOption = document.createElement("option");
		oInner  = document.createTextNode(nodes[i].getAttribute("type"));
		oOption.value = nodes[i].getAttribute("type");
		
		oOption.appendChild(oInner);
		oSelect.appendChild(oOption);
	}
	oSelect.style.display = "";
}

function giveCde()
{
	var episode = document.getElementById("choix_episode");
	var type = document.getElementById("choix_type");
	
	var epis = episode.options[episode.selectedIndex].value;	
	var typ = type.options[type.selectedIndex].value;	
	var xhr   = getXMLHttpRequest();
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			readCde(xhr.responseXML);
			document.getElementById("loader").style.display = "none";
		} else if (xhr.readyState < 4) {
			document.getElementById("loader").style.display = "";
		}
	};
	
	xhr.open("POST", "darkangel/XMLHttpRequest_getCdeData.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("IdEpisode=" + epis + "&Type=" + typ);
}

function readCde(commande) {
	var nodes   = commande.getElementsByTagName("item");
	var oSelect = document.getElementById("xdcc-commande");
	var oInner, oSpan;
	
	oSelect.innerHTML = "";
	oSpan = document.createElement("span")
	oInner  = document.createTextNode(nodes[0].getAttribute("text"));
	oSpan.appendChild(oInner);
	oSelect.appendChild(oSpan);
	oSelect.style.display = "";
}

function animeShow(methode)
{
	if (methode == 'torrent')
	{
		document.getElementById("anime-ddl").style.display = 'none';
		document.getElementById("choix-ddl").className = 'inactif';
		document.getElementById("choix-torrent").className = 'actif';
		document.getElementById("anime-torrent").style.display = '';
	}
	else
	{
		document.getElementById("anime-torrent").style.display = 'none';
		document.getElementById("choix-torrent").className = 'inactif';
		document.getElementById("choix-ddl").className = 'actif';
		document.getElementById("anime-ddl").style.display = '';
	}
}

function giveAllEps(anime)
{
	var value = anime.options[anime.selectedIndex].value;
	var xhr   = getXMLHttpRequest();
	document.getElementById("episode").style.display = "none";
	document.getElementById("submit").style.display = "none";
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			readAllEps(xhr.responseXML);
			document.getElementById("loader").style.display = "none";
		} else if (xhr.readyState < 4) {
			document.getElementById("loader").style.display = "";
		}
	};
	
	xhr.open("POST", "darkangel/XMLHttpRequest_getAllEpsData.php", true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.send("IdAnime=" + value);
}

function readAllEps(eps) {
	var nodes   = eps.getElementsByTagName("item");
	var oSelect = document.getElementById("episode");
	var oOption, oInner;
	
	oSelect.innerHTML = "<option value=\"none\">-- Episode --</option>";
	for (var i=0, c=nodes.length; i<c; i++) {
		oOption = document.createElement("option");
		oInner  = document.createTextNode(nodes[i].getAttribute("numero"));
		oOption.value = nodes[i].getAttribute("id");
		
		oOption.appendChild(oInner);
		oSelect.appendChild(oOption);
	}
	oSelect.style.display = "";
}

function AnimeImg(img) {
	var reggif = /.gif$/;
	var regpng = /.png$/;
	var search = img.src
	
	if (reggif.test(search)) src = search.replace(reggif,".png");
	else if (regpng.test(search)) src = search.replace(regpng,".gif");
	
	img.src = src;
}