var xmlNews = null;
var xmlFullNews = null;
var nbNews = 0;

var newsDocument = 0;

var newsLanguage = "en";

var aImagesToPreload;

var aAutoResizeTimeout = -1;
var aLaunchGoTimeout = -1;
var aDisplayNewsTimeout = -1;



/************************************************************************
 *  Classes
 ************************************************************************/


/**
 * loadImages : objet de chargement d'images
 *
 * @return Void
 */
function loadImages() {
	if (document.images) {
		this.length=loadImages.arguments.length;
		for (var i=0;i<this.length;i++) {
			this[i+1]=new Image();
			this[i+1].src=loadImages.arguments[i];
		}
	}
}


/************************************************************************
 *  Méthodes publiques
 ************************************************************************/

/**
 * loadNews : chargement de news en fonction d'un type (portal, pangya, gunbound), d'une langue et d'une iframe cible
 *
 * @param psType [String] Type de news à afficher (portal, pangya, gunbound)
 * @param psLanguage [String] Langue courante du site (fr, en, de, es)
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @param pnNewsId [Number] Id de la news à afficher (optionnel)
 * @param psXmlFileFullNews [String] URL du fichier XML contenant la news complete
 * @return Void
 */
function loadNews( psType, psLanguage, psTargetDiv, pnNewsId, psXmlFileFullNews ) {
	//alert( "loadNews psType="+ psType+" psLanguage="+ psLanguage+" psTargetDiv="+ psTargetDiv+" pnNewsId="+ pnNewsId+" psXmlFileFullNews="+ psXmlFileFullNews);
	
	newsLanguage = psLanguage;
	switch ( newsLanguage ) {
		case "fr":
		case "en":
		case "de":
		case "es":
			break;
		
		default:
			newsLanguage = "en";
	}
	
	document.getElementById( psTargetDiv + "Content" ).style.height = "1500px";
	
	__preloadImages();
	
	__launchGo( '/syndic_proc/news/'+newsLanguage+'/idx'+psType+'0.xml', 'xsl/news/' + psTargetDiv + psType + '.xsl', psTargetDiv, pnNewsId, psXmlFileFullNews );
}


/**
 * displayNewPage : Changement de page de news et affichage des nouvelles news
 *
 * @param psUrl [String] URL du fichier XML de news à charger pour la nouvelle page
 * @param psType [String] Type de news à afficher (portal, pangya, gunbound)
 * @param psTargetDiv [String] Nom de la iframe cible d'affichage des news
 * @return Void
 */
function displayNewPage( psUrl, psType, psTargetDiv ) {
	var relativePath = "";

	if (navigator.appName == 'Netscape') {
		relativePath = "../../";
	}

	__go(  psUrl, relativePath + 'xsl/news/' + psTargetDiv + psType +'.xsl', psTargetDiv );

	window.scrollTo(0,0);
}


/**
 * expandFullNews : Demande l'affiche du contenu d'une news
 *
 * @param pnNewsId [Number] Id de la news à afficher
 * @param psXmlFileFullNews [String] URL du fichier XML contenant la news complete
 * @return Void
 */
function expandFullNews( pnNewsId, psXmlFileFullNews ) {
	/*if (navigator.appName == 'Netscape') {
		psXmlFileFullNews = "../../" + psXmlFileFullNews;
	}*/
	
	__displayFullNews( pnNewsId, psXmlFileFullNews );
}


/**
 * hideFullNews : Masque le contenu d'une news
 *
 * @param pnNewsId [Number] Id de la news à masquer
 * @return Void
 */
function hideFullNews( pnNewsId ) {
	newsDocument.getElementById("aFullNews" + pnNewsId).style.display = "inline";
	newsDocument.getElementById("aNews" + pnNewsId).style.display = "none";
	
	newsDocument.getElementById("fullNews" + pnNewsId).style.display = "none";
	document.getElementById( "newsContent" ).style.height = newsDocument.getElementById("content").scrollHeight + "px";
}


