/*
Scripts by 2nice4u.net "Morgan" <its2nice4u@hotmail.fr>
Last modification: 22/12/07
*/

var nav=navigator.appName.substring(0,3);
var ver=navigator.appVersion.substring(0,1);
var client_width=null;
var client_height=null;
var design=readCookie("design");
var couleurPub=null;
var cookiePlayList=readCookie("playlist");
var nbClipsMaxPlayList=10;
var cgiDir="cgi/";
var idClipsCookie=new Array();
var couleurXiti=null;


if (design=="vert")
{
	couleurPub="24932F";
	couleurXiti="v";
}
else if (design=="rouge")
{
	couleurPub="AA0000";
	couleurXiti="r";
}
else
{
	couleurPub="003366";
	couleurXiti="b";
}

// affectation de la largeur et hauteur de l'écran du client en fonction du navigateur
if (nav=="Net")
{
	client_width=innerWidth;
	client_height=innerHeight;
}
else
{
	client_width=screen.width;
	client_height=screen.height;
}

// récupère les id situés dans le cookie
if (cookiePlayList!=null)
{
	var tempCP=cookiePlayList.split("/");
	for (var i=0; i<tempCP.length-1; i++)
		idClipsCookie[i]=tempCP[i];
}

// recherche une valeur dans un array, si la valeur est trouvée retourne sa position sinon -1
Array.prototype.in_array=function (valeur)
{
	var trouve=false;
	var i=0;
	
	while (!trouve && i<this.length)
	{
		if (this[i]==valeur)
			trouve=true;
		else
			i++;
	}
	
	if (i==this.length)
		return -1;
	else
		return i;
}

Array.prototype.erase=function ()
{
	while (this.length>0)
	{
		this.pop();
	}
};

// ajouter le site aux favoris
function addFavoris()
{
	var titre_site="Clip2Star - Tous mes clips préférés";
	var url_site="http://www.clip2star.com";
	
	if (nav=='Mic' && ver>=4) // Internet Explorer
		window.external.AddFavorite(url_site, titre_site);
	else // Mozilla
		window.sidebar.addPanel(titre_site, url_site, "");
}

// montrer ou cacher une div
function montrerCacher(id)
{
	var div=document.getElementById(id);
	
	if (div.style.display=="block")
		div.style.display="none";
	else
		div.style.display="block";
	
	var bouton=document.getElementById(id+"_bouton");
	if (bouton.src=="http://www.clip2star.com/images/design/plus.gif")
		bouton.src="http://www.clip2star.com/images/design/moins.gif";
	else
		bouton.src="http://www.clip2star.com/images/design/plus.gif";
}

// états possibles d'un XMLHttpRequest
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;

// création d'un objet XMLHttpRequest
function getXMLHttpRequest()
{
	var xhr=null;
	
	if (window.XMLHttpRequest) // Mozilla, Safari
		xhr=new XMLHttpRequest();
	else if (typeof ActiveXObject!="undefined") // Internet Explorer
		xhr=new ActiveXObject("Microsoft.XMLHTTP");
	
	return xhr;
}

// actualise le design par celui donné en paramètre
function changeDesign(newDesign)
{
	var xhr=getXMLHttpRequest();
	if (xhr)
	{
		design=newDesign;
		
		xhr.open("GET", cgiDir+'changer_design.php?design='+newDesign, true);
		xhr.send(null);
		xhr.onreadystatechange=function ()
		{
			if (xhr.readyState==READY_STATE_COMPLETE)
				window.history.go(0);
		};
		return true;
	}
}

function getValeurCookie(offset)
{
	var endstr=document.cookie.indexOf (";", offset);
	
	if (endstr==-1)
		endstr=document.cookie.length;
		
	return unescape(document.cookie.substring(offset, endstr)); 
}

function readCookie(nom)
{
	var arg=nom+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	var continuer=true;
	
	while (i<clen && continuer)
	{
		var j=i+alen;
		
		if (document.cookie.substring(i, j)==arg)
			return getValeurCookie(j);
			
		i=document.cookie.indexOf(" ", i)+1;
		if (i==0)
			continuer=false;
	}
	
	return null; 
}

function createCookie(nom, valeur)
{
	var argv=createCookie.arguments;
	var argc=createCookie.arguments.length;
	
	var currentDate=new Date();
	var expires=new Date(currentDate.getFullYear()+1, currentDate.getMonth(), currentDate.getDate());
	expires.toGMTString();
	
	document.cookie=nom+'='+escape(valeur)+
	'; expires='+expires.toGMTString()+'; path=/';
}

// ajoute un clip dans le cookie playlist
function addClipToPlayList(idDiv, idClip, verbose)
{
	var message=null;
	
	if (isInPlayList(idClip))
	{
		if (verbose)
			message='Ce clip est déjà dans votre PlayList.';
		else
			message='';
	}
	else if (idClipsCookie.length>=nbClipsMaxPlayList)
	{
		if (verbose)
			message='Votre PlayList est pleine.';
		else
			message='Plein';
	}
	else
	{
		idClipsCookie.push(idClip);
		
		createCookie('playlist', getValueForCookiePlayList());
		
		if (verbose)
			message='Ce clip a bien été ajouté à votre PlayList.';
		else
			message='Ajouté';
	}
	
	document.getElementById(idDiv).innerHTML=message;
}

