<?php

class SitePressLanguageSwitcher {
    
    var $widget_preview = false;
    var $widget_css_defaults;
    
    var $footer_preview = false;
    var $footer_css_defaults;
    
    var $color_schemes = array(
            'Gray' => array(
                'font-current-normal' => '#222222',
                'font-current-hover' => '#000000',
                'background-current-normal' => '#eeeeee',
                'background-current-hover' => '#eeeeee',
                'font-other-normal' => '#222222',
                'font-other-hover' => '#000000',
                'background-other-normal' => '#e5e5e5',
                'background-other-hover' => '#eeeeee',
                'border' => '#cdcdcd',
                'background' => '#e5e5e5'
            ),
            'White' => array(
                'font-current-normal' => '#444444',
                'font-current-hover' => '#000000',
                'background-current-normal' => '#ffffff',
                'background-current-hover' => '#eeeeee',
                'font-other-normal' => '#444444',
                'font-other-hover' => '#000000',
                'background-other-normal' => '#ffffff',
                'background-other-hover' => '#eeeeee',
                'border' => '#cdcdcd',
                'background' => '#ffffff'
            ),
            'Blue' => array(
                'font-current-normal' => '#ffffff',
                'font-current-hover' => '#000000',
                'background-current-normal' => '#95bedd',
                'background-current-hover' => '#95bedd',
                'font-other-normal' => '#000000',
                'font-other-hover' => '#ffffff',
                'background-other-normal' => '#cbddeb',
                'background-other-hover' => '#95bedd',
                'border' => '#0099cc',
                'background' => '#cbddeb'
            )
    );
    
    function __construct(){
        
        $this->widget_css_defaults = $this->color_schemes['White'];
        $this->footer_css_defaults = $this->color_schemes['White'];
        
        add_action('plugins_loaded',array(&$this,'init'));
    }
    
    function init(){
        
        global $sitepress_settings;
        $this->settings = $sitepress_settings;
        if (!empty($this->settings['icl_lang_sel_footer'])){
            add_action('wp_head', array(&$this, 'language_selector_footer_style'),19);
            add_action('wp_footer', array(&$this, 'language_selector_footer'),19);
        }
        if (is_admin()) {
            add_action('icl_language_switcher_options',array(&$this,'admin'),1);
        } else if (!empty($this->settings['icl_post_availability'])) {
            if(function_exists('icl_register_string')){
                icl_register_string('WPML', 'Text for alternative languages for posts', $this->settings['icl_post_availability_text']);    
            }            
            add_filter('the_content', array(&$this, 'post_availability'), 100);
        }
        // the language selector widget      
        $this->language_selector_widget_init();
        if(is_admin() && isset($_GET['page']) && $_GET['page'] == ICL_PLUGIN_FOLDER . '/menu/languages.php'){
            add_action('admin_head', 'icl_lang_sel_nav_css', 1, 1, true);
            add_action('admin_head', array(&$this, 'custom_language_switcher_style'));
        }
        if(!is_admin()){
            add_action('wp_head', array(&$this, 'custom_language_switcher_style'));
        }
        
        if(!empty($sitepress_settings['display_ls_in_menu'])){
            add_filter('wp_nav_menu_items', array($this, 'wp_nav_menu_items_filter'), 10, 2);    
        }
        
    }
    
    function language_selector_widget_init(){         
        wp_register_sidebar_widget('icl_lang_sel_widget', __('Language Selector', 'sitepress'), 'language_selector_widget', array('classname'=>'icl_languages_selector'));
        wp_register_widget_control('icl_lang_sel_widget_control', __('Language Selector', 'sitepress'), array(&$this, 'set_widget') );
        add_action('template_redirect','icl_lang_sel_nav_ob_start', 0);
        add_action('wp_head','icl_lang_sel_nav_ob_end');
    }
    
    function set_widget(){
        global $sitepress, $sitepress_settings;
        if (isset($_POST['icl_widget_update'])){
            $sitepress_settings['icl_widget_title_show'] = (isset($_POST['icl_widget_title_show'])) ? 1 : 0;
            $sitepress->save_settings($sitepress_settings);
        }
        echo '<input type="hidden" name="icl_widget_update" value="1">';
        echo '<label><input type="checkbox" name="icl_widget_title_show" value="1"';
        if ($sitepress_settings['icl_widget_title_show']) echo ' checked="checked"';
        echo '>&nbsp;' . __('Display \'Languages\' as the widget\'s title', 'sitepress') . '</label><br>';
    }
    