/************************************************************************
 *  Méthodes privées
 ************************************************************************/

/**
 * __preloadImages : préchargement des images utiles à l'affichage du bloc de news
 *
 * @return Void
 */
function __preloadImages() {
	// Indiquez ici la liste des urls des images à précharger
	aImagesToPreload = new loadImages(
			"i18n/images/" + newsLanguage + "/news/events_icon_news_pangya.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_news_pangya.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_news_pangya.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_news_gunbound.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_news_gunbound.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_news_gunbound.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_news_portal.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_news_portal.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_news_portal.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_pangya.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_pangya.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_pangya.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_gunbound.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_gunbound.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_gunbound.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_portal.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_portal.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_portal.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_news_kart.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_news_kart.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_news_kart.gif",
			"i18n/images/" + newsLanguage + "/news/events_icon_kart.gif",
			"i18n/images/" + newsLanguage + "/news/technic_icon_kart.gif",
			"i18n/images/" + newsLanguage + "/news/news_icon_kart.gif",
			//"i18n/images/" + newsLanguage + "/news/events_icon_news_xsoccer.gif",
			//"i18n/images/" + newsLanguage + "/news/technic_icon_news_xsoccer.gif",
			//"i18n/images/" + newsLanguage + "/news/news_icon_news_xsoccer.gif",
			//"i18n/images/" + newsLanguage + "/news/events_icon_xsoccer.gif",
			//"i18n/images/" + newsLanguage + "/news/technic_icon_xsoccer.gif",
			//"i18n/images/" + newsLanguage + "/news/news_icon_xsoccer.gif",
			"i18n/images/" + newsLanguage + "/news/top_news.gif",
			"images/news/bottom_news.gif",
			"images/news/news_bg_news.jpg",
			"images/news/events_bg_news.jpg",
			"images/news/technic_bg_news.jpg");
}


/**
 * __launchGo : Verifie le chargement des images utiles puis lance la conversion du fichier XML vie le fichier XSL
 *
 * @param psXmlFile [String] URL du fichier XML à convertir
 * @param psXslFile [String] URL du fichier XSL de conversion
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @param pnNewsId [Number] Id de la news à afficher (optionnel)
 * @param psXmlFileFullNews [String] URL du fichier XML contenant la news complete
 * @return Void
 */
function __launchGo( psXmlFile, psXslFile, psTargetDiv, pnNewsId, psXmlFileFullNews ) {
	var ok=1;
	
	if (document.images) {
		for (var i=0;i<aImagesToPreload.length;i++) {
			if (!(aImagesToPreload[i+1].complete)) {
				ok = 0;
				break;
			}
		}
	}
	
	if (!ok){
		aLaunchGoTimeout = setTimeout( "__launchGo( '"+psXmlFile+"', '"+psXslFile+"', '"+psTargetDiv+"', '"+pnNewsId+"', '"+psXmlFileFullNews+"' )", 200 );
	}
	else {
		clearTimeout( aLaunchGoTimeout );
		
		__go( psXmlFile, psXslFile, psTargetDiv );
		
		if ( pnNewsId != undefined && pnNewsId != "undefined" ) {
			__displayFullNews( pnNewsId, psXmlFileFullNews )
		}
	}
}


/**
 * __go : Lance la conversion du fichier XML vie le fichier XSL
 *
 * @param psXmlFile [String] URL du fichier XML à convertir
 * @param psXslFile [String] URL du fichier XSL de conversion
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @return Void
 */
function __go ( psXmlFile, psNewsXslFile, psTargetDiv ) {
	xmlNews = new XMLTool( psXmlFile, psNewsXslFile );
	
	nbNews = xmlNews.xml.getElementsByTagName("news").length;
	
	__displayNews( psTargetDiv );
}


/**
 * __displayNews : Affiche une news dans l'iframe cible
 *
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @return Void
 */