// retire un clip dans le cookie playlist
function removeClipFromPlayList(idDiv, idClip, verbose)
{
	var message=null;
	
	if (isInPlayList(idClip))
	{
		idClipsCookie.splice(idClipsCookie.in_array(idClip), 1);
		
		createCookie('playlist', getValueForCookiePlayList());
		
		if (verbose)
			message='Ce clip a bien été retiré de votre PlayList.';
		else
			message='Retiré';
	}
	else
	{
		if (verbose)
			message='Ce clip n\'était pas dans votre PlayList.';
		else
			message='';
	}
	
	document.getElementById(idDiv).innerHTML=message;
}

// renvoie la chaîne de caractère constituant le cookie de la playlist
function getValueForCookiePlayList()
{
	var stringIdClips="";
	for (var i=0; i<idClipsCookie.length; i++)
		stringIdClips+=idClipsCookie[i]+'/';
	
	return stringIdClips;
}

// récupère la playlist depuis le cookie et l'affiche dans la liste indiquée (si temp==true c'est que l'on est en train de créer la playlist)
function loadPlayList(idList, temp)
{
	if (cookiePlayList!=null)
	{
		var liste=document.getElementById(idList);
		
		var xhr=getXMLHttpRequest();
		
		if (xhr)
		{
			xhr.open("GET", cgiDir+"get_clips_playlist.php?playlist="+cookiePlayList+"&nocache="+Math.random(), true); // on récupère les artistes et titre de la playlist
			xhr.send(null);
			xhr.onreadystatechange=function ()
			{
				var optgroup=document.createElement('optgroup');
				
				if (xhr.readyState==READY_STATE_COMPLETE)
				{
					var optionsInnerHTML=xhr.responseText.split("//"); // on distincte les infos de chaque clip
					
					var nbClipsAAjouter=optionsInnerHTML.length-1; // nombre de clips à ajouter
					
					if (nbClipsAAjouter>nbClipsMaxPlayList)
						nbClipsAAjouter=nbClipsMaxPlayList;
					
					if (temp) // on est en phase de création de la playlist donc on met à jour le nombre de clips déjà présents
					{
						nbClipsAjoutes=nbClipsAAjouter;
						optgroup.label="PlayList";
					}
					else
						optgroup.label="PlayList ("+nbClipsAAjouter+")";
					
					liste.innerHTML=null;
					liste.appendChild(optgroup);
					
					for (var i=0; i<nbClipsAAjouter; i++) // on créer les options avec les données récupérées
					{
						var option=document.createElement('option');
						option.value=idClipsCookie[i];
						option.innerHTML=optionsInnerHTML[i];
						liste.appendChild(option);
					}
				}
				else
				{
					optgroup.label="Chargement de votre PlayList";
					liste.innerHTML=null;
					liste.appendChild(optgroup);
				}
			};
		}
	}
}

// redirige vers la page du clip correspondant
function regarderClip()
{
	var idClip=document.getElementById('selectPlayList').options[document.getElementById('selectPlayList').selectedIndex].value;
	
	var xhr=getXMLHttpRequest();
	
	if (xhr)
	{
		xhr.open("GET", cgiDir+"get_url_clip.php?id_clip="+idClip, true);
		xhr.send(null);
		
		xhr.onreadystatechange=function ()
		{
			if (xhr.readyState==READY_STATE_COMPLETE)
			{
				document.location.href=xhr.responseText;
			}
		}
	}
}

function displayAddOrRemoveFromPlaylist(idClip, verbose)
{
	if (isInPlayList(idClip))
	{
		if (verbose)
			var texte="Retirer ce clip de ma PlayList";
		else
			var texte="Retirer";
		
		document.write('<span id="addOrRemoveClipFromPlayList_'+idClip+'" class="addOrRemoveClipFromPlayList" onclick="removeClipFromPlayList(\'addOrRemoveClipFromPlayList_'+idClip+'\', '+idClip+', '+verbose+');">'+texte+'</span>');
	}
	else
	{
		if (verbose)
			var texte="Ajouter ce clip à ma PlayList";
		else
			var texte="Ajouter";
		
		document.write('<span id="addOrRemoveClipFromPlayList_'+idClip+'" class="addOrRemoveClipFromPlayList" onclick="addClipToPlayList(\'addOrRemoveClipFromPlayList_'+idClip+'\', '+idClip+', '+verbose+');">'+texte+'</span>');
	}
}

// renvoie true si le clip indiqué est dans la playlist false sinon
function isInPlayList(idClip)
{
	if (idClipsCookie.in_array(idClip)==-1)
		return false;
	else
		return true;
}

// htmlentities comme php mais en simplifié
function htmlentities(string)
{
	string=string.replace(/&/g, "&amp;");
	string=string.replace(/</g, "&lt;");
	string=string.replace(/>/g, "&gt;");
	string=string.replace(/"/g, "&quot;");
	string=string.replace(/\n/g, "<br />");
	
	return string;
}