Select Menu for Custom post Type does not save

This is a javascript issue. on line 52:

$ret .= '<script>jQuery(document).ready(function(){ jQuery("#videotype").val(' . get_video_field("videotype") . ') });</script></div>';

In this specific bit:

.val(' . get_video_field("videotype") . ')

The value isn’t quoted, so it’s trying to reference a variable named youtube or vimeo, which doesn’t exist, instead of a literal text value.

If you add quotes it’ll work, note the addition of double quotes before and after the single quotes:

.val("' . get_video_field("videotype") . '")

So the whole line will be:

$ret .= '<script>jQuery(document).ready(function(){ jQuery("#videotype").val("' . get_video_field("videotype") . '") });</script></div>';

EDIT-
In your template, these two lines:

$videotype = get_post_meta($post->ID, 'Video Type', single);
$videoid = get_post_meta($post->ID, 'Video ID', single);

Should be:

$videotype = get_post_meta($post->ID, 'videotype', true);
$videoid = get_post_meta($post->ID, 'videoid', true);