//-----------------<<宣告>>--------------------------
var uPageMgr = new UserPageManager(); //用來記住頁面資訊的model
var updateItemView = null; //更新某頁的Blog資料
var seeFriendBlog = null;  //顯示朋友選單還選取要看的朋友頁面
var maxPageNum = 20; //每人最多20頁
var maxblogPerPage = 20; //每頁做多20個blog
var login_fb_uid = $.cookie('sb_uid');

//是否有原生的 JSON
var JSON = (typeof JSON != "undefined" ) ? JSON : { parse: function( text ) { return eval( "(" + text + ")" );} };

//檢查是否可以自動登入
if (isLogin) {
    checkAutoLogin(function(isLogin) {
        if (isLogin) { location.reload(); }
    });
}

//用來記住目前Login User的資料
function LoginedUser() {
    this.friends = null;        //加入Yus的朋友
    this.notAppFriends = null;　//沒加入Yus的朋友
    this.uid = null;            //UID
    this.fb_uid = null;         //Facebook id
    this.timerHandler = null;
}

//保持Session不斷掉
LoginedUser.prototype.keepSession = function(){
    var u = this;
    //每五分鐘refresh session一次
    this.timerHandler = setTimeout(function(){
        $.post('notimeout.php', {job:'keep_alive'}, function(e) {
            u.keepSession();
        });
    }, 100000);
}

//記住目前Login User的資料
var logginUser = new LoginedUser();
logginUser.uid = $.cookie('uid');
logginUser.fb_uid = $.cookie('sb_uid');
logginUser.keepSession(); //保持Session不斷掉
logginUser.info = null;


//取出Channel Name
function getChannelJson(cid) {
    var ch = null;
    for (var i=0; i<channelArr.length; i++) {
        if (cid == channelArr[i].cid) {
            ch = channelArr[i];
        }
    }
    return ch;
}

//更新Channel資料
var updateChannelInfo = function(cid) {
    uPageMgr.isChannel = true;
    uPageMgr.cid = cid;
    var chInfo = getChannelJson(cid);
    uPageMgr.channelTitle = chInfo.title;
    uPageMgr.channelDesc = chInfo.desc;

    location.href =  "userpage.php#C_" + uPageMgr.cid + "_";
    
    $('#view_user_name').html('<a>'+chInfo.title+':</a>' +'<p>'+ chInfo.desc+'</p>');
}

//parse anchor
function processAnchor(uPageMgr, logginUser) {
    //判斷顯示頁面，開頭如果是'C_'開頭, 表示是channel, 否則是user
    //c_x1_x2 : x1:cid, x2:page_id 
    //x1_x2 : x1:uid, x2:page_id 
    var anchorStr = document.location.hash.substring(1);

    //是否是Channel
    if ('C_' == anchorStr.substring(0,2)) {
        anchorStr = anchorStr.substring(2);
        uPageMgr.isChannel = true;
    }

    var idx = anchorStr.indexOf('_');
    var view_id = null;
    if (-1 != idx) {
        view_id = ('' != anchorStr.substring(0,idx)) ? anchorStr.substring(0,idx) : logginUser.uid;
        uPageMgr.pid = ('' != anchorStr.substring(idx+1)) ? anchorStr.substring(idx+1) : null;
    } else if (logginUser.uid) {
        view_id = logginUser.uid;   //使用目前login的使用者
    } else {
        //no login & no input uid, use deafule yusreader page
        uPageMgr.isChannel = true;
        view_id = SYS_CONF_CID;
    }

    if (uPageMgr.isChannel) {
        updateChannelInfo(view_id);
    } else {
        uPageMgr.uid = view_id;
        uPageMgr.channelTitle = '';
    }
}

//產生連結到Reader Page的連結
var getReaderLink = function(pid, item_id, isFullLink) {
    var UUID = (logginUser.uid) ? logginUser.uid : '';
    var isC = (uPageMgr.isChannel) ? 'C' : 'U';
    var VID = (uPageMgr.isChannel) ? uPageMgr.cid : uPageMgr.uid;
    item_id = (item_id) ? item_id : '';
    var link = 'reader.php#'+CUID+'_'+ UUID+'_'+isC+'_'+VID+'_'+pid+'_'+item_id;

    if (isFullLink) {
        link = 'http://'+location.host+'/'+link;
    }
    return link;
}

/////////////////////////////
//檢查RSS feed是否有效
var checkFeedIsValid = function(feedUrl, cbFn) {
    var feedLoaded = function(result) {
        if (!result.error) {
            var title = result.feed.title;
            var img_link = result.feed.link;
/*
alert('title'+title)
alert('img_link'+img_link)
alert('length'+result.feed.entries.length)
*/
            if (0 < result.feed.entries.length) {
                img_link = result.feed.entries[0].link;
            }
            if (cbFn) {
                cbFn(true, title, img_link);
            }
        } else {
            if (cbFn) {
                cbFn(false, '', '');
            }
        }
    }
    var feed = new google.feeds.Feed(feedUrl);
    feed.load(feedLoaded);
}

//-----------------<<管理Channel>>--------------------------
String.format = function() {
    if( arguments.length == 0 )
        return null;

    var str = arguments[0];
    for(var i=1;i<arguments.length;i++) {
        var re = new RegExp('\\{' + (i-1) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
} 

//新增Channel
var addChannel = function() {
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            location.reload();
        } else {
            ealert(json.reason);
        }
    }
    var callbackFn = function(title, desc, id) {
        $.post('dojob.php', {job:'addChannel', channel_title:title, desc:desc}, doneAdd, 'json');
    }
    BBUtil.showTitleDescEdit(null, lang.NEW_CH, lang.DEF_CH_NAME, callbackFn);
}

//edit Channel
var editChannel = function() {
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            location.reload();
            //refreshPage();
        } else {
            alert(json.reason);
        }
    }
    var callbackFn = function(title, desc, cid) {
        $.post('dojob.php', {job:'editChannel', cid:uPageMgr.cid, channel_title:title, desc:desc}, doneAdd, 'json');
    }
    if (uPageMgr.isChannel) {
        BBUtil.showTitleDescEdit(uPageMgr.cid, uPageMgr.channelTitle, uPageMgr.channelDesc, callbackFn);
    } else {
        ealert(lang.NOT_CH)
    }
}

//delete Channel
var delChannel = function() {
    var doneDel = function(json) {
        if ('OK' == json.status) {
            location.href = 'userpage.php';
        } else {
            ealert(json.reason);
        }
    }
    if (uPageMgr.isChannel) {
        econfirm(String.format(lang.DEL_WARNING, uPageMgr.channelTitle), function () {
            $.post('dojob.php', {job:'delChannel', cid:uPageMgr.cid}, doneDel, 'json');}
        );
    } else {
        ealert(lang.NOT_CH)
    }
}

