
$dw=function($s){document.write($s)}
$=function(id){return document.getElementById(id)}

$format=function(s,data){
		/*Formats a string to a data value
		replaces {tag} with "data.tag"
		replaces {tag?success=$$!!:Failed} with "success="+data.tag+"!!"
			if data.tag exists, or "Failed" if it doesn't
		*/
		var n,m
		while(m=/(^|[^\\])\{(\w+)}/.exec(s)){
			s=s.replace(m[0],m[1]+data[m[2]]||'')
			}
		while(m=/(^|[^\\])\{(\w+)(?:\??(.*?):(.*?))?}/.exec(s)){
			if(data[m[2]]!=null){//value exists, format according to specification
				n=m[3].replace(/\$\$/g,data[m[2]])
				}
			else{//value does not exist. insert replacement string
				n=m[4]||""
				}
			s=s.replace(m[0],m[1]+n)
			}
		return s
		}

function searchContacts(string,scope){
	//searches contacts
	//returns all matching personel in a nonassociative array
	//scope should be string (matching JSON data field) to search, or evaluate as false (no specified field)
	var matches=[]
	var regex=RegExp(".*"+string+".*",'i')	
	if(scope){//search specified fields
		for(e in staff){
			if(regex.test(staff[e][scope])){
				matches.push(staff[e])
				continue
				}
			}//for
		}//if
	else{//search all fields
		for(e in staff){
			var next=false
			for(field in staff[e]){
				if(regex.test(staff[e][field])){
					matches.push(staff[e])
					break//stop searching more fields and go to next person
					}//if
				}//inner for
			}//outer for
		}//else
	return(matches);
	}
	

function writeContacts(string,field,id){
	var $m=searchContacts(string,field)
	var $html='',em,e
	if($m.length<1)var $m=searchContacts('','')//return all employees
	var str=''+
	'<div class="vcard">'+
	'	<img src="{picture}" class="photo" alt="{name}" onerror="this.src=\'/images/staff/nophoto.jpg\'" />'+
	'	<h3 class="fn">{name}</h3>'+
	'	<h6 class="title">{position}</h6>'+
	'	<span class="contact">'+
	'		<a class="email" href="mailto:{email}" title="Email {name}">Email:</a> {email}'+
	'		<span class="tel">'+
	'			<span class="type">work</span>'+
	'			Phone: <span class="value">{phone}{extension? ext.$$:}</span>'+
	'		</span>'+
	'	</span>'+
	'	<span class="note">{about}</span>'+
	'</div>'
	for(var i=0;i<$m.length;i++){
		$html+=$format(str,$m[i])
		}
	$(id).innerHTML=$html
	}



function oldWriteContacts(string,field,id){
	var $m=searchContacts(string,field)
	var $html='';
	if($m.length<1){
		var $m=searchContacts('','')//return all employees
		}

	for($e in $m){
		$html+=""+
		"<div class='employee'>"+
		"	<img src='"+$m[$e].picture+"' class='portrait' alt='"+$m[$e].name+"' onerror='this.src=\"/images/staff/nophoto.jpg\"'/>"+
		"	<h3 class='name'>"+$m[$e].name+"</h3>"+
		"	<h6 class='department'>"+$m[$e].position+"</h6>"+
		"	<span class='contact'>"+
		"		<span class='email'>"+
		"			<a href='mailto:"+$m[$e].email+"' title='Email "+$m[$e].name+"'>Email:</a> "+
		"			"+$m[$e].email+""+
		"		</span><br />"+
		"		<span class='phone'>Phone: "+$m[$e].phone+" ext."+$m[$e].extension+"</span>"+
		"	</span>"+
		"	<span class='about'>"+$m[$e].about+"</span>"+
		"</div>";
		}
	$(id).innerHTML=$html
	}
