
function associer(url) {

var el = $(parent.document.getElementById('sydonieComposants'));
el.load(url);
}

function masquerIframe() {
    parent.document.getElementById('iframeAsso').style.display='none';
}

function desassocier(url) {
var el = $(document.getElementById('sydonieComposants'));
el.load(url);
}

function zoomer(zoomSource, zoomLegende, zoomCommentaire) {

   contenuZoom = "<div id=\"modalContent\" style=\"position: absolute;\"><img src=\"" + zoomSource + "\" alt=\"" + zoomLegende + "\" /><div class=\"legende\">" + zoomLegende + "</div><div class=\"texte\">" + zoomCommentaire + "</div></div>";


   maFMS = new FMS.fenetreModale();

    maFMS.setTitle("Zoom : " + zoomLegende);

   maFMS.setContenu(contenuZoom);
   maFMS.insertContent();

}


function voirDansFMS(url, title) {
   maFMS = new FMS.fenetreModale();

   maFMS.setTitle(title);
   maFMS.setMethode('iframe');
   maFMS.setUrlContenu(url);

   maFMS.insertContent();

}


/**
 *
 *    Gestion des diaporamas
 *
 *
 **/

function listeImagesPourDiaporama() {
   var maFMS = new FMS.fenetreModale();

    var liste = new Element('ul', {
	"id":"imagesAssociees",
        });

    $$('.listeAsso .movable').each(function(item) {
	var li = new Element('li', {'class': 'imageDisponible'});
	var id = item.getAttribute('id');
	var code = id.replace('asso_', '');
	li.setAttribute('id', id);
	var image = new Element('img', {
            'src' : item.getElement('img').src,
            'alt' : item.getElement('img').alt,
            });
	image.inject(li);
	var maLegende = item.getElement('.legende').get('html');
	var divLegende = new Element('div', {});
	divLegende.set('text', maLegende).inject(li);
	li.addEvent('click', function() {
	    maFMS.cacher();
	    saisirUrl(code, image, true);
	}).inject(liste);
    });

   maFMS.setContenu(liste);
   maFMS.setMethode('dom');
   maFMS.insertContent();

}

function saisirUrl(code, image, nouveau) {

    var newFMS = new FMS.fenetreModale();
    var divZoneForm = new Element('div',{'class' : 'modalForm'});
    var label =new Element('label', {'for': 'urlLien'});
    label.set('html', "Url lié à l'image");
    var monForm = new Element('form', {
	'action': 'javascript:void(0)',
	'method': 'post'});
    var input = new Element('input', {
        'name': 'urlLien',
	'id': 'urlLien', 
        'type': 'text',
        'size': '70'});
    var bouton = new Element('input', {
	'type': 'submit',
	'name': 'go',
	'value': 'enregistrer'});

    input.inject(monForm);
    bouton.inject(monForm);
    image.inject(divZoneForm);
    label.inject(divZoneForm);
    monForm.inject(divZoneForm);
    monForm.addEvent('submit', function() {
	if (nouveau) {
	    $('diapos').set('value', $('diapos').get('value') + "§" + code + "|" + input.get('value'));
	} else {
	    var oldUrl = "";
	    $('diapos').value.split("§").each(function(diapo) {
		if (diapo.length > 0) {
		    if (diapo.match(code)) {
			var tdiapo = diapo.split("\|");
			oldUrl = tdiapo[1];
		    }
		}
	    });
	    if (oldUrl.length > 0) {
		$('diapos').set('value', $('diapos').get('value').replace("§" + code + "|" + oldUrl, "§" + code + "|" + input.get('value')));
	    } else {
		$('diapos').set('value', $('diapos').get('value').replace(code + "|", code + "|" + input.get('value')));

	    }
	}
	afficherDiaporama();
	newFMS.cacher();
    });
    newFMS.setMethode('dom');
    newFMS.setTitle("saisie de l'url");
    newFMS.setContenu(divZoneForm);
    newFMS.insertContent();
}

function modifierListeImagesPourDiaporama(codeImage) {
    var image = new Element('img', {
	'src': $('entrepot').get('value') + codeImage + "/" + codeImage + "_square.jpg",
	'alt': 'image du diaporama'
    });
    saisirUrl(codeImage, image, false);

}

