/*var triParTexte = function(a, b){
	var reg=new RegExp("[__]+", "g");
	var tA = ($(a).attr('id')).split(reg);
	var tB = ($(b).attr('id')).split(reg);    
    return tA[0] > tB[0] ? 1 : -1;
    //return $(a).text() > $(b).text() ? 1 : -1;
};
 
var triParNote = function(a, b){
	var reg=new RegExp("[__]+", "g");
	var tA = ($(a).attr('id')).split(reg);
	var tB = ($(b).attr('id')).split(reg);
    //return parseInt($(a).text(), 10) > parseInt($(b).text(), 10) ? 1 : -1;
    return parseInt(tA[1], 10) > parseInt(tB[1], 10) ? -1 : 1;
}*/

/**
 * jQuery.fn.sortElements
 * --------------
 * @param Function comparator:
 *   Exactly the same behaviour as [1,2,3].sort(comparator)
 *   
 * @param Function getSortable
 *   A function that should return the element that is
 *   to be sorted. The comparator will run on the
 *   current collection, but you may want the actual
 *   resulting sort to occur on a parent or another
 *   associated element.
 *   
 *   E.g. $('td').sortElements(comparator, function(){
 *      return this.parentNode; 
 *   })
 *   
 *   The <td>'s parent (<tr>) will be sorted instead
 *   of the <td> itself.
 */
/*jQuery.fn.sortElements = (function(){
 
    var sort = [].sort;
 
    return function(comparator, getSortable) {
 
        getSortable = getSortable || function(){return this;};
 
        var placements = this.map(function(){
 
            var sortElement = getSortable.call(this),
                parentNode = sortElement.parentNode,
 
                // Since the element itself will change position, we have
                // to have some way of storing its original position in
                // the DOM. The easiest way is to have a 'flag' node:
                nextSibling = parentNode.insertBefore(
                    document.createTextNode(''),
                    sortElement.nextSibling
                );
 
            return function() {
 
                if (parentNode === this) {
                    throw new Error(
                        "You can't sort elements if any one is a descendant of another."
                    );
                }
 
                // Insert before flag:
                parentNode.insertBefore(this, nextSibling);
                // Remove flag:
                parentNode.removeChild(nextSibling);
 
            };
 
        });
 
        return sort.call(this, comparator).each(function(i){
            placements[i].call(getSortable.call(this));
        });
 
    };
 
})();*/


