/**
     * Display GetResponse MCE buttons
     */
    function GrJsShortcodes()
    {
        $GrOptionDbPrefix = 'GrIntegrationOptions_';
        $api_key = get_option($GrOptionDbPrefix . 'api_key');
        if (!empty($api_key)) {
            $api = new GetResponseIntegration($api_key);
            $campaigns = $api->getCampaigns();
            $webforms = $api->getWebforms();
            // check if no errors
            if (!empty($webforms) and false === (is_array($webforms) and isset($webforms['type']) and $webforms['type'] == 'error')) {
                $webforms = $this->SortByKeyValue($webforms, 'name');
            } else {
                $campaigns = null;
                $webforms = null;
            }
            $my_campaigns = json_encode($campaigns);
            $my_webforms = json_encode($webforms);
            ?>
			<script type="text/javascript">
				var my_webforms = <?php 
            echo $my_webforms;
            ?>
;
				var my_campaigns = <?php 
            echo $my_campaigns;
            ?>
;
			</script>
	<?php 
        }
    }
 /**
  * Sanitize widget form values as they are saved.
  *
  * @see WP_Widget::update()
  *
  * @param array $new_instance Values just sent to be saved.
  * @param array $old_instance Previously saved values from database.
  *
  * @return array Updated safe values to be saved.
  */
 public function update($new_instance, $old_instance)
 {
     $instance = array();
     $instance['select'] = !empty($new_instance['select']) ? strip_tags($new_instance['select']) : null;
     $instance['variants'] = $new_instance['variants'] !== '-' ? strip_tags($new_instance['variants']) : null;
     $instance['style'] = strip_tags($new_instance['style']);
     $instance['center'] = strip_tags($new_instance['center']);
     $instance['center_margin'] = (int) strip_tags($new_instance['center_margin']);
     $instance['version'] = in_array(strip_tags($new_instance['version']), array('old', 'new')) ? strip_tags($new_instance['version']) : 'old';
     $api_key = get_option($this->GrOptionDbPrefix . 'api_key');
     if (!empty($api_key)) {
         $api = new GetResponseIntegration($api_key, get_option($this->GrOptionDbPrefix . 'api_url'), get_option($this->GrOptionDbPrefix . 'api_domain'));
         $webform = $instance['version'] == 'old' ? $api->getWebForm($instance['select']) : $api->getForm($instance['select']);
         $web_forms = json_decode(get_option($this->GrOptionDbPrefix . 'web_forms'), true);
         if (!empty($web_foms)) {
             $web_forms = array();
         }
         $web_forms[$instance['select']] = (array) $webform;
         if (function_exists('is_customize_preview') == false || is_customize_preview() == false) {
             update_option($this->GrOptionDbPrefix . 'web_forms', json_encode($web_forms));
         }
     }
     return $instance;
 }
    /**
     * Back-end widget form.
     *
     * @see WP_Widget::form()
     *
     * @param array $instance Previously saved values from database.
     * @return string|void
     */
    public function form($instance)
    {
        $select = $instance ? esc_attr($instance['select']) : '';
        $style = $instance ? esc_attr($instance['style']) : '';
        $api_key = get_option($this->GrOptionDbPrefix . 'api_key');
        if (!empty($api_key)) {
            $api = new GetResponseIntegration($api_key);
            $campaigns = $api->getCampaigns();
            if (!empty($campaigns)) {
                $campaign_id = array();
                foreach ($campaigns as $cid => $campaign) {
                    $campaign_id[$cid] = $campaign->name;
                }
                $webforms = $api->getWebforms();
                $webforms = Gr_Integration::SortByKeyValue($webforms, 'name');
            }
        }
        ?>

		<?php 
        if ($api_key) {
            ?>
		<p>
			<?php 
            if (!empty($webforms) and false === (is_array($webforms) and isset($webforms['type']) and $webforms['type'] == 'error')) {
                ?>
			<label for="<?php 
                echo $this->get_field_id('select');
                ?>
"><?php 
                _e('Web Form:');
                ?>
</label>
			<select name="<?php 
                echo $this->get_field_name('select');
                ?>
" id="<?php 
                echo $this->get_field_id('select');
                ?>
" class="widefat">
				<?php 
                foreach ($webforms as $webform) {
                    echo '<option value="' . $webform->id . '" id="' . $webform->id . '"', $select == $webform->id ? ' selected="selected"' : '', '>', $webform->name . ' (' . $campaign_id[$webform->campaign] . ')', '</option>';
                }
                ?>
			</select>
			<?php 
            } else {
                _e('No Webforms', 'Gr_Integration');
            }
            ?>
		</p>
		<p>
			<input id="<?php 
            echo $this->get_field_id('style');
            ?>
" name="<?php 
            echo $this->get_field_name('style');
            ?>
" type="checkbox" value="1" <?php 
            checked('1', $style);
            ?>
 />
			<label for="<?php 
            echo $this->get_field_id('style');
            ?>
"><?php 
            _e('Use Wordpress CSS styles', 'Gr_Integration');
            ?>
</label>
		</p>
		<?php 
        } else {
            ?>
		<p><?php 
            _e('API key is not set.', 'Gr_Integration');
            ?>
</p>
		<?php 
        }
    }
    /**
     * Display GetResponse MCE buttons
     */
    function GrJsShortcodes()
    {
        $GrOptionDbPrefix = 'GrIntegrationOptions_';
        $api_key = get_option($GrOptionDbPrefix . 'api_key');
        $api_url = get_option($GrOptionDbPrefix . 'api_url');
        $api_domain = get_option($GrOptionDbPrefix . 'api_domain');
        $webforms = null;
        $forms = null;
        $campaingns = null;
        if (!empty($api_key)) {
            $api = new GetResponseIntegration($api_key, $api_url, $api_domain, is_ssl());
            $webforms = $api->getWebforms(array('sort' => array('name' => 'asc')));
            $forms = $api->getForms(array('sort' => array('name' => 'asc')));
            $api_key = 'true';
            $campaingns = $api->getCampaigns();
            // for 3.8 version
        } else {
            $api_key = 'false';
        }
        if (strlen($api_domain) > 0) {
            $webforms = $this->setGetResponse360domainToWebFormUrl($webforms, $api_domain);
            $forms = $this->setGetResponse360domainToWebFormUrl($forms, $api_domain);
        }
        $webforms = json_encode($webforms);
        $forms = json_encode($forms);
        $campaingns = json_encode($campaingns);
        // for 3.8 version
        ?>
		<script type="text/javascript">
			var my_webforms = <?php 
        echo $webforms;
        ?>
;
			var my_forms = <?php 
        echo $forms;
        ?>
;
			var my_campaigns = <?php 
        echo $campaingns;
        // for 3.8 version
        ?>
;
			var text_forms = '<?php 
        echo __('New Forms', 'Gr_Integration');
        ?>
';
			var text_webforms = '<?php 
        echo __('Old Web Forms', 'Gr_Integration');
        ?>
';
			var text_no_forms = '<?php 
        echo __('No Forms', 'Gr_Integration');
        ?>
';
			var text_no_webforms = '<?php 
        echo __('No Web Forms', 'Gr_Integration');
        ?>
';
			var api_key = <?php 
        echo $api_key;
        ?>
;
		</script>
		<?php 
    }