function supprimerListeImagesPourDiaporama(codeImage) {
    var newDiapo = new Array();
    $('diapos').value.split("§").each(function(diapo) {
	if (diapo.length > 0) {
	    if (! diapo.match(codeImage)) {
		newDiapo.push(diapo);
	    }
	}
    });
    var newString = "";
    newDiapo.each(function(diapo) {
	newString += "§" + diapo;
    });
    $('diapos').set('value',  newString);
    afficherDiaporama();
}

function afficherDiaporama() {
    $('listeDesDiapos').empty();
    $('diapos').value.split("§").each(function(diapo) {
	if (diapo.length > 0) {
	    uneDiapo = diapo.split("|");
	    domUneDiapo = faireUneDiapo(uneDiapo[0], uneDiapo[1]);
	    domUneDiapo.inject($('listeDesDiapos'));
	}
    });

    var liste = new Sortables('listeDesDiapos', {
	"onSort" : function() {
            var newOrder = "";
	    var serializeFunction = function(item) {
		var codeImage = item.id;
		var lien = item.getElement('.icone a');
		if (lien) {
		    newOrder += "§" + item.id.replace('diapo_', '') + "|" + lien.getAttribute('href');
		}
	    }
	    liste.serialize(serializeFunction);
	    $('diapos').set('value', newOrder);
	}
    });

}
				     

function faireUneDiapo(codeImage, urlLien) {
    var li = new Element("li", {
	'class': 'uneDiapo',
	'id': "diapo_" + codeImage
    });
    var div = new Element('div', {'class': 'icone'});
    var image = new Element('img', {
	'src': $('entrepot').get('value') + codeImage + "/" + codeImage + "_square.jpg",
	'alt': 'image du diaporama'
    }).inject(div);
    var lien = new Element('a', {
	'href':urlLien
    });
    lien.set('text', urlLien).inject(div);
    var divAction = new Element('div', {'class': 'action'});
    var ulAction = new Element('ul', {}).inject(divAction);
    var liModif = new Element('li', {}).inject(ulAction);
    var aModif = new Element('a', {
	'href': 'javascript:void(0)'
    });
    aModif.addEvent('click', function() {
	modifierListeImagesPourDiaporama(codeImage);
    });
    aModif.set('text', "modifier l'url").inject(liModif);
    var liSupp = new Element('li', {}).inject(ulAction);
    var aSupp = new Element('a', {
	'href': 'javascript:void(0)'
    });
    aSupp.addEvent('click', function() {
	supprimerListeImagesPourDiaporama(codeImage);
    });
    aSupp.set('text', "supprimer").inject(liSupp);
    divAction.inject(li);
    div.inject(li);
    var clearer = new Element('div', {
	"styles": {
            "clear": "both",
	    "height": 0,
	    "line-height": 0,
	    "font-size": 0
	}
    }).set('html', '&nbsp;').inject(li);
    return li;
}


/**
 *
 *    Gestion des extras pour les formulaires
 *    des événements
 *
 *
 **/

function afficherExtra() {
    $('listeDesExtras').empty();
    $('extra').value.split("§").each(function(extraBloc) {
	if (extraBloc.length > 0) {
	    domUnBloc = faireUnBloc(extraBloc);
	    domUnBloc.inject($('listeDesExtras'));
	}
    });

    var liste = new Sortables('listeDesExtras', {
	"handle" : '.handle',
	"onSort" : function() {
	    var told = $('extra').get('value').split("§");
            var newOrder = "";
	    var serializeFunction = function(item) {
		if (item.getElement('fieldset')) {
		    var codeBloc = item.getElement('fieldset').id.replace('code_', '');
		    told.each(function(bloc) {
			if (bloc.length > 0) {
			    var codeVerif = "^" + codeBloc;
			    if (bloc.match(codeVerif)) {
				newOrder += "§" + bloc;
			    }
			}
		    });
		}
	    }
	    liste.serialize(serializeFunction);
	    $('extra').set('value', newOrder);
	}
    });


}