function __displayNews( psTargetDiv ) {
sDebug += "__displayNews > target = " + psTargetDiv + "<br/>";
	//alert( "__displayNews" );
	
	//cloneNode fait bug Chrome et Safari ...
	var sXmlContent = null;	 
	if ( navigator.appVersion.indexOf("Chrome") || navigator.appVersion.indexOf("Safari") )
		sXmlContent = xmlNews.xml;
	else
		sXmlContent = xmlNews.xml.cloneNode(true); 
	
	newsDocument = document.getElementById(psTargetDiv + "Content").contentWindow.document;
	newsDocument.getElementById("content").innerHTML = "";
	
	xmlNews.transform( sXmlContent, xmlNews.xsl, newsDocument.getElementById("content") );
	
	setTimeout( "isInActiveControllers( '"+psTargetDiv+"' )", 1000);
}	



/**
 * displayNewsIFrame : Affiche une iframe
 *
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @return Void
 */
function displayNewsIFrame( psTargetDiv ) {
sDebug += "displayNewsIFrame > target = " + psTargetDiv + "<br/>";
	//alert( "displayNewsIFrame" );
	document.getElementById( psTargetDiv + "Content" ).style.display = "block";
	
	// Redimensionnement automatique après 500 ms
	//aAutoResizeTimeout = setTimeout( "__autoResizeIFrame( '"+psTargetDiv+"' )", 500 );
	aAutoResizeTimeout = setInterval( "__autoResizeIFrame( '"+psTargetDiv+"' )", 500 );
	//__autoResizeIFrame( psTargetDiv );
}


/**
 * hideNewsIFrame : Masque une iframe
 *
 * @param psTargetDiv [String] Nom de l'iframe cible d'affichage des news
 * @return Void
 */
function hideNewsIFrame( psTargetDiv ) {
sDebug += "hideNewsIFrame > target = " + psTargetDiv + "<br/>";
	//alert( "hideNewsIFrame -> " + psTargetDiv );
	document.getElementById( psTargetDiv + "Content" ).style.display = "none";
}



/**
 * __autoResizeIFrame : Redimensionne automatiquement l'iframe en fonction de son contenu
 *
 * @param psTargetDiv [String] Nom de la iframe cible d'affichage des news
 * @return Void
 */
function __autoResizeIFrame( psTargetDiv ) {
	//alert( "__autoResizeIFrame => " + document.getElementById( psTargetDiv + "Content" ).style.height +" == "+ newsDocument.getElementById("content").scrollHeight + "px" );
	if ( document.getElementById( psTargetDiv + "Content" ).style.height == newsDocument.getElementById("content").scrollHeight + "px" ) {
		clearInterval( aAutoResizeTimeout );
	}
	else {
		document.getElementById( psTargetDiv + "Content" ).style.height = newsDocument.getElementById("content").scrollHeight + "px";
		//aAutoResizeTimeout = setTimeout( "__autoResizeIFrame( '"+psTargetDiv+"' )", 500 );
	}
}


/**
 * __displayFullNews : Affiche le contenu d'une news
 *
 * @param pnNewsId [Number] Id de la news à afficher
 * @param psXmlFileFullNews [String] URL du fichier XML à convertir
 * @return Void
 */
function __displayFullNews( pnNewsId, psXmlFileFullNews ) {
	if ( newsDocument.getElementById("fullNews" + pnNewsId).innerHTML == "" ) {
		xmlFullNews = new XMLTool( psXmlFileFullNews, null );

		newsDocument.getElementById("fullNews" + pnNewsId).innerHTML = xmlFullNews.xml.getElementsByTagName("text")[0].firstChild.nodeValue;
	}
	
	newsDocument.getElementById("aFullNews" + pnNewsId).style.display = "none";
	newsDocument.getElementById("aNews" + pnNewsId).style.display = "inline";
	
	newsDocument.getElementById("fullNews" + pnNewsId).style.display = "block";
	document.getElementById( "newsContent" ).style.height = newsDocument.getElementById("content").scrollHeight + "px";
}


