/*
 * Wikiplus
 */

window.wpjQ = jQuery.noConflict(true);

(function(window, $) {

    var wikiplus = {
        ui      : {},
        toolbar : {},
        plugins : {},
        lib     : {},
        code    : {
            NOTICE   : 1,
            WARNING  : 2,
            ERROR    : 3
        },

        init : function(){
            wp.prop.init(function(){
                //プロパティが必要な初期化処理はこちらへ
                wp.ui.editor.elrte.init();    //Elrte
                wp.ui.editor.init();          //エディター
                wp.ui.editor.message.init();  //エディターメッセージ
                wp.ui.editor.property.init(); //エディタープロパティ
            });                               //プロパティ
            wp.ui.devnavi.init();             //制作ナビ
            wp.ui.pane.init();                //ペイン(wp.ui.menu.init()はこの中で実行)
            wp.cookie.init();                 //クッキー
            wp.ui.tooltip.init();             //ツールチップの設定
            wp.lib.dialog.init();             //ダイアログライブラリの設定

            wp.toolbar.logo.init();
            wp.toolbar.nav_search.init();
        },

        load : function(){
            $("a.fancybox").fancybox();
        },

        logger : function(msg){
            try {
                console.log(msg)
            } catch(e) {
            };
        }
    }

    window.wp = wikiplus;

    //image preload
    var cache = [];
    var images = [
          'wikiplus/images/sub_menu_bg.png'
        , 'wikiplus/images/sub_menu_bg_l.png'
        , 'wikiplus/images/sub_menu_foot_bg.png'
        , 'wikiplus/images/sub_menu_foot_bg_l.png'
        , 'wikiplus/images/sub_menu_head_bg.png'
        , 'wikiplus/images/sub_menu_head_bg_l.png'
        , 'wikiplus/images/sub_menu_right_bg.png'
    ];
    for (var i = images.length; i--;) {
        var cacheImage = document.createElement('img');
        cacheImage.src = images[i];
        cache.push(cacheImage);
    }

    /*****************************************************
     *
     * 汎用拡張
     *
     * *****************************************************/
    //jQueryウエイト処理
    wpjQ.fn.wait = function(time, type) {
        time = time || 1000;
        type = type || "fx";
        return this.queue(type, function() {
            var self = this;
            setTimeout(function() {
                wpjQ(self).dequeue();
            }, time);
        });
    };

    /*****************************************************
     *
     * WikiPlus独自拡張
     *
     * *****************************************************/
    wpjQ.fn.wpInputNumber = function(opt){

        opt = opt || {};
        var defaults = {
            step : 1,
            min  : 0,
            max  : 9999
        }
        var options = $.extend(true, {}, defaults, opt);

        return this.each(function(){
            var obj=$(this);
            if(!$.browser.msie){
                obj.attr("unselectable", "on");
            }
            obj.after('<ul class="wp_editor_plus_minus"><li class="wp_editor_plus">+</li><li class="wp_editor_minus">-</li></ul>');
            var plus = $("li.wp_editor_plus", obj.next()).eq(0);
            var minus = $("li.wp_editor_minus", obj.next()).eq(0);
            plus.css("cursor", "pointer");
            minus.css("cursor", "pointer");

            plus.click(function(){
                var set_val = parseInt(obj.val()) + options.step;
                if(set_val <= options.max){
                    obj.val(set_val);
                }
            });
            minus.click(function(){
                var set_val = parseInt(obj.val()) - options.step;
                if(set_val >= options.min){
                    obj.val(set_val);
                }
            });
        });
    }


    /**
     * エディタ右メニューの開閉ボタン
     *
     */
    wpjQ.fn.wpAdvMenuToggle = function(menu_id){
        $(this).attr('href', 'javascript:void(0)');
        $(this).addClass('toggle_menu_off');
        $('#' + menu_id).css('display', 'none').css('margin-bottom', '20px');

        var plugin = this;

        $(this).click(function(){
            if($(this).hasClass('toggle_menu_off')){
                plugin.show();
            } else {
                plugin.hide();
            }
        });

        plugin.show = function(){
            $(this).removeClass('toggle_menu_off').addClass('toggle_menu_on');
            $('#' + menu_id).show();
        }
        plugin.hide = function(){
            $(this).removeClass('toggle_menu_on').addClass('toggle_menu_off');
            $('#' + menu_id).hide();
        }
    }

    /**
     * ページ選択リストの出力
     *
     */
    wpjQ.fn.wpSelectPageMenu = function(sel_val, sel_text, first_val, first_text){
        sel_val  = sel_val  || 'contentid';
        sel_text = sel_text || 'pagename';
        first_val = first_val || '';
        first_text = first_text || '--- 選択してください ---';

        //内部リンクセレクトボックスのクリア
        $(this).find('option').remove();
        $(this).append($('<option>').attr({value: first_val}).text(first_text));
        for(var i = 0; i < wp.prop.dialog.editor.linkpages.length; i++){
            if(/^:/.test(wp.prop.dialog.editor.linkpages[i].pagename)){
                continue;
            }
            if(wp.prop.dialog.editor.linkpages[i].contentid == "" || wp.prop.dialog.editor.linkpages[i].pagename == ""){
                continue;
            }
            $(this).append($('<option>').attr({
                value: wp.prop.dialog.editor.linkpages[i][sel_val]
                }).text(wp.prop.dialog.editor.linkpages[i][sel_text]));
        }
    }

    /**
     * ページ階層選択リストの出力
     *
     */
    wpjQ.fn.wpSelectLevelMenu = function(first_val, first_text){
        first_val  = first_val  || '';
        first_text = first_text || '--- 選択してください ---';

        var temp_dirs = {};
        wp.prop.dialog.editor.linkdirs.length = 0;
        for(var i = 0; i < wp.prop.dialog.editor.linkpages.length; i++){
            if(/.+\/.+$/.test(wp.prop.dialog.editor.linkpages[i].pagename)){
                temp_dirs[$.trim(wp.prop.dialog.editor.linkpages[i].pagename.replace(/\/.+$/, ''))] = $.trim(wp.prop.dialog.editor.linkpages[i].pagename.replace(/\/.+$/, ''));
            }
        }
        for(var dir in temp_dirs){
            wp.prop.dialog.editor.linkdirs.push(dir);
        }

        //セレクトボックスのクリア
        $(this).find('option').remove();
        $(this).append($('<option>').attr({value: first_val}).text(first_text));
        for(i = 0; i < wp.prop.dialog.editor.linkdirs.length; i++){
            if(wp.prop.dialog.editor.linkdirs[i] == ""){
                continue;
            }
            $(this).append($('<option>').attr({
                value: wp.prop.dialog.editor.linkdirs[i]
                }).text(wp.prop.dialog.editor.linkdirs[i]));
        }
    }

    /**
     * プラグインテンプレートの出力
     *
     */
    wpjQ.fn.wpSelectPluginTemplate = function(plugin_name, first_val, first_text){
        var template_list = wp.prop.plugin_static[plugin_name].template_list;
        first_val = first_val || '';
        first_text = first_text || '--- 選択してください ---';

        //内部リンクセレクトボックスのクリア
        $(this).find('option').remove();
        $(this).append($('<option>').attr({value: first_val}).text(first_text));
        for(var i = 0; i < template_list.length; i++){
            $(this).append($('<option>').attr({
                value: template_list[i]
                }).text(template_list[i]));
        }
    }


})(window, wpjQ);

window.wpjQ(document).ready(function() {
    wp.load();
});
