/* "Gestionnaire" d'événements */
// http://www.scottandrew.com/weblog/articles/cbs-events
function addEvent(obj, evType, fn, useCapture)
{
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
    return false;
  }
}

function removeEvent(obj, evType, fn, useCapture)
{
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
    return false;
  }
}
/* Fin "gestionnaire" d'événements */

/* Formulaire multicritères */
function verifMulticriteresForm()
{
    var request = '/index.asp?idmetapage=4&t=multi';
	var domaine = 'http://'+window.location.host;
	request = domaine+request; 
	
    var inputs   = new Array(3);
    inputs[0]     = 'newsecteur';
    inputs[1]     = 'newacces';
    inputs[2]     = 'newdate';
    inputs[3]     = 'newpays';
    inputs[4]     = 'neworganisateur';
    for(var i=0; i < inputs.length; i++) {
        var name = inputs[i];
        request += '&'+name.replace(/new/, '')+'=';
        if(document.getElementById(name).value != '') {
            var optionvalue = document.getElementById(name).value;
            var params = optionvalue.split('&v=');
            request += params[params.length-1];
        }
    }
    request += '&ville=';
    var optionvalue = document.getElementById('newville2').value;
    if (optionvalue != '') {
        var params = optionvalue.split('&v=');
        if (params[params.length-1].substr(0,6) != 'Toutes') {request += params[params.length-1];}
    }
    document.getElementById('container').innerHTML += request;
	
	//alert(request);
	
    document.location = request;
}

function createMulticriteresForm(obj)
{
    if(document.getElementById(obj)) {
        var txt = '<h4>'+document.getElementById(obj).getElementsByTagName('h4')[0].innerHTML+' :</h4>';
        txt += '<p>'+document.getElementById(obj).getElementsByTagName('h4')[1].innerHTML+'</p>';
        txt += '<form id="multi" onsubmit="return verifMulticriteresForm();">';
        
        txt += createSimpleSelect('pays','h5');
//        txt += createSimpleSelect('ville','h5'); 
        txt += createAdvancedSelect('ville','h3','p','h4');        
        txt += createSimpleSelect('secteur','h5');
        txt += createSimpleSelect('acces','h5');
        txt += createSimpleSelect('date','h5');
        txt += createSimpleSelect('organisateur','h5');
        
        txt += '<div><input type="submit" value="Rechercher"/></div></form>';
        document.getElementById(obj).innerHTML = txt;
    }
}

// -----------------------------------
// Affichage des boutons de selection
// -----------------------------------
function createSimpleSelect(obj,tag)
{
    if(document.getElementById(obj)) {
        var tags       = document.getElementById(obj).getElementsByTagName('a');
        var titre = document.getElementById(obj).getElementsByTagName(tag)[0];
        titre.removeChild(titre.getElementsByTagName('span')[0]);
        var maintext = titre.innerHTML;

        var txt   = '<p><label for="new'+obj+'">'+maintext+'</label><select id="new'+obj+'" ';

// Pays : ajout d'un positionnement sur "toutes les villes"
        if (obj=='pays') { txt +=' onchange="initVille();" ';};

        txt      += '><option class="first" value="">'+maintext+'</option>';

        for(var i=0; i < tags.length; i++) {
        txt += '<option value="'+tags[i]+'">'+tags[i].innerHTML+'</option>';
        }

        txt += '</select></p>';
        return txt;
    }
}

function createAdvancedSelect(obj,maincontent,maintag,subtag)
{
    if(document.getElementById(obj)) {
        var tags       = document.getElementById(obj).getElementsByTagName('div');
        var maintext = document.getElementById(obj).getElementsByTagName(maintag)[0].innerHTML;
        var txt         = '<p><select id="new'+obj+'2" ';
// Ville : ajout d'un positionnement sur le pays correspondant
        if (obj='ville') { txt +=' onchange="initPays();" ';};
        txt += ' ><option class="first" value="">'+maintext+'</option>';

        for(var j=0; j < tags.length; j++) {
        var subtags = tags[j].getElementsByTagName('a');
        var subtext = tags[j].getElementsByTagName(subtag)[0].innerHTML;
        txt += '<optgroup label="'+subtext+'">';
        for(var i=0; i < subtags.length; i++) {
            txt += '<option value="'+subtags[i]+'">'+subtags[i].innerHTML+'</option>';
        }
        txt += '</optgroup>';
        }
        txt += '</select></p>';
        return txt;
    }
}
/* Fin Formulaire multicritères */

function createSimpleSelectRedirection(obj,tag)
{
    if(document.getElementById(obj)) {
        var tags       = document.getElementById(obj).getElementsByTagName('a');
        var maintext = document.getElementById(obj).getElementsByTagName(tag)[0].innerHTML;

        var txt = '<'+tag+'>'+maintext+'</'+tag+'>';
        txt += '<select id="new'+obj+'"><option class="first">'+maintext+'</option>';

        for(var i=0; i < tags.length; i++) {
        txt += '<option value="'+tags[i]+'">'+tags[i].innerHTML+'</option>';
        }

        txt += '</select>';

        document.getElementById(obj).innerHTML = txt;

        addEvent(document.getElementById('new'+obj),'change', function() { window.location = document.getElementById('new'+obj).value; } );
    }
}

function createAdvancedSelectRedirection(obj,maincontent,maintag,subtag)
{
    if(document.getElementById(obj)) {
        var tags       = document.getElementById(obj).getElementsByTagName('div');
        var maintext = document.getElementById(obj).getElementsByTagName(maintag)[0].innerHTML;
        var txt         = '<'+maincontent+'>'+document.getElementById(obj).getElementsByTagName(maincontent)[0].innerHTML+'</'+maincontent+'>';
        txt             += '<select id="new'+obj+'"><option class="first">'+maintext+'</option>';

        for(var j=0; j < tags.length; j++) {
        var subtags = tags[j].getElementsByTagName('a');
        var subtext = tags[j].getElementsByTagName(subtag)[0].innerHTML;

        txt += '<optgroup label="'+subtext+'">';

        for(var i=0; i < subtags.length; i++) {
            txt += '<option value="'+subtags[i]+'">'+subtags[i].innerHTML+'</option>';
        }

        txt += '</optgroup>';
        }

        txt += '</select>';

        document.getElementById(obj).innerHTML = txt;

        addEvent(document.getElementById('new'+obj),'change', function() { window.location = document.getElementById('new'+obj).value; } );
    }
}

function launch() {
    // Suppression des liens d'évitements
    if(document.getElementById('speedlinks')) {
        var Parent = document.getElementById('speedlinks').parentNode;
        Parent.removeChild(document.getElementById('speedlinks'));
    }
    
    // Création du formulaire multicritères
    createMulticriteresForm('multicriteres');
    
    // Création des outils de sélection avec redirection automatique si nécessaire
    createSimpleSelectRedirection('manifestations','h3');
    createAdvancedSelectRedirection('lieux','h3','p','h4');
}

// Initialise l'ensemble des intéractions
addEvent(window,'load',launch);