$(function() {
    /*$.post("index.php", {module:"recete", action:"recette:redirectPageRizDeVeau"}, function(zUrl) {
        
    }, "json");*/
	
	$('#rechercheCritere').submit(
		function()
		{
			$('#BoutonRechercheMotCle').click();
			return false;
		}
	);
	
	// recherche à partir du mot clé
	$('#BoutonRechercheMotCle').click(function() 
	{
		var zMotCle = $('#recherche').val();		
		
		zMotCle = zMotCle.trim(); // suppprime les espaces superflue
		
		var length = zMotCle.length;
		zMotCle = AccentToNoAccent(zMotCle);

		if (zMotCle != "" && length > 2) {					
			doRequestParMotCle();
		}else{
			alert("Veuillez saisir un mot-clé ayant au moins trois caractères");
		}
		
		
	});

	// recherche à partir des critère
	$('#boutonRechercheCritere').click(function() 
	{
		var iCritereTheme = $('#typeCritere_nom_theme').val();
		var iCritereRepas =  $('#typeCritere_type_repas').val();
		var iCriterePersonne = $('#typeCritere_nbr_personne').val();
		var iCritereMorceau = $('#typeCritere_morceau').val();
		var iCritereCuisson = $('#typeCritere_mode_cuisson').val();
		var iCriterePreparation = $('#typeCritere_temp_preparation').val();
		var iCritereEnergetique = $('#typeCritere_valeur_energetique').val();
		var iRecetteImage = $('#recette_image').val();
		var iRecettesPlusConsultees = $('#recettes_plus_consultees').val();		

		var count = parseInt(iCritereTheme)+parseInt(iCritereRepas)+parseInt(iCriterePersonne)+parseInt(iCritereMorceau)+parseInt(iCritereCuisson)+parseInt(iCriterePreparation)+parseInt(iCritereEnergetique)+parseInt(iRecetteImage)+parseInt(iRecettesPlusConsultees);
		var num_entries = 0;
		if (count == 0) {
			alert("Veuillez choisir au moins un critère");
		} else {
			doRequestParCritere();		
		}
		
	});

	$('#supprimeCritere').click(function() {
	    $.post("index.php", {module:"recette", action:"recette:suppressionSessionCriteres"}, function() {
	        $('#recherche').val("");
    		$('#typeCritere_nom_theme').val(0);
    		$('#typeCritere_type_repas').val(0);
    		$('#typeCritere_nbr_personne').val(0);
    		$('#typeCritere_morceau').val(0);
    		$('#typeCritere_mode_cuisson').val(0);
    		$('#typeCritere_temp_preparation').val(0);
    		$('#typeCritere_valeur_energetique').val(0);
    		$('#nbrResult').html("(0 résultat)");
    
    		$('#recetteListe').html("");
    		$('#recetteImage').html("");
    		
    		window.location.href = window.location.href;
	    }, "json");
	    
	    return false;
	});
	
	$('#choixTri').change(function() {		
		
		$('#recetteListe').hide()
		$('#recetteImage').hide();
		gbTriImage = false; // image non triee
		gbTriListe = false; // liste non triee

		/*$('.arrow_bottom').find('a').unbind('click');
		
		$('input[name=recette]').each(function(){
			if(this.checked) {					
				switch(parseInt($(this).val(), 10)) {
					case 0: //0: liste
						switch(parseInt($('#choixTri').val (), 10)) {
							case 0: // alpha
								$('#recetteListe li').sortElements(triParTexte);
								$('#recetteImage li').sortElements(triParTexte);					
								break;
							case 1: // note
								$('#recetteListe li').sortElements(triParNote);		
								$('#recetteImage li').sortElements(triParNote);						
								break;
						}
						// affiche ou cache le bloc selectionner.
						$('#recetteImage').hide();
						$('#recetteListe').show();
						
						// creation de la pagination
						pagination(1);
						break;
					case 1: //1: image
						switch(parseInt($(this).val (), 10)) {
							case 0: // alpha
								$('#recetteImage li').sortElements(triParTexte);	
								//$('#recetteListe li').sortElements(triParTexte);						
								break;
							case 1: // note
								$('#recetteImage li').sortElements(triParNote);		
								//$('#recetteListe li').sortElements(triParNote);						
								break;
						}				
						// affiche ou cache le bloc selectionner.
						$('#recetteListe').hide();
						$('#recetteImage').show();
						
						// creation de la pagination
						pagination(0);
						break;
				}
					
			}
		});*/
		
		$('input[name=recette]').each(function(){
			if(this.checked) {					
				$(this).click();						
			}
		});
	});	
})

// fonction trim pour enlever les espaces superflues
String.prototype.trim = function () {
	//return this.replace(/^\s*|\s*$/,"");
	var str = " ";
	 return this.replace(/\s+/g, str);

}

// Remplace toutes les occurences d'une chaine
function replaceAll(str, search, repl) {
	while (str.indexOf(search) != -1)
	str = str.replace(search, repl);
	return str;
}

// Remplace les caractères accentués
function AccentToNoAccent(str) {
	var norm = new Array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï', 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß', 'à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ', 'ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ý','þ','ÿ');
	var spec = new Array('A','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I', 'D','N','O','O','O','0','O','O','U','U','U','U','Y','b','s', 'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','d','n', 'o','o','o','o','o','o','u','u','u','u','y','y','b','y');
	for (var i = 0; i < spec.length; i++)
	str = replaceAll(str, norm[i], spec[i]);
	return str;
} 

