(function ($j) {
    $j.fn.selectChain = function (options) {		
        var defaults = {
            key: "id",
            value: "label"
        };
        
        var settings = $j.extend({}, defaults, options);
        
        if (!(settings.target instanceof $)) settings.target = $(settings.target);
        
        return this.each(function () {
            var $$ = $j(this);
            
            $$.change(function () {
                var data = null;
                if (typeof settings.data == 'string') {
                    data = settings.data + '&' + this.name + '=' + $$.val();
                } else if (typeof settings.data == 'object') {
                    data = settings.data;
                    data[this.name] = $$.val();
                }
                
                settings.target.empty();
                
                $j.ajax({
                    url: settings.url,
                    data: data,
                    type: (settings.type || 'get'),
                    dataType: 'json',
                    success: function (j) {
                        var options = [], i = 0, o = null;
                        
                        for (i = 0; i < j.length; i++) {
                            // required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
                            o = document.createElement("OPTION");
                            o.value = typeof j[i] == 'object' ? j[i][settings.key] : j[i];
                            o.text = typeof j[i] == 'object' ? j[i][settings.value] : j[i];
                            settings.target.get(0).options[i] = o;
                        }

			// hand control back to browser for a moment
			setTimeout(function () {
			    settings.target
                                .find('option:first')
                                .attr('selected', 'selected')
                                .parent('select')
                                .trigger('change');
			}, 0);
                    },
                    error: function (xhr, desc, er) {
                        // add whatever debug you want here.
						alert("an error occurred");
                    }
                });
            });
        });
    };	
})(jQuery);

function ajoute()
{
	// Crée un nouvel élément de paragraphe
	var selObj = document.getElementById('elementSelect');
	var selIndex = selObj.selectedIndex;
	if(document.getElementById('parc_' + selObj.options[selIndex].value) == null)
	{		
		//La div contenant tout :
		var div = document.createElement("div");
		div.className = 'lineitem';		
		div.id = 'parc_'+selObj.options[selIndex].value;
		
		//La div avec le nom du parc, le coeur  et les notes
		var div2 = document.createElement("div");		
		div2.className = 'nomparc';
		
		//Le nom du parc à proprement parler
		var nomparc = document.createElement("div");
		nomparc.className = 'nomparctext';
		nomparc.innerHTML = selObj.options[selIndex].text;		
		
		//Coup de coeur et notes :
		var coeur = document.createElement("div");
		coeur.id='div_' + selObj.options[selIndex].value + '_coeur';
		coeur.className = 'coeur';
		coeur.innerHTML = "<img src=\"../images/coeur2.png\" id='" + selObj.options[selIndex].value + "_coeur' onclick=\"changecoeur(" + selObj.options[selIndex].value + ")\" />";
			
		var notes = document.createElement("div");
		notes.id = selObj.options[selIndex].value + "_note";
		notes.className = 'note';
		notes.innerHTML = "<img src=\"../images/star1.gif\" id='" + selObj.options[selIndex].value + "_1' onclick=\"valider(1,"+selObj.options[selIndex].value +")\" onmouseover=\"rate(1,"+selObj.options[selIndex].value +")\" onmouseout=\"unrate("+selObj.options[selIndex].value +")\"  /><img src=\"../images/star1.gif\" id='" + selObj.options[selIndex].value + "_2' onclick=\"valider(2,"+selObj.options[selIndex].value +")\" onmouseover=\"rate(2,"+selObj.options[selIndex].value +")\" onmouseout=\"unrate("+selObj.options[selIndex].value +")\"  /><img src=\"../images/star1.gif\" id='" + selObj.options[selIndex].value + "_3' onclick=\"valider(3,"+selObj.options[selIndex].value +")\" onmouseover=\"rate(3,"+selObj.options[selIndex].value +")\" onmouseout=\"unrate("+selObj.options[selIndex].value +")\"  /><img src=\"../images/star1.gif\" id='" + selObj.options[selIndex].value + "_4' onclick=\"valider(4,"+selObj.options[selIndex].value +")\" onmouseover=\"rate(4,"+selObj.options[selIndex].value +")\" onmouseout=\"unrate("+selObj.options[selIndex].value +")\"  /><img src=\"../images/star1.gif\" id='" + selObj.options[selIndex].value + "_5' onclick=\"valider(5,"+selObj.options[selIndex].value +")\" onmouseover=\"rate(5,"+selObj.options[selIndex].value +")\" onmouseout=\"unrate("+selObj.options[selIndex].value +")\"  />";
		
		//Le déplacement du parc :
		var div3 = document.createElement("div");	
		div3.className = 'logos';
		div3.innerHTML = '<a href="javascript:descend(\'' + div.id +'\');"><img src="../admin/images/icon_down.gif" border="0"></a>&nbsp;<a href="javascript:monte(\'' + div.id +'\');"><img src="../admin/images/icon_up.gif" border="0"></a>&nbsp;<a href="javascript:suppr(\'' + div.id +'\');"><img src="../admin/images/icon_delete.gif"></a>';
		
		// l'ajoute à la fin du corps du document
		div.appendChild(div2);
		div2.appendChild(nomparc);
		div2.appendChild(coeur);
		div2.appendChild(notes);
		div.appendChild(div3);
		document.getElementById('parcs_visites').appendChild(div);		
		
		Sortable.create("parcs_visites", {tag:'div', constraint:'vertical',only:'lineitem'});
	}
	else
	{
		alert("Vous avez deja ajoute ce parc dans votre liste");
	}
	
	logo_meilleur();
}

