1) Your first line is broken. Either you've forgotten a closing parenthesis and semicolon or you are trying to pass the function the wrong kind of thing. The wp_register_script isn't going to accept an 'add_shortcode' function call. Taken straight from wp-includes/functions.wp-scripts.php your options are: wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ). And either way the line triggers a T_STRING error.
2) Why are you adding your action to 'init' instead of, say, 'wp_print_scripts'?
You've got an interesting problem. In order to know that you have shortcodes I'm thinking you need to be able to read your queried post array, which means you need to run a function inside the Loop to decide whether to insert the script. That is too late to print anything to the header but you should be able to print to the footer.