function doRequestParMotCle() {
	var zMotCle = $('#recherche').val();
	
	zMotCle = zMotCle.trim(); // suppprime les espaces superflue	
	zMotCle = AccentToNoAccent(zMotCle);
			
	$.getJSON(j_basepath + "index.php", 
		{module:"recette", action:"recette:searchRecette", zMotCle:zMotCle}, 
		function(datas){
			
			var zListeRecetteId = "";
			var zMark = ",";
		
			var resultat = "résultat";
			if (datas.length > 1)
			{
				resultat = "résultats";
			}
			
			$('#nbrResult').html("("+datas.length+" "+resultat+")");
		
			if (datas.length>0)
			{
				for(i=0; i< datas.length; i++)
				{
					if (i == datas.length-1)
					{
						zMark="";
					}else{
						zMark=",";
					}
				
				zListeRecetteId += datas[i]["recette_id"]+zMark;
				}
			}
		
			if(datas.length>0)
			{
			
				$('#recetteListe').empty();
				$('#recetteImage').empty();
		
				for(i=0; i< datas.length; i++)
				{
					var flag = '';
					var flagImage = '';
					
					var $imgFlag = null;
					
					/*if (datas[i]["recette_flagHerme"] == 1)
					{
						flagImage='<img src="'+j_basepath+'design/images/content-data/moteur_recette/tampon-50-46.png" alt="" width="50" height="46" class="mini-tampon png" />';
						$imgFlag = $(document.createElement('img')).attr({src: j_basepath+'design/images/content-data/moteur_recette/tampon-50-46.png', alt: '', width: 50, height: 46}).addClass('mini-tampon', 'png');
					}*/
					
					// liste texte
					var $span = $(document.createElement('span'));
					for (j=1; j<= 5; j++) {
						var imgEtoile = "note-jn.gif";
						if (datas[i]["recette_moyenne"] == 0 || j > datas[i]["recette_moyenne"]) {
							imgEtoile = "note-bl.gif";
						}														
					 	$span.append(
								$(document.createElement('img'))
								.attr({src: j_basepath+"design/images/content-design/"+imgEtoile, width:16, height:15})									
							);
					}
					
					// selection de recette qui a été vu en dernier
					var $ClassDernierVue = '';
					if (datas[i]["recette_dernierVue"]==true) {
						$ClassDernierVue = "l-visite";
					}
					
					var $li = $(document.createElement('li')).attr({'id':i+'__'+datas[i]["recette_moyenne"]});
					
					zUrl = j_basepath+'index.php/recette/'+datas[i]["recette_id"]+'/'+reecritureNomRecette(datas[i]["recette_titre"]);
					$li.append(
						$(document.createElement('a'))
							//.attr({href: j_basepath+'index.php?iRecetteId='+datas[i]["recette_id"]+'&module=recette&action=recette:afficheRecette' })
							.attr({href: zUrl})
							.text(datas[i]["recette_titre"])
							.addClass($ClassDernierVue),						
						$(document.createElement('div'))
							.addClass('bg_white_recette', 'png')
							.append(
								$(document.createElement('img'))
									.attr({src: j_basepath+j_pathRsizeVignettes+datas[i]["recette_visuel"], width:90, height:90})
									.addClass('png')
							),
						$span
					)
					
					$('#recetteListe').append($li);
					
					
					// liste image
					var $p = $(document.createElement('p'))
								.addClass('png');
					
					for (j=1; j<= 5; j++) {
						var imgEtoile = "note-jn-img.gif";
						if (datas[i]["recette_moyenne"] == 0 || j > datas[i]["recette_moyenne"]) {
							imgEtoile = "note-bl-img.gif";
						}				
					 	$p.append(
								$(document.createElement('img'))
								.attr({src: j_basepath+"design/images/content-design/"+imgEtoile, width:15, height:15})									
							);
					}
					
					// div contenant la note			
					var $divNote = $(document.createElement('div'))
								.addClass('bg-note-wrapper')
								.append($p);						
					
					// selection de recette qui a été vu en dernier
					var $imageDernierVue = '';
					if (datas[i]["recette_dernierVue"]==true) {
						var $imageDernierVue = $(document.createElement('img'))
									.attr({src: j_basepath+"design/images/content-design/border-recete-visite.gif", width:104, height:104})
									.addClass('r-visite');
					}
								
					var $imageLi = $(document.createElement('li')).attr({'id':i+'__'+datas[i]["recette_moyenne"]});;
					
					$imageLi.append(
						$(document.createElement('a'))
							.attr({href: zUrl})
							.append(
								$(document.createElement('img'))
									.attr({src: j_basepath+j_pathRsizeVignettes+datas[i]["recette_visuel"], width:90, height:90})
									.addClass('png'),
								$imgFlag,
								$imageDernierVue
								
							),
						$(document.createElement('div'))
						.addClass('hover')
						.append(
							$(document.createElement('div'))
								.addClass('bg_white_recette_img', 'png')
								.append(
									$(document.createElement('p'))
										.text(datas[i]["recette_titre"])
								),
							$divNote
							)
					)
					
					$('#recetteImage').append($imageLi);
				}
				
				$('#recetteListe').find('li').find('a').rollrecette({doPos:true});
				$('#recetteImage').find('li').find('a').rollrecette();
		
				$('.arrow_bottom').find('a').unbind('click');
				
				$('input[name=recette]').each(function(){
					if(this.checked) {					
						$(this).click();						
					}
				});
				
				// initialisation tri
				$('#choixTri option').get(0).selected=true;
				var gbTriImage = true; // image triee ou non
				var gbTriListe = true;
			}else{
				var html = '<li class="np" style="width:auto;">Aucune recette ne correspond à votre recherche !<br /> <a href="'+j_basepath+'index.php?iProposeAffiche=1&module=veauEtVous&action=veauEtVous:afficheVeauEtVous" style="background:none;">Proposez votre recette ! </a><br /></li>';
				$('#recetteListe').html(html);
				$('#recetteImage').html(html);
			}
		}
	);
}


