var ua = navigator.userAgent.toLowerCase(),
	isOpera = (ua.indexOf('opera') > -1),
	isSafari = (ua.indexOf('safari') > -1),
	isGecko = (!isOpera && !isSafari && ua.indexOf('gecko') > -1),
	isIE = (!isOpera && ua.indexOf('msie') > -1);

FF = {
    cfg: {
        textlimit: {
            message: 140,
            note:300,
            noteComment:140,
            messageForm:140,
            privatemessage: 140,
            speak: 140
        },
        formfocus: 'message'
    }
}

function initForm() {
    var form_arr = document.getElementsByTagName('form');
    if (form_arr.length == 0) return;
    var hasFocus = false, tip = false;
    for (var i = 0; i < form_arr.length; i++) {
        var fm = form_arr[i];
        var id = fm.getAttribute('id');
        if (!hasFocus && id && FF.cfg.formfocus.indexOf(id) != -1) {
            fm.elements[0].focus();
            hasFocus = true;
        }
        if (Element.hasClassName(fm, 'limit')) {
            FieldLimit(fm);
        }
        for (var j = 0; j < fm.elements.length; j++) {
            var element = fm.elements[j];
            if (FF.cfg.textlimit[element.getAttribute('id')]) {
                Event.observe(element, 'keyup', function() {
                    textLimit(this, FF.cfg.textlimit[this.id]);
                });
            }

            if (element.type == 'submit' && element.name == 'remove') {
                Event.observe(element, 'click', function(ev) {
                    if (!confirm('你确定要' + this.value + '吗？')) Event.stop(ev);
                });
            }
            if (Element.hasClassName(element, 'qs')) {
/*                function ctrlEnter(e) {
                    if (isIE) {
                        if (window.event.ctrlKey && window.event.keyCode == 13) post_form(this);
                    } else {
                        function isKeyTrigger(e, keyCode) {
                            var argv = isKeyTrigger.arguments;
                            var argc = isKeyTrigger.arguments.length;
                            var bCtrl = false;
                            if (argc > 2) bCtrl = argv[2];
                            var bAlt = false;
                            if (argc > 3) bAlt = argv[3];
                            var nav4 = window.Event ? true : false;
                            if (typeof e == 'undefined') e = event;
                            if (bCtrl && !((typeof e.ctrlKey != 'undefined') ? e.ctrlKey : e.modifiers & Event.CONTROL_MASK > 0)) return false;
                            if (bAlt && !((typeof e.altKey != 'undefined') ? e.altKey : e.modifiers & Event.ALT_MASK > 0)) return false;
                            var whichCode = 0;
                            if (nav4) whichCode = e.which;
                            else if (e.type == 'keypress' || e.type == 'keydown') whichCode = e.keyCode;
                            else whichCode = e.button;
                            return (whichCode == keyCode);
                        }
                        if (isKeyTrigger(e, 13, true)) {
                            post_form(this);
                        }
                    }
                }
                YAHOO.util.Event.on(element, 'keyup', ctrlEnter, fm, true);*/
            }
        }
    }

    function textLimit(el, count) {
        if (el.value.length > count) {
            el.value = el.value.slice(0, count);
            //var tip_array = $('message').getElementsByClassName('hint', 'span', getContainer(el));
            //if (tip_array.length > 0) Element.removeClassName(tip_array[0], 'hidden');
        }
    }

    function FieldLimit(el) {
        var count = FF.cfg.textlimit[el.getAttribute('id')];
        if (!count) count = FF.cfg.textlimit['note'];
        var text;
        if (el.getAttribute('id') == 'message') {
            text = el.content;
        } else if (el.getAttribute('name') == 'mnNote') {
            text = el.noteContent;//互助的文字输入
        } else if (el.getAttribute('id') == 'noteComment') {
            text = el.commentConten;
        } else if (el.getAttribute('id') == 'messageForm') {
            text = el.messageContent;   
        } else if (el.getAttribute("id") == 'privatemessage') {
            text = el.content;
        } else if (el.getAttribute("id") == 'speak') {
            text = el.content;
        }
        var counter = $(el.getAttribute('id')).getElementsByClassName('counter')[0];
        if (!counter) {
            counter = document.getElementsByClassName('counter')[0];//mnNoteEdit.jsp有问题的解决方法
        }

        function textCount() {
            if (text.value.length < count) {
                counter.firstChild.nodeValue = count - text.value.length;
            } else {
                counter.firstChild.nodeValue = 0;
                textLimit(text, count);
            }
        }
        Event.observe(text, 'click', textCount);
        Event.observe(text, 'keyup', textCount);
        Event.observe(text, 'blur', textCount);
        function chkSubmit(ev) {
            if (text.value.length == 0) {
                if (ev) Event.stop(ev);
                return false;
            }

            var submitButton = $(el.getAttribute('id')).getElementsByClassName('formbutton')[0];
            if (!submitButton) {
                submitButton = document.getElementsByClassName('formbutton')[0];
            }
            if (submitButton) {
                submitButton.disabled = true;
                submitButton.value = '正在发送...';
            }
            //el.submit();
/*
            var formObj = Event.element(ev);
            if (formObj && formObj.submit) {
                try {
                    formObj.submit();
                } catch(e) {
                }
            }
*/
            return true;
        }
        Event.observe(el, 'submit', chkSubmit);
    }
}