function descend(this_id)
{
	//On commence par vérifier que id n'est pas le premier noeud :
	var papa = document.getElementById('parcs_visites');	
	var collEnfants = papa.childNodes;
	for (var i = 0; i < collEnfants.length && collEnfants[i].id != this_id; i++);
	if((i + 1) < collEnfants.length)
	{
		//On fait l'échange :
		var noeudtmp = collEnfants[i];
		papa.replaceChild(collEnfants[i+1], collEnfants[i]);
		papa.insertBefore(noeudtmp, collEnfants[i+1]);
	}
	
	logo_meilleur();
}

function monte(this_id)
{
	//On commence par vérifier que id n'est pas le premier noeud :
	var papa = document.getElementById('parcs_visites');	
	var collEnfants = papa.childNodes;
	for (var i = 0; i < collEnfants.length && collEnfants[i].id != this_id; i++);
	
	if((i - 1) > 0)
	{
		//On fait l'échange :
		var noeudtmp = collEnfants[i-1];
		papa.replaceChild(collEnfants[i], collEnfants[i-1]);
		papa.insertBefore(noeudtmp, collEnfants[i]);
	}
	
	logo_meilleur();
}

function suppr(this_id)
{
	//On commence par vérifier que id n'est pas le premier noeud :
	var papa = document.getElementById('parcs_visites');	
	var collEnfants = papa.childNodes;
	for (var i = 0; i < collEnfants.length && collEnfants[i].id != this_id; i++);
	papa.removeChild(collEnfants[i]);
	
	logo_meilleur();
}

function lister(f)
{	
	var liste = Sortable.serialize('parcs_visites');
	var note = "";
	for (var key in notes ) {
		if(key < 5000)
			if(note == "")
				note += key + "_note="+notes[key];
			else
				note += "&" + key + "_note="+notes[key];
	}

	var coeur = "";
	for (var key2 in coeurs ) {
		if(key2 < 5000)
			if(coeur == "")
				coeur += key2 + "_coeur="+coeurs[key2];
			else
				coeur += "&" + key2 + "_coeur="+coeurs[key2];
	}		

	$('parcs_input').value = liste;
	$('notes_input').value = note;
	$('coeurs_input').value = coeur;
	f.submit();
}

function logo_meilleur()
{
	var meilleur = document.getElementById('parcs_visites').childNodes;
	document.getElementById('logo_parc_prefere').innerHTML = '<img src="../parcs/images/logo_parcs/'+meilleur[1].id.replace('parc_','')+'.png"  width="70" />';
}