
function sip_address_completion(adr){
	var default_domain='iptel.org';

	var re = /^(([a-zA-Z0-9]|[-_.!~*'()])|(%[0-9a-fA-F][0-9a-fA-F])|[&=+$,;?\/])+$/i;
	if (re.test(adr.value)) {
		adr.value=adr.value+'@'+default_domain;
	}

	var re = /^((([a-zA-Z0-9]|[-_.!~*'()])|(%[0-9a-fA-F][0-9a-fA-F])|[&=+$,;?\/])+@)?(((([a-zA-Z0-9]|([a-zA-Z0-9](-|[a-zA-Z0-9])*[a-zA-Z0-9]))\.)*([a-zA-Z]|([a-zA-Z](-|[a-zA-Z0-9])*[a-zA-Z0-9]))\.?)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(\[(((([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)|((([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)::(([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)?)|(::(([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)?))(:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))?)]))(:[0-9]+)?((;((transport=((udp)|(tcp)|(sctp)|(tls)|(([-.!%*_+`'~]|[a-zA-Z0-9])+)))|(user=((phone)|(ip)|(([-.!%*_+`'~]|[a-zA-Z0-9])+)))|(method=((INVITE)|(ACK)|(OPTIONS)|(BYE)|(CANCEL)|(REGISTER)|(([-.!%*_+`'~]|[a-zA-Z0-9])+)))|(ttl=[0-9]{1,3})|(maddr=(((([a-zA-Z0-9]|([a-zA-Z0-9](-|[a-zA-Z0-9])*[a-zA-Z0-9]))\.)*([a-zA-Z]|([a-zA-Z](-|[a-zA-Z0-9])*[a-zA-Z0-9]))\.?)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(\[(((([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)|((([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)::(([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)?)|(::(([0-9a-fA-F]{1,4})(:([0-9a-fA-F]{1,4}))*)?))(:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))?)])))|(lr)|((((\[|]|[\/:&+$]|([a-zA-Z0-9]|[-_.!~*'()])|(%[0-9a-fA-F][0-9a-fA-F])))+)(=(((\[|]|[\/:&+$]|([a-zA-Z0-9]|[-_.!~*'()])|(%[0-9a-fA-F][0-9a-fA-F])))+))?)))*)$/i
	var re2= /^sip:/i;
	if (re.test(adr.value) && !re2.test(adr.value)) {
		adr.value='sip:'+adr.value;
	}
}

