function Agenda(nv){
 this.nombres = new Array();
 this.emails = new Array();
 this.nombreTextArea = new String();
 this.nombreDiv = new String();
 this.mostrarDiv = false;
 this.encontrados = 0;
 this.seleccionado = -1;
 this.contactosEncontrados = new Array();
 this.nombreVar = new String(nv);
 this.colorFondo = new String("#cccccc");
 this.colorSelec = new String("#ffffff");

 this.anade = A_anade;
 this.setNombreTextArea = A_setNombreTextArea;
 this.setNombreDiv = A_setNombreDiv;
 this.buscaCoincidencias = A_buscaCoincidencias;
 this.borraDiv = A_borraDiv;
 this.anadeADiv = A_anadeADiv;
 this.inicializaTodo = A_inicializaTodo;
 this.cambiaSeleccionado = A_cambiaSeleccionado;
 this.anadeSeleccionado = A_anadeSeleccionado;
 
 return this;
}

function A_anade(n,e){
 this.nombres[this.nombres.length] = new String(n);
 this.emails[this.emails.length] = new String(e);
}

function A_setNombreTextArea(ta){
 this.nombreTextArea = ta;
}

function A_setNombreDiv(d){
 this.nombreDiv = new String(d);
}

function A_buscaCoincidencias(ev){
 var textoEscrito = new String();
 var i,auxi,enco,longitud,actual;
 var dv = document.getElementById(this.nombreDiv);
 var ta = document.getElementById(this.nombreTextArea);

 if (!document.all) event=ev

 if(event.keyCode == 13){
  if(this.seleccionado != -1){
   this.anadeSeleccionado();
  }

 }else if(event.keyCode == 40){
  if(this.seleccionado+1 < this.encontrados){
   this.cambiaSeleccionado(this.seleccionado+1);
  }

 }else if(event.keyCode == 38){
  if(this.seleccionado > 0){
   this.cambiaSeleccionado(this.seleccionado-1);
  }

 }else{
  this.borraDiv();
  auxi = ta.value.lastIndexOf(",",ta.value.length);
  if(auxi==-1){
   textoEscrito = ta.value;
  }else{
   textoEscrito = ta.value.substring(auxi+1,ta.value.length);
  }
  longitud = textoEscrito.length;

  if(longitud == 0) return;

  for(i=0; i<this.nombres.length; i++){
   actual = this.nombres[i];
   auxi = 0;
   enco = false;
   while(auxi != -1 && !enco){
    if(auxi != 0)
     auxi++;
    if(actual.substring(auxi,auxi+longitud).toLowerCase() == textoEscrito.toLowerCase()){
     enco = true;
     this.anadeADiv(actual.substring(0,auxi)+actual.substring(auxi,auxi+longitud).bold()+actual.substring(auxi+longitud,actual.length),this.emails[i],i)
    }
    auxi = actual.indexOf(" ",auxi+1);
   }
  }

  for(i=0; i<this.emails.length; i++){
   auxi = this.emails[i].substring(0,longitud);
   if(auxi.toLowerCase() == textoEscrito.toLowerCase()){
    actual = this.emails[i];
    this.anadeADiv(this.nombres[i], actual.substring(0,longitud).bold()+actual.substring(longitud,actual.length),i)
   }
  }

  if(this.encontrados>0){
   dv.style.display="block";
   if(this.seleccionado == -1)
    this.seleccionado = 0;
  }else{
   dv.style.display="none";
   if(this.seleccionado != -1)
    this.seleccionado = -1;
  }
 }
}

function A_borraDiv(){
 this.encontrados = 0;
 this.seleccionado = -1;
 document.getElementById(this.nombreDiv).innerHTML = "";
 document.getElementById(this.nombreDiv).style.display = "none";
}

function A_anadeADiv(n,e,indi){
 var aux = new String();

 aux = '<span id="contacto_'+this.encontrados+'" style="width:100%;cursor:default;" onmouseOver="'+this.nombreVar+'.cambiaSeleccionado('+this.encontrados+');" onclick="'+this.nombreVar+'.cambiaSeleccionado('+this.encontrados+',true);">'+n+' &lt;'+e+"&gt;</span><br/>";
 this.contactosEncontrados[this.encontrados] = indi;
 document.getElementById(this.nombreDiv).innerHTML += aux;
 if(this.encontrados == 0)
  document.getElementById("contacto_"+this.encontrados).style.background = this.colorSelec;
 else
  document.getElementById("contacto_"+this.encontrados).style.background = this.colorFondo;
 this.encontrados++;
}

function A_inicializaTodo(){
 var ta = document.getElementById(this.nombreTextArea);
 var dv = document.getElementById(this.nombreDiv);

 dv.style.background = this.colorFondo;
 dv.style.display = "none";
}

function A_cambiaSeleccionado(nuevo){
 var pulsado = arguments[1]==null?false:arguments[1];

 document.getElementById("contacto_"+this.seleccionado).style.background = this.colorFondo;
 document.getElementById("contacto_"+nuevo).style.background = this.colorSelec;
 this.seleccionado = nuevo;
 if(pulsado)
  this.anadeSeleccionado();
}

function A_anadeSeleccionado(){
 var i,auxi;
 var ta = document.getElementById(this.nombreTextArea);

 auxi = ta.value.lastIndexOf(",",ta.value.length);
 i = this.contactosEncontrados[this.seleccionado];
 if(auxi==-1){
  ta.value = (this.nombres[i].length!=0?'"'+this.nombres[i]+'" ':'')+'<'+this.emails[i]+">,";
 }else{
  ta.value = ta.value.substring(0,auxi+1)+(this.nombres[i].length!=0?'"'+this.nombres[i]+'" ':'')+'<'+this.emails[i]+'>,';
 }
 ta.focus();
 this.borraDiv();

}

