Glass rendering incorrectly with dark areas
The dark areas are normals facing the wrong direction. Fix these by selecting everything A in edit mode and pressing Ctrl+N.  

To fix refraction issues, add a solidify modifier to the mesh. You might have to adjust the thicker part on the top. The glass shader is trying to guess where the glass is solid, so you should use it on closed meshes  only for the refraction to work correctly.  

For tinting glass, use a volume shader in the volume material output instead of mixing the surface with a diffuse shader.