The first I dont know. The second, how about checking if the player is in water (c_trace + mode 'scan_texture' or maybe region, not sure about region though) and checking its height through c_trace.
Than add fog by doing e.g.:
camera.fog_start = 0.05 * camera.clip_far; // fog starts at 5% of clip range
camera.fog_end = 0.3 * camera.clip_far; // total foggy at 30% of clip range
d3d_fogcolor1.red = 55;
d3d_fogcolor1.green = 55;
d3d_fogcolor1.blue = 155; // blue fog