Listing 1

<cfset str = "jeFFry hOuser.">

<cfset Current = "">
<cfset Previous = "">
<cfset Result = "">

<cfloop index="Counter" from="1" to="#Len(str)#">
 <cfset Previous = Current>
 <cfset Current = mid(str,counter,1)>

 <cfif ((Previous is " ") or (Previous is "")) and 
  ((Current is not " ") or (Current is not ""))>
   <cfset result = result & UCase(Current)>
 <cfelseif ((Current is not " ") or (Current is not ""))>
  <cfset result = result & #LCase(current)#>
 <cfelse>
  <cfset result = result & current)>
 </cfif>
</cfloop>


Listing 2

<cffunction name="ProperCase" returntype="string" output="No">
 <cfargument name="str" required="Yes" type="string">
 <cfset var Current = "">
 <cfset var Previous = "">
 <cfset var Result = "">
 <cfset var counter = 0>
 
<cfloop index="Counter" from="1" to="#Len(arguments.str)#">
  <cfset Previous = Current>
  <cfset Current = mid(str,counter,1)>
 


 <cfif ((Previous is " ") or (Previous is "")) and 
           ((Current is not " ") or (Current is not ""))>
     <cfset result = result & UCase(Current)>
  <cfelseif ((Current is not " ") or (Current is not ""))>
    <cfset result = result & #LCase(current)#>
  <cfelse>
   <cfset result = result & current)>
  </cfif>
 </cfloop>

 <cfreturn result>
</cffunction>