/**
 * Ajouter a ma sélection : STEP 1 
 *
 *
 * Appeler par evenement "onclick" sur ajouter a ma selection
 * @param (Object) e : L'evenement du clique de sourie (Mouse Object)
 * @param (Object) o : Les paramètres passé en params lors de l'appel de la fonction 
 */
function addProgToMySelection(e, o)
{
	//Récupération des params...
	id_addTxt = o.id_addTxt;
	codeProgToAdd = o.code_prog;
	id_opeInfoTxt = o.id_opeInfoTxt;

	//Effet sur le texte 'Ajouter a ma selection' pour afficher 'Ajout en cours...'
    var oldTxt = new YAHOO.util.Anim(id_addTxt, { opacity: { to: 0 } }, 0.5, YAHOO.util.Easing.easeOut);
    var newTxt = new YAHOO.util.Anim(id_opeInfoTxt, { opacity: { to: 1 } }, 0.5, YAHOO.util.Easing.easeIn);
    oldTxt.animate();
    newTxt.animate();	

	//Quand l'evenement est finit, envoie a AJAX du traitement a faire...
	newTxt.onComplete.subscribe(addProgToMySelection_execAJAX, {idopeInfoTxt: id_opeInfoTxt, idaddTxt: id_addTxt, php_paramData: o})
}

/**
 * Ajouter a ma sélection : STEP 2 (appeler par SETP 1, a la fin)
 *
 *
 * Apres l'annimation : exécution Ajax pour traiter la demande (Ajout en base, Update ou rien...)
 * @param (String) status : Le status de l'animation (cf. complete)
 * @param (???) animInfo : Des infos sur l'exécution de l'animation
 * @param (Object) o : Mon objet de paramètre passé en param 
 */
function addProgToMySelection_execAJAX(status, animInfo, o)
{
	idopeInfoTxt = o.idopeInfoTxt;
	idaddTxt = o.idaddTxt;
	php_paramData = o.php_paramData;
	
	//Config Ajax...
	//Timeout de 5 sec...
	var callback = 
	{ 
		success: addProgToMySelection__handleSuccess,
		failure: addProgToMySelection__handleFailure,
		argument: { id_opeInfoTxt: idopeInfoTxt, id_addTxt: idaddTxt, php_paramData: php_paramData},
		timeout: 5000
	};
	sUrl = c_chemin + 'pages/programme/js/ajax_addToSelection.php?code_prog=' + codeProgToAdd;
	YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
}

/**
 * Ajouter a ma sélection : STEP 3 (appeler par SETP 2 - AJAX - Si la connexion a eu lieu)
 *
 *
 * Appeler par AJAX si success 
 */
