var MyMenuReader = function(opts)
{
    /* --------- 外部からセットする変数 ---------*/
    //クッキー保存時間などオプション
    var myMenuCookieOpt = {};
    if (opts.myMenuCookieOpt) myMenuCookieOpt = opts.myMenuCookieOpt;
    //クッキー保存変数
    var myMenuCookieVar = '';
    if (opts.myMenuCookieVar) myMenuCookieVar = opts.myMenuCookieVar;
    //マイメニューない場合のデフォルト
    var defMenuList = [];
    if (opts.defMenuList) defMenuList = opts.defMenuList;


    //マイメニューの個数リミット
    var myMenuNumLimit = 15;
    if (opts.myMenuNumLimit) myMenuNumLimit = opts.myMenuNumLimit;


    //マイリストULのID
    var myListId = '';
    this.setMyListId = setMyListId;
    function setMyListId(str)
    {
        myListId = str;
        return this;
    }


    /**
     * マイリストに追記する
     */
    function appendMyList(tObj)
    {
        //マイリスト用ID生成
        var myId = 'my_' + tObj.id;
        var inner = jQuery('<a />').html(tObj.txt).attr('href', tObj.url);
        if (tObj.target) {
            inner.attr('target', tObj.target);
        }
        if (tObj.cls) {
            inner.attr('class', tObj.cls);
        }
        var newLi = jQuery('<li />').html(inner);
        newLi.appendTo('#' + myListId);
    }


    /**
     * cookieからリストをロードして描画
     */
    this.loadList = loadList;
    function loadList()
    {
        var tJson = jQuery.cookie(myMenuCookieVar);
        if (tJson) {
            //jQuery.json使う方式
            myMenuList = jQuery.evalJSON(tJson);
        } else {
            //デフォルトリスト
            myMenuList = jQuery.extend([], defMenuList);
        }

        //menuItemListから消えてるものはmyMenuListから消す
        var tmpList = jQuery.extend([], myMenuList);
        myMenuList = new Array();
        for (i = 0; i < tmpList.length; i++) {
            var key = tmpList[i];
            var obj = menuItemList[key];
            if (!obj || obj == undefined) {
                continue;
            }
            myMenuList.push(key);
        }

        //myMenuListが長すぎたらトリムする
        if (myMenuList.length > myMenuNumLimit) {
            var tmpList = jQuery.extend([], myMenuList);
            myMenuList = new Array();
            for (i = 0; i < myMenuNumLimit; i++) {
                myMenuList[i] = tmpList[i];
            }
        }
        //クッキー保存しなおして延命しておく
        var nJson = jQuery.toJSON(myMenuList);
        jQuery.cookie(myMenuCookieVar, nJson, myMenuCookieOpt);

        //マイメニューを描画
        for (i = 0; i < myMenuList.length; i++) {
            var tId = myMenuList[i];
            var tObj = menuItemList[tId];
            appendMyList(tObj);
        }
    }

}

//メニュー描画実行
var MMR = new MyMenuReader(menuOptions);
MMR.setMyListId('mylist');
jQuery().ready(function(){
    MMR.loadList();
});

jQuery(window).unload(function(){});

