document.addressEditing = false;
function toggleAddress(o) {
	if (document.addressEditing) {
		return false;
	}
	var div,as,aid=o.parentNode.id.replace(/[^0-9]/g,'').toint();
	as = $$($('addresses'), 'div');
	for(var i=0;i<as.length;i++) {
		if (as[i].id == ('addr_'+aid)) {
			as[i].style.display='block';
		} else {
			as[i].style.display='none';
		}
	}
	as = $$($('address-selector'),'span');
	for(var i=0;i<as.length;i++) {
		if (as[i].id == ('a_sel_'+aid)) {
			as[i].className ='current';
		} else {
			as[i].className='';
		}
	}
	return false;
}

function editAddress(o,saveFunc,id) {
	if (document.addressEditing) {
		return false;
	}
	editSection(o,uneditAddress,id);
	$('add_vis_'+id).style.display='inline';
	var aName=$$0($('a_sel_'+id),'a');
	var isMaster = $('addr_'+id).className=='address master';
	if (aName && !isMaster) {
		
		var i=document.createElement('input');
		i.className='txt';
		i.value = aName.innerHTML;
		i.style.width=(10+aName.offsetWidth)+'px';
		aName.style.display='none';
		aName.parentNode.insertBefore(i,aName);
	}
	document.addressEditing = true;
	return false;
}
function uneditAddress(saveObj,o) {
	var id=o.parentNode.id.replace(/[^0-9]/g,'').toint();
	if (id != null) {
		// Visibility
		var vis=$('add_vis_'+id);
		vis.style.display='none';
		var visv=vis.className.replace(/[^0-9]/g,'').toint();
		// Address patching: name
		var iName=$$0($('a_sel_'+id),'input');
		if (iName) {
			var aName=$$0($('a_sel_'+id),'a');
			aName.innerHTML = iName.value;
			iName.parentNode.removeChild(iName);
			aName.style.display='inline';
			var newName=iName.value.sanitize().trim();
			for(var tuple in saveObj) {
				if (saveObj[tuple][0] == ('a_'+id+'_addressName')) {
					saveObj[tuple][1] = newName;
				}
			}
		}

		o.onclick=function(){return editAddress(this,editAddress,id)};	
		document.addressEditing = false;
		saveAddress(saveObj,o,visv);
	}
	return false;
}
function addAddress() {
	
	if (document.addressEditing) {
		return false;
	}
	
	
	var 
		source = $$0($('addresses'),'div'),
		selsource = $$0($('address-selector'), 'span');
	// copy the master address node
	var copy = source.cloneNode(true);
	copy.id='addr_0';
	copy.className = 'address';
	// reset the values
	vals = $$(copy,'dd');
	var val;
	for(var i=0;i<vals.length;i++) {
		// replace ids and empty values
		if (vals[i].id.search(/(first|last)name$/g) < 0) {
			vals[i].innerHTML='<span>&nbsp;</span>';	
		} 
		vals[i].id=vals[i].id.replace(/a_[0-9]+_([a-zA-Z]+)/g, 'a_0_$1');
	}
	// address source selector
	selsourcecopy = selsource.cloneNode(true);
	selsourcecopy.id = 'a_sel_0';
	
	var as = $$(selsourcecopy,'a');
	var as0 = as[0];
	as[0].innerHTML='Address '+($$($('addresses'),'div').length);
	as[1].id = 'add_vis_0';
	as[1].onclick=function(){return editPriv(this,59)};
	// Append the nodes
	source.parentNode.appendChild(copy);
	selsource.parentNode.appendChild(selsourcecopy);
	
	// Activate the new address
	toggleAddress(as0);
	
	// Make sure we're editable
	as = $$(copy,'a');
	var editA=as[as.length-1];
	editA.className='edit';
	editA.id='a_edit_0';
	editA.onclick=function(){return editAddress(editA,saveAddress,0)};
	// go into editing mode
	return editAddress(editA,saveAddress,0);

}
function addressPostSave(id) {
	var addr = $('addr_0');
	if (addr) {
		addr.id='addr_'+id;
		$('a_sel_0').id='a_sel_'+id;
		$('add_vis_0').id = 'add_vis_'+id;
		as = $$(addr,'a');
		var editA=as[as.length-1];
		editA.className='edit';
		editA.onclick=function(){return editAddress(editA,saveAddress,id)};
		var vcardA=as[as.length-2];
		vcardA.href=vcardA.href.replace(/[0-9]+$/g,id);
	}
}

