///////////////////////////////////
// Debut Script
///////////////////////////////////
var idaChat = 0;
var leftArrow;
var rightArrow;
var liste;
var spinnerOnlineContainer;
var spinnerOnline;
var displayListe;
var noModelOnline;
var spinner;

var portraitModel = $("#portraitModel");
var imgTmpPortraitModel;
var waitingPortraitModel = $("#waitingPortraitModel");
//FORCE Valeur
// width:220px;
// height:120px;
var spinnerPortraitModel;
var spinnerPortraitContainer;

var offset = 0;
var nbTotal = 0;
var nbParPage = 9;//depending on display size...
//list objet content info model
var listModel = new Array();
//list image mini model
var listMini  = new Array();

var timerMonitor;

$(document).ready(function(){
	//alert($('html').innerHeight());

	leftArrow = $("#leftArrow");
	rightArrow = $("#rightArrow");
	liste = $("#liste");
	spinnerOnline = $("#spinnerOnline");
	spinnerOnlineContainer = $("#spinnerOnlineContainer");
	displayListe = $("#displayListe");
	noModelOnline = $("#noModelOnline");

	//spinner = new Spinner('spinnerOnline', spinnerOnline.css('color'), spinnerOnline.width(), spinnerOnline.height());

	portraitModel = $("#portraitModel");


	leftArrow.click(getPrec);
	rightArrow.click(getNext);

	//spinnerOnline.hide();
	displayListe.hide();
	noModelOnline.hide();

	nbParPage = computeNbParPage() ;
	initListMini();
	initClickList();
	recupListe(offset);

	initHiddenDisplays();

	if(isValidMajeur())
	{
	}
	else
	{
		setTimeout(displayCertifMajeur, 3000) ;
	}


	timerMonitor = setInterval(Monitor(), 1000);
});
///////////////////////////////////
// Fin Script
///////////////////////////////////

///////////////////////////////////
// Debut definition des fonctions
///////////////////////////////////
function initHiddenDisplays()
{
	//PortraitModel
	portraitModel.hide();
	waitingPortraitModel.hide();
	var img = new Image ();
	img.loading = false;
	img.prepared = false;
	img.ida = 0;
	img.onload = function () {
		img.loading = false;
		showPortraitModel();
	};
	img.onabort = function () {
		img.loading = false;
		showPortraitModel();
	};
	img.onerror = function () {
		img.loading = false;
		showPortraitModel();
	};
	imgTmpPortraitModel = img;
}
function showPortraitModel()
{
	$("#spinnerPortraitContainer").fadeOut('fast', function(){
		stopSpinner(spinnerPortraitModel);
		//alert('[DEBUG::var 6]');
		$("#portraitModel").show("slow");

		setTimeout("$(startChat());", 1000);
	});
}

function startChat()
{
	window.location.href  = './index.php?p=chat&ida='+idaChat;
}

function validMajeur()
{
	$.closeDOMWindow();
	$.get(
	CONSTANTES.acces_base,
	{
		action:'validMajeur',
	},
	null);
}
function computeNbParPage()
{

	var dMdlWidth = 74+4;
	var dMdlHeight = 70+4;

	var dlWidth = $('#online').width() - 2 * CONSTANTES.arrowWidth ;
	var nbHorizontal = parseInt( dlWidth / dMdlWidth ) ;
	var paddingHorizontal = parseInt( ( dlWidth - dMdlWidth*nbHorizontal )/2 ) ;
	var dlHeight = $('#online').height() ;//*
	var nbVertical = parseInt( dlHeight / dMdlHeight ) ;//*
	var spinnerLeft = parseInt( (dlWidth - spinnerOnlineContainer.width() )/2 ) ;//*

	$('#displayListe').width(dlWidth);
	$('#displayListe').height(dlHeight);
	$('#displayListe').css('padding-left', paddingHorizontal );
	leftArrow.height(dlHeight);
	rightArrow.height(dlHeight);

	spinnerOnlineContainer.height(dlHeight);
	spinnerOnlineContainer.css('padding-left', spinnerLeft);
	return nbHorizontal * nbVertical;
}
function isValidMajeur()
{
	var strValidMajeur = $("#VALIDMAJEUR").text();
	if(strValidMajeur.length > 0){
		if( strValidMajeur== 'true' )
		{
			return true;
		}
	}
	return false;
}


