function Address(data) {
  this.data = data
}

Address.fn=Address.prototype

Address.fn.organisation = function() {
  var org = this.data.organsiation
  if(!org)
    return ''
    
  var b = [];
  if(org.organisationname)
    b.push(org.organisationname)
  if(org.organisationdept)
    b.push(org.organisationdept)
  
  return b.join(", "); 
}

  

Address.fn.toString = function() {
  var a = this.data
  var s = "";
  if(a.poboxnumber)
    s += a.poboxnumber + ",";
  
  s += ' ' + this.organisation();
  
  if(a.housenumber && a.housenumber!="0") {
    s += a.housenumber; 
    s +=" ";
  }
  
  if(a.buildingnumber && a.buildingnumber != "0")
    s += " " + a.buildingnumber;
  
  if(a.subbuildingname)
    s += " " +a.subbuildingname;
  
  if(a.buildingname)
    s += " " +a.buildingname;
  
  if(a.thoroughfare)
    s +=" " + a.thoroughfare;
    
  if(a.thoroughfaredesc)
    s+= " " + a.thoroughfaredesc.thoroughfaredesctext || a.thoroughfaredesc.thoroughfaredescabbreviation; 
  s+=", ";
      
  if(a.locality) {
    if(a.locality.doubledependantlocality)
      s += a.locality.doubledependantlocality + ", ";
    if(a.locality.dependantlocality)
      s += a.locality.dependantlocality + ", ";
    s += a.locality.posttown; 
  }
  
  return s
}

Address.fn.buildingnumber = function() {
  return Address.zeroIsNull(this.data.buildingnumber)
}

Address.fn.housenumber = function() {
  return Address.zeroIsNull(this.data.housenumber)
}

Address.zeroIsNull = function(s) {
    return s == '0' ? null : s
  }
  
Address.fn.houseName = function() {
  return [ this.organisation(), this.buildingnumber(), this.data.subbuildingname, this.data.buildingname, this.housenumber() ].join(" ").replace("  ", " ").trim()
}
   
Address.fn.address = function() {
  return [this.data.thoroughfare, this.data.thoroughfaredesc ? (this.data.thoroughfaredesc.thoroughfaredesctext || this.data.thoroughfaredesc.thoroughfaredescabbreviation) : ""].join(' ').trim()
}
  
Address.fn.town = function() {
  return this.data.locality.posttown;
}