    function post_availability($content){
        $out = '';
        if(is_singular()){
            $languages = icl_get_languages('skip_missing=true');
            if(1 < count($languages)){
                //$out .= $this->settings['post_available_before'] ? $this->settings['post_available_before'] : ''; 
                foreach($languages as $l){
                    if(!$l['active']) $langs[] = '<a href="'. apply_filters('WPML_filter_link', $l['url'], $l) .'">'.$l['translated_name'].'</a>';
                }
                $out .= join(', ', $langs);
                //$out .= $this->settings['post_available_after'] ? $this->settings['post_available_after'] : '';
                if(!function_exists('icl_t')){
                    function icl_t($c, $n, $str){return $str; }
                }
                $out = '<p class="icl_post_in_other_langs">' . sprintf(icl_t('WPML', 'Text for alternative languages for posts', $this->settings['icl_post_availability_text']), $out) . '</p>';
            }
        }
        
        $out = apply_filters('icl_post_alternative_languages', $out);
        
        if ($this->settings['icl_post_availability_position'] == 'above'){
            $content = $out . $content;
        }else{
            $content = $content . $out;
        }
        
        return $content;    
        
    }
    
    function language_selector_footer_style(){
        
        $add = false;
        foreach($this->footer_css_defaults as $key=>$d){
            if (isset($this->settings['icl_lang_sel_footer_config'][$key]) && $this->settings['icl_lang_sel_footer_config'][$key] != $d){
                $this->settings['icl_lang_sel_footer_config'][$key] . "\n";
                $add = true;
                break;
            }
        }
        if($add){
            echo "\n<style type=\"text/css\">";
            foreach($this->settings['icl_lang_sel_footer_config'] as $k=>$v){
                switch($k){
                    case 'font-current-normal': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer a, #lang_sel_footer a.lang_sel_sel, #lang_sel_footer a.lang_sel_sel:visited{color:'.$v.';}'; 
                        break;
                    case 'font-current-hover': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer a:hover, #lang_sel_footer a.lang_sel_sel:hover{color:'.$v.';}';
                        break;
                    case 'background-current-normal': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer a.lang_sel_sel, #lang_sel_footer a.lang_sel_sel:visited{background-color:'.$v.';}'; 
                        break;
                    case 'background-current-hover': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer a.lang_sel_sel:hover{background-color:'.$v.';}'; 
                        break;
                    case 'font-other-normal':
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer ul a, #lang_sel_footer ul a:visited{color:'.$v.';}'; 
                        break;
                    case 'font-other-hover': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer ul a:hover{color:'.$v.';}'; 
                        break;
                    case 'background-other-normal': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer ul a, #lang_sel_footer ul a:visited{background-color:'.$v.';}'; 
                        break;
                    case 'background-other-hover': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer ul a:hover{background-color:'.$v.';}'; 
                        break;
                    case 'border': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer{border-color:'.$v.';}';
                        break;
                    case 'background': 
                        //if($v != $this->color_schemes[$k])
                            echo '#lang_sel_footer{background-color:'.$v.';}';
                        break;
                }
            }
            echo "</style>\n";
        }
    }
    
    function language_selector_footer() {
        $languages = icl_get_languages('orderby=id&order=asc&skip_missing=0');
        if(!empty($languages)){
            echo '
                <div id="lang_sel_footer">
                    <ul>
                    ';
                foreach($languages as $lang){
                    echo '    <li>';
                    echo '<a rel="alternate" hreflang="'. $lang['language_code'] .'" href="'.apply_filters('WPML_filter_link', $lang['url'], $lang).'"';
                    if($lang['active']) echo ' class="lang_sel_sel"';
                    echo '>';
                    if ($this->settings['icl_lso_flags'] || $this->footer_preview) echo '<img src="'.$lang['country_flag_url'].'" alt="'.$lang['language_code'].'" class="iclflag"';
                    if (!$this->settings['icl_lso_flags'] && $this->footer_preview) echo ' style="display:none;"';
                    if ($this->settings['icl_lso_flags'] || $this->footer_preview) echo ' />&nbsp;';
                    //if(!$l['active']) echo '</a>';
                    //if(!$l['active']) echo '<a href="'.$l['url'].'">';
                    if($this->footer_preview){
                            $lang_native = $lang['native_name'];
                            if($this->settings['icl_lso_native_lang']){
                                $lang_native_hidden = false;
                            }else{
                                $lang_native_hidden = true;
                            }
                            $lang_translated = $lang['translated_name'];
                            if($this->settings['icl_lso_display_lang']){
                                $lang_translated_hidden = false;
                            }else{
                                $lang_translated_hidden = true;
                            }                            
                        }else{
                            if($this->settings['icl_lso_native_lang']){
                                $lang_native = $lang['native_name'];
                            }else{
                                $lang_native = false;
                            }
                            if($this->settings['icl_lso_display_lang']){
                                $lang_translated = $lang['translated_name'];
                            }else{
                                $lang_translated = false;
                            }
                        }
                        echo @icl_disp_language($lang_native, $lang_translated, $lang_native_hidden, $lang_translated_hidden);
                    //echo icl_disp_language( $this->settings['icl_lso_native_lang'] ? $l['native_name'] : null, $this->settings['icl_lso_display_lang'] ? $l['translated_name'] : null );
                    //if(!$l['active']) echo '</a>';
                    echo '</a>';
                    echo '</li>
                    ';
                }
            echo '</ul>
                </div>';
            }
    }

