diff --git a/js/includes/input-html-data-min.js b/js/includes/input-html-data-min.js
index b628266..05611f3 100644
--- a/js/includes/input-html-data-min.js
+++ b/js/includes/input-html-data-min.js
@@ -1,3 +1,3 @@
var contactBuilder=new HTMLBuilder;contactBuilder.setLayout("
\n\n");
var miniFicheBuilder=new HTMLBuilder;miniFicheBuilder.setLayout("\n\t\n\t\n\t\n\t\n\t\n\t@firstname @lastname @username
\n\t\t\t@countcall appels\t
\t\t\t@countsms sms\t
\t\n\t\t\n\t\t   \n\t
\n\t\n\t\t\n\t
\n\t\n\t\t\n\t
\n\tType de relation
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\t\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n");
-var ficheBuilder=new HTMLBuilder;ficheBuilder.setLayout("\n\t\n\t\n\t\n\t\n\t\n\t@firstname @lastname @username
\n\t\t\t@countcall appels\t
\t\t\t@countsms sms\t
\t\n\t\t\n\t\t \n\t
\n\t\n\t\t\n\t
\n\t\n\t\t\n\t
\n\t\n\t\tSituation familiale:
\n\t\t\n\t\t
\n\t\t
\n\t\t \n\t
\n\t\n\t\t\n\t
\n\tType de relation
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\tO\u00f9 habite t-elle/il\u00a0?
\n\t\n\t\t\n\t
\n\t\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\t\n\t\tDepuis quand connaissez-vous cette personne ?
\n\t\tmois\n\t\tet ans.\n\t
\n\tContexte de rencontre
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t
\n\tAvec quelle fr\u00e9quence discutez-vous avec cette personne\u00a0?
\n\t\n\t\tFace \u00e0 face
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tT\u00e9l\u00e9phone ou skype et \u00e9quivalent
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tSMS, et \u00e9quivalents
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tCourrier \u00e9lectronique
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tFacebook ou autre r\u00e9seau social
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\tComment \u00eates-vous \u00ab\u00a0connect\u00e9\u00a0\u00bb \u00e0 cette personne\u00a0?
\n\t\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t \n\t\t \n\t
\n\t\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t \n\t\t \n\t
\n\t\n\t\tElle figure parmi vos amis facebook
\n\t\t \n\t\t \n\t
\n\t\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t \n\t\t \n\t
\n\t\n\t\tVous le suivez sur Twitter
\n\t\t \n\t\t \n\t
\n\t\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t \n\t\t \n\t
\n\t\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n");
+var ficheBuilder=new HTMLBuilder;ficheBuilder.setLayout("\n\t\n\t\n\t\n\t\n\t\n\t@firstname @lastname @username
\n\t\t\t@countcall appels\t
\t\t\t@countsms sms\t
\t\n\t\t\n\t\t \n\t
\n\t\n\t\t\n\t
\n\t\n\t\t\n\t
\n\t\n\t\tSituation familiale:
\n\t\t\n\t\t
\n\t\t
\n\t\t \n\t
\n\t\n\t\t\n\t
\n\tType de relation
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\tO\u00f9 habite t-elle/il\u00a0?
\n\t\n\t\t\n\t\t\n\t
\n\t\n\t\tO\u00f9 habite t-elle/il\u00a0?
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\t\n\t\tDepuis quand connaissez-vous cette personne ?
\n\t\tmois\n\t\tet ans.\n\t
\n\tContexte de rencontre
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t\t
\n\t
\n\t\n\t\t
\n\t\t
\n\t\t
\n\t
\n\tAvec quelle fr\u00e9quence discutez-vous avec cette personne\u00a0?
\n\t\n\t\tFace \u00e0 face
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tT\u00e9l\u00e9phone ou skype et \u00e9quivalent
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tSMS, et \u00e9quivalents
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tCourrier \u00e9lectronique
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\t\n\t\tFacebook ou autre r\u00e9seau social
\n\t\t \n\t\t \n\t\t \n\t\t \n\t
\n\tComment \u00eates-vous \u00ab\u00a0connect\u00e9\u00a0\u00bb \u00e0 cette personne\u00a0?
\n\t\n\t\tSes coordonn\u00e9es sont dans votre carnet d\u2019adresse
\n\t\t \n\t\t \n\t
\n\t\n\t\tSon num\u00e9ro de mobile est enregistr\u00e9 sur votre mobile (ou vous-m\u00eames \u00eates sur le sien)
\n\t\t \n\t\t \n\t
\n\t\n\t\tElle figure parmi vos amis facebook
\n\t\t \n\t\t \n\t
\n\t\n\t\tElle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif r\u00e9guli\u00e8rement
\n\t\t \n\t\t \n\t
\n\t\n\t\tVous le suivez sur Twitter
\n\t\t \n\t\t \n\t
\n\t\n\t\tVous communiquez avec cette personne sur Twitter
\n\t\t \n\t\t \n\t
\n\t\n\t\tVous communiquez dans autre r\u00e9seau social : \n\t
\n\t\n\t\tVous communiquez dans un autre dispositif (blogs, jeu vid\u00e9o ou autre) : \n\t
\n
\n");
diff --git a/js/includes/input-html-data.js b/js/includes/input-html-data.js
index 50005d1..d133778 100644
--- a/js/includes/input-html-data.js
+++ b/js/includes/input-html-data.js
@@ -341,6 +341,7 @@ ficheBuilder.setLayout(
"\t\n"+
"\t\t\n"+
+ "\t\t\n"+
"\t
\n"+
diff --git a/js/includes/input-phone-fiche-min.js b/js/includes/input-phone-fiche-min.js
index 2449488..79fe69b 100644
--- a/js/includes/input-phone-fiche-min.js
+++ b/js/includes/input-phone-fiche-min.js
@@ -1,20 +1,20 @@
-function inputPhoneFiche(a,b){this.container=a;this.nav_container=b}inputPhoneFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"H",age:".",job:".",famsit:"0",studies:".",reltype:"0",reltypeSpecial:"",city:"",loc:"0",duration:["",""],context:"0",contextSpecial:["","",""],freq:["0","4","8","12","16"],connect:"1 3 5 7 9 11".split(" "),connectSpecial:["",""],timestamp:0,valid:!1}};
+function inputPhoneFiche(a,b){this.container=a;this.nav_container=b}inputPhoneFiche.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null,defaultData:{sexe:"H",age:".",job:".",famsit:"0",studies:".",reltype:"0",reltypeSpecial:"",city:"",cp:"",loc:"0",duration:["",""],context:"0",contextSpecial:["","",""],freq:["0","4","8","12","16"],connect:"1 3 5 7 9 11".split(" "),connectSpecial:["",""],timestamp:0,valid:!1}};
inputPhoneFiche.prototype.fieldsToStorage=function(){console.log("FICHE: FIELDS TO STORAGE");for(var a=$$("article.relation-panel .fiche-relation"),b=0;b FICHE UPDATE"),c.timestamp=Date.now());lsi.set("fiches",c.uid,c)}}};
-inputPhoneFiche.prototype.add=function(a){console.log("FICHE: ADD");if(null==a.uid||null==a.contact)return!1;a.city=null!=a.city?a.city:this.defaultData.city;a.duration[0]=null!=a.duration[0]?a.duration[0]:this.defaultData.duration[0];a.duration[1]=null!=a.duration[1]?a.duration[1]:this.defaultData.duration[1];a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.contextSpecial[0]=null!=a.contextSpecial[0]?a.contextSpecial[0]:this.defaultData.contextSpecial[0];
-a.contextSpecial[1]=null!=a.contextSpecial[1]?a.contextSpecial[1]:this.defaultData.contextSpecial[1];a.contextSpecial[2]=null!=a.contextSpecial[2]?a.contextSpecial[2]:this.defaultData.contextSpecial[2];a.connectSpecial[0]=null!=a.connectSpecial[0]?a.connectSpecial[0]:this.defaultData.connectSpecial[0];a.connectSpecial[1]=null!=a.connectSpecial[1]?a.connectSpecial[1]:this.defaultData.connectSpecial[1];a.job=null!=a.job?a.job:this.defaultData.job;a.studies=null!=a.studies?a.studies:this.defaultData.studies;
-a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.famsit=null!=a.famsit?a.famsit:this.defaultData.famsit;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.context=null!=a.context?a.context:this.defaultData.context;a.freq=null!=a.freq?a.freq:this.defaultData.freq;a.connect=null!=a.connect?a.connect:this.defaultData.connect;var b=lsi.get("contacts",a.contact);if(!1===b)return!1;this.container.innerHTML+=
-ficheBuilder.build({firstname:b.firstname,lastname:b.lastname,username:0==b.username.length?"":"("+b.username+")",countcall:b.countcall,countsms:b.countsms,uid:a.uid,contact:a.contact,city:a.city,duration0:a.duration[0],duration1:a.duration[1],reltypespecial:a.reltypeSpecial,contextspecial0:a.contextSpecial[0],contextspecial1:a.contextSpecial[1],contextspecial2:a.contextSpecial[2],connectspecial0:a.connectSpecial[0],connectspecial1:a.connectSpecial[1]});b=$('article.fiche-relation input[data-name="uid"][value="'+
-a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=b&&b.setAttribute("selected","selected");for(var c=$$('article.fiche-relation input[data-name="uid"][value="'+
-a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="famsit"]');for(b=0;binput[type="radio"][data-name="reltype"]');
-for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;binput[type="radio"][data-name="context"]');for(b=0;binput[type="radio"][data-name="freq"]');for(b=0;binput[type="radio"][data-name="connect"]');for(b=0;b FICHE UPDATE"),c.timestamp=Date.now());lsi.set("fiches",c.uid,c)}}};
+inputPhoneFiche.prototype.add=function(a){console.log("FICHE: ADD");if(null==a.uid||null==a.contact)return!1;a.city=null!=a.city?a.city:this.defaultData.city;a.cp=null!=a.cp?a.cp:this.defaultData.cp;a.duration[0]=null!=a.duration[0]?a.duration[0]:this.defaultData.duration[0];a.duration[1]=null!=a.duration[1]?a.duration[1]:this.defaultData.duration[1];a.reltypeSpecial=null!=a.reltypeSpecial?a.reltypeSpecial:this.defaultData.reltypeSpecial;a.contextSpecial[0]=null!=a.contextSpecial[0]?a.contextSpecial[0]:
+this.defaultData.contextSpecial[0];a.contextSpecial[1]=null!=a.contextSpecial[1]?a.contextSpecial[1]:this.defaultData.contextSpecial[1];a.contextSpecial[2]=null!=a.contextSpecial[2]?a.contextSpecial[2]:this.defaultData.contextSpecial[2];a.connectSpecial[0]=null!=a.connectSpecial[0]?a.connectSpecial[0]:this.defaultData.connectSpecial[0];a.connectSpecial[1]=null!=a.connectSpecial[1]?a.connectSpecial[1]:this.defaultData.connectSpecial[1];a.job=null!=a.job?a.job:this.defaultData.job;a.studies=null!=a.studies?
+a.studies:this.defaultData.studies;a.age=null!=a.age?a.age:this.defaultData.age;a.sexe=null!=a.sexe?a.sexe:this.defaultData.sexe;a.famsit=null!=a.famsit?a.famsit:this.defaultData.famsit;a.reltype=null!=a.reltype?a.reltype:this.defaultData.reltype;a.loc=null!=a.loc?a.loc:this.defaultData.loc;a.context=null!=a.context?a.context:this.defaultData.context;a.freq=null!=a.freq?a.freq:this.defaultData.freq;a.connect=null!=a.connect?a.connect:this.defaultData.connect;var b=lsi.get("contacts",a.contact);if(!1===
+b)return!1;this.container.innerHTML+=ficheBuilder.build({firstname:b.firstname,lastname:b.lastname,username:0==b.username.length?"":"("+b.username+")",countcall:b.countcall,countsms:b.countsms,uid:a.uid,contact:a.contact,city:a.city,cp:a.cp,duration0:a.duration[0],duration1:a.duration[1],reltypespecial:a.reltypeSpecial,contextspecial0:a.contextSpecial[0],contextspecial1:a.contextSpecial[1],contextspecial2:a.contextSpecial[2],connectspecial0:a.connectSpecial[0],connectspecial1:a.connectSpecial[1]});
+b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="job"]>option[value="'+a.job+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="studies"]>option[value="'+a.studies+'"]');null!=b&&b.setAttribute("selected","selected");b=$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>span>select[data-name="age"]>option[value="'+a.age+'"]');null!=
+b&&b.setAttribute("selected","selected");for(var c=$$('article.fiche-relation input[data-name="uid"][value="'+a.uid+'"] ~ h5>input[type="radio"][data-name="sexe"]'),b=0;binput[type="radio"][data-name="famsit"]');for(b=0;binput[type="radio"][data-name="reltype"]');for(b=0;binput[type="radio"][data-name="loc"]');for(b=0;binput[type="radio"][data-name="context"]');for(b=0;binput[type="radio"][data-name="freq"]');for(b=0;binput[type="radio"][data-name="connect"]');
+for(b=0;bb.length)for(c in a){for(a=0;-1a;)a++;b.push(a);d=lsi.get("fiches",
a);null==d&&(d=this.defaultData);d.uid=a;d.contact=c;lsi.set("fiches",a,d);if(20<=b.length)break}var d=lsi["export"]("fiches"),e;for(e in d)miniData=lsi.get("mini-fiches",d[e].contact),null==miniData.timestamp||d[e].timestamp>miniData.timestamp?(miniData.sexe=d[e].sexe,miniData.age=d[e].age,miniData.studies=d[e].studies,miniData.loc=d[e].loc,miniData.reltype=d[e].reltype,miniData.reltypeSpecial=d[e].reltypeSpecial):(d[e].sexe=miniData.sexe,d[e].age=miniData.age,d[e].studies=miniData.studies,d[e].loc=
miniData.loc,d[e].reltype=miniData.reltype,d[e].reltypeSpecial=miniData.reltypeSpecial),lsi.set("mini-fiches",d[e].contact,miniData),lsi.set("fiches",e,d[e]);for(e in d)b=lsi.get("contacts",d[e].contact),null!=b&&-1!=b.sms&&-1!=b.call&&(b=10>parseInt(e)?10+b.sms:b.call,b=d[b],b.timestamp>=d[e].timestamp||(c=d[e],c.uid=b.uid,lsi.set("fiches",b.uid,c)))};
inputPhoneFiche.prototype.nav=function(a){if(null==a||!1===a.getData("n")||isNaN(a.getData("n"))||"nav-fiche"!=a.parentNode.id)return!1;for(var b=$$("#nav-fiche > span.active"),c=0;cAPPELS"),9==c?this.nav_container.innerHTML+=''+(c%10+1)+" ":(10==c&&(this.nav_container.innerHTML+='SMS'),this.nav_container.innerHTML+=''+(c%10+1)+"")}for(var f in a)b=
$('#nav-fiche [data-n="'+a[f].uid+'"]'),null!=b&&(!0===a[f].valid?b.addClass("done"):b.remClass("done"));this.nav($('#nav-fiche [data-n="'+this.selected+'"]'))};
-inputPhoneFiche.prototype.check=function(a){if(2>a.city.length||isNaN(parseInt(a.duration[0]))&&0a.reltypeSpecial.length||
+inputPhoneFiche.prototype.check=function(a){if(2>a.city.length||isNaN(a.cp)||isNaN(parseInt(a.duration[0]))&&0a.reltypeSpecial.length||
"11"==a.context&&2>a.contextSpecial[0].length||"12"==a.context&&2>a.contextSpecial[1].length||"13"==a.context&&2>a.contextSpecial[2].length?!1:!0};inputPhoneFiche.prototype.attach=function(a){console.log("FICHE: ATTACH");lsi.createDataset("fiches");this.storageToFields();this.handler=a;var b=this,b=this;this.nav_container.addEventListener("click",function(a){b.nav(a.target);b.handler(a.target)},!1)};
diff --git a/js/includes/input-phone-fiche.js b/js/includes/input-phone-fiche.js
index bfe0a7e..f3ee99c 100644
--- a/js/includes/input-phone-fiche.js
+++ b/js/includes/input-phone-fiche.js
@@ -21,6 +21,7 @@ inputPhoneFiche.prototype = {
reltype: '0', // Choix 1 à 9
reltypeSpecial: '',
city: '',
+ cp: '',
loc: '0',
duration: ['', ''],
context: '0', // Choix 1 à 14
@@ -80,6 +81,7 @@ inputPhoneFiche.prototype.fieldsToStorage = function(){
reltype: deflated.reltype,
reltypeSpecial: deflated.reltypeSpecial,
city: deflated.city,
+ cp: deflated.cp,
loc: deflated.loc,
duration: deflated.duration,
context: deflated.context,
@@ -131,6 +133,7 @@ inputPhoneFiche.prototype.add = function(objectData){
/* (0) Gestion du formattage des valeur */
// {1} Champs de texte //
objectData.city = (objectData.city != null) ? objectData.city : this.defaultData.city;
+ objectData.cp = (objectData.cp != null) ? objectData.cp : this.defaultData.cp;
objectData.duration[0] = (objectData.duration[0] != null) ? objectData.duration[0] : this.defaultData.duration[0];
objectData.duration[1] = (objectData.duration[1] != null) ? objectData.duration[1] : this.defaultData.duration[1];
objectData.reltypeSpecial = (objectData.reltypeSpecial != null) ? objectData.reltypeSpecial : this.defaultData.reltypeSpecial;
@@ -173,6 +176,7 @@ inputPhoneFiche.prototype.add = function(objectData){
uid: objectData.uid,
contact: objectData.contact, // uid du contact associé
city: objectData.city,
+ cp: objectData.cp,
duration0: objectData.duration[0],
duration1: objectData.duration[1],
reltypespecial: objectData.reltypeSpecial,
@@ -563,71 +567,74 @@ inputPhoneFiche.prototype.check = function(ficheData){
// 1. La ville a au moins 2 caractères
if( ficheData.city.length < 2 )
return false;
- // 2. La durée de la relation en mois est vide ou un nombre
+ // 2. Le code postal est un nombre
+ if( isNaN(ficheData.cp) )
+ return false;
+ // 3. La durée de la relation en mois est vide ou un nombre
if( isNaN(parseInt(ficheData.duration[0])) && ficheData.duration[0].length > 0 )
return false;
- // 3. La durée de la relation en année est vide ou un nombre
+ // 4. La durée de la relation en année est vide ou un nombre
if( isNaN(parseInt(ficheData.duration[1])) && ficheData.duration[1].length > 0 )
return false;
- // 4. Pour la durée de la relation, au moins un des 2 n'est pas vide
+ // 5. Pour la durée de la relation, au moins un des 2 n'est pas vide
if( ficheData.duration[0].length+ficheData.duration[1].length == 0 )
return false;
// {2} Vérification des