//-----------------<<管理頁面>>--------------------------
//新增頁面
//isChannel: true or false, 是否加到Channel or User
//新增到使用者名下或某特定channel, vid可以是uid或是cid
var addPage = function(isChannel, vid) {
    isChannel = (isChannel) ? 1 : 0; //true=1, false=0
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            refreshPage();
        } else {
            ealert(json.reason);
        }
    }
    var callbackFn = function(page_title, page_id) {
        $.post('dojob.php', {job:'addpage', page_title:page_title, vid:vid, isChannel:isChannel}, doneAdd, 'json');
    }
    BBUtil.showPageEdit(null, lang.NEW_TAB, callbackFn);
}

//編輯頁面
var editPage = function() {
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            //location.reload();
            refreshPage();
        } else {
            ealert(json.reason);
        }
    }
    var callbackFn = function(page_title, page_id) {
        $.post('dojob.php', {job:'editpage', page_id:page_id, page_title:page_title}, doneAdd, 'json');
    }
    BBUtil.showPageEdit(uPageMgr.pid, uPageMgr.getPageTitle(), callbackFn);
}

//刪除頁面
var delPage = function() {
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            refreshPage();
        } else {
            ealert(json.reason);
        }
    }
    econfirm(String.format(lang.DEL_WARNING, uPageMgr.getPageTitle()), function () {$.post('dojob.php', {job:'delpage', page_id:uPageMgr.pid}, doneAdd, 'json');});
}

//Page拖拉換位子
var makePageDragable = function() {
   YUI().use("dd-drag", "dd-drop", 'dd-proxy', 'dd-constrain', function(Y) {
        var goingUp = true;
        var goingLeft = true;   //滑鼠是右向左移?
        var isAfter = true;     //回傳Server時，放在後面或前面
        var lastX;
        var lastY;
        var pid1 = 1;
        var pid2 = null;
        $('.catgory').each(function() {
            var drag = new Y.DD.Drag({
                node: this
                ,dragMode: 'intersect'
            }).plug(Y.Plugin.DDProxy, {
                moveOnEnd: false
            }).plug(Y.Plugin.DDConstrained, {
                constrain2node: '#workarea'
            });

            var drop = new Y.DD.Drop({ 
                node: this
            })
            
            drag.on('drag:start', function() {
                var p = this.get('dragNode'),
                    n = this.get('node');
                    n.setStyle('opacity', .55);
                    if (!this._playerStart) {
                        this._playerStart = this.nodeXY;
                    }
                p.set('innerHTML', n.get('innerHTML'));
                p.setStyles({
                    backgroundColor: n.getStyle('backgroundColor'),
                    color: n.getStyle('color'),
                    background:'',
                    opacity: .75
                });
            });
            drag.on('drag:end', function() {
                var n = this.get('node');
                n.setStyle('opacity', '1');
                //save to db
                var is_after = (isAfter) ? 1 : 0;
                $.post('dojob.php', {job:'change_page_posi', pid1:pid1, pid2:pid2, is_after:is_after})
            });
            
            drag.on('drag:drag', function(e) {
                var x = e.target.lastXY[0];
                var y = e.target.lastXY[1];
                if (y < lastY) {
                    goingUp = true;
                } else {
                    goingUp = false;
                }
                if (x < lastX) {
                    goingLeft = true;
                } else {
                    goingLeft = false;
                }
                lastX = x;
                lastY = y;
                //Y.DD.DDM.syncActiveShims(true);    
            });
            
            drop.on('drop:over', function(e) {
                var dragEl = e.drag.get('node');
                var dropEl = e.drop.get('node');
                pid1 = dragEl.getAttribute('pid');
                pid2 = dropEl.getAttribute('pid');

                if (!goingLeft) {
                    dropEl = dropEl.get('nextSibling');
                    isAfter = true;
                } else {
                    isAfter = false;
                }
                e.drop.get('node').get('parentNode').insertBefore(dragEl, dropEl);
            });
            
            drag.on('drag:drophit', function(e) {
            });
        })
    });
}
//-----------------<<Blog Items管理>>--------------------------
//Blog拖拉換位子
var makeDrapable = function() {
   YUI().use('node', "dd-drag", "dd-drop", 'dd-proxy', 'dd-constrain', function(Y) {
        var goingUp = true;
        var goingLeft = true;
        var lastX;
        var lastY;
        $('.blogitemX').each(function() {
            var drag = new Y.DD.Drag({
                node: this
                ,dragMode: 'intersect'
            }).plug(Y.Plugin.DDProxy, {
                moveOnEnd: false
            }).plug(Y.Plugin.DDConstrained, {
                constrain2node: '#workarea'
            });

            var drop = new Y.DD.Drop({ 
                node: this
            })
            
            drag.on('drag:start', function() {
                var p = this.get('dragNode'),
                    n = this.get('node');
                    n.setStyle('opacity', .55);
                    if (!this._playerStart) {
                        this._playerStart = this.nodeXY;
                    }
                p.set('innerHTML', n.get('innerHTML'));
                p.setStyles({
                    backgroundColor: n.getStyle('backgroundColor'),
                    color: n.getStyle('color'),
                    background:'',
                    opacity: .65
                });
            });
            drag.on('drag:end', function() {
                var n = this.get('node');
                n.setStyle('opacity', '1');
            });

            drag.on('drag:drag', function(e) {
                var x = e.target.lastXY[0];
                var y = e.target.lastXY[1];
                if (y < lastY) {
                    goingUp = true;
                } else {
                    goingUp = false;
                }
                if (x < lastX) {
                    goingLeft = true;
                } else {
                    goingLeft = false;
                }
                lastX = x;
                lastY = y;
                //Y.DD.DDM.syncActiveShims(true);    
            });

            drag.on('drag:drophit', function(e) {
                var dragEl = this.get('node');
                var dropEl = e.drop.get('node');
                var item1 = dragEl.get('role');
                var item2 = dropEl.get('role');
                
                var d1 = Y.Node.getDOMNode(dragEl);
                var d2 = Y.Node.getDOMNode(dropEl);
                $(d1).effect("transfer", { to: $(d2) }, 400, function(){
                    var tmpEl = document.createElement('div');
                    dropEl.get('parentNode').insertBefore(tmpEl, dragEl);
                    dropEl.get('parentNode').insertBefore(dragEl, dropEl);
                    dropEl.get('parentNode').insertBefore(dropEl, tmpEl);
                    $(tmpEl).remove();
                });
                
                $.post('dojob.php', {job:'change_item_posi', pid:uPageMgr.pid, item1:item1, item2:item2});
            });

/*
            drag.on('drag:drophit', function(e) {
                var dragEl = this.get('node');
                var dropEl = e.drop.get('node');
                var drop_xy = dropEl.getXY();
                var drag_xy = dragEl.getXY();
                var item1 = dragEl.get('role');
                var item2 = dropEl.get('role');
                dropEl.setXY(drag_xy);
                dragEl.setXY(drop_xy);
                $.post('dojob.php', {job:'change_item_posi', pid:uPageMgr.pid, item1:item1, item2:item2})
            });
*/
        })
    });
}

