//specificités browser
var FFBrowser = (document.implementation && document.implementation.createDocument);
var IEBrowser = window.ActiveXObject;

// affichages des  traces pour player.swf
var displayPlayerDebug = false;
// affichages des  traces pour VnmPlayer.swf
var displayVnmPlayerDebug = false;
// affichage de la fenetre de debug au lancement
var displayWindowDebug = false;
// affichage du texte de debug : blocage de l affichage du texte (modifie par le bouton '||Pause' / '|> Continuer')
var displayDebug = true;
var debugText = "";

// Ficher data.json
var DATA_FILE = "./json/data.json";

// timer (en ms) du temps de test de chargement du fichier du dosier courant
var FOLDER_TIMER = 1000;

// nombre d elements par ligne
var SCROLL_SIZE = 5;
// nombre de lignes de videos pour la VOD
var NB_LIGNES = 3;
// nombre de lignes de videos pour la recherche
var NB_LIGNES_RECH = 2;
// nombre de pages maximum
var NB_PAGES = 15;
// nombre de videos maximum
var NB_VIDEOS_MAX = NB_PAGES*NB_LIGNES_RECH*SCROLL_SIZE;

var weekDays = ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"];
var months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"];

// informations sur l'utilisateur (adresse IP)
var vnUser = new VnUser();
// configuration globale 
var vnConfig = new VnConfig('../../../../ahp/xml/config.xml');
// Url du serveur web remplace dans les urls des ressources
var webServerUrl = null;

// retourne un tableau a partir d'un noeud JSON, qu'il y ait 0, 1 ou n elements
function getJSONarray(node)
{
	var items;
	if (node == undefined) {
		items = new Array();
	} else if (node.length == undefined) {
		items = new Array();
		items[0] = node;
	} else {
		items = node;
	}
	return items;
}

// retourne le libelle d'une vignette
function getLibelle(date, titre, libelle)
{
	var content = "";
	var aDate = new Date();
	var lg = 0;

	aDate.setTime(date);
	content = '<b>' + aDate.getDate() + " " + months[aDate.getMonth()] + " " + aDate.getFullYear() + '</b>';
	if (titre.length > 0) {
		lg = (libelle.length > 0) ? 29 : 44;
		content += '<br/>' + ( (titre.length > lg) ? (titre.substring(0,lg-1) + '...') : titre);
	}
	if (libelle.length > 0) {
		lg = (titre.length > 0) ? 18 : 38;
		content += '<br/>' + ( (libelle.length > lg) ? (libelle.substring(0,lg-1) + '...') : libelle);
	}

	return content;
}

function getToolTip(date, titre, libelle)
{
	var content = "";
	var aDate = new Date();

	aDate.setTime(date);
	content = '<b>' + aDate.getDate() + " " + months[aDate.getMonth()] + " " + aDate.getFullYear() + '</b>';

	if (titre.length > 0)
		content += '<br/>' + titre;

	if (libelle.length > 0)
		content += '<br/>' + libelle;

	return content;
}

function getName(date, titre)
{
	var aDate = new Date();
	aDate.setTime(date);
	return '"' + titre + '" du ' + aDate.getDate() + " " + months[aDate.getMonth()] + " " + aDate.getFullYear();
}

function getDate(date)
{
	var aDate = new Date();
	aDate.setTime(date);
	return weekDays[aDate.getDay()] + " " + aDate.getDate() + " " + months[aDate.getMonth()] + " " + aDate.getFullYear();
}

// verifie si une identification prealable est requise
function isPrivateAccess(data)
{
	if (data.VNPublication.Publication.Access == "private" &&
		data.VNPublication.Publication.Key != GetCookie("VNpublication")) {
		var url = document.location.href;
		window.location.replace(url.substring(0, url.lastIndexOf("/")) + "/login.html" + document.location.search);
		return true;
	}
	return false;
}

// critere de tri : comparaison des dates date1 et date2
function cmpDates(date1, date2)
{
	if (date1 > date2) return -1;
	if (date1 < date2) return 1;
	return 0; 
}

// critere de tri : comparaison des items par date et heure
function cmpItemByDates(item1, item2)
{
	var cmp = cmpDates(item1.Date, item2.Date);
	if (cmp != 0)
		return cmp;
		
	var hhmm;
	var hour1 = 0;
	var hour2 = 0;
	if (item1.Hour)
	{
		hhmm = item1.Hour.split(":");
		hour1 = eval(hhmm[0])*100+eval(hhmm[1]);
		if (item2.Hour)
		{
			hhmm = item2.Hour.split(":");
			hour2 = eval(hhmm[0])*100+eval(hhmm[1]);
			if (hour1 > hour2) return -1;
			if (hour1 < hour2) return 1;
		}
	}
	return 0;
}

// critere de tri : comparaison des items par nom
function cmpItemByNames(item1, item2)
{
	if (item1.name > item2.name) return 1;
	if (item1.name < item2.name) return -1;
	return 0;
}

// Tri par ordre decroissant, avec un nombre max d elements
function triDates(t, maxItems, fctTri)
{
	if (t == null) return;
	
	// Tri par ordre alphabetique decroissant -> tri par date decroissante
    t.sort(eval(fctTri));
	
	if (maxItems>0 && t.length>maxItems)
		t.length = maxItems;
}

// remplace l'adresse du serveur selon l'adresse IP d'origine
function replaceServerUrl(url)
{
	if (webServerUrl == null)
		if (vnConfig.getHost == null)
			webServerUrl = "";
		else
		{
			var webServerProtocol = vnConfig.getProtocol(vnUser.ipAddress, "web");
			webServerUrl = ((webServerProtocol != null) ? webServerProtocol : "http")+"://"+window.location.host+"/"+vnConfig.getAppli(vnUser.ipAddress, "web");
		}

	if (webServerUrl == "")
		return url;
		
    var begin = url.indexOf('//');
	var end = url.indexOf('/', begin+2);
	end = url.indexOf('/', end+1);
	if (begin != -1 && end != -1)
		return (webServerUrl + url.substring(end));
	else
		return url;
}

//Fonction de récupération des paramètres GET de la page
//Array Tableau associatif contenant les paramètres GET
function extractUrlParams(){
	var t = location.search.substring(1).split('&');
	var f = [];
	for (var i=0; i<t.length; i++){
		var x = t[ i ].split('=');
		f[x[0]]=x[1];
	}
	return f;
}
