function CarnetAdresses() {
    this.superClass = ModelList;
    this.superClass();
    delete this.superclass;

    this._adresses = {}; // Tableau d'objets Adresse (liste des adresses du carnet)
};
CarnetAdresses.prototype = new ModelList();

CarnetAdresses.prototype.adresses = function() { return this._adresses; };
CarnetAdresses.prototype.getFromId = function(id) { return this._adresses[id]; };

CarnetAdresses.prototype.intituleExists = function(intitule) { 
    for (var id in this._adresses) if (this._adresses[id].intitule()==intitule) return true;
    return false;
};

CarnetAdresses.prototype.loadFromCookie = function() {
    //var str = '[{"nom":"bureau", "adresse":"Ambert"}, {"nom":"maison", "adresse":"Ambert"}]';
    var str = Cookie.load("adresses");
    if (str!="") {
	var adressesArray = eval(str);
	
	for (var i=0;i<adressesArray.length;i++) {
	    var intitule = adressesArray[i]['nom'];
	    var adresse = adressesArray[i]['adresse'];
	    var lat = adressesArray[i]['lat'];
	    var lng = adressesArray[i]['lng'];
	    var region = adressesArray[i]['region'];
	    var departement = adressesArray[i]['departement'];
	    var commune = adressesArray[i]['commune'];
	    
	    var a = new CCAdresse(intitule, new Adresse(adresse, lat, lng, region, departement, commune));
	    this._adresses[a.id()] = a;
	}
    }

    var modeleRows = {};
    for (var id in this._adresses) {
	var adresse = this._adresses[id];

	var modelRow = {};
	modelRow['intitule'] = adresse.intitule();
	modelRow['adresse'] = adresse.adresse().adresse();
	modelRow['lat'] = adresse.adresse().lat();
	modelRow['lng'] = adresse.adresse().lng();
	modelRow['region'] = adresse.adresse().region();
	modelRow['departement'] = adresse.adresse().departement();
	modelRow['commune'] = adresse.adresse().commune();
	modelRow['actions'] = "";
	
	modeleRows[id] = modelRow;
    }

    this.initialRows(modeleRows);
};

CarnetAdresses.prototype.addAdresse = function(ccAdresse) {
    this._adresses[ccAdresse.id()] = ccAdresse;

    var modelRow = {};
    var id = ccAdresse.id();
    modelRow['intitule'] = ccAdresse.intitule();
    modelRow['adresse'] = ccAdresse.adresse().adresse();
    modelRow['lat'] = ccAdresse.adresse().lat();
    modelRow['lng'] = ccAdresse.adresse().lng();
    modelRow['region'] = ccAdresse.adresse().region();
    modelRow['departement'] = ccAdresse.adresse().departement();
    modelRow['commune'] = ccAdresse.adresse().commune();
    modelRow['actions'] = "";

    this.rowAdded(id, modelRow);
}

CarnetAdresses.prototype.getHeader = function(index) {
    var s = this;

    switch (index) {
    case 'intitule':
	return {'nom':'Intitulé', 'type':'string'}
	break;
    case 'adresse':
	return {'nom':'Adresse', 'type':'string'}
	break;
    case 'lat':
	return {'nom':'Lat.', 'type':'number'}
	break;
    case 'lng':
	return {'nom':'Long.', 'type':'number'}
	break;
    case 'region':
	return {'nom':'Région', 'type':'string'}
	break;
    case 'departement':
	return {'nom':'Département', 'type':'string'}
	break;
    case 'commune':
	return {'nom':'Commune', 'type':'string'}
	break;
    case 'actions':
	return {'nom':'Actions', 'type':'string', 'func':function(data, id, tr) {
		var p = document.createElement('p');
		
		var a = document.createElement('a');
		p.appendChild(a);
		a.href = "#";
		a.innerHTML = "[localiser sur la carte]";
		a.onclick = function() { 
		    HEvent.trigger(s, "localised", id);
		    return false;
		}

		p.appendChild(document.createElement('br'));

		a = document.createElement('a');
		p.appendChild(a);
		a.href = "#";
		a.innerHTML = "[modifier]";
		a.onclick = function() { 
		    var intitule = prompt("Nouvel intitulé : ", tr._row['intitule']);
		    if (intitule==null) alert("Le label est obligatoire");
		    else if (intitule!=tr._row['intitule']) {
			if (s.intituleExists(intitule)) alert("Ce label existe déjà");
			else {
			    s._adresses[id]._intitule = intitule;
			    s.dataChanged(id, 'intitule', intitule);
			}
		    }
		    return false;
		}

		p.appendChild(document.createElement('br'));

		a = document.createElement('a');
		p.appendChild(a);
		a.href = "#";
		a.innerHTML = "[supprimer]";
		a.onclick = function() { 
		    if (!confirm("supprimer l'adresse "+s._adresses[id].intitule()+" ?")) return false;

		    s.rowRemoved(id);
		    delete s._adresses[id];
		    return false;
		}
		
		return { 'node': p };		
	    }};
	break;
    }
}

CarnetAdresses.prototype.writeCookie = function() {
    var str = "[";
    for (id in this._adresses) {
	var ccAdresse = this._adresses[id];
	var adresse = ccAdresse.adresse();

	str += '{';
	str += '"nom":"'+ccAdresse.intitule()+'"';
	str += ',"adresse":"'+adresse.adresse()+'"';
	str += ',"lat":"'+adresse.lat()+'"';
	str += ',"lng":"'+adresse.lng()+'"';
	str += ',"region":"'+adresse.region()+'"';
	str += ',"departement":"'+adresse.departement()+'"';
	str += ',"commune":"'+adresse.commune()+'"';
	str += '},'; 
    }
    str += "]";
    Cookie.write("adresses", str);

};