//Replace特定String
function ReplaceAll(strSource, strFind, strRepl) {
    var str5 = new String(strSource);
    while (str5.indexOf(strFind) != -1) {
          str5=str5.replace(strFind, strRepl);
    }
   return str5;
} 

//顯示Blog來源編輯器
var showEdit = function(item_type, item_url, item_title, item_img, callbackFn){
    //for HTML select option
    var isSelected = function(a, b) {
        return (a==b) ? ' selected' : '';
    }
   
    //回傳更改後的值
    var sendBackNewValue = function () {
         BBUtil.closeMsg();
        if (callbackFn) {
            callbackFn($("#item_type option:selected").val(), $('#item_url').val(), $('#item_title').val(), $('#item_img').val())
        }
    }
    
    var step2 = '<div style="text-align:left;padding-left:20px">';
    step2 += '<p>Source Type：<select id="item_type" ><option value="RSS"'+isSelected('RSS', item_type)+'>RSS</option>';
    step2 += '</select></p>';
    step2 += '<p><span id="item_url_title"></span>：<input id="item_url" value="'+item_url+'" style="width:350px" /></p>';
    step2 += '<input id="page_id" value="'+uPageMgr.pid+'" type="hidden"  /></p>';
    step2 += '</div>';         
    BBUtil.closeMsg()
    BBUtil.showMsg(step2, sendBackNewValue)
    
    //依來源類別改變顯示文字
    var itemTypeChange = function () {
        var item_type = $("#item_type option:selected").val();
        if ('RSS' == item_type) {
            $('#item_url_title').html('RSS feed URL');
        } else if ('WRETCH' == item_type) {
            $('#item_url_title').html('Wretch');
        } else if ('PIXNET' == item_type) {
            $('#item_url_title').html('Pixnet');
        }
    }
    $("#item_type").change(itemTypeChange);
    itemTypeChange();
}
 
//新增一個Blog來源
function addItem() {
    var item_type = 'RSS';
    var item_url = '';
    var item_title = lang.NEW_BLOG_TITLE;
    var item_img = '';
    var second_run = false;
    
    var inputDone = function(item_type, item_url, item_title, item_img) {
        var callbackFn = function(isValid, title, img_link) {
            var doneAdd = function(json) {
                if ('OK' == json.status) {
                    refreshPage();
                } else {
                    ealert(json.reason);
                }
            }
            if (isValid) {
                $.post('dojob.php', {job:'addsrc', page_id:uPageMgr.pid, item_type:item_type, item_url:item_url, item_title:title, item_img:img_link}, doneAdd, 'json');
            } else {
                //給予建議
                var lookupDone = function(result) {
                    if (!result.error && result.url != null) {
                        second_run = true;
                        item_url = result.url;
                        checkFeedIsValid(item_url, callbackFn);
                    } else {
                        ealert(lang.CHK_FEED);
                    }
                }
                if (!second_run) {
                    google.feeds.lookupFeed(item_url, lookupDone);
                } else {
                    ealert(lang.CHK_FEED);
                }
            }
        }
        //檢查feed是否有效
        checkFeedIsValid(item_url, callbackFn)
    }
    showEdit(item_type, item_url, item_title, item_img, inputDone)
}
   
//編輯Blog來源
function editItem() {
    var item_id = $(this).attr('itemId');
    var item_type = $(this).attr('type');
    var item_url = $(this).attr('type_id');
    var item_title = $(this).attr('title');
    var item_img = $(this).attr('img');
    item_img = ReplaceAll(item_img, 'http://mozshot.nemui.org/shot/large?', ''); //網頁快照服務
    var callbackFn = function(item_type, item_url, item_title, item_img) {
        var chkFeedDone = function(isValid, title, img_link) {
            var doneAdd = function(json) {
                if ('OK' == json.status) {
                    refreshPage();
                } else {
                    ealert(json.reason);
                }
            }
            if (isValid) {
                $.post('dojob.php', {job:'updatesrc', item_id:item_id, page_id:uPageMgr.pid, item_type:item_type, item_url:item_url, item_title:title, item_img:img_link}, doneAdd, 'json');
            } else {
                ealert(lang.CHK_FEED);
            }
        }
        //檢查feed是否有效
        checkFeedIsValid(item_url, chkFeedDone)
    }
    showEdit(item_type, item_url, item_title, item_img, callbackFn)
}
    
//刪除Blog來源
function delItem() {
    var item_id = $(this).attr('itemId');
    var item_title = $(this).attr('title');
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            //location.reload();
            refreshPage();
        } else {
            ealert(json.reason);
        }
    }
    econfirm(String.format(lang.DEL_WARNING, item_title), function () {$.post('dojob.php', {job:'delitem', item_id:item_id}, doneAdd, 'json');});
}

//新增指定Blog
function addThisItem() {
    var doneAdd = function(json) {
        if ('OK' == json.status) {
            BBUtil.closeMsg();
            ealert('success!')
            refreshPage();
        } else {
            ealert(json.reason);
        }
    }

    var item_url = $(this).attr('type_id');
    var title = $(this).attr('title');
    var getpagesDone = function(json) {
        if ('OK' == json.status) {
            var optionsTxt = '';
            for (var i=0; i<json.pages.length; i++) {
                optionsTxt += '<option value="'+json.pages[i].id+'">'+ json.pages[i].title+'</option>';
            }
            var getpagesTxt = '<div style="text-align:left;padding-left:20px"><p>'+lang.SEL_PAGE+': <select id="page_id" >'+optionsTxt+'</select></p></div>';
            var pickPage = function() {
                var page_id = $("#page_id option:selected").val();
                $.post('dojob.php', {job:'addsrc', page_id:page_id, item_type:'RSS', item_url:item_url, item_title:title, item_img:''}, doneAdd, 'json');
            }
            BBUtil.showMsg(getpagesTxt, pickPage);
        }
    }
    $.post('dojob.php', {job:'getpages'}, getpagesDone, 'json');
}

//改變Blog顯示模式
var changeDisplayMode = function() {
    var size = $(this).attr('id');

    if ('mode1' == size) {
        $.cookie('displayMode', 'mode1', { path:"/" });
    } else if ('mode2' == size) {
        $.cookie('displayMode', 'mode2', { path:"/" });
    } else if ('mode3' == size) {
        $.cookie('displayMode', 'mode3', { path:"/" });
    }  else {
        $.cookie('displayMode', 'mode4', { path:"/" });
    }
    uPageMgr.refreshItems(uPageMgr.pid, updateItemView);
}
//------------Facebook functions------------
//推薦某Blog，發送到牆上
var diggItem = function() {
    var pid = uPageMgr.pid;
    var item_id = $(this).attr('itemId');
    var item_title = $(this).attr('title');
    var txt = String.format(lang.SHARE_BLOG_MSG, item_title);
    var link = getReaderLink(pid, item_id, true);
    sendToFriendWall(null, txt, item_title, link, '', null, null, function(userMsg) {});
}