var addProgToMySelection__handleSuccess = function(o)
{
	if(o.responseText !== undefined)
	{ 
		//o.responseText -> Les données générer par PHP
		//o.argument.id_opeInfoTxt -> L'id du div a mettre a jour...
    	
    	dataPHPJSON = o.responseText;
    	id_opeInfoTxt = o.argument.id_opeInfoTxt; //le texte "Ajout en cours..."
    	id_addTxt = o.argument.id_addTxt;	//Le texte "Ajouter a ma selection" qu'il faut changer par la reponse PHP

    	pattern = /^\{.*\}$/i;
    	if(pattern.test(dataPHPJSON))
    	{
    		//Récupération des params de PHP (passer lors du clique sur "Ajouter a ma selection" SETP 0)
    		php_paramData = o.argument.php_paramData;
	    	id_imgAction_div1 = php_paramData.id_imgAction_div1;
    		id_imgAction_div2 = php_paramData.id_imgAction_div2;
    		//Foncionnement attendu coté PHP - l'ajout peut avoir lui ou non
    	
			o_dataPHP = eval('(' + dataPHPJSON + ')');
			
			dataPHP = o_dataPHP.php_res.php_data;
			php_hasNoError = o_dataPHP.php_res.php_hasNoError;
			
			//Mise a jour du texte "Ajouter a ma selection" par la réponce PHP
			document.getElementById(id_addTxt).innerHTML = dataPHP;
			
			//Si l'ajout a eu lieu... On supprime le listner...
			if(php_hasNoError)
			{
				//Suppression du listener, car on a eu la réponce (cf. il peut etre reactiver) s'il y a eu une erreur PHP
				YAHOO.util.Event.removeListener([id_imgAction_div1, id_imgAction_div2, id_opeInfoTxt, id_addTxt], 'click');

				//Changement de l'image... success
				document.getElementById(id_imgAction_div2).src = php_paramData.img_addOK;
				
				//Changement du curseur... sur les deux div...
				document.getElementById(php_paramData.id_blockData1).style.cursor = "default";
				document.getElementById(php_paramData.id_blockData2).style.cursor = "default";
				
				//Suppression du listener 'mouseover' pour que le texte n'est plus de lien...
				YAHOO.util.Event.removeListener([id_imgAction_div1, id_imgAction_div2, id_addTxt, id_opeInfoTxt], 'mouseover');
			}
			else
			{
				//Remise en place du text "Ajouter a ma selection"
				no_reshowAjouterAMaSelection = true;
				
				//Changement de l'image
				document.getElementById(id_imgAction_div2).src = php_paramData.img_addError;
			}
		}
		else
		{
			//Erreur non attendu coté PHP
		
			Dialog.alert("PHP Error, debug BackTrace : <br /><br />" + dataPHPJSON, {windowParameters: {className: "vista", popup_status: "error", title: ""}, okLabel: "OK"});
		}
		    	
	 	//Effet sur le texte 'Ajout en cours...' pour afficher 'LE RESULTAT PHP' et les images...
	 	YAHOO.util.Dom.setStyle(id_imgAction_div2, "opacity", 0);
	    var oldTxt = new YAHOO.util.Anim([id_opeInfoTxt, id_imgAction_div1], { opacity: { to: 0 } }, 0.5, YAHOO.util.Easing.easeOut);
	    var newTxt = new YAHOO.util.Anim([id_addTxt, id_imgAction_div2], { opacity: { to: 1 } }, 0.5, YAHOO.util.Easing.easeIn);
	    oldTxt.animate();   //Le texte "Ajout en cours..."
	    newTxt.animate();	//La réponce de PHP

		if (!php_hasNoError)
	    {
	    	//Le cas ou il faut un Dernier effet, si erreur d'ajout coté PHP...   	
		   	//Quand l'evenement est finit, envoie a AJAX du traitement a faire...
		   	functionForChange = function (status, animInfo, o)
				{
					idopeInfoTxt = o.idopeInfoTxt; //Ajout en cours... (doit devenir "Ajouter a la selection")
					idaddTxt = o.idaddTxt;	//La reponce de PHP 

					//Mise a jour de la reponce PHP pour 'Ajouter a ma selection'				
					document.getElementById(idopeInfoTxt).innerHTML = php_paramData.txt_AjouterAMaSelection;
				
					//Pour Opera
					if(php_paramData.navigator_isOpera)
					{
						document.getElementById(id_imgAction_div1).src = php_paramData.img_add;
					}
				
					var oldTxt = new YAHOO.util.Anim([idaddTxt, id_imgAction_div2], { opacity: { to: 0 } }, 0.5, YAHOO.util.Easing.easeOut);
				    var newTxt = new YAHOO.util.Anim([idopeInfoTxt, id_imgAction_div1], { opacity: { to: 1 } }, 0.5, YAHOO.util.Easing.easeIn);
				    oldTxt.animate(); //La réponce de PHP
				    newTxt.animate(); //Ajouter a ma selection	
				};  
		 	
			newTxt.onComplete.subscribe(functionForChange, {idopeInfoTxt: id_opeInfoTxt, idaddTxt: id_addTxt});
		}
		
		//Pour Opera - Success
		if(php_paramData.navigator_isOpera && php_hasNoError)
		{
			//Le cas ou il faut un Dernier effet, si erreur d'ajout coté PHP...   	
		   	//Quand l'evenement est finit, envoie a AJAX du traitement a faire...
		   	functionForChange = function (status, animInfo, o)
				{
					document.getElementById(id_imgAction_div1).src = php_paramData.img_addOK;
					YAHOO.util.Dom.setStyle(document.getElementById(id_imgAction_div1), "opacity", 1);
				}; 		
		
			newTxt.onTween.subscribe(functionForChange, {idopeInfoTxt: id_opeInfoTxt, idaddTxt: id_addTxt});
		}
		
		//Pour Opera - Error
		if(php_paramData.navigator_isOpera && !php_hasNoError)
		{
			//Le cas ou il faut un Dernier effet, si erreur d'ajout coté PHP...   	
		   	//Quand l'evenement est finit, envoie a AJAX du traitement a faire...
		   	functionForChange = function (status, animInfo, o)
				{
					document.getElementById(id_imgAction_div1).src = php_paramData.img_addError;
					YAHOO.util.Dom.setStyle(document.getElementById(id_imgAction_div1), "opacity", 1);
				}; 		
		
			newTxt.onTween.subscribe(functionForChange, {idopeInfoTxt: id_opeInfoTxt, idaddTxt: id_addTxt});
		}
   	} 
} 

/** 
 * Appeler par AJAX si Script PHP trop long, ou erreur de réseau...
 */
var addProgToMySelection__handleFailure = function(o)
{ 
	ajax_error(o); //dans /js/fonctions.js -- fonction générique
} 

/** 
 * Appeler par AJAX si Script PHP trop long, ou erreur de réseau...
 */
var addProgToMySelectionNotLogged__handleSuccess = function(o)
{ 
	if(o.responseText !== undefined)
	{ 
		//o.responseText -> Les données générer par PHP
		//o.argument.id_opeInfoTxt -> L'id du div a mettre a jour...
    	
    	dataPHPJSON = o.responseText;

    	pattern = /^\{.*\}$/i;
    	if(pattern.test(dataPHPJSON))
    	{
    		//Récupération des params de PHP (passer lors du clique sur "Ajouter a ma selection" SETP 0)
    		php_paramData = o.argument.php_paramData;

    		//Foncionnement attendu coté PHP - l'ajout peut avoir lui ou non
			o_dataPHP = eval('(' + dataPHPJSON + ')');
			
			dataPHP = o_dataPHP.php_res.php_data;
			php_hasNoError = o_dataPHP.php_res.php_hasNoError;
			
			//Si l'ajout a eu lieu... On supprime le listner...
			if(php_hasNoError)
			{
				window.location = o.argument.link_to_go;
			}
			else
			{
				Dialog.alert("PHP Error, debug BackTrace : <br /><br />" + dataPHP, {windowParameters: {className: "vista", popup_status: "error", title: ""}, okLabel: "OK"});
			}
		}
		else
		{
			Dialog.alert("PHP Error, debug BackTrace : <br /><br />" + dataPHPJSON, {windowParameters: {className: "vista", popup_status: "error", title: ""}, okLabel: "OK"});
		}
	}
}

function set_style(e, o)
{
	id_addTxt = o.id_addTxt;
	id_opeInfoTxt = o.id_opeInfoTxt;
	style_name = o.style_name;
	style_val = o.style_val;
	
	YAHOO.util.Dom.setStyle([id_addTxt, id_opeInfoTxt], style_name, style_val);
}