function faireUnBloc(extraBloc) {

    var tbloc = extraBloc.split('|');

    var li = new Element('li', {
	"class": "unExtra",
    });

    var fieldset = new Element('fieldset', {
	"id": "code_" + tbloc[0]
    });
    var legend = new Element('legend', {"class": "handle"}).set('text', tbloc[1].replace("#", " / ")).inject(fieldset);
    

    var ulActionBloc = new Element('ul', {
	"class": "actionBloc"
    });
    var liModif = new Element('li', {});
    var aModifBloc = new Element('a', {
	"href": "javascript:void(0)"
    }).addEvent('click', function() {
	saisirFieldset(extraBloc);
    }).set('text', "Modifier le bloc").inject(liModif);
    liModif.inject(ulActionBloc);

    var liSupp = new Element('li', {});
    var aSuppBloc = new Element('a', {
	"href": "javascript:void(0)"
    }).addEvent('click', function() {
	supprimerBloc(extraBloc);
    }).set('text', "Supprimer le bloc").inject(liSupp);
    liSupp.inject(ulActionBloc);

    var liAjout = new Element('li', {});
    var aAjoutChamp = new Element('a', {
	"href": "javascript:void(0)"
    }).addEvent('click', function() {
	gererChamp(fieldset.id.replace('code_', ''), '');
    }).set('text', "Ajouter un champ").inject(liAjout);
    liAjout.inject(ulActionBloc);

    ulActionBloc.inject(fieldset);

    if (tbloc[2].length > 1) {
	var divTexte = new Element('div', {"class": "annonce"}).set('text', tbloc[2].replace("#", " / ")).inject(fieldset);
    }

    var ulChamps = new Element('ul', {
	"class": "listeChamps"
    });

    if (tbloc[3].length > 0) {
	tbloc[3].split("#").each(function(checkbox) {
	    if (checkbox.length > 0) {
		onebox = checkbox.split("%");
		name = onebox[0];
		labelen = onebox[1];
		if (onebox[2]) {
		    labelfr = onebox[2];
		} else {
		    labelfr = labelen;
		}
		var liBox = new Element('li', {"class" : "liBox"});
		var divIntitule = new Element('div', {
		    "class": "intitule"}).set('text', labelen + " / " + labelfr).inject(liBox);
		var ulBoxAction =new Element('ul', {
		    "class": "ulBoxAction"
		});
		var liBoxActionModif = new Element('li', {});
		var aBoxActionModif = new Element('a', {
		    "href": "javascript:void(0)"
		}).set('text', "Modifier ce champ").addEvent('click', function() {
		    gererChamp(tbloc[0], checkbox);
		}).inject(liBoxActionModif);
		var liBoxActionSupp = new Element('li', {});
		var aBoxActionSupp = new Element('a', {
		    "href": "javascript:void(0)"
		}).set('text', "Supprimer ce champ").addEvent('click', function() {
		    supprimerChamp(checkbox);
		}).inject(liBoxActionSupp);
		liBoxActionModif.inject(ulBoxAction);
		liBoxActionSupp.inject(ulBoxAction);
		ulBoxAction.inject(liBox);
		var clearer = new Element('div', {
		    "styles": {
			"clear": "both",
			"height": 0,
			"line-height": 0,
			"font-size": 0
		    }}).set('html', '&nbsp;').inject(liBox);
 
		liBox.inject(ulChamps);
	    }
	});
    }
    ulChamps.inject(fieldset);
    fieldset.inject(li);
    return li;
}