//介紹YusReader到牆上
var introYusToWall = function() {
    sendToFriendWall(null, lang.RECOMMENT_YUS, null, null, null, null, null, null);
}
//介紹YusReader給選擇的朋友
var introYusToFriends = function() {
    pickFbFriends(lang.INVITE_FRI, true, 'NOT_APP', function(friends) {
        sendFbNotificationToFri(lang.RECOMMENT_YUS, friends, null);
        sendToFriendWall(friends, lang.RECOMMENT_YUS, null, null, null, null, null, function(userMsg) {});
    });
}

//更新朋友的狀態列
var getFbUserInfoDone = function(friends) {
    if (friends && 0 < friends.length) {
        var msg = (friends[0].status) ? friends[0].status.message : '';
        var userPrifileLink = 'http://www.facebook.com/home.php#/profile.php?id='+friends[0].uid+'&ref=nf';
        $('#view_user_name').html('<div class="userInfo ee_userpic" style="float:left"><img class="currUserPic" src="'+friends[0].pic+'"/></div><div class="userInfo ee_userinfo" style="float:right"><div class="ee_username">'+friends[0].name+"</div><div id='talkFriBtn'  class='blueBtnClass' fb_uid='"+friends[0].uid+"'>"+lang.SEND_MSG+"</div><div id='seeFriProfileBtn' class='blueBtnClass' userPrifileLink='"+userPrifileLink+"'>"+lang.SEE_PROFILE+"</div>"+'<div style="clear:both"></div></div><div style="clear:both"></div><div class="ee_usermsg">'+ msg+'</div>');
        //$('.ee_usermsg').textOverflow();
        $('.currUserPic').click(seeFriendBlog);
        $('#talkFriBtn').click(function() {
            var fb_uid = $(this).attr('fb_uid');
            fb_uid = (login_fb_uid != fb_uid) ? fb_uid : '';
            sendToFriendWall(fb_uid, '', null, null, null, null, null, function(userMsg) {});
        });
        $('#seeFriProfileBtn').click(function() {
            var fb_uid = $(this).attr('fb_uid');
            var userPrifileLink = $(this).attr('userPrifileLink');
            window.open(userPrifileLink);
        });
    };
}

//更新Page區塊及Blog區塊
var refreshPagesBlogsFn = function(pages, default_pid) {
    $('#full_post_wall').html(''); //清除原畫面
        
    var pid = null;
    if (default_pid) {
        pid = default_pid;
    } else if (pages.length>0) {
        pid = pages[0].id;
    }
   // pid = (default_pid) ? default_pid :pages[0].id;
    updatePageView(pages, default_pid);
    //alert(pid)
    uPageMgr.refreshItems(pid, updateItemView);
}

//顯示目前瀏覽的使用者資料，照片欄+頁面欄 (page & blog)
var showFriendPage = function(uid, fb_uid, default_pid) {
    uPageMgr.default_pid = default_pid;
    uPageMgr.refreshPages(false, uid, default_pid, refreshPagesBlogsFn);
    if (fb_uid) {
        getUserInfo(fb_uid, getFbUserInfoDone);
    }
}

//用Facebook Id，顯示目前瀏覽的使用者的資料，照片欄+頁面欄
var showFriendPageByFacebookUid = function(fb_uid, default_pid) {
    $.post('dojob.php', {job:'fbid2uid', fb_uid:fb_uid}, function(json) {
        if ('OK' == json.status) {
            showFriendPage(json.user.uid, fb_uid, default_pid);
        } else {
            ealert(lang.FAIL_OPEN_BLOG_LIST);
        }
    }, 'json');
}

//用Uid，顯示目前目前瀏覽的使用者資訊，照片欄+頁面欄
var showFriendPageByUid = function(uid, default_pid) {
    $.post('dojob.php', {job:'uid2fbid', uid:uid}, function(json) {
        if ('OK' == json.status) {
            showFriendPage(uid, json.user.fb_uid, default_pid);
        } else {
            showFriendPage(uid, null, default_pid);
        }
    }, 'json')
}

//用Cid，顯示目前目前瀏覽的使用者資訊，照片欄+頁面欄
var showFriendPageByCid = function(cid, default_pid) {
    uPageMgr.refreshPages(true, cid, default_pid, refreshPagesBlogsFn);
}

//選單來選擇要觀看的朋友list, 顯示該朋友的頁面
seeFriendBlog = function() {
    pickFbFriends(lang.SEE_FRI_BLOG, true, 'IS_APP', function(fb_uid) {
        showFriendPageByFacebookUid(fb_uid);
    });
}

