/**
  * Initialize method, called on <i>init</i> action.
  * <ul>
  * <li>setting up all ajax hooks</li>
  * <li>adding shortcodes</li>
  * <li>registering post types</li>
  * <li>registering textdomain for i18n</li>
  * <li>registering and enqueueing styles and scripts</li>
  * <li>catching and processing contest double-optin based on $_GET parameters</li>
  * </ul>
  */
 function init()
 {
     // ajax hooks
     add_action('wp_ajax_contesthopper_process', array('CH_Widget', 'process'));
     add_action('wp_ajax_nopriv_contesthopper_process', array('CH_Widget', 'process'));
     add_action('wp_ajax_ch_mailchimp_list', array('CH_Page_Contest', 'field_mailchimp_list_ajax'));
     add_action('wp_ajax_ch_campaignmonitor_client', array('CH_Page_Contest', 'field_campaignmonitor_client_ajax'));
     add_action('wp_ajax_ch_campaignmonitor_list', array('CH_Page_Contest', 'field_campaignmonitor_list_ajax'));
     add_action('wp_ajax_ch_aweber_code', array('CH_Page_Contest', 'field_aweber_code_ajax'));
     add_action('wp_ajax_ch_aweber_list', array('CH_Page_Contest', 'field_aweber_list_ajax'));
     add_action('wp_ajax_ch_getresponse_list', array('CH_Page_Contest', 'field_getresponse_list_ajax'));
     // register shortcode
     add_shortcode('contesthopper', array('CH_Widget', 'html'));
     // register post type
     $array = array('public' => false, 'exclude_from_search' => true);
     register_post_type(self::post_type, $array);
     // register i18n domain
     load_plugin_textdomain('contesthopper', false, dirname(plugin_basename(__FILE__)) . '/languages/');
     // register styles & scripts
     wp_enqueue_script('jquery');
     wp_register_style('ch_css_base', self::$plugin_url . '/css/ch_base.css');
     wp_enqueue_style('ch_css_base');
     wp_register_style('ch_css_jquery_ui', self::$plugin_url . '/css/jquery-ui-1.9.1.custom.min.css');
     wp_register_script('ch_js_widget', self::$plugin_url . '/js/ch_widget.js', array('jquery'));
     wp_register_script('ch_js_datetimepicker', self::$plugin_url . '/js/jquery-ui-timepicker-addon.min.js', array('jquery', 'jquery-ui-core', 'jquery-ui-slider', 'jquery-ui-datepicker'));
     // catch and process double optin
     if (isset($_GET['contesthopper_confirm'])) {
         CH_Widget::process_optin($_GET['contesthopper_confirm']);
         $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER["REQUEST_URI"];
         $url = remove_query_arg('contesthopper_confirm', $url);
         wp_safe_redirect($url);
         die;
     }
 }