function initClickList()
{
	var i=0;
	for(i;i<nbParPage;i++)
	{
		$("#model"+i).click(clickList);
	}
}
function clickList()
{
	var modelid = $(this).attr('id');
	var modelPseudo = $(this).find('span').text() ;
	//on enleve le prefixe model
	var id = parseInt(modelid.substring(5));

	idaChat = listModel[id].ida;
	//alert("clickList:"+id);
	$.openDOMWindow({
		loader:0,
		modal:1,
		windowSourceID:'#hiddenModelStartChat',
		windowPadding: 0,
		width:240,
		height:230,
		borderColor:$('.startChatModal').css('border-top-color'),
		windowBGColor:$('body').css('background'),
	});
	portraitModel = $("#portraitModel");
	portraitModel.hide(0, function(){
		$("#portraitPseudo").text(modelPseudo);
		$("#spinnerPortraitContainer").fadeIn("fast", function(){
			portraitModel.attr('src',"./getPortrait.php?id="+idaChat);
			waitingPortraitModel = $("#waitingPortraitModel");
			//FORCE Valeur
			// width:220px;
			// height:120px;
			spinnerPortraitModel = new Spinner('waitingPortraitModel', waitingPortraitModel.css('color'), CONSTANTES.spinnerWidth, CONSTANTES.spinnerHeight);
			startSpinner(spinnerPortraitModel);

			imgTmpPortraitModel.ida = idaChat;
			imgTmpPortraitModel.src = "./getPortrait.php?id="+idaChat ;
		});
	});


	//portraitModel.fadeOut('fast', function(){waitingPortraitModel.fadeIn("slow");});
	//alert('Test');

}
function displayCertifMajeur()
{
	var domWidth = $('.startChatModal').css('width');

	if(domWidth.indexOf('px')>0)
	{
		//il faut retirer les px
		domWidth = domWidth.substring(0, domWidth.indexOf('px') );
	}
	if( domWidth == 0 ){
		//alert('domWidth: '+domWidth+' - cmw'+$("#certifMajeur").css('width')+' - iw'+$('.startChatModal').innerWidth());
		domWidth = 240 ;
		;
	}
	var domHeight = $('.startChatModal').css('height');
	if(domHeight.indexOf('px')>0)
	{
		//il faut retirer les px
		domHeight = domHeight.substring(0, domHeight.indexOf('px') );
	}
	if( domHeight == 0 ){
		//alert('domWidth: '+domWidth+' - cmw'+$("#certifMajeur").css('width')+' - iw'+$('.startChatModal').innerWidth());
		domHeight = 230 ;
		;
	}
	$.openDOMWindow({
		loader:0,
		modal:1,
		windowSourceID:'#hiddenCertifMajeur',
		windowPadding: 0,
		width:domWidth,
		height:domHeight,
		borderColor:$('.startChatModal').css('border-top-color'),
		windowBGColor:$('body').css('background'),
	});
	//alert($('.startChatModal').css('background'));
}
function initListMini()
{
	var i=0;
	for(i;i<nbParPage;i++)
	{
		var img = new Image ();
		img.loading = false;
		img.prepared = false;
		img.onload = function () {
			img.loading = false;
			if( isListMiniLoading() == false )
			{
				recupListMiniDone();
			}
		};
		img.onabort = function () {
			img.loading = false;
			if( isListMiniLoading() == false )
			{
				recupListMiniDone();
			}
		};
		img.onerror = function () {
			img.loading = false;
			if( isListMiniLoading() == false )
			{
				recupListMiniDone();
			}
		};
		listMini[i] = img;
	}
}
function prepareListMini()
{
	var i=0;
	for(i;i<nbParPage;i++)
	{
		listMini[i].loading  = false;
		listMini[i].prepared = false;
	}
}
function setMiniAsEmpty(i)
{
	listMini[i].loading = false;
	listMini[i].prepared = true;
}
function setMiniSrc(i, src)
{
	listMini[i].prepared = true;
	listMini[i].src = src;
}
function isListMiniLoading()
{
	var i=0;
	for(i;i<nbParPage;i++)
	{
		if(listMini[i].prepared == true)
		{
			//src image a ete modifie
		}
		else
		{
			//src image n'a pas encore ete modifie
			return true;
		}
	}
	//Toutes les src des images ont bien ete modifié
	i=0;
	for(i;i<nbParPage;i++)
	{
		if(listMini[i].loading ==true)
		{
			return true;
		}
	}
	//Aucune images n'est en train de charger
	i=0;
	for(i;i<nbParPage;i++)
	{
		listMini[i].prepared = false;
	}
	return false;
}
function recupListMiniDone()
{
	stopSpinner(spinner);
	//spinnerOnline.fadeOut('fast',
	$("#spinnerOnlineContainer").fadeOut('fast',
		function(){
			//$("#displayListe").fadeIn("fast", displayMini(0));
			$("#displayListe").fadeIn("fast", displayMinis());
		}
	);
	recupEnCours = false;

	//alert('recupListMiniDone');
	//displayListe.show("fast", displayMini(0));
}

/**
 *
 * @access public
 * @return void
 **/
function displayMinis(){
	var i=0;
	for(i;i<nbParPage;i++)
	{
		if(listModel[i].set)
		{
			$("#model"+i).click(clickList);
			if(i+1<nbParPage){
				//on affiche la div et on passe a l'affichage de la suivante
				$("#model"+i).fadeIn('fast');
			}
			else
			{
				//c'est la derniere div
				$("#model"+i).fadeIn('fast');
				window.scrollTo(0, 1);
			}
		}
	}

}