///---------------View-----------------
//畫Blog區塊
updateItemView = function(items) {
    $('#pageTitle').html(uPageMgr.getPageTitle());
    
    //改Url Anchor
    var url = location.href;
    var pid = (uPageMgr.pid) ? uPageMgr.pid : '';
    var anchor_index = url.indexOf('#');
    if (anchor_index != -1) {
    	url = url.substring(0, anchor_index);
    }
    if (uPageMgr.isChannel) {
        location.href = url+'#C_'+uPageMgr.cid+'_'+pid;
    } else {
        location.href = url+'#'+uPageMgr.uid+'_'+pid;
    }
    
    //如果此頁沒有Blog，產生空陣列
    if (!items) { items = new Array(); }
    $('#blognum_id').html(items.length);        //目前page有幾個blog

    var editable = (uPageMgr.uid == logginUser.uid);  //是否是Owner
    var loggedin = (null != logginUser.uid);          //是否有登入
    var addable = (!editable && loggedin);          //有登入且非Owner, 可以follow別人的
    var displayMode = $.cookie('displayMode');          //顯示尺寸
    displayMode = (displayMode) ? displayMode : 'mode2';        //預設Mode

    
    //小格圖文模式
    function getDynamicView(aItem, itemBodyElm, entryNum, showEntryList, isNoImage) {
            var reader_link = getReaderLink(uPageMgr.pid, aItem.id, true);
            var feed_url = aItem.platform_id;
            var blogId = 'blog_'+aItem.id;
            var containerId = blogId;
            var txt = '<div id="'+blogId+'" class="txtmode_blog"></div>';
            $(itemBodyEl).append(txt);
            new YusDynamicFeedControl(feed_url, reader_link, containerId, false, entryNum, showEntryList, isNoImage);
    }

    //更新link的Share count
    function updateShareBtn() {
        var a = $('.item_share');
        var urls = '';
        var cama = '';
        //要查詢的url長字串
        for (var i=0; i<a.length; i++) {
            urls += cama + '"' + $(a[i]).attr('share_url') + '"';
            cama = ',';
        }
        
        //取得FB對於該Link相關資訊，分享次數...等
        getFbLinksInfo(urls, function(r){
            var r_len = r.length;
            var a_len = a.length;
            var q = null;
            //找出對應的物件，FQL查詢不是一對一，重複的URL只會回傳一次，有些找不到也不會回傳，所以需要比對，此段頗花時間
            function findQ(url) {
                for (var i=0; i<r_len; i++) {
                    if (url == r[i].url) {
                        return r[i];
                    }
                }
                return null;
            }
            //更新Share Count
            for (var i=0; i<a_len; i++) {
                if (q = findQ($(a[i]).attr('share_url'))) {
                    $(a[i]).html(q.share_count);
                }
            }
        });
    }
var ttt = true;
    //整行模式
    function getFullLineView(aItem, itemBodyEl, entryNum, onDoneFn) {
        var feed_url = aItem.platform_id;
        var reader_link = getReaderLink(uPageMgr.pid, aItem.id, true);
        
        //get feed's articals
        var feed = new google.feeds.Feed(feed_url);
        feed.setResultFormat(google.feeds.Feed.JSON_FORMAT);
        feed.includeHistoricalEntries();
        feed.setNumEntries(entryNum);
        feed.load(function(result) {
            if (!result.error) {
                var feedObj = result.feed;
                //Blog title
                var txt = '<div class="blog_fullline_title"><a href="'+reader_link+'_'+(feedObj.link)+'">'+feedObj.title+'</a></div>';
                $(itemBodyEl).append(txt);
                var tempId = uPageMgr.pid+'_'+aItem.id;
                var fbBtn = getFbConnBtn(lang.SHARE);
                for (var i=0; i<feedObj.entries.length; i++) {
                    var item = feedObj.entries[i];
                    var lk = reader_link+'_'+(item.link);
                    /*
                    if (ttt) {
                        ttt = false;
                        alert(item.link);
                    }
                    */
                    txt = '<div class="item_share_btn" id="item_share'+aItem.id+'_'+i+'" i="'+i+'">';
                    txt += '<div class="item_share" share_url="'+item.link+'">0</div>'+fbBtn;
                    txt += '</div>';
                    txt += '<div class="ee_itemdate" style="color:#999999">'+formatData(new Date(item.publishedDate))+' - '+item.author+'</div>';
                    //txt += '<div id="'+tempId+'" class="blog_fullline_item">';
                    txt += '<div><a id="item_linkTo'+aItem.id+'_'+i+'" i="'+i+'" href="#" class="blog_fullline_item_title">'+item.title+'</a></div>';
                    txt += '<div style="color:#333333;line-height:16px;">'+item.contentSnippet+'</div><div style="margin-top:15px;clear:both"></div>';
                    $(itemBodyEl).append(txt);
                    $('#item_share'+aItem.id+'_'+i).click(function(){
                        var item = feedObj.entries[$(this).attr('i')];
                        var aLink = reader_link+'_'+item.link;
                        sendToFriendWall(null, '', item.title, aLink, item.contentSnippet, null, null);
                    });
                    
                    $('#item_linkTo'+aItem.id+'_'+i).click(function(){
                        var item = feedObj.entries[$(this).attr('i')];
                        //Base64X(item.link)
                        location.href = reader_link+'_'+item.link;
                    });
                }

                if (onDoneFn) { onDoneFn(); }
            }
        });        
    }
    
    //畫出每個Blog
    var txt = '';
    $('#itemListDiv').html('');
    var itemListDiv = document.getElementById('itemListDiv');
    var totalFeedNum = items.length; //此頁有多少個Feed
    var doneFeedNum = 0; //目前已經完成的feed數量
    for (var i=0; i<totalFeedNum; i++) {
        var aItem = items[i];
        var img = './getpic.php?FEED='+aItem.platform_id+'&SCREEN_PATH='+aItem.screen_path;
        var link = getReaderLink(uPageMgr.pid, aItem.id, false);
        var itemId = aItem.id;
        var editBar = '';
        
        var aBlogEl = itemListDiv.appendChild(document.createElement('div'));
        $(aBlogEl).addClass('blogitemX'); //for drag & drop identify, do not change it
        $(aBlogEl).attr('role', itemId);
        
         //控制bar
        var editEl = aBlogEl.appendChild(document.createElement('div'));
        $(editEl).css('padding-left','7px').css('height','20px');
        if (editable) {
            $(editEl).html('<span class="editItem ee_unline" title="'+aItem.title+'" img="'+img+'" type="RSS"  type_id="'+aItem.platform_id+'" itemId="'+itemId+'"><img class="blogSmallBtn" src="./images/edit.jpg"/></span><span class="delItem ee_unline" title="'+aItem.title+'" itemId="'+itemId+'"><img class="blogSmallBtn" src="./images/delete.jpg"/></span><span class="diggItem ee_unline" title="'+aItem.title+'" itemId="'+itemId+'"><img class="blogSmallBtn" src="http://b.static.ak.fbcdn.net/rsrc.php/zAB5S/hash/4273uaqa.gif"/></span><span class="featureReader" itemId="'+itemId+'">'+lang.FEATURE_READER+'</span>');
        } else {
            $(editEl).html('<span class="addThisItem" title="'+aItem.title+'" img="'+img+'" type="RSS"  type_id="'+aItem.platform_id+'"itemId="'+itemId+'"><img class="blogSmallBtn" src="/images/follow1.gif"/></span><span class="diggItem ee_unline" title="'+aItem.title+'" itemId="'+itemId+'"><img class="blogSmallBtn" src="http://b.static.ak.fbcdn.net/rsrc.php/zAB5S/hash/4273uaqa.gif"/></span><span class="featureReader" itemId="'+itemId+'">'+lang.FEATURE_READER+'</span>');
        }
       
        //Blog主體
        var itemBodyEl = aBlogEl.appendChild(document.createElement('div'));
        var theHeight; //每格高度
        $('.mode_text_act').removeClass('mode_text_act');
        if ('mode1' == displayMode){
        	//整列模式
            $('#mode1').addClass('mode_text_act');
            $(aBlogEl).css('color', '#ddd');
            $(aBlogEl).css('margin-bottom', '20px');
            getFullLineView(aItem, aBlogEl, 4, function(){
                doneFeedNum++;
                if (doneFeedNum == totalFeedNum) {
                    //全部的feed都OK了再一次更新，速度可以快幾十倍
                    updateShareBtn();
                }
            });
            $(".txtmode_blog").addClass('ee_txtmode ui-corner-all');//ee add
        } else if ('mode2' == displayMode){
            //顯示數則文章+動態(最新幾則切換)
            $('#mode2').addClass('mode_text_act');
            $(aBlogEl).addClass('blogitem2'); //for display view, may change to other css name
            theHeight = 250;
            $(aBlogEl).css('height',theHeight+'px');
            getDynamicView(aItem, itemBodyEl, 4, true, true);
            $(".txtmode_blog").addClass('ee_txtmode ui-corner-all'); //ee add
        } else if ('mode3' == displayMode){
            //顯示圖文+列表
            $('#mode3').addClass('mode_text_act');
            $(aBlogEl).addClass('blogitem2'); //for display view, may change to other css name
            theHeight = 330;
            $(aBlogEl).css('height',theHeight+'px');
            getDynamicView(aItem, itemBodyEl, 4, true, false);
        }
    }
    if (editable && items.length<maxblogPerPage) {
        txt = "<div id='addItem' style='height:"+(theHeight-40)+"px;vertical-align:middle;margin-top:20px;' class='newblogitem'>"+lang.ADD_FEED+"<br />("+lang.CLICK_HERE+")</div>";
        $('#itemListDiv').append(txt);
    }
    
    if (editable) {
        makeDrapable();
        $('#addItem').click(addItem);
        $('.editItem').click(editItem);
        $('.delItem').click(delItem);
    } else {
        $('.addThisItem').click(addThisItem);
    }

    //分享Blog
    $('.diggItem').click(diggItem);
    
    //滾輪閱讀器
    $('.featureReader').click(function(){
        var reader_link = getReaderLink(uPageMgr.pid, $(this).attr('itemId'), true);
        window.open(reader_link);
    });
    
    //如果是空的，尚無收集
    if (0 == items.length) {
        $('#itemListDiv').append(lang.NO_ITEM_YET);
    }
}

