/**
 * Troncature automatique des textes sur une ligne avec ajout de '...' à la fin
 *
 */
function autoCut()
{
	// Gestion des autocut
	$(".autoCut").autoCutText({maxHeight: '1l'});
}

function lineRollOver()
{
	// Gestion des rollover des lignes de résultats sauf sur la ligne header des resultats
	$('#track_results .line + :not(#track_results .header),.selections_content .line').mouseover
	(
		function()
		{
			this.className = 'line over';
		}
	);

	// Gestion des rollout des lignes impaires
	$('.line.odd').mouseout
	(
		function()
		{
			this.className = 'line odd';
		}
	);

	// Gestion des rollout des lignes paires
	$('.line.even').mouseout
	(
		function()
		{
			this.className = 'line even';
		}
	);
}

/**
 * Envoi d'un SMS
 *
 * @param param : tableau de paramètres
 * @param - sms_type : type de sms ( config / download ota )
 *
 * @return boolean : sms envoyé oui ou non
 *
 */
function sendSMS(param)
{
	var main_response;
	$.ajax
	(
		{
			url : ajaxRoot+'ajax_send_sms.php',
			type : 'POST', // envoit en post
			async : false, // force la synchronisation
			data : param, // relaye les parametres passés à la fonction
			dataType: 'json', // retour au format json
			success : function(response) // recupère la reponse de l'appel ajax
			{
				main_response = response;
			}
		}
	);
	return main_response.success;
}

////////////////////////////////////////////////////////
// vérification de l'ouverture du lien envoyé par SMS //
////////////////////////////////////////////////////////
/**
 * Vérifie si le SMS de configuration a été clické après son envoi
 *
 * @return boolean : SMS cliqué ou non
 */
function checkMobileProfile()
{
	var main_response;
	$.ajax
	(
		{
			url : ajaxRoot+'ajax_check_config_sms_read.php',
			type : 'POST', // envoit en post
			async : false, // force la synchronisation
			dataType: 'json', // retour au format json
			success : function(response) // recupère la reponse de l'appel ajax
			{
				main_response = response;
			}
		}
	);
	return main_response.success;
}

////////////////////////////////////////////
// Lance une fonction sur retour charriot //
////////////////////////////////////////////
/**
 * Détecte si la touche Entrée a été appuyée et lance une fonction avec ses arguments
 *
 * @param varEvent : objet dont on surveille l'évènement
 * @param varFunction : fonction à lancer sur "Entrée"
 * @param varArguments : paramètres à passer à la fonction
 *
 * @return false
 */
function submitOnEnter(varEvent,varFunction,varArguments)
{
	NavName = navigator.appName;
	if( NavName=="Microsoft Internet Explorer" )
		var key = varEvent.keyCode;
	else
		var key = varEvent.which;

	if ( key==13 )
	{
		setTimeout(varFunction+'("'+varArguments+'")', 100);
	}

	return false;
}

///////////////
// préécoute //
///////////////
function trackPreview(param)
{
	$.ajax
	(
		{
			// Url de création du html du block message : un block player à gauche, un block image à droite
			url : ajaxRoot+'ajax_display_track_preview.php',
			async : false, // On force le mode synchrone
			cache : false,
			data : param, // relaye les parametres pass�s à la fonction
			success : function(html)
			{
				// Charge le code html créé dans le bloc message
				$("#message").html(html);

				// Charge le flash de préécoute avec ses parametres dans le bloc player
				$("#player").flashembed
				(
					{
						src : flashRoot+'player.swf?autostart=1&volume=100&wmode=opaque&quality=high&mp3='+param['previewFilePath'],
						width : param['playerWidth'],
						height : param['playerHeight'],
						allowScriptAccess : 'always'
					}
				);
			}
		}
	);
}