function saisirFieldset(oldFieldset) {
    var maFMS = new FMS.fenetreModale();
    var divZoneForm = new Element('div',{'class' : 'modalForm'});
    var h3 = new Element('h3', {});
    if (oldFieldset.length == 0) {
	h3.set('text', "Nouveau Bloc de saisie (fieldset)").inject(divZoneForm);
    } else {
	h3.set('text', "Modification du Bloc de saisie (fieldset)").inject(divZoneForm);
    }
    var labelLegendeEn =new Element('label', {'for': 'legendeEn'});
    labelLegendeEn.set('text', "Fieldset bloc legend - english");
    var labelLegendeFr =new Element('label', {'for': 'legendeFr'});
    labelLegendeFr.set('text', "Légende du bloc - Français");
    var labelCodeBloc= new Element('label', {"for": "codeBloc"}).set("text", "Code du bloc fieldset - sans espaces ni accents");
    var labelTexteEn =new Element('label', {'for': 'texteEn'});
    labelTexteEn.set('text', "Text information to help user - english");
    var labelTexteFr =new Element('label', {'for': 'texteFr'});
    labelTexteFr.set('text', "Court texte d'information pour éclaire l'usager - Français");

    var monForm = new Element('form', {
	'action': 'javascript:void(0)',
	'method': 'post'});
    var inputCode = new Element('input', {
        'name': 'codeBloc',
	'id': 'codeBloc', 
        'type': 'text',
        'size': '40'});
    var inputLegendeEn = new Element('input', {
        'name': 'legendeEn',
	'id': 'legendeEn', 
        'type': 'text',
        'size': '70'});
    var inputLegendeFr = new Element('input', {
        'name': 'legendeFr',
	'id': 'legendeFr', 
        'type': 'text',
        'size': '70'});
    var inputTexteEn = new Element('input', {
        'name': 'texteEn',
	'id': 'texteEn', 
        'type': 'text',
        'size': '70'});
    var inputTexteFr = new Element('input', {
        'name': 'texteFr',
	'id': 'texteFr', 
        'type': 'text',
        'size': '70'});
    var bouton = new Element('input', {
	'type': 'submit',
	'name': 'go',
	'value': 'enregistrer',
	'styles': {
	    "display": "bloc",
	}
    });

    if (oldFieldset.length > 0) {
	var tbloc = oldFieldset.split('|');
	inputCode.set('value', tbloc[0]);
	var tleg = tbloc[1].split('#');
	inputLegendeEn.set('value', tleg[0]);
	inputLegendeFr.set('value', tleg[1]);
	var ttex = tbloc[2].split('#');
	inputTexteEn.set('value', ttex[0]);
	inputTexteFr.set('value', ttex[1]);
    }
    var divCodeBloc = new Element("div", {});
    var divLegendeEn = new Element('div', {});
    var divLegendeFr = new Element('div', {});
    var divTexteEn = new Element('div', {});
    var divTexteFr = new Element('div', {});
    labelCodeBloc.inject(divCodeBloc);
    inputCode.inject(divCodeBloc);
    labelLegendeEn.inject(divLegendeEn);
    inputLegendeEn.inject(divLegendeEn);
    labelLegendeFr.inject(divLegendeFr);
    inputLegendeFr.inject(divLegendeFr);
    labelTexteEn.inject(divTexteEn);
    inputTexteEn.inject(divTexteEn);
    labelTexteFr.inject(divTexteFr);
    inputTexteFr.inject(divTexteFr);
    divCodeBloc.inject(monForm);
    divLegendeEn.inject(monForm);
    divLegendeFr.inject(monForm)
    divTexteEn.inject(monForm);
    divTexteFr.inject(monForm)
    bouton.inject(monForm);
    monForm.inject(divZoneForm);
    monForm.addEvent('submit', function() {
	var nvFieldset = "§" + inputCode.get('value') + "|" + inputLegendeEn.get('value') + "#" + inputLegendeFr.get('value') + "|" +  inputTexteEn.get('value') + "#" + inputTexteFr.get('value') + "|";


	if (oldFieldset.length > 0) {
	    var newString = $('extra').get('value').replace(oldFieldset, nvFieldset + tbloc[3]);
	} else {
	    var newString = $('extra').get('value') + nvFieldset;
	}
	newString.replace("\#\#", "\#");
	newString.replace("§§", "§");

	$('extra').set('value', newString);
	afficherExtra();
	maFMS.cacher();
    });

   maFMS.setContenu(divZoneForm);
   maFMS.setMethode('dom');
   maFMS.insertContent();

}

function supprimerBloc(extraBloc) {
    var newString = $('extra').value.replace(extraBloc, '');
    $('extra').set('value',  newString);
    afficherExtra();
}

function supprimerChamp(oldChamp) {
    var newString = $('extra').value.replace(oldChamp, '');
    $('extra').set('value',  newString);
    afficherExtra();
}