//畫Page區塊
var updatePageView = function(pages) {
    if (!pages) {
        pages = new Array();
    }

    var editable = (uPageMgr.uid == logginUser.uid);   //是否是Owner
    var txt = '';


    //頁面是否可編輯
    var editPageStr = '';
    if (editable) {
        editPageStr +='<span id="editPage" class="ee_unline">'+lang.EDIT+'</span> <span id="delPage" class="ee_unline">'+lang.DEL+'</span>';
    }
    txt += '<div class="ee_tabmsg">';
    txt += '<div style="float:left"><span id="pageTitle">'+uPageMgr.getPageTitle()+'</span> (<span id="blognum_id"></span> blogs) '+editPageStr+'</div>';
    txt += '<div style="float:left;margin-left:50px">'+DISPLAY_MODE+': <span class="displayMode mode_text" id="mode1">'+lang.MOD1+'</span> <span class="displayMode mode_text" id="mode3">'+lang.MOD3+'</span> <span class="displayMode mode_text" id="mode2">'+lang.MOD2+'</span></div>';
    txt += '</div><div style="clear:both"></div>';

    txt += '<div>';
    //顯示目前頁面
    for (var i=0; i<pages.length; i++) {
        var aPage = pages[i];
        txt += '<span class="catgory" pid="'+aPage.id+'">'+aPage.title+'</span>';
    }
    
    //新增頁面的Bottom
    if (editable && pages.length<maxPageNum) {
        txt += '<span id="addPageBtn" class=""><div class="ee_add"><img height="14" src="images/add.png"/></div>'+lang.ADD_NEW_TAB+'</span>';
    }
    txt += '</div><div style="clear:both"></div>';

    $('#pageListDiv').html(txt);
    //頁面是否可拖拉
    if (editable) {
        makePageDragable(); //page可拖拉
    }
    $('.catgory').click(function() {
        uPageMgr.refreshItems($(this).attr('pid'), updateItemView);
    })
        
    $('#editPage').click(editPage);
    $('#delPage').click(delPage);
    $('.displayMode').click(changeDisplayMode);
    
    $('#addPageBtn').click(function() {
        if (uPageMgr.isChannel) {
            addPage(uPageMgr.isChannel, uPageMgr.cid);
        } else {
            addPage(uPageMgr.isChannel, uPageMgr.uid);
        }
        
    });
}

//更新APP朋友資訊
var updateLoginUserFriends = function() {
    if (logginUser.friends) {
        var fNum = ('undefined' == ''+logginUser.friends.length) ?  '0': logginUser.friends.length;
        var txt = '<div style="clear:both"><div class="ee_numfirend"><span style="float:left">'+fNum+lang.NUM_FRI+'</span><span class="seeFriendBtn ee_unline">'+lang.SEE_ALL+'</span></div></div>';
        var u = null;
        var maxNum = 9;
        for (var i=0; i<logginUser.friends.length; i++) {
            u = logginUser.friends[i];
            txt += '<div class="ee_firblock" style="float:left;"><div><img class="fri_img" fb_uid="'+u.uid+'" src="'+u.pic_square+'"></div><div class="wordwrap">'+u.name+'</div></div>';
            if (i >= (maxNum-1)) break;
        }
         txt +='<div style="clear:both;"></div>';
        $('.shortFriendsList').html(txt);
        $('.fri_img').click(function() {
            showFriendPageByFacebookUid($(this).attr('fb_uid'));
        })
        $('.seeFriendBtn').click(seeFriendBlog);
    } else {
        //ealert('no friends')
    }
}

//更新非APP朋友資訊
var updateLoginUserNotAppFriends = function() {
    var friends = logginUser.notAppFriends;
    if (friends) {
        var fNum = ('undefined' == ''+friends.length) ?  '0': friends.length;
        var txt = '<div style="clear:both"><div  class="ee_numfirend"><span style="float:left">'+fNum+lang.NUM_FRI+'</span><span class="seeNonAppFriendBtn ee_unline">'+lang.SEE_ALL+'</span></div></div>';
        var u = null;
        var maxNum = 6;
        for (var i=0; i<friends.length; i++) {
            u = friends[i];
            txt += '<div class="ee_firblock" style="float:left;"><div><img class="nonAppfri_img" fb_uid="'+u.uid+'" src="'+u.pic_square+'"></div><div>'+u.name+'</div></div>';
            if (i >= (maxNum-1)) break;
        }
        txt +='<div style="clear:both;"></div>';
        $('.shortNonAppFriendsList').html(txt);
        $('.nonAppfri_img').click(function() {
            sendToFriendWall($(this).attr('fb_uid'), lang.RECOMMENT_YUS, null, null, null, null, null, function(userMsg) {});
        })
        $('.seeNonAppFriendBtn').click(introYusToFriends);
    }
}

//==========================================================
var saveLoginUserFriends = function(friends) {
//alert(friends)
    logginUser.friends = friends;
    updateLoginUserFriends();
}

var saveLoginUserNotAppFriends = function(friends) {
    logginUser.notAppFriends = friends;
    if (friends) {
        updateLoginUserNotAppFriends();
    }
}

//用facebook_id去取得user的APP朋友和非APP朋友的資料，並更新到畫面
var initLoginUserFriends = function(fb_uid) {
    getFbFriendsInfo(fb_uid, true, null, saveLoginUserFriends);
    getFbFriendsInfo(fb_uid, false, null, saveLoginUserNotAppFriends);
}


///////留言牆-----------------------------------------------------------------
function getLoginUserInfo(cbFn) {
    if (null == logginUser.info) {
        getUserInfo(logginUser.fb_uid, function(friends){
            if (friends && 0 < friends.length) {
                logginUser.info = friends[0];
            }
            if (cbFn) { cbFn(logginUser.info); }
        });
    }
    if (cbFn) { cbFn(logginUser.info); }
}