function mobile_download_type_save(param)
{
	var main_response;
	$.ajax
	(
		{
			url : ajaxRoot+'ajax_save_mobile_download_type.php', // url de construction du contenu
			type : 'POST', // envoit en post
			async : false, // force la synchronisation
			data : param, // relaye les parametres passés à la fonction
			dataType: 'json', // retour au format json
			success : function(response) // recupère la reponse de l'appel ajax
			{
				main_response = response;
			}
		}
	);

	return main_response;
}

function options_display()
{
	$('#track_results').load(ajaxRoot+'ajax_display_options.php');
}

/**
 *
 * @param param tableau de parametre
 * @return
 */
function options_save(param)
{
	// Tente la sauvegarde des options
	response = mobile_download_type_save(param);

	// Affiche le message de retour
	alert(response.message);

	// Si enregistrement ok, retour à l'affichage d'accueil
	if(response.success)
		track_search();
}

////////////////////////////////
// Recherche de contenu titre //
////////////////////////////////
// En entrée : param [array] : le tableau de sparametres à relayer aux fonction ajax d'affichage
// Teste la présence du bloc cible dans le bloc container
// Si le bloc cible n'existe pas, on crée la structure cible et on rappelle la fonction
// Sinon appelle la fonction et rafraichit le bloc cible avec les resultats de la page ajax
function track_search(param)
{
	var containerBlock	= 'contenucentral'; // Il s'agit de la valeur d'id du block contenant le block cible, le contenant parent
	var targetBlock		= 'track_results'; // Il s'agit de la valeur d'id du block cible, contenant le resultat html de la fonction ajax

	var test = document.getElementById(targetBlock); // Le div cible est là ?

	if (test==null) // Bloc cible non présent, il faut d'abord mettre à dispo la structure html cible dans le container principal
	{
		$("#"+containerBlock).load // charge la structure cible dans la structure container
		(
			ajaxRoot+'ajax_init_playlist_content.php',
			function()
			{
				// Affichage / Refresh des sélections
				$.ajax
				(
					{
						url : ajaxRoot+"ajax_display_selections.php", // url de construction du contenu
						type : "POST", // envoit en post
						success : function(html) // en cas de succès, recupere le html et l'inject dans le block cible
						{
							// Affichage des résultats dans le bloc cible
							$("#selections").html(html);

							// Lancement effectif de la fonction de recherche
							track_search(param);
						}
					}
				);
			}
		);
	}
	else // Bloc cible présent, la structure cible est lé et on peut la rafraichir
	{
		$.ajax
		(
			{
				url : ajaxRoot+"ajax_display_track_result.php", // url de construction du contenu
				type : "POST", // envoit en post
				async : false, // force la synchronisation
				data : param, // relaye les parametres passés à la fonction
				success : function(html) // en cas de succès, recupere le html et l'inject dans le block cible
				{
					// Affichage des résultats dans le bloc cible
					$('#'+targetBlock).html(html);

					// Gestion de l'autoCut
					autoCut();

					// Gestion des rollover des lignes de résultats
					lineRollOver();
				}
			}
		);
	}
}


function thickbox_open_with_param(type,param)
{
	var target;

	switch(type)
	{
		case 'assistant_config' :
			target = webRoot+'assistant_config.php';
			window_param = '&KeepThis=true&TB_iframe=true&height=470&width=747&modal=true';
		break;

		case 'assistant_init' :
			target = webRoot+'assistant_init.php';
			window_param = '&KeepThis=true&TB_iframe=true&height=470&width=747&modal=true';
		break;

		case 'mobile_download_type_choice' :
			target = webRoot+'mobile_download_type_choice.php';
			window_param = '&KeepThis=true&TB_iframe=true&height=470&width=747&modal=true';
		break;
	}
	tb_open_new(target+'?'+param+window_param);
}

function trackerLog(param)
{
	$.ajax
	(
		{
			url : ajaxRoot+"ajax_tracker.php",
			type : "POST",
			async : true,
			data : param
		}
	);
}