function doRequestParCritere() {
	var iCritereTheme = $('#typeCritere_nom_theme').val();
	var iCritereRepas =  $('#typeCritere_type_repas').val();
	var iCriterePersonne = $('#typeCritere_nbr_personne').val();
	var iCritereMorceau = $('#typeCritere_morceau').val();
	var iCritereCuisson = $('#typeCritere_mode_cuisson').val();
	var iCriterePreparation = $('#typeCritere_temp_preparation').val();
	var iCritereEnergetique = $('#typeCritere_valeur_energetique').val();
	var iRecetteImage = $('#recette_image').val();
	var iRecettesPlusConsultees = $('#recettes_plus_consultees').val();	
		
	$.getJSON(j_basepath + "index.php", 
		{module:"recette", 
		 action:"recette:searchRecette", 
		 iCritereTheme:iCritereTheme, 
		 iCritereRepas:iCritereRepas, 
		 iCriterePersonne:iCriterePersonne, 
		 iCritereMorceau:iCritereMorceau, 
		 iCritereCuisson:iCritereCuisson, 
		 iCriterePreparation:iCriterePreparation, 
		 iCritereEnergetique:iCritereEnergetique,
		 iRecetteImage:iRecetteImage, 
		 iRecettesPlusConsultees:iRecettesPlusConsultees}, 
		
		function(datas) {

			var zListeRecetteId = "";
			var zMark = ",";

			var resultat = "résultat";

			if (datas.length>1)
			{
				resultat = "résultats";
			}
			
			$('#nbrResult').html("("+datas.length+" "+resultat+")");

			if (datas.length>0)
			{
				for(i=0; i< datas.length; i++)
				{
					if (i == datas.length-1)
					{
						zMark="";
					}else{
						zMark=",";
					}
				
				zListeRecetteId += datas[i]["recette_id"]+zMark;
				}
			}
			
			if(datas.length>0)
			{
				var htmlListe = '';
				var htmlImage = '';

				$('#recetteListe').empty();
				$('#recetteImage').empty();

				for(i=0; i< datas.length; i++)
				{
					var flag = '';
					var flagImage = '';

					var $imgFlag = null;

					// liste texte
					var $span = $(document.createElement('span'));
					for (j=1; j<= 5; j++) {
						var imgEtoile = "note-jn.gif";
						if (datas[i]["recette_moyenne"] == 0 || j > datas[i]["recette_moyenne"]) {
							imgEtoile = "note-bl.gif";
						}														
					 	$span.append(
								$(document.createElement('img'))
								.attr({src: j_basepath+"design/images/content-design/"+imgEtoile, width:16, height:15})									
							);
					}
					
					// selection de recette qui a été vu en dernier
					var $ClassDernierVue = '';
					if (datas[i]["recette_dernierVue"]==true) {
						$ClassDernierVue = "l-visite";
					}
					
					var $li = $(document.createElement('li')).attr({'id':datas[i]["recette_titre"]+'__'+datas[i]["recette_moyenne"]});;
					
					zUrl = j_basepath+'index.php/recette/'+datas[i]["recette_id"]+'/'+reecritureNomRecette(datas[i]["recette_titre"]);
					$li.append(
						$(document.createElement('a'))
							//.attr({href: j_basepath+'index.php?iRang='+datas[i]["rang"]+'&iTypeRecherche=1&zMotCle=&iTheme='+iCritereTheme+'&iTypeRepas='+iCritereRepas+'&iModeCuisson='+iCritereCuisson+'&iTempPreparation='+iCriterePreparation+'&iValeurEnergetique='+iCritereEnergetique+'&iNombrePersonne='+iCriterePersonne+'&iCivilite=0&iMorceau='+iCritereMorceau+'&iRecetteImage='+iRecetteImage+'&iLimit=0&iNext=0&iPrev=0&iNbrElement='+datas[i]["nbrElement"]+'&module=recette&action=recette:afficheRecette' })
							.attr({href: zUrl})
							.text(datas[i]["recette_titre"])
							.addClass($ClassDernierVue),											
						$(document.createElement('div'))
							.addClass('bg_white_recette', 'png')
							.append(
								$(document.createElement('img'))
									.attr({src: j_basepath+j_pathRsizeVignettes+datas[i]["recette_visuel"], width:90, height:90})
									.addClass('png')
							),
						$span
					)
					
					$('#recetteListe').append($li);

					
					// liste image
					var $p = $(document.createElement('p'))
								.addClass('png');
					
					for (j=1; j<= 5; j++) {
						var imgEtoile = "note-jn-img.gif";
						if (datas[i]["recette_moyenne"] == 0 || j > datas[i]["recette_moyenne"]) {
							imgEtoile = "note-bl-img.gif";
						}				
					 	$p.append(
								$(document.createElement('img'))
								.attr({src: j_basepath+"design/images/content-design/"+imgEtoile, width:15, height:15})									
							);
					}
								
					// div contenant la note			
					var $divNote = $(document.createElement('div'))
								.addClass('bg-note-wrapper')
								.append($p);						
					
					// image de selection de recette qui a été vu en dernier
					var $imageDernierVue = '';
					if (datas[i]["recette_dernierVue"]==true) {
						var $imageDernierVue = $(document.createElement('img'))
									.attr({src: j_basepath+"design/images/content-design/border-recete-visite.gif", width:104, height:104})
									.addClass('r-visite');
					}
						
					var $imageLi = $(document.createElement('li')).attr({'id':datas[i]["recette_titre"]+'__'+datas[i]["recette_moyenne"]});;
					
					// SOFModif Avenant
					$imageLi.append(
						$(document.createElement('a'))
//									.attr({href: j_basepath+'index.php?iRecetteId='+datas[i]["recette_id"]+'&module=recette&action=recette:afficheRecette' })
							.attr({href: zUrl})
							.append(
								$(document.createElement('img'))
									.attr({src: j_basepath+j_pathRsizeVignettes+datas[i]["recette_visuel"], width:90, height:90})
									.addClass('png'),
								$imgFlag,
								$imageDernierVue								
							),
							$(document.createElement('div'))
								.addClass('hover')
								.append(
									$(document.createElement('div'))
										.addClass('bg_white_recette_img', 'png')
										.append(
												$(document.createElement('p'))
													.text(datas[i]["recette_titre"])
												),
									$divNote)
					)					
					// EOFModif Avenant
					
					$('#recetteImage').append($imageLi);
					
				}
				
				$('#recetteListe').find('li').find('a').rollrecette({doPos:true});
				$('#recetteImage').find('li').find('a').rollrecette();
				
				$('.arrow_bottom').find('a').unbind('click');
				
				var selectAffiche = 0;
				$('input[name=recette]').each(function(){
					if(this.checked) {
						selectAffiche == $(this).val();
					}
				});
				
				/*if(parseInt(iRecettesPlusConsultees)>0) {
					selectAffiche = 0;
				}
				
				$('input[name=recette]').eq(selectAffiche).click();*/
				
				$('input[name=recette]').each(function(){
					if(this.checked) {						
						if(parseInt(iRecettesPlusConsultees)>0) {
							$('input[name=recette]').eq(0).click();
						} else {
							$(this).click();
						}
					}
				});				
			
				// initialisation tri
				$('#choixTri option').get(0).selected=true;
				var gbTriImage = true; // image triee ou non
				var gbTriListe = true;
			}else{
				var html = '<li class="np" style="width:auto;">Aucune recette ne correspond à votre recherche !<br /> <a href="'+j_basepath+'index.php?iProposeAffiche=1&module=veauEtVous&action=veauEtVous:afficheVeauEtVous" style="background:none;">Proposez votre recette ! </a><br /></li>';
				$('#recetteListe').html(html);
				$('#recetteImage').html(html);			
			}
			
			if(parseInt(iRecettesPlusConsultees)>0) {
			    $.post("index.php", {module:"recette", action:"recette:chargeUrlRedirect"}, function(tUrlRedirect) {
			        window.location.href = tUrlRedirect.zUrlAvecParametre;
			    }, "json");
			} /*else {
			    $.post("index.php", {module:"recette", action:"recette:chargeUrlRedirect"}, function(tUrlRedirect) {
			        window.location.href = tUrlRedirect.zUrlSansParametre;
			    }, "json");
			}*/
		}
	);
}





/*"default" = function(a, b){
    return $(a).text() &gt; $(b).text() ? 1 : -1;
}
 
"numeric" = function(a, b){
    return parseInt($(a).text(), 10) &gt; parseInt($(b).text(), 10) ? 1 : -1;
}
 
"auto" = function(a, b){
    a = $(a).text();
    b = $(b).text();
 
    return (
        isNaN(a) || isNaN(b) ?
        a &gt; b : +a &gt; +b
    ) ?
        inverse ? -1 : 1 :
        inverse ? 1 : -1;
}

*/