//用fb_uid找出profile (Help function)
function findProfile(profiles, id) {
    var p = null;
    for (var i=0; i<profiles.length; i++) {
        p = profiles[i];
        if (id == p.id) {
            return p;
        }
    }
}

//經過多久的時間
function getElapsedTime(created_time){
    var now = new Date();
    var ddiff = new Date(now-(created_time));
    var secs = Math.floor(ddiff.valueOf()/1000);
    var str = null;

    function calcage(secs, num1, num2) {
      return ((Math.floor(secs/num1))%num2).toString();
    }
    if (0 != calcage(secs,86400,100000)) {
        str = String.format(lang.DAYS_AGO, calcage(secs,86400,100000));
    } else if (0 != calcage(secs,3600,24)){
        str = String.format(lang.HOURS_AGO, calcage(secs,3600,24));
    } else if (0 != calcage(secs,60,60)){
        str = String.format(lang.MINS_AGO, calcage(secs,60,60));
    } else if (0 != calcage(secs,1,60)){
        str = String.format(lang.SECS_AGO, calcage(secs,1,60));
    }
    return str;
}

//取出FB照片的部分
function getImg(p) {
    var t='';
    if (p.attachment && p.attachment.media && p.attachment.media[0] && p.app_data.attachment_data) {
        var o = JSON.parse(p.app_data.attachment_data);
        t+= '<div style="float:left;width:140px;overflow:hidden;"><a href="'+p.attachment.media[0].href+'"><img style="border:0px" src="'+p.attachment.media[0].src+'"/></a></div>';
        if (o.name){
            t+= '<div style="float:left;width:350px;margin-top:8px"><span><a style="font-size:13px;text-decoration:none;color:#3B5998;font-weight:bold" href="'+o.href+'">'+o.name+'</a><br/>'+o.description+'</span></div>';
        }
        t = '<div style="font-size:12px;color:#808080">'+t+'</div>';
    }
    return t;
}

//更新完整留言板
function updateFullMyWall(posts, profiles) {
    var t='<p>'+lang.NEW_POST+':</p>';
    var p = null;
    var profile = null;
    var post_num = posts.length;
    var cmt = null;
    var cc = 0; //comment count
    var cc_profile = null;
    
    //取得Comment的Html
    function getCommentHtml(comment_list, post_id, comment_count) {
        var t = '';
        var cc = comment_list.length;
        
        //用以顯示完整Comment的連結
        if (2 < comment_count && comment_list.length < comment_count) {
            t += '<div style="margin-left:80px;padding:3px;background:#ECEFF5;margin-bottom:2px;overflow:hidden;width:350px;border-bottom:1px solid #E5EAF1">';
            t += '<span class="showFullComments" post_id="'+post_id+'">'+String.format(lang.SHOW_TOTAL_COMMENT, comment_count)+'</span>';
            t += '</div>';
        }
        
        //顯示Comment
        for (var j=0; j<cc; j++) {
            if (cmt = comment_list[j]) {
                cc_profile = findProfile(profiles, cmt.fromid);
                t += '<div style="margin-left:80px;padding:3px;background:#ECEFF5;margin-bottom:2px;overflow:hidden;width:350px;border-bottom:1px solid #E5EAF1">';
                t += '<div style="float:left;margin-right:8px"><img style="width:32px;height:32px" src="'+cc_profile.pic_square+'"/></div>'
                t += '<div><span style="font-weight:bold;color:#3B5998">'+cc_profile.name+'</span> '+cmt.text+'<div style="color:#999">'+(getElapsedTime(cmt.time*1000))+'</div>'+'</div>'
                t += '</div>';
            }
        }
        /*
        //留言區
        if (0 < cc) {
            t += '<div id="write_comment_'+post_id+'" style="margin-left:80px;padding:3px;background:#ECEFF5;margin-bottom:2px;overflow:hidden;width:350px;border-bottom:1px solid #E5EAF1">';
            t += '<img class="post_mdt_img" align="top" style="width:32px;height:32px" src=""/>';
            t += '<textarea class="post_cmt_field" style="overflow:hidden;margin-left:6px;width:300px;font-size:12px;color:#777;height:18px">'+lang.CMT_DEFAULT+'</textarea>';
            t += '<div class="post_cmt_btn" post_id="'+post_id+'"><span style="display:inline-block;margin-right:10px;padding:3px;padding-right:10px;padding-left:10px;background:#3B5998;color:#fff;float:right;cursor:pointer">'+lang.COMMENT+'</span></div>';
            t += '</div>';
        }
        */
        return t;
    }
    
    //更新完整的Comments
    function updateFullComments(post_id) {
        FB_getComments(post_id, function(comment_list){
            var uidArr = new Array();
            var cc = comment_list.length;
            for (var j=0; j<cc; j++) {
                cmt = comment_list[j];
                if (null == findProfile(profiles, cmt.fromid)) {
                    uidArr[uidArr.length] = cmt.fromid;
                }
                
            }
            //更新目前沒有的User Profile
            FB_users_getInfo(uidArr, 'name,pic_square', function(json){
                for (var i=0; i<json.length; i++) {
                    var u = json[i];
                    profiles[profiles.length] = {id:u.uid, name:u.name, pic_square:u.pic_square};
                }
                $('#comment_'+post_id).html(getCommentHtml(comment_list, post_id, cc));
            });
        });
    }
    
    //顯示各Post
    for (var i=0; i<post_num; i++) {
        p = posts[i];
        profile = findProfile(profiles, p.actor_id);
        t += '<div style="padding:2px;font-size:15px;width:600px">';
        t += '<div class="fb_post_img" fb_uid="'+p.actor_id+'"><img src="'+profile.pic_square+'"/></div>';
        t += '<div class="fb_post_full_body">';
            t += '<span class="fb_post_name" fb_uid="'+p.actor_id+'">'+profile.name + '</span>: ';
            t += '<span class="fb_post_cmd" style="color:#444">'+p.message+'</span>';
            t += getImg(p);
        t += '</div>';
        t += '</div><div style="clear:both"></div>';
        t += '<div style="margin-left:80px;">'+getElapsedTime(p.created_time*1000)+' . <span class="showCommentEdit" post_id="'+p.post_id+'">'+lang.COMMENT+'</span></div>';
        
        //顯示comments
        cc = p.comments.count;
        t += '<div id="comment_'+p.post_id+'">';
        t += getCommentHtml(p.comments.comment_list, p.post_id, cc);
        t += '</div>';
        
        //留言區
        t += '<div class="write_comment" id="write_comment_'+p.post_id+'" comment_count="'+cc+'" style="margin-left:80px;padding:3px;background:#ECEFF5;margin-bottom:2px;overflow:hidden;width:350px;border-bottom:1px solid #E5EAF1">';
        t += '<img class="post_mdt_img" align="top" style="width:32px;height:32px" src=""/>';
        t += '<textarea class="post_cmt_field"  id="post_cmt_field_'+p.post_id+'" style="overflow:hidden;margin-left:6px;width:300px;font-size:12px;color:#777;height:18px">'+lang.CMT_DEFAULT+'</textarea>';
        t += '<div class="post_cmt_btn" post_id="'+p.post_id+'"><span style="display:inline-block;margin-right:10px;padding:3px;padding-right:10px;padding-left:10px;background:#3B5998;color:#fff;float:right;cursor:pointer">'+lang.COMMENT+'</span></div>';
        t += '</div>';
        
        //分隔線
        t += '<div style="clear:both;height:3px;border-bottom:1px solid #bbb;"></div>';
    }
    //清除原畫面
    $('#pageListDiv').html('');
    $('#itemListDiv').html('');
    
    //更新畫面
    $('#full_post_wall').html(t);
    
    //先確定有login user照片
    getLoginUserInfo(function(login_user_info){
        if (login_user_info) {
            $('.post_mdt_img').attr('src', login_user_info.pic_square);
            $('.post_mdt_img').hide();
        }
    })
    //顯示完整的留言
    $('.showFullComments').click(function(){
        var post_id = $(this).attr('post_id');
        updateFullComments(post_id);
    });
    
    //隱藏沒有Comment的留言區
    $('.write_comment').each(function(){
        if (0==$(this).attr('comment_count')) {
            $(this).hide();
        }
    });
    $('.showCommentEdit').click(function(){
        var post_id = $(this).attr('post_id');
        $('#write_comment_'+post_id).show();
        $('#post_cmt_field_'+post_id).focus();
    });
    $('.post_cmt_btn').hide();
    $('.post_cmt_field').focus(function(){
        if (lang.CMT_DEFAULT == $(this).val()) {
            $(this).val('');
        }
        $(this).css('height', '29px');
        $(this).css('color', '#333');
        $(this).elastic();
        $(this).prev().show();
        $(this).next().show();
    });
    $('.post_cmt_field').blur(function(){
        if ('' == $(this).val()) {
            $(this).val(lang.CMT_DEFAULT);
            $(this).css('height', '16px');
            $(this).css('color', '#777');
            $(this).prev().hide();
            $(this).next().hide();
        }
    });
    //發送comment
    $('.post_cmt_btn').click(function(){
        var commentEl = $(this).prev();
        var comment = $(this).prev().val();
        var post_id = $(this).attr('post_id');
        addCommentToPost(post_id, comment, function(){
            commentEl.val('');
            updateFullComments(post_id);
        });
    });
}