function gererChamp(codeBloc, champ) {
    var maFMS = new FMS.fenetreModale();
    var divZoneForm = new Element('div',{'class' : 'modalForm'});
    var h3 = new Element('h3', {});
    if (champ.length == 0) {
	h3.set('text', "Nouvelle case à cocher dans le bloc " + codeBloc).inject(divZoneForm);
    } else {
	h3.set('text', "Modification de la  case à cocher dans le bloc " + codeBloc).inject(divZoneForm);
    }

    var labelLegendeEn =new Element('label', {'for': 'legendeEn'}).set('text', "Label associé - english");
    var labelLegendeFr =new Element('label', {'for': 'legendeFr'}).set('text', "Label associé - Français");
    var labelCodeChamp = new Element('label', {"for": "codeBloc"}).set("text", "Code du champ - sans espaces ni accents");

    var monForm = new Element('form', {
	'action': 'javascript:void(0)',
	'method': 'post'});
    var inputCode = new Element('input', {
        'name': 'codeChamp',
	'id': 'codeChamp', 
        'type': 'text',
        'size': '40'});
    var inputLegendeEn = new Element('input', {
        'name': 'legendeEn',
	'id': 'legendeEn', 
        'type': 'text',
        'size': '70'});
    var inputLegendeFr = new Element('input', {
        'name': 'legendeFr',
	'id': 'legendeFr', 
        'type': 'text',
        'size': '70'});
    var bouton = new Element('input', {
	'type': 'submit',
	'name': 'go',
	'value': 'enregistrer',
	'styles': {
	    "display": "bloc",
	}});

    if (champ.length > 0) {
	var tchamp = champ.split("%");
	inputCode.set('value', tchamp[0]);
	inputLegendeEn.set('value', tchamp[1]);
	inputLegendeFr.set('value', tchamp[2]);
    }
    var divCodeChamp = new Element("div", {});
    var divLegendeEn = new Element('div', {});
    var divLegendeFr = new Element('div', {});

    labelCodeChamp.inject(divCodeChamp);
    inputCode.inject(divCodeChamp);
    labelLegendeEn.inject(divLegendeEn);
    inputLegendeEn.inject(divLegendeEn);
    labelLegendeFr.inject(divLegendeFr);
    inputLegendeFr.inject(divLegendeFr);
    divCodeChamp.inject(monForm);
    divLegendeEn.inject(monForm);
    divLegendeFr.inject(monForm)
    bouton.inject(monForm);
    monForm.inject(divZoneForm);

    monForm.addEvent('submit', function() {
	var nvChamp = "#" + inputCode.get('value') + "%" + inputLegendeEn.get('value') + "%" + inputLegendeFr.get('value');
	var newBloc = new Array();
	$('extra').value.split("§").each(function(bloc) {
	    if (bloc.length > 0) {
		if (! bloc.match(codeBloc)) {
		    newBloc.push(bloc);
		} else {
		    if (champ.length == 0) {
			newBloc.push(bloc + nvChamp);
		    } else {
			newBloc.push(bloc.replace(champ, nvChamp));
		    }
		}
	    }
	});

	var newString = "";
	newBloc.each(function(bloc) {
	    newString += "§" + bloc;
	});
	newString.replace("\#\#", "\#");
	newString.replace("§§", "§");
	$('extra').set('value',  newString);

	afficherExtra();
	maFMS.cacher();
    });

   maFMS.setContenu(divZoneForm);
   maFMS.setMethode('dom');
   maFMS.insertContent();

}


/**
 *   Fonctions pour le tri des associations
 *
 **/
triAsso = new Class({
    "initialize": function() {
	this.tri = new Array();
	this.order = 0;
    },

    "addAsso": function(idAssoSlave) {
	this.tri[this.order] = idAssoSlave;
	this.order++;
    },

    "trier": function() {
	this.order = 0;
    $$('.movable').each(function(asso) {
	var idAssoSlave = asso.id.replace("asso_", "");
	monTriAsso.addAsso(idAssoSlave);
    });
    $('ordreAsso').set('value', JSON.encode(monTriAsso));

    }
});

function triAssoDepart() {
    monTriAsso.trier();

    var liste = new Sortables('.listeAsso', {
	"constrain": true,
	"onSort" : function() {
	    monTriAsso.trier();
	}
    });

}


/**
 *   Fonctions pour le tri des actualités
 *
 **/
triActu = new Class({
    "initialize": function() {
	this.tri = new Array();
	this.order = 0;
    },

    "addActu": function(idActu) {
	this.tri[this.order] = idActu;
	this.order++;
    },

    "depart": function() {

    },

    "trier": function() {
	    this.order = 0;
    $$('.ligne').each(function(actu) {
	var idActu = actu.id.replace("code_", "");
	monTriActu.addActu(idActu);
    });
    $('ordreActu').set('value', JSON.encode(monTriActu));

    }
});

function triActuDepart() {
    monTriActu.trier();

    var liste = new Sortables('actuTri', {
	"constrain": true,
	"onSort" : function() {
	    monTriActu.trier();
	}
    });

}