    function admin(){
        foreach($this->color_schemes as $key=>$val): ?>
            <?php foreach($this->widget_css_defaults as $k=>$v): ?>                                                
                                                <input type="hidden" id="icl_lang_sel_config_alt_<?php echo $key ?>_<?php echo $k ?>" value="<?php echo $this->color_schemes[$key][$k] ?>" />
                                                <?php endforeach; ?>
                                            <?php endforeach; ?>
                                            
        <?php if(!defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') || !ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS): ?>
                                            <br />
                                            <a href="#" onclick="jQuery(this).next().slideToggle();return false;"><?php _e('Edit the language switcher widget colors', 'sitepress')?></a>                            
                                            <div style="display:none">                                          
                                                <table id="icl_lang_preview_config" style="width:auto;">
                                                    <thead>
                                                    <tr>
                                                        <th>&nbsp;</th>
                                                        <th><?php _e('Normal', 'sitepress')?></th>
                                                        <th><?php _e('Hover', 'sitepress')?></th>
                                                    </tr>
                                                    </thead>
                                                    <tbody>                                                
                                                    <tr>
                                                        <td><?php _e('Current language font color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-font-current-normal" name="icl_lang_sel_config[font-current-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['font-current-normal'])) 
                                                                echo $this->settings['icl_lang_sel_config']['font-current-normal']; 
                                                            else 
                                                                echo $this->widget_css_defaults['font-current-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-current-normal-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-font-current-normal';cp.show('icl-font-current-normal-picker');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-font-current-hover" name="icl_lang_sel_config[font-current-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['font-current-hover'])) 
                                                                echo $this->settings['icl_lang_sel_config']['font-current-hover']; 
                                                            else 
                                                                echo $this->widget_css_defaults['font-current-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-current-hover-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-font-current-hover';cp.show('icl-font-current-hover-picker');return false;" /></td>
                                                    </tr>                                                
                                                    <tr>
                                                        <td><?php _e('Current language background color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-background-current-normal" name="icl_lang_sel_config[background-current-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['background-current-normal'])) 
                                                                echo $this->settings['icl_lang_sel_config']['background-current-normal']; 
                                                            else 
                                                                echo $this->widget_css_defaults['background-current-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-current-normal-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-background-current-normal';cp.show('icl-background-current-normal-picker');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-background-current-hover" name="icl_lang_sel_config[background-current-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['background-current-hover'])) 
                                                                echo $this->settings['icl_lang_sel_config']['background-current-hover']; 
                                                            else 
                                                                echo $this->widget_css_defaults['background-current-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-current-hover-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-background-current-hover';cp.show('icl-background-current-hover-picker');return false;" /></td>
                                                    </tr>
                                                    <tr>
                                                        <td><?php _e('Other languages font color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-font-other-normal" name="icl_lang_sel_config[font-other-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['font-other-normal'])) 
                                                                echo $this->settings['icl_lang_sel_config']['font-other-normal']; 
                                                            else 
                                                                echo $this->widget_css_defaults['font-other-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-other-normal-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-font-other-normal';cp.show('icl-font-other-normal-picker');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-font-other-hover" name="icl_lang_sel_config[font-other-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['font-other-hover'])) 
                                                                echo $this->settings['icl_lang_sel_config']['font-other-hover']; 
                                                            else 
                                                                echo $this->widget_css_defaults['font-other-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-other-hover-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-font-other-hover';cp.show('icl-font-other-hover-picker');return false;" /></td>
                                                    </tr>                                                
                                                    <tr>
                                                        <td><?php _e('Other languages background color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-background-other-normal" name="icl_lang_sel_config[background-other-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['background-other-normal'])) 
                                                                echo $this->settings['icl_lang_sel_config']['background-other-normal']; 
                                                            else 
                                                                echo $this->widget_css_defaults['background-other-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-other-normal-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-background-other-normal';cp.show('icl-background-other-normal-picker');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-background-other-hover" name="icl_lang_sel_config[background-other-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['background-other-hover'])) 
                                                                echo $this->settings['icl_lang_sel_config']['background-other-hover']; 
                                                            else 
                                                                echo $this->widget_css_defaults['background-other-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-other-hover-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-background-other-hover';cp.show('icl-background-other-hover-picker');return false;" /></td>
                                                    </tr>                                                
                                                    <tr>
                                                        <td><?php _e('Border', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-config-border" name="icl_lang_sel_config[border]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_config']['border'])) 
                                                                echo $this->settings['icl_lang_sel_config']['border']; 
                                                            else 
                                                                echo $this->widget_css_defaults['border'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-border-picker" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-config-border';cp.show('icl-border-picker');return false;" /></td>
                                                        <td>&nbsp;</td>
                                                    </tr>
                                                    </tbody>                                                
                                                    
                                                </table>

                                                <?php _e('Presets:', 'sitepress')?>
                                                <select id="icl_lang_sel_color_scheme" name="icl_lang_sel_color_scheme">
                                                    <option value=""><?php _e('--select--', 'sitepress') ?>&nbsp;</option>
                                                    <option value="Gray"><?php _e('Gray', 'sitepress') ?>&nbsp;</option>
                                                    <option value="White"><?php _e('White', 'sitepress') ?>&nbsp;</option>                                                    
                                                    <option value="Blue"><?php _e('Blue', 'sitepress') ?>&nbsp;</option>
                                                </select>
                                                <span style="display:none"><?php _e("Are you sure? The customization you may have made will be overriden once you click 'Apply'", 'sitepress')?></span>
                                            </div>   
                                            <?php else: ?>
                                            <em><?php printf(__("%s is defined in your theme. The language switcher can only be customized using the theme's CSS.", 'sitepress'), 'ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') ?></em>
                                            <?php endif; ?>
                                        </li>
<?php
        if (defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS')) return;
?>

                                        <li>
                                            <h4><?php echo __('Footer language switcher style', 'sitepress')?></h4>
                                            <ul>
                                                <li>
                                                    <label>
                                                        <input type="checkbox" name="icl_lang_sel_footer" value="1" <?php if(!empty($this->settings['icl_lang_sel_footer'])):?>checked="checked"<?php endif?> />
                                                        <?php echo __('Show language switcher in footer', 'sitepress') ?>
                                                    </label>
                                                </li>
                                            </ul>
                                        </li>
                                        <li>                                        
                                            <div id="icl_lang_sel_footer_preview_wrap" style="<?php if (empty($this->settings['icl_lang_sel_footer'])) echo 'display:none; '; ?>min-height:80px">                                            
                                            <div id="icl_lang_sel_footer_preview">                                            
                                            <h4><?php _e('Footer language switcher preview', 'sitepress')?></h4>
                                            <?php 
                                                $this->footer_preview = true;
                                                $this->language_selector_footer(); 
                                            ?>                                                                          
                                            </div>                                                                     
                                            </div>

                                            <?php foreach($this->color_schemes as $key=>$val): ?>
                                                <?php foreach($this->footer_css_defaults as $k=>$v): ?>                                                
                                                <input type="hidden" id="icl_lang_sel_footer_config_alt_<?php echo $key ?>_<?php echo $k ?>" value="<?php echo $this->color_schemes[$key][$k] ?>" />
                                                <?php endforeach; ?>
                                            <?php endforeach; ?>                                            
                                            
                            
                                            
                                            <a href="#" onclick="jQuery(this).next().slideToggle();return false;" id="icl_lang_sel_footer_preview_link" <?php 
                                                if (empty($this->settings['icl_lang_sel_footer'])) echo 'style="display:none;" '; ?>><?php _e('Edit the footer language switcher colors', 'sitepress')?></a>
                                            <div style="display:none" id="icl_lang_preview_config_footer_editor_wrapper">                                          
                                                <table id="icl_lang_preview_config_footer" style="width:auto;">
                                                    <thead>
                                                    <tr>
                                                        <th>&nbsp;</th>
                                                        <th><?php _e('Normal', 'sitepress')?></th>
                                                        <th><?php _e('Hover', 'sitepress')?></th>
                                                    </tr>
                                                    </thead>
                                                    <tbody>                                                
                                                    <tr>
                                                        <td><?php _e('Current language font color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-font-current-normal" name="icl_lang_sel_footer_config[font-current-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['font-current-normal'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['font-current-normal']; 
                                                            else 
                                                                echo $this->footer_css_defaults['font-current-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-current-normal-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-font-current-normal';cp.show('icl-font-current-normal-picker-footer');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-font-current-hover" name="icl_lang_sel_footer_config[font-current-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['font-current-hover'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['font-current-hover']; 
                                                            else 
                                                                echo $this->footer_css_defaults['font-current-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-current-hover-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-font-current-hover';cp.show('icl-font-current-hover-picker-footer');return false;" /></td>
                                                    </tr>                                                
                                                    <tr>
                                                        <td><?php _e('Current language background color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-background-current-normal" name="icl_lang_sel_footer_config[background-current-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['background-current-normal'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['background-current-normal']; 
                                                            else 
                                                                echo $this->footer_css_defaults['background-current-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-current-normal-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-background-current-normal';cp.show('icl-background-current-normal-picker-footer');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-background-current-hover" name="icl_lang_sel_footer_config[background-current-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['background-current-hover'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['background-current-hover']; 
                                                            else 
                                                                echo $this->footer_css_defaults['background-current-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-current-hover-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-background-current-hover';cp.show('icl-background-current-hover-picker-footer');return false;" /></td>
                                                    </tr>
                                                    <tr>
                                                        <td><?php _e('Other languages font color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-font-other-normal" name="icl_lang_sel_footer_config[font-other-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['font-other-normal'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['font-other-normal']; 
                                                            else 
                                                                echo $this->footer_css_defaults['font-other-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-other-normal-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-font-other-normal';cp.show('icl-font-other-normal-picker-footer');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-font-other-hover" name="icl_lang_sel_footer_config[font-other-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['font-other-hover'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['font-other-hover']; 
                                                            else 
                                                                echo $this->footer_css_defaults['font-other-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-font-other-hover-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-font-other-hover';cp.show('icl-font-other-hover-picker-footer');return false;" /></td>
                                                    </tr>                                                
                                                    <tr>
                                                        <td><?php _e('Other languages background color', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-background-other-normal" name="icl_lang_sel_footer_config[background-other-normal]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['background-other-normal'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['background-other-normal']; 
                                                            else 
                                                                echo $this->footer_css_defaults['background-other-normal'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-other-normal-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-background-other-normal';cp.show('icl-background-other-normal-picker-footer');return false;" /></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-background-other-hover" name="icl_lang_sel_footer_config[background-other-hover]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['background-other-hover'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['background-other-hover']; 
                                                            else 
                                                                echo $this->footer_css_defaults['background-other-hover'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-other-hover-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-background-other-hover';cp.show('icl-background-other-hover-picker-footer');return false;" /></td>
                                                    </tr> 
                                                    
                                                    <tr>
                                                        <td><?php _e('Background', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-background" name="icl_lang_sel_footer_config[background]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['background'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['background']; 
                                                            else 
                                                                echo $this->footer_css_defaults['background'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-background-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-background';cp.show('icl-background-picker-footer');return false;" /></td>
                                                        <td>&nbsp;</td>
                                                    </tr>
                                                                                                  
                                                    <tr>
                                                        <td><?php _e('Border', 'sitepress')?></td>
                                                        <td><input type="text" size="7" id="icl-lang-sel-footer-config-border" name="icl_lang_sel_footer_config[border]" value="<?php 
                                                            if(isset($this->settings['icl_lang_sel_footer_config']['border'])) 
                                                                echo $this->settings['icl_lang_sel_footer_config']['border']; 
                                                            else 
                                                                echo $this->footer_css_defaults['border'] ;
                                                            ?>" /><img src="<?php echo ICL_PLUGIN_URL; ?>/res/img/icon_color_picker.png" id="icl-border-picker-footer" alt="" border="0" style="vertical-align:bottom;cursor:pointer;" class="pick-show" onclick="icl_cp_target='icl-lang-sel-footer-config-border';cp.show('icl-border-picker-footer');return false;" /></td>
                                                        <td>&nbsp;</td>
                                                    </tr>
                                                    </tbody>                                                
                                                    
                                                </table>

                                                <?php _e('Presets:', 'sitepress')?>
                                                <select id="icl_lang_sel_footer_color_scheme" name="icl_lang_sel_footer_color_scheme">
                                                    <option value=""><?php _e('--select--', 'sitepress') ?>&nbsp;</option>
                                                    <option value="Gray"><?php _e('Gray', 'sitepress') ?>&nbsp;</option>
                                                    <option value="White"><?php _e('White', 'sitepress') ?>&nbsp;</option>                                                    
                                                    <option value="Blue"><?php _e('Blue', 'sitepress') ?>&nbsp;</option>
                                                </select>
                                                <span style="display:none"><?php _e("Are you sure? The customization you may have made will be overriden once you click 'Apply'", 'sitepress')?></span>
                                            </div>   
                                            <br />
                                        </li>
                                        
                                        <li>
                                            <h4><?php _e('Show post translation links', 'sitepress'); ?></h4>
                                            <ul>
                                                <li>
                                                    <label>
                                                        <input type="checkbox" name="icl_post_availability" value="1" <?php if(!empty($this->settings['icl_post_availability'])):?>checked="checked"<?php endif?> />
                                                        <?php _e('Yes', 'sitepress'); ?>
                                                    </label>
                                                </li>
                                                 <li>
                                                    <label>
                                                        <?php _e('Position', 'sitepress'); ?>&nbsp;
                                                       <select name="icl_post_availability_position">
                                                            <option value="above"<?php if(isset($this->settings['icl_post_availability_position']) && $this->settings['icl_post_availability_position'] == 'above'):?> selected="selected"<?php endif?>><?php _e('Above post', 'sitepress'); ?>&nbsp;&nbsp;</option>
                                                            <option value="below"<?php if(empty($this->settings['icl_post_availability_position']) || 
                                                            $this->settings['icl_post_availability_position'] == 'bellow' || 
                                                            $this->settings['icl_post_availability_position'] == 'below'
                                                            ):?> selected="selected"<?php endif?>><?php _e('Below post', 'sitepress'); ?>&nbsp;&nbsp;</option>
                                                        </select>
                                                    </label>
                                                </li>
                                                <li>
                                                    <label>
                                                      <?php _e('Text for alternative languages for posts', 'sitepress'); ?><br /><input type="text" name="icl_post_availability_text" value="<?php 
                                                        if(isset($this->settings['icl_post_availability_text'])) echo esc_attr($this->settings['icl_post_availability_text']); else _e('This post is also available in: %s','sitepress'); ?>" size="40" />
                                                    </label>
                                                    <br /><br />
                                                </li>
                                            </ul>
                                            <h4><?php _e('Additional CSS (optional)', 'sitepress'); ?></h4>
                                            <ul>
                                                <li>
                                                  <textarea name="icl_additional_css" rows="4" cols="80"><?php
                                                    if (!empty($this->settings['icl_additional_css'])) {
                                                      echo $this->settings['icl_additional_css'];
                                                    }
                                                  ?></textarea>
                                                </li>
                                            </ul>
                                        </li>
                                        
<?php
    }
    
    function widget_list(){
        global $sitepress, $w_this_lang, $icl_language_switcher_preview;
        if($w_this_lang['code']=='all'){
            $main_language['native_name'] = __('All languages', 'sitepress');
        }
        $active_languages = icl_get_languages('orderby=id&order=asc&skip_missing=0');
        if(empty($active_languages)) return; ?>
        
<div id="lang_sel_list"<?php if(empty($this->settings['icl_lang_sel_type']) || $this->settings['icl_lang_sel_type'] == 'dropdown') echo ' style="display:none;"';?>>           
            <ul>
                <?php foreach($active_languages as $lang): ?>
                <li class="icl-<?php echo $lang['language_code'] ?>">          
                    <a href="<?php echo apply_filters('WPML_filter_link', $lang['url'], $lang)?>"<?php if ($lang['language_code'] == $sitepress->get_current_language()) echo ' class="lang_sel_sel"'; else echo ' class="lang_sel_other"'; ?>>
                    <?php if( $this->settings['icl_lso_flags'] || $icl_language_switcher_preview):?>                
                    <img <?php if( !$this->settings['icl_lso_flags'] ):?>style="display:none"<?php endif?> class="iclflag" src="<?php echo $lang['country_flag_url'] ?>" alt="<?php echo $lang['language_code'] ?>" />&nbsp;                    
                    <?php endif; ?>
                    <?php 
                        if($icl_language_switcher_preview){
                            $lang_native = $lang['native_name'];
                            if($this->settings['icl_lso_native_lang']){
                                $lang_native_hidden = false;
                            }else{
                                $lang_native_hidden = true;
                            }
                            $lang_translated = $lang['translated_name'];
                            if($this->settings['icl_lso_display_lang']){
                                $lang_translated_hidden = false;
                            }else{
                                $lang_translated_hidden = true;
                            }                            
                        }else{
                            if($this->settings['icl_lso_native_lang']){
                                $lang_native = $lang['native_name'];
                            }else{
                                $lang_native = false;
                            }
                            if($this->settings['icl_lso_display_lang']){
                                $lang_translated = $lang['translated_name'];
                            }else{
                                $lang_translated = false;
                            }
                        }
                        echo @icl_disp_language($lang_native, $lang_translated, $lang_native_hidden, $lang_translated_hidden);
                         ?>
                    </a>
                </li>
                <?php endforeach; ?>
            </ul>
</div>
<?php
    }
    
    function custom_language_switcher_style(){
        if(defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') && ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS){
            return;
        }
        $this->widget_css_defaults = $this->widget_css_defaults;
        $add = false;
        foreach($this->widget_css_defaults as $key=>$d){
            if(isset($this->settings['icl_lang_sel_config'][$key]) && $this->settings['icl_lang_sel_config'][$key] != $d){
                $this->settings['icl_lang_sel_config'][$key] . "\n";
                $add = true;
                break;
            }
        }
        if($add){
            $list = ($this->settings['icl_lang_sel_type'] == 'list') ? true : false;
            echo "\n<style type=\"text/css\">";
            foreach($this->settings['icl_lang_sel_config'] as $k=>$v){
                switch($k){
                    case 'font-current-normal': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                            echo '#lang_sel_list a.lang_sel_sel, #lang_sel_list a.lang_sel_sel:visited{color:'.$v.';}';
                        else
                            echo '#lang_sel a, #lang_sel a.lang_sel_sel{color:'.$v.';}'; 
                        break;
                    case 'font-current-hover': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                            echo '#lang_sel_list a:hover, #lang_sel_list a.lang_sel_sel:hover{color:'.$v.';}';
                        else
                            echo '#lang_sel a:hover, #lang_sel a.lang_sel_sel:hover{color:'.$v.';}';
                        break;
                    case 'background-current-normal': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                            echo '#lang_sel_list a.lang_sel_sel, #lang_sel_list a.lang_sel_sel:visited{background-color:'.$v.';}';
                        else
                            echo '#lang_sel a.lang_sel_sel, #lang_sel a.lang_sel_sel:visited{background-color:'.$v.';}'; 
                        break;
                    case 'background-current-hover': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                            echo '#lang_sel_list a.lang_sel_sel:hover{background-color:'.$v.';}'; 
                        else
                            echo '#lang_sel a.lang_sel_sel:hover{background-color:'.$v.';}'; 
                        break;
                    case 'font-other-normal':
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                            echo '#lang_sel_list ul a.lang_sel_other, #lang_sel_list ul a.lang_sel_other:visited{color:'.$v.';}'; 
                        else
                            echo '#lang_sel li ul a, #lang_sel li ul a:visited{color:'.$v.';}'; 
                        break;
                    case 'font-other-hover': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                            echo '#lang_sel_list ul a.lang_sel_other:hover{color:'.$v.';}'; 
                        else
                            echo '#lang_sel li ul a:hover{color:'.$v.';}'; 
                        break;
                    case 'background-other-normal': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                             echo '#lang_sel_list ul a.lang_sel_other, #lang_sel li ul a:link, #lang_sel_list ul a.lang_sel_other:visited{background-color:'.$v.';}'; 
                        else
                            echo '#lang_sel li ul a, #lang_sel li ul a:link, #lang_sel li ul a:visited{background-color:'.$v.';}'; 
                        break;
                    case 'background-other-hover': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                             echo '#lang_sel_list ul a.lang_sel_other:hover{background-color:'.$v.';}'; 
                        else
                            echo '#lang_sel li ul a:hover{background-color:'.$v.';}'; 
                        break;
                    case 'border': 
                        //if($v != $this->widget_css_defaults[$k])
                        if ($list)
                             echo '#lang_sel_list a, #lang_sel_list a:visited{border-color:'.$v.';} #lang_sel_list  ul{border-top:1px solid '.$v.';}';
                        else
                            echo '#lang_sel a, #lang_sel a:visited{border-color:'.$v.';} #lang_sel ul ul{border-top:1px solid '.$v.';}';
                        break;
                    
                }
            }
            echo "</style>\n";
        }
        if (isset($this->settings['icl_additional_css']) && !empty($this->settings['icl_additional_css'])) {
          echo "\r\n<style type=\"text/css\">";
          //echo implode("\r\n", $this->settings['icl_additional_css']);
          echo $this->settings['icl_additional_css'];
          echo "\r\n</style>";
        }
    }
    
    function wp_nav_menu_items_filter($items, $args){
        global $sitepress_settings, $sitepress;
        
        // menu can be passed as integger or object
        if(isset($args->menu->term_id)) $args->menu = $args->menu->term_id;
        
        $abs_menu_id = icl_object_id($args->menu, 'nav_menu', false, $sitepress->get_default_language());
        
        if($abs_menu_id == $sitepress_settings['menu_for_ls']){
        
            $languages = $sitepress->get_ls_languages();
            
            $items .= '<li class="menu-item menu-item-language menu-item-language-current">';
            if(isset($args->before)){
                $items .= $args->before;
            }                                 
            $items .= '<a href="#" onclick="return false">';
            if(isset($args->link_before)){
                $items .= $args->link_before;
            } 
            if( $sitepress_settings['icl_lso_flags'] ){
                $items .= '<img class="iclflag" src="'.$languages[$sitepress->get_current_language()]['country_flag_url'].'" width="18" height="12" alt="'.$languages[$sitepress->get_current_language()]['translated_name'].'" />';
            }
            $items .= $languages[$sitepress->get_current_language()]['translated_name'];
            if(isset($args->link_after)){
                $items .= $args->link_after;
            }                                 
            $items .= '</a>';
            if(isset($args->after)){
                $items .= $args->after;
            }                                             
            
            unset($languages[$sitepress->get_current_language()]);
            if(!empty($languages)){
                $items .= '<ul class="sub-menu submenu-languages">'; 
                foreach($languages as $code => $lang){
                    $items .= '<li class="menu-item menu-item-language menu-item-language-current">';
                    $items .= '<a href="'.$lang['url'].'">';
                    if( $sitepress_settings['icl_lso_flags'] ){
                        $items .= '<img class="iclflag" src="'.$lang['country_flag_url'].'" width="18" height="12" alt="'.$lang['translated_name'].'" />';
                    }
                    if($sitepress_settings['icl_lso_native_lang']){
                        $items .= $lang['native_name'];
                    }
                    if($sitepress_settings['icl_lso_display_lang'] && $sitepress_settings['icl_lso_native_lang']){
                        $items .= ' (';
                    }
                    if($sitepress_settings['icl_lso_display_lang']){
                        $items .= $lang['translated_name'];
                    }
                    if($sitepress_settings['icl_lso_display_lang'] && $sitepress_settings['icl_lso_native_lang']){
                        $items .= ')';
                    }                
                    $items .= '</a>';
                    $items .= '</li>';
                    
                }
                $items .= '</ul>';
            }
            $items .= '</li>';
        
        }
        
        return $items;
    }    
    
} // end class





// language switcher functions
    function language_selector_widget($args){            
        global $sitepress, $sitepress_settings;
        extract($args, EXTR_SKIP);
        echo $before_widget;
        if ($sitepress_settings['icl_widget_title_show']) {
            echo $args['before_title'];
            _e('Languages','sitepress');
            echo $args['after_title'];
        }
        $sitepress->language_selector();
        echo $after_widget;
    }

    function icl_lang_sel_nav_ob_start(){                 
           if(is_feed()) return;
        ob_start('icl_lang_sel_nav_prepend_css'); 
    }

    function icl_lang_sel_nav_ob_end(){ 
        $ob_handlers = ob_list_handlers();
        $active_handler = array_pop( $ob_handlers );
        if($active_handler == 'icl_lang_sel_nav_prepend_css'){
            ob_end_flush();    
        }
    }

    function icl_lang_sel_nav_prepend_css($buf){        
        if(defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') && ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS){
            return $buf;
           }
        return preg_replace('#</title>#i','</title>' . PHP_EOL . PHP_EOL . icl_lang_sel_nav_css(false), $buf);
    }

    function icl_lang_sel_nav_css($show = true){        
        if(defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') && ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS){
            return '';
        }
        $link_tag = '<link rel="stylesheet" href="'. ICL_PLUGIN_URL . '/res/css/language-selector.css?v='.ICL_SITEPRESS_VERSION.'" type="text/css" media="all" />';
        if(!$show && (!isset($_GET['page']) || $_GET['page'] != ICL_PLUGIN_FOLDER . '/menu/languages.php')){
            return $link_tag;
        }else{
            echo $link_tag;
        }        
    }




global $icl_language_switcher;
$icl_language_switcher = new SitePressLanguageSwitcher;