Get u-v from from 3D point

I was wondering if there is a method or if you guys have some source code for finding the u-v position on a surface given a 3D coordinate (ON_3dPoint) on the surface? So, if input x,y,z where x,y,z lies on the surface find the u-v location from 0 to 1 given the surface domain is 0 to 1.

If you were using version of openNURBS included with Rhino, then you would use ON_Surface::GetClosestPoint(). But this function is not implemented in the standalone version of openNURBS.