//更新小留言板
function updateSmallMyWall(posts, profiles) {
    var t='';
    var p = null;
    var maxPost = 4; //最多顯示4則
    t += '<div class="fb_post_readmore">('+lang.READ_MORE+'..)</div>';
    for (var i=0; i<posts.length; i++) {
        if (i >= maxPost) break;
        p = posts[i];
        var profile = findProfile(profiles, p.actor_id);
        t += '<div style="padding:2px">';
        t += '<div class="fb_post_img" fb_uid="'+p.actor_id+'"><img src="'+profile.pic_square+'"></div>';
        t += '<div class="fb_post_body">';
            t += '<div><span class="fb_post_name" fb_uid="'+p.actor_id+'">'+profile.name + '</span> ('+lang.REPLY+':'+p.comments.count+')</div>';
            t += '<div class="fb_post_cmd">'+p.message+'</div>';
            t += '<div class="open_post_btn" permalink="'+p.permalink+'">開啟</div>';
        t += '</div>';
        
        t += '</div><div style="clear:both;height:3px;border-bottom:1px solid #bbb;"> 　</div>';
    }
    t += '<div class="fb_post_readmore">('+lang.READ_MORE+'..)</div>';
    $('#my_wall_div').html(t);
}

//更新留言板
function updateMyWall(small, full) {
    readAppFeed(function(json){
        var posts = json.posts;
        var profiles = json.profiles;
        
        if (posts) {
            if (small) {
                updateSmallMyWall(posts, profiles);
            }
            
            if (full) {
                updateFullMyWall(posts, profiles);
            }
            
            $('.open_post_btn').click(function() {
                window.open($(this).attr('permalink'));
            });
            $('.fb_post_readmore').click(function(){
                updateMyWall(true, true);
            });
            $('.fb_post_img').click(function() {
                showFriendPageByFacebookUid($(this).attr('fb_uid'));
            });
            $('.fb_post_name').click(function() {
                showFriendPageByFacebookUid($(this).attr('fb_uid'));
            });
        }
    })
}
/////////////////////////////////---------------
//完整更新頁面
var refreshPage = function() {
    processAnchor(uPageMgr, logginUser);
    
    $('#my_wall_btn').click(function(){
        chkAppPermission(function(){
            //user使用facebook connect login了
            //判斷是否是新使用者，或是跟目前Email帳號結合
            facebook_onlogin();           
        })
    });
        
    //以預設user & 預設pid來更新頁面
    if (uPageMgr.isChannel) {
        showFriendPageByCid(uPageMgr.cid, uPageMgr.pid);
    } else {
        showFriendPageByUid(uPageMgr.uid, uPageMgr.pid);
    }
    
    //如果user有login，更新login-user的朋友欄位
    if (logginUser.uid) {
        var getFbIdDone = function(json) {
            if ('OK' == json.status) {
                if (0 != json.user.fb_uid) {
                    logginUser.fb_uid = json.user.fb_uid;
                    initLoginUserFriends(logginUser.fb_uid);
                    updateMyWall(true, false);
                }
            }
        }
        $.post('dojob.php', {job:'uid2fbid', uid:logginUser.uid}, getFbIdDone, 'json');
        /*
        if (logginUser.fb_uid) {
            getFbIdDone({status:'OK', user:{fb_uid:logginUser.fb_uid}});
        } else {
            $.post('dojob.php', {job:'uid2fbid', uid:logginUser.uid}, getFbIdDone, 'json');
        }
        */
    }
    
    //如果沒有login to facebook, show login button for user
    $('.fb_login_btn').click(function() {
        chkAndDoFbLogin(function(){
            //user使用facebook connect login了
            //判斷是否是新使用者，或是跟目前Email帳號結合
            facebook_onlogin();
        });
    })
    
    //註冊推薦加入Yus按鈕
    $('#introFriBtn').click(introYusToWall);
    
    //防止Facebook status不穩定，polling詢問狀態是否改變
    /*
    monitorFbLoginStatus(function(result) {
        if (result) {
            //alert('facebook login')
            //getFbFriendsInfo(json.user.fb_uid, true, 6, saveLoginUserFriends);
            //getFbFriendsInfo(json.user.fb_uid, false, 3, updateLoginUserNotAppFriends);
        }
    })
    */
}


//---------初始化啟動程序，載入預設頁面---------------------------------------------
$(document).ready(function(){
    refreshPage();
    
    //當切換不同Channel時
    $('.main_menu_item').click(function () {
        var cid = $(this).attr('cid');
        updateChannelInfo(cid);
        refreshPage();
    })
        
    //換語言
    $('#changeLangBtn').click(function() {
        BBUtil.switchLang();
    });
})