When onAfterElementSave is called check for save as draft or publishing? Is there a way to detect if a entry is being saved as a draft vs being published so when onAfterElementSave is called, so I don't save data to the database when it is a draft.
Actually, onAfterElementSave doesn't get called at all when saving a draft, so there's nothing to worry about.

When you load a draft in the CP, your field type will be passed in a $value based on the POST data for the field back when the draft was last saved (which is the same thing that happens when saving an entry fails due to validation errors).