function initClick() {
    Event.observe(document, 'click', handel, false);
    function handel(ev) {
        if (ev.button != 0) return;
        var target = Event.element(ev);
        if ((target.tagName.toLowerCase() == 'a' && Element.hasClassName(target, 'post_act'))
            || (target.tagName.toLowerCase() == 'b' && Element.hasClassName($(target).up('a'), "post_act"))   ) {
            var url = target.tagName.toLowerCase() == 'a' ? target.getAttribute('href') : $(target).up('a').getAttribute('href');
            if (url.indexOf('deleteTwitter') != -1) {
                var str = '你确定要删除这条消息吗？';
            } else if (url.indexOf('/user/deleteCommnet') != -1) {
                var str = '你确定要删除这条评价吗？';
            } else if (url.indexOf('cancelFriendShip') != -1) {
                var str = '你确定要取消好友关系，并从好友列表中删除TA吗？';
            } else if (url.indexOf('deleteSpeak') != -1) {
                var str = '你确定要删除这条发言吗？';
            }
            if (!confirm(str)) Event.stop(ev);
        }
    }

//    if ($('addToBlackList')) {
        function addToBlackList(ev) {
            var element = Event.findElement(ev, 'INPUT');
            var blackUserId = element.value;
            var action;
            var msg;

            if (element.checked) {
                msg = "阻止后：<br />1.此人将无法向你发送私信。<br />2.你将不再接收此人的互助信息。<br />3.此人无法看到你的名片。<br />4.此人无法查看你的好友。";
            } else {
                msg = "是否解除阻止该用户？";
            }
            Dialog.confirm(msg,
            {windowParameters: {className: "alphacube", width:300, effectOptions:{duration: 0}}, okLabel: '确定', cancelLabel: '取消', ok:send, cancel:noSend});
            function send() {
                Dialog.closeInfo();
                var url = "/myBlackListEdit.do";
                var json;
                function showResponse(request) {
                    //Dialog.closeInfo();
                    json = eval('(' + request.responseText + ')');
                    Dialog.alert(json.msg, {windowParameters: {className: "alphacube", width:300, effectOptions:{duration: 0}}, okLabel: '关闭'});
                };
                if (element) {
                    blackUserId = element.value;
                    if (element.checked) {
                        action = 'add';
                    }
                    else {
                        action = 'del';
                    }
                    var myAjax = new Ajax.Request(url,
                    {
                        method : "post",
                        parameters : "action=" + action + "&blackUserId=" + blackUserId + "&a=" + getQueryString('a'),
                        onSuccess: showResponse, onFailure: reportError,onLoading: showLoading, onComplete: hideLoading
                    });

                }
            }
            function noSend() {
                element.checked = !element.checked;
            }
        }

        var addBlacks = document.getElementsByName('addToBlackList');
        //alert('blackButtons:'+addBlacks.length);
        for (var x = 0; x < addBlacks.length; x++) {
            var addBlack = addBlacks[x];
//            alert(addBlack.tagName);
            Event.observe(addBlack, 'click', addToBlackList);
        }
        //Event.observe('addToBlackList', 'click', addToBlackList, false);
//    }

    function editKnowOfFriend(ev) {
        var tag_a = Event.findElement(ev, 'A');
        var tag_div = Event.findElement(ev, "DIV");
        var select = $('via_select').firstDescendant().cloneNode(true);
        select.setAttribute('userId',tag_a.getAttribute('userId'));
        select.setAttribute('via',tag_a.getAttribute('via'));
        var options = $(select).descendants();
        for (var j = 0; j < options.length; j++) {
            if (options[j].value == tag_a.getAttribute('via')) {
                options[j].selected = true;
                break;
            }
        }



        function changeKnow(ev) {
            var el = Event.findElement(ev, 'SELECT');
            var userId = el.getAttribute('userId');
            var a_temp = $('know_'+userId).firstDescendant();

            function showResponse(request) {
                json = eval('(' + request.responseText + ')');
                if (!json.success) {
                    Dialog.alert('操作失败，请重试！', {windowParameters: {className: "alphacube", width:300, effectOptions:{duration: 0}}, okLabel: '关闭'});
                }
            };

            var options = $(el).descendants();
            for (var j = 0; j < options.length; j++) {
                if (options[j].value != '-1' && options[j].selected) {
                    var url = "/friend/friendShipViaEdit_ajax.do";
                    var myAjax = new Ajax.Request(url,
                    {
                        method : "post",
                        parameters : "friendId=" + userId + "&via=" + options[j].value + "&a=" + getQueryString('a'),
                        onSuccess: showResponse, onFailure: reportError
                    });


                    a_temp.innerHTML = options[j].innerHTML;
                    a_temp.setAttribute('via', options[j].value);
                    break;
                }
            }
            $(a_temp).show();

            Element.remove(el);
        }
        Event.observe(select, 'change', changeKnow);


        tag_div.appendChild(select);
        var know_a_array = document.getElementsByClassName("know");
        for (var x = 0; x < know_a_array.length; x++) {
            var know_a = know_a_array[x];
            if ($(know_a).getStyle('display') == 'none') {
                $(know_a).show();
                var userId = $(know_a).getAttribute('userId');
                var divId = "know_" + userId;
                var selects = $(divId).getElementsByTagName('SELECT');
                for (var i = 0; i < selects.length; i++) {
                    Element.remove(selects[i]);
                }
            }
        }
        $(tag_a).hide();

    }

    var know_a_array = document.getElementsByTagName('A');
    //alert(know_a_array.length);
    for (var x = 0; x < know_a_array.length; x++) {
        var know_a = know_a_array[x];
        if ($(know_a).hasClassName('know')) {
            Event.observe(know_a, 'click', editKnowOfFriend);
        }
    }
}

Event.onReady(initForm);
//Event.onReady(initClick);
Event.observe(window,'load',initClick);


function copyToClipboard(txt) {
     if(window.clipboardData) {
              window.clipboardData.clearData();
              window.clipboardData.setData("Text", txt);
      } else if(navigator.userAgent.indexOf("Opera") != -1) {
           window.location = txt;
      } else if (window.netscape) {
          try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
           } catch (e) {
                alert("被浏览器拒绝！\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
           }
          var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
          if (!clip)
               return;
          var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
          if (!trans)
               return;
           trans.addDataFlavor('text/unicode');
          var str = new Object();
          var len = new Object();
          var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
          var copytext = txt;
           str.data = copytext;
           trans.setTransferData("text/unicode",str,copytext.length*2);
          var clipid = Components.interfaces.nsIClipboard;
          if (!clip)
               return false;
           clip.setData(trans,null,clipid.kGlobalClipboard);

      }
}