function displayMini(i)
{
	if(listModel[i].set)
	{
//			displayListe.append(
//				'<div id="model'+i+'" class="modelDispl">'
//				+'<img src="'+listModel[i].urlMini+'" alt="['+listModel[i].pseudo+']"/>'
//				+'<div class="modelPseudo"><span>'+listModel[i].pseudo+'</span></div>'
//				+'</div>'
//			);
		$("#model"+i).click(clickList);
//			$("#model"+i+" img").attr('src', listModel[i].urlMini);
//			$("#model"+i+" img").attr('alt', listModel[i].pseudo);
//			$("#model"+i+" span").text(listModel[i].pseudo)
		if(i+1<nbParPage){
			//on affiche la div et on passe a l'affichage de la suivante
			$("#model"+i).fadeIn(30, function(){
				displayMini(i+1);
			});
		}
		else
		{
			//c'est la derniere div
			$("#model"+i).fadeIn('fast');
			window.scrollTo(0, 1);
		}
	}
}
//Fonction lance qd on clique sur le div a gauche
function getPrec()
{
	if( (offset-nbParPage) >=0 )
	{
		recupListe(offset-nbParPage);
	}
}
//Fonction lance qd on clique sur le div a droite
function getNext()
{
	if( (parseInt(offset)+nbParPage) < nbTotal )
	{
		recupListe(offset+nbParPage);
	}
}
//Modifie affichage du nombre de modele en ligne
function setNBOnline(nb)
{
	$("#onlineCount").text(nb+"");
}

// Lance le telechargement du fichier XML contenant la liste des modele en
// ligne
var recupEnCours = false;
var recupStartDate = null;
function recupListe(ofs)
{
	if(recupEnCours) return ;
	recupEnCours = true ;
	recupStartDate = new Date();
	nbParPage = computeNbParPage() ;
	$("#displayListe").fadeOut('slow', function(){
		$("#displayListe").html('');
		$("#spinnerOnlineContainer").fadeIn('fast', function(){
			spinner = new Spinner('spinnerOnline', spinnerOnline.css('color'), spinnerOnline.width(), spinnerOnline.height());
			startSpinner(spinner);
		});
		//recupere la liste
		//xldebug('GET:'+CONSTANTES.acces_base+' - action:online - offset:'+ofs+' - nbpp:'+nbParPage);
		$.get(
			CONSTANTES.acces_base,
			{
				action:'online',
				offset:ofs,
				nb:nbParPage
			},
			recupListeDone);
	});
}
//Parsing du fichier XML recu
function recupListeDone(data){
	var onlineData = $(data).find('ONLINE');
	nbTotal = parseInt($(onlineData).attr("total"));
	offset = parseInt($(onlineData).attr("offset"));
	if('' == nbTotal) alert('no data!!!');
	setNBOnline(nbTotal);
	if(nbTotal>0){
		var i=0;
		$(data).find('MODEL').each(function(){
			listModel[i] = {
				ida:$(this).attr('ida'),
				pseudo:$(this).attr('pseudo'),
				urlMini:$(this).attr('mini'),
				//urlMini:"./getMini.php?id="+$(this).attr('ida'),
				urlPortrait:$(this).attr('urlportrait'),
				urlShow:$(this).attr('urlshow'),
				set:true
			}
			$('#displayListe').append(
				'<div id="model'+i+'" class="modelDispl" style="display:none;">'
				+'<img src="'+listModel[i].urlMini+'" alt="['+listModel[i].pseudo+']"/>'
				+'<div class="modelPseudo"><span>'+listModel[i].pseudo+'</span></div>'
				+'</div>'
			);
			i++;
		});
		//Si il reste des case vide on enleve le contenu precedent
		for(i;i<nbParPage;i++)
		{
			listModel[i] = { ida:'', pseudo:'', urlMini:'',	urlPortrait:'',	urlShow:'',	set:false};
		}
		setTimeout(recupListMini, 200);
	}
	else{
		stopSpinner(spinner);
		//spinnerOnline.fadeOut('fast', function(){noModelOnline.fadeIn("fast");});
		spinnerOnlineContainer.fadeOut('fast', function(){noModelOnline.fadeIn("fast");});
	}
}
function recupListMini()
{
	for(var i=0;i<nbParPage;i++)
	{
		if(listModel[i].set)
		{
			setMiniSrc(i, listModel[i].urlMini)
		}
		else
		{
			setMiniAsEmpty(i);
		}
	}
}

function orientationChangeHandler()
{
//	alert('orientationChangeHandler');
	nbbeforepage = offset*nbParPage ;
	nbParPage = computeNbParPage() ;
	//offset = (int)(nbbeforepage / nbParPage) ;
	offset = 0;
	initListMini();
	initClickList();
	recupListe(offset);
}

/**
 *
 * @access public
 * @return void
 **/
function Monitor(){
	if(recupEnCours){
		if( null == recupStartDate ){
			//Rien a faire
		}else{
			var currDate = new Date();
			var delay = ( currDate.getTime() - recupStartDate.getTime() );
			if(delay > 15000){
				window.location.reload() ;
			}else{
				//alert('delay:'+delay);
			}
		}
	}
}

///////////////////////////////////
// Fin definition des fonctions
///////////////////////////////////