function check_download_context_and_fire(param)
{
	// Récupère le contexte utilisateur pour le téléchargement
	var download_context;
	$.ajax
	(
		{
			url : ajaxRoot+'ajax_get_download_context.php',
			type : "POST",
			async : false,
			data : param,
			dataType: 'json', // retour au format json
			success	: function(response) // recupère la reponse de l'appel ajax
			{
				download_context = response;
			}
		}
	);

	// Téléchargement mobile et choix du type requis : on propose le choix en ouvrant la fenete correspondante
	if (download_context.download_type =='mobile' && download_context.mobile_download_type_display)
	{
		thickbox_open_with_param('mobile_download_type_choice','warehouse_id='+param['warehouse_id']+'&mobile_download_type='+download_context.mobile_download_type);
		//tb_open_new('mobile_download_type_choice.php?warehouse_id='+param['warehouse_id']+'&mobile_download_type='+download_context.mobile_download_type+'&'+download_context.thickbox_mobile_download_choice_params);
		trackerLog({a:'7',b:'4'});
	}
	// Téléchargement PC ou Téléchargement mobile sans choix requis : on tente le download
	else
	{
		download_content
		(
			{
				'warehouse_id' : param['warehouse_id'],
				'type' : download_context.download_type,
				'mobile_download_type' : download_context.mobile_download_type,
				'phone_id' : download_context.phone_id
			}
		);
	}
}


/////////////////////////////////////////////////
// Function de déclenchement du téléchargement //
/////////////////////////////////////////////////

// En entrée : param [array] :
// - string warehouse_id	=> id crypté du contenu
// - string download_type	=> type de telechargement PC / Mobile
// - string mobile_download_type	=> type de telechargement mobile si c'est le cas (ota / via pc)
// - string phone_id => id du téléphone (ne sert que pour le téléchargement mobile via pc)

function download_content(param)
{

	// Download mobile via PC et pas d'information sur le profil mobile du client : on doit passer par l'assistant
	if ( param['type'] == 'mobile' && param['mobile_download_type'] == 1 &&  !( param['phone_id'] > 0 ) )
	{
		thickbox_open_with_param('assistant_config','warehouse_id='+param['warehouse_id']+'&mobile_download_type='+param['mobile_download_type']);
		trackerLog({a:'7',b:'4'});
	}
	else
	{
		tb_remove();
		$.ajax
		(
			{
				url : ajaxRoot+'dl.php',
				type : "POST",
				async : true,
				data : param,
				success	: function(response)
				{
					if (response.indexOf("http")>=0)
						window.location=response;
					else
						// Affichage du message adequat
						alert(response);
				}
			}
		);
		xt_med('C','34','titre::telecharger_'+param['type'],'N');
		trackerLog({a:'2',b:'6',c:param['warehouse_id']});
	}
}

////////////////////////////////
// Abonnement à la newsletter //
////////////////////////////////
function addNewsletter(param)
{
	$.ajax
	(
		{
			url : ajaxRoot+"ajax_newsletter.php",
			type : "POST",
			async : false,
			data : param,
			success : function(html) // recupère la reponse de l'appel ajax
			{
				if(html)
				{
					alert(html);
					param['_result'] = false;
				}
				else
				{
					document.getElementById("mail_newsletter").value = "Inscription confirmée";
					param['_result'] = true;
				}
				return param['_result'];
			}
		}
	);

	return (param['_result']);
}

/////////////////////////////////////////////////////
//Fonction de vérification du formulaire de login //
/////////////////////////////////////////////////////
function checkLoginParam(msisdn,password)
{
	var error_message = '';
	if ( ! ( msisdn.length == 10 && isNumeric(msisdn) && msisdn.indexOf("0") == 0 ) )
		error_message += " - Votre numéro de mobile doit comporter 10 chiffres et commencer par 0.\n";

	if ( ! (password.length == 4 && isNumeric(password) ) )
		error_message += " - Votre code secret doit comporter 4 chiffres.\n";

	if (error_message != '')
	{
		alert("Il y a des erreurs :\n"+error_message);
		return false;
	}
	else
		return true;
}