function JsUtils(){
    this.trim = function(str){
        return str.replace(/(^\s*)|(\s*$)/g, "");
    }
    this.rand = function(){
        var dt = new Date();
        var now = dt.getTime();
        return now + "_" + now % 23;
    }
    this.html2text = function(str){
    	// remove the first <p> and the last </p>
    	if(!str) return "";
    	str = str.substring(3);
    	str = str.substring(0,str.length-4);
    	return str.replace(/<\/p><p>/g,"\n");
    }
    this.text2html = function(str){
    	return str.replace(/\\n/g,"</p><p>");
    }
    // test if date format, only allow yyyy-dd-dd format
    this.is_date = function(str){
        var pattern = new RegExp("^\\d{4}-\\d{1,2}-\\d{1,2}$");
        return pattern.test(this.trim(str));
    }
    this.is_year_month = function(str){
        var pattern = new RegExp("^\\d{4}-\\d{1,2}$");
        return pattern.test(this.trim(str));
    }
    this.is_time = function(str){
        var pattern = new RegExp("^\\d{2}:\\d{2}(:\\d{2})*$");
        return pattern.test(this.trim(str));
    }
    // only can input numbers and characters and -, else will return false
    this.is_num_char = function(str){
        var pattern = new RegExp("^[-_0-9a-zA-Z]$");
        return pattern.test(this.trim(str));
    }
    this.is_email = function(str){
        var pattern = new RegExp("^[a-zA-Z0-9_(-).]{1,}@[a-zA-Z0-9_(-).]{1,}\\.[a-zA-Z0-9_(-).]{1,}$");
        return pattern.test(this.trim(str));
    }
    this.getMonthDays = function(year, month){
        var monthdays = 31;
        if (month == 4 || month == 6 || month == 9 || month == 11) {
            monthdays = 30;
        } else if (month == 2) {
            if (this.leap(year))
                monthdays = 29;
            else
                monthdays = 28;
        }
        return monthdays;
    }
    this.leap = function(year){
        var result = false;
        if (year % 4 == 0) {
            if (year % 100 == 0) {
                if (year % 400 == 0)
                    result = true;
                else
                    result = false;
            } else
                result = true;
        } else
            result = false;
        return result;
    }
    // only can input numbers and characters and -, else will return false
    this.has_cn = function(str){
        var pattern = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
        return pattern.test(this.trim(str));
    }
    // check float, if not float, return false
    this.is_float = function(str){
        var pattern = new RegExp("^[0-9.]*$");
        if (pattern.test(str)) {
            try {
                var num = parseFloat(this.trim(str));
                return true;
            } catch (e) {
                return false;
            }
        }
        return false;
    }
    // check integer, if not integer, return false
    this.is_int = function(str){
        var pattern = new RegExp("^[0-9]*$");
        if (pattern.test(str)) {
            try {
                var num = parseInt(this.trim(str));
                if (num > 0)
                    return true;
                else
                    return false;
            } catch (e) {
                return false;
            }
        }
        return false;
    }
    this.unicode = function(str){
        var Code;
        var UnicodeStr = "";
        for (i = 0; i < str.length; i++) {
            Code = (str.charCodeAt(i)).toString(16);
            Code = "0000".substring(0, 4 - Code.length) + Code;
            UnicodeStr += "%u" + Code;
        }
        return UnicodeStr;
    }
    this.calc_word = function(control, tip_panel){
        var ctrl = $(control);
        if (ctrl) {
            var str = "现有字数" + $F(ctrl).length + "个";
            var panel = $(tip_panel);
            if (panel) {
                panel.innerHTML = str;
            } else {
                jsUtils.showMsg(str);
            }
        }
    }
    this.close_me = function(){
        var ua = navigator.userAgent;
        var ie = navigator.appName == "Microsoft Internet Explorer" ? true : false;
        if (ie) {
            window.opener = null;
            window.open('', '_self', '');//for IE7
            window.close();
        } else {
            window.open('','_parent',''); //for FF
            window.close();
        }
    }
    // 做各种向服务器传输数据前的整理工作,如字符转义等
    this.encode = function(str){
        return encodeURIComponent(str);
    }
    // format('{0}, {2}, {1}', 'abc', 'def', 'ghi');
    // return "abc, ghi, def".
    this.format = function(format_str){
        if (arguments.length == 0)
            return '';
        if (arguments.length == 1)
            return String(format_str);
        var strOutput = '';
        for (var i = 0; i < format_str.length - 1;) {
            if (format_str.charAt(i) == '{' && format_str.charAt(i + 1) != '{') {
                var index = 0, indexStart = i + 1;
                for (var j = indexStart; j <= format_str.length - 2; ++j) {
                    var ch = format_str.charAt(j);
                    if (ch < '0' || ch > '9')
                        break;
                }
                if (j > indexStart) {
                    if (format_str.charAt(j) == '}' && format_str.charAt(j + 1) != '}') {
                        for (var k = j - 1; k >= indexStart; k--) {
                            index += (format_str.charCodeAt(k) - 48) * Math.pow(10, j - 1 - k);
                        }
                        var swapArg = arguments[index + 1];
                        strOutput += swapArg;
                        i += j - indexStart + 2;
                        continue;
                    }
                }
                strOutput += format_str.charAt(i);
                i++;
            } else {
                if ((format_str.charAt(i) == '{' && format_str.charAt(i + 1) == '{') ||
                (format_str.charAt(i) == '}' && format_str.charAt(i + 1) == '}')) {
                    i++;
                }
                strOutput += format_str.charAt(i);
                i++;
            }
        }
        strOutput += format_str.substr(i);
        return strOutput;
    }
    // 获取一个element的水平坐标
    this.get_x = function(elem){
        return elem.offsetParent ? (elem.offsetLeft + this.get_x(elem.offsetParent)) : elem.offsetLeft;
    }
    // 获取一个element的垂直坐标
    this.get_y = function(elem){
        return elem.offsetParent ? (elem.offsetTop + this.get_y(elem.offsetParent)) : elem.offsetTop;
    }
    // get element by class name
    this.get_by_class = function(name, elem, tag){
        var tempNodes = [];
        var tempNode = (elem || document).getElementsByTagName(tag || "*");
        var pattern = new RegExp("\\b" + name + "\\b");
        for (var i = 0; i < tempNode.length; i++) {
            if (pattern.test(tempNode[i].className)) {
                tempNodes.push(tempNode[i]);
            }
        }
        return tempNodes;
    }
    this.focus_me = function(control){
        if (control && control.style.display != "none") {
            var input = control.getElementsByTagName("input");
            var tarea = control.getElementsByTagName("textarea");
            if (input.length > 0) {
                var solved = false;
                for (var i = 0; i < input.length; i++) {
                    if ((input[i].type == "text" || input[i].type == "") && !input[i].disabled && !input[i].readOnly &&
                    input[i].style.display != "none" && input[i].style.visibility != "hidden") {
                        input[i].focus();
                        solved = true;
                        break;
                    }
                }
                if (!solved) {
                    if (tarea.length > 0 && tarea[0].style.display != "none" && tarea[0].style.visibility != "hidden") {
                        tarea[0].focus();
                        solved = true;
                    }
                }
                if (!solved && input[0] && input[0].style.display != "none" && input[0].style.visibility != "hidden")
                    input[0].focus();
            }
        }
    }
    // 变换某个控件的可见状态
    this.toggle_v = function(controlName, replaceText, event){
        jsUtils.ajax_input(controlName);
        var control = $(controlName);
        if (replaceText) {
            var evt = event || window.event;
            var evtTarget = evt.target || evt.srcElement;
            evtTarget = $(evtTarget);
            if (!evtTarget.origin) {
                evtTarget.origin = evtTarget.get("class");
                evtTarget.replace = replaceText;
            }
        }
        if (control.style.display == "" || control.style.display == "block") {
            control.style.display = "none";
            if (replaceText) {
                evtTarget.set("class", evtTarget.replace);
            }
        } else {
            control.style.display = "";
            control.style.zIndex = "65534";
            if (replaceText) {
                evtTarget.set("class", evtTarget.origin);
            }
        }
        this.focus_me(control);
    }
    this.toggle_fv = function(controlName, event, relativeto){
        jsUtils.fix_flash();
        jsUtils.ajax_input(controlName);
        var control = $(controlName);
        if (!control.hasShadow) {
            var temp = new Element("iframe", {
                "styles": {
                    "height": control.getDimensions().y
                }
            });
            control.grab(temp);
            control.hasShadow = true;
        }
        if (control.style.display == "" || control.style.display == "block") {
            control.style.display = "none";
        } else {
            var element = null;
            if (event) {
                element = event.target || event.srcElement;
            } else if (relativeto != null || relativeto != undefined) {
                element = $(relativeto);
            }
            control.style.position = "absolute";
            var win_width = document.documentElement.clientWidth;
            var win_height = document.documentElement.clientHeight;
            var ctrl_width = control.getDimensions().x;
            var ctrl_height = control.getDimensions().y;
            var ctrl_left, ctrl_top;
            var y_scroll = jsUtils.get_scroll()[1];
            if (element) {
                var off_left = this.get_x(element);
                var off_top = this.get_y(element);
                var off_height = element.offsetHeight;
                ctrl_left = off_left;
                ctrl_top = off_top + off_height;
                if (ctrl_width + ctrl_left > win_width) {
                    ctrl_left = win_width - ctrl_width - 20;
                }
                if (ctrl_height + ctrl_top > win_height + y_scroll) {
                    window.scrollBy(0, ctrl_height + ctrl_top - win_height - y_scroll + 20);
                }
            }
            if (!ctrl_left) {
                ctrl_left = (win_width - ctrl_width) / 2;
            } else {
                ctrl_left = parseInt(ctrl_left);
            }
            if (!ctrl_top) {
                ctrl_top = (win_height - ctrl_height) / 2 + y_scroll;
            } else {
                ctrl_top = parseInt(ctrl_top);
            }
            control.style.left = ctrl_left + "px";
            control.style.top = ctrl_top + "px";
            control.style.display = "block";
            control.style.zIndex = "65534";
        }
        jsVideo.mask_hide();
        this.focus_me(control);
    }
    /* start of move div */
    this.move_obj = null;
    this.search_mv_obj = function(obj){
        if (!obj)
            return;
        if (obj.tagName == "body")
            return;
        var pattern = new RegExp("(^|\\s)" + "popup" + "(\\s|$)");
        if (pattern.test(obj.className)) {
            jsUtils.move_obj = obj;
            return;
        } else
            jsUtils.search_mv_obj(obj.parentNode);
    }
    this.drag = function(event){
        // ie下拖动会消失的bug？
        var e = event || window.event;
        var obj = e.target || e.srcElement;
        if (obj == null || obj == undefined)
            return;
        jsUtils.search_mv_obj(obj);
        if (jsUtils.move_obj == null || jsUtils.move_obj == undefined)
            return;
        var d = document;
        var x = e.layerX || e.offsetX;
        var y = e.layerY || e.offsetY;
        //设置捕获范围
        if (obj.setCapture) {
            obj.setCapture();
        } else if (window.captureEvents) {
            window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
        }
        d.onmousemove = function(e){
            e = e || window.event;
            if (!e.pageX)
                e.pageX = e.clientX;
            if (!e.pageY)
                e.pageY = e.clientY;
            var tx = e.pageX - x;
            var ty = e.pageY - y;
            if (window.event) { // fix IE
                var sarray = jsUtils.get_scroll();
                tx += sarray[0];
                ty += sarray[1];
            }
            jsUtils.move_obj.style.left = tx + "px";
            jsUtils.move_obj.style.top = ty + "px";
        };
        d.onmouseup = function(){
            //取消捕获范围
            if (obj.releaseCapture) {
                obj.releaseCapture();
            } else if (window.captureEvents) {
                window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
            }
            //清除事件
            d.onmousemove = null;
            d.onmouseup = null;
        };
    }
    this.get_scroll = function(){
        var xScroll, yScroll;
        if (self.pageXOffset) {
            xScroll = self.pageXOffset;
        } else {
            xScroll = document.documentElement.scrollLeft + document.body.scrollLeft;
        }
        if (self.pageYOffset) {
            yScroll = self.pageYOffset;
        } else {
            yScroll = document.documentElement.scrollTop + document.body.scrollTop;
        }
        arrayPageScroll = new Array(xScroll, yScroll);
        return arrayPageScroll;
    }
    /* end of move div */
    this.show_info_table = function(info_div, name_input, chk_type){
        var namestr = '';
        if (name_input) {
            var ctrl = $(name_input);
            if (ctrl.type == "text" || ctrl.type == "hidden")
                namestr = ctrl.value;
            else
                namestr = ctrl.innerHTML;
        }
        var names = namestr.split(",");
        var div = $(info_div);
        var type = "checkbox";
        if (chk_type)
            type = chk_type;
        var childs = div.getElementsByTagName("input");
        for (var i = 0; i < childs.length; i++) {
            childs[i].checked = false;
        }
        for (var i = 0; i < childs.length; i++) {
            if (childs[i].type == type) {
                for (var j = 0; j < names.length; j++) {
                    if (names[j] == childs[i].value)
                        childs[i].checked = true;
                }
            }
        }
        jsUtils.toggle_fv(info_div);
    }
    // 显示一条消息
    this.showMsg = function(message, objvar){
        var obj = $('shadowDiv');
        if (obj) {
            obj.setStyles({
                "display": "block",
                "height": window.getScrollSize().y
            });
        }
        var msg, tl;
        if (!message)
            msg = "没有可显示的消息";
        else
            msg = message;
        if (objvar && objvar.title)
            tl = objvar.title;
        else
            tl = "提示";
        $("msgBox_title").innerHTML = tl;
        $("msgBox_message").innerHTML = msg;
        var msgbox = $("msgBox");
        if (msgbox.style.display == "none") {
            jsUtils.toggle_fv('msgBox');
        }
        if (objvar && objvar.re_load) {
            $("msgBox_sbtn").onclick = function(){
                jsUtils.closeMsg();
                window.location.reload();
            };
            $("msgBox_btn").onclick = function(){
                jsUtils.closeMsg();
                window.location.reload();
            };
            if (objvar && objvar.auto_close)
                window.setTimeout(function(){
                    jsUtils.closeMsg();
                    window.location.reload();
                }, 500);
        } else if (objvar && objvar.redirect) {
            $("msgBox_sbtn").onclick = function(){
                jsUtils.closeMsg();
                window.location.href = redirect;
            };
            $("msgBox_btn").onclick = function(){
                jsUtils.closeMsg();
                window.location.href = redirect;
            };
            if (objvar && objvar.auto_close)
                window.setTimeout(function(){
                    jsUtils.closeMsg();
                    window.location.href = redirect;
                }, 500);
        } else {
            if (objvar && objvar.auto_close)
                window.setTimeout(function(){
                    jsUtils.closeMsg();
                }, 500);
        }
    }
    this.closeMsg = function(){
        var obj = $('shadowDiv');
        if (obj) {
            obj.style.display = "none";
        }
        $('msgBox').style.display = "none";
    }
    // 选中所有复选框
    this.check_all = function(parent, chkall){
        var childs = $(parent).getElementsByTagName("input");
        for (var i = 0; i < childs.length; i++) {
            childs[i].checked = $(chkall).checked;
        }
    }
    //选择单选框
    this.sel_radio = function(parent, selid){
        var radio = $(selid);
        var ptable = $(parent);
        var childs = ptable.getElementsByTagName("input");
        for (var i = 0; i < childs.length; i++) {
            var child = childs[i];
            if (child.nodeType != radio.nodeType)
                continue;
            child.checked = (child.id == selid);
        }
    }
    this.get_check_ids = function(parent, chkall){
        var ptable = $(parent);
        var ids = "";
        var childs = ptable.getElementsByTagName("input");
        for (var i = 0; i < childs.length; i++) {
            if (childs[i].checked && childs[i].id != chkall) {
                ids += childs[i].value + ",";
            }
        }
        return ids;
    }
    this.to_text = function(htmltext){
        return htmltext.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/ <\/p><p> /g, '\n');
    }
    this.s_ajax = function(url, params, objvar){
        jsUtils.fix_flash();
        var msg = "操作成功！";
        if (objvar && objvar.success_msg)
            msg = objvar.success_msg;
        var btn = null;
        if (objvar && objvar.act_button) {
            btn = $(objvar.act_button);
            if (btn) {
                btn.disabled = true;
                btn.addClass("disabled");
                btn.set("autocomplete", "off");
            }
        }
        var auto_close = true;
        if (objvar && objvar.auto_close != null && objvar.auto_close != undefined && objvar.auto_close == false) //没有定义默认为自动关闭
            auto_close = false;
        var ajax = new Request.JSON({
            url: url,
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    // 添加在本弹出层显示结果
                    if (objvar && objvar.ajax_ok && objvar.ajax_div) {
                        jsUtils.show_ajax_ok(objvar.ajax_div);
                    } else {
                        var redirect_url = null;
                        if (objvar && objvar.redirect)
                            redirect_url = objvar.redirect.replace("MSG", ajaxresult.message);
                        if (objvar && objvar.show_success) {
                            jsUtils.showMsg(msg, {
                                re_load: objvar ? objvar.re_load : null,
                                redirect: redirect_url,
                                auto_close: objvar ? objvar.auto_close : null
                            });
                        } else {
                            if (redirect_url)
                                window.location.href = redirect_url;
                            else if (objvar && objvar.re_load)
                                window.location.reload();
                        }
                    }
                } else {
                    jsUtils.showMsg(ajaxresult.message);
                }
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            },
            onFailure: function(){
                jsUtils.showMsg("网络连接超时, 请再试一次");
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            }
        }).send();
    }
    // 页面导航
    this.page = function(max, s){
        var pnum = 1;
        var pstr = $F("p_goto");
        if (pstr == "") {
            jsUtils.showMsg("页码不能为空");
            return;
        } else if (!jsUtils.is_int(pstr)) {
            jsUtils.showMsg("页码必须是正整数");
            return;
        } else {
            pnum = parseInt(pstr);
            if (pnum > max) {
                jsUtils.showMsg("不得大于最大页码");
                return;
            } else {
                window.location.href = "?" + s + "page=" + pnum;
            }
        }
    }
    // 登录
    this.showLogin = function(goto_url){
        jsUtils.fix_flash();
        var url = goto_url;
        if (url == null || url == undefined || url == "") {
            url = window.location.href;
        }
        window.location.href = "/login_portal/?to=" + url;
        window.event.returnValue = false;
        return false;
        // 下面的不执行, 是页面内登录,已经不需要了
        if (goto_url != null && goto_url != undefined && goto_url != "") {
            $("inner_url").value = goto_url;
        } else
            $("inner_url").value = window.location;
        if (jsVideo.if_playing()) {
            var y_scroll = jsUtils.get_scroll()[1];
            var top = y_scroll + 10;
            $('loginDiv').style.top = top + "px";
            var win_width = document.documentElement.clientWidth;
            var left = win_width - 400;
            $('loginDiv').style.left = left + "px";
        }
        $('shadowDiv').setStyles({
            "display": "block",
            "height": window.getScrollSize().y
        });
        $('loginDiv').style.display = "block";
        var un = Cookie.read("un");
        if (un) {
            $("inner_userid").value = un;
            $("inner_pass").focus();
        } else
            $("inner_userid").focus();
    }
    this.hideLogin = function(){
        jsUtils.fix_flash();
        $('shadowDiv').style.display = "none";
        $('loginDiv').style.display = "none";
    }
    this.oooxm_reg = function(){
        $("oooxmloginDiv").style.display = "none";
        jsUtils.toggle_fv("oooxmregDiv");
    }
    this.oooxm_login = function(){
        $("oooxmregDiv").style.display = "none";
        jsUtils.toggle_fv("oooxmloginDiv");
    }
    this.if_logged = function(){
        var cook = Cookie.read("uid");
        if (cook != null && cook != undefined && jsUtils.is_int(cook)) {
            return true;
        } else
            return false;
    }
    this.check_logged = function(){
        if (!this.if_logged()) {
            return this.showLogin();
        }
    }
    this.i_login = function(){
        jsUtils.fix_flash();
        var name = $F("inner_userid");
        var pass = $F("inner_pass");
        var err = $("inner_err_txt");
        err.innerHTML = "";
        if (name == null || name == "") {
            err.innerHTML = "请输入邮箱";
            return false;
        }
        if (pass == null || pass == "") {
            err.innerHTML = "请输入密码";
            return false;
        }
        md5hash($("inner_pass"), $("inner_password"), 1);
        var password = $F("inner_password");
        var params = jsUtils.format("userid={0}&password={1}", jsUtils.encode(name), jsUtils.encode(password));
        var ajax = new Request.JSON({
            url: "/inner_login/",
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    if (jsVideo.if_playing()) { // 正在播放, 那么
                        jsUtils.hideLogin();
                        var video_id = $F("hide_video_id");
                        $("lt_head").load("/video/little/head/?" + jsUtils.rand());
                        $("lt_score").load("/video/" + video_id + "/little/score/?" + jsUtils.rand());
                        $("lt_extra").load("/video/little/extra/?" + jsUtils.rand());
                        $("lt_label").load("/video/" + video_id + "/little/label/?" + jsUtils.rand());
                        $("lt_link").load("/video/little/link/?" + jsUtils.rand());
                    } else {
                        window.location.reload();
                    }
                } else {
                    err.innerHTML = ajaxresult.message;
                }
            }
        }).send();
    }
    this.ajax_input = function(panel_id){
        jsUtils.fix_flash();
        var panel = $(panel_id);
        var input = panel.getElements("div.ajax_in");
        var ok = panel.getElements("div.ajax_ok");
        if (input.length > 0)
            input[0].style.display = "block";
        if (ok.length > 0)
            ok[0].style.display = "none";
    }
    this.show_ajax_ok = function(panel_id){
        jsUtils.fix_flash();
        var panel = $(panel_id);
        var input = panel.getElements("div.ajax_in");
        var ok = panel.getElements("div.ajax_ok");
        if (input.length > 0)
            input[0].style.display = "none";
        if (ok.length > 0)
            ok[0].style.display = "block";
    }
    // 为了format_list设计, check一个table里的checkbox, set value
    this.check_me = function(parent, text_input, value_input){
        var ptable = $(parent);
        if (!ptable)
            return;
        var ids = "";
        var txts = "";
        var childs = ptable.getElementsByTagName("input");
        for (var i = 0; i < childs.length; i++) {
            if (childs[i].checked) {
                // id格式为chk_+id, 因此,前4个字符略过
                ids += childs[i].id.substring(4) + ",";
                txts += childs[i].value + "，";
            }
        }
        if (text_input) {
            var text = $(text_input);
            if (text) {
                if (text.type == "text" || text.type == "hidden")
                    $(text_input).value = txts;
                else
                    $(text_input).innerHTML = txts.substring(0, txts.length - 1);
            }
        }
        if (value_input) {
            var value = $(value_input);
            if (value)
                value.value = ids;
        }
    }
    // objs字段: id,name,desc,url, objvar字段:rsdiv_id, txt_id, value_id, box_type, no_total
    this.format_list = function(objs, objvar){
        var max_show_length = 30;
        var result_div = $(objvar.rsdiv_id);
        var result_table_id = "ss_ooo_table";
        var output = "<table id=\"" + result_table_id + "\" class='resultTable'>";
        if (!objvar.no_total)
            output += "<tr><td colspan='3' class='msgTips'>共找到" + objs.length + "个";
        if (objs.length > max_show_length)
            output += "，限于篇幅，仅显示" + max_show_length + "个";
        output += "</td></tr><tr>";
        var box_type = 0;
        if (objvar.box_type)
            box_type = objvar.box_type;
        if (objs.length > 0) {
            for (var i = 0; i < objs.length && i < max_show_length; i++) {
                if (i % 3 == 0) {
                    output += "</tr><tr>";
                }
                var obj = objs[i];
                var str = "<td>";
                if (box_type == 1) {//checkbox
                    str += jsUtils.format("<input type='checkbox' autocomplete='off' id=\"chk_{0}\" value=\"{1}\" onclick=\"jsUtils.check_me('{2}','{3}','{4}');\" />&nbsp;", obj.id, obj.name, result_table_id, objvar.txt_id ? objvar.txt_id : '', objvar.value_id ? objvar.value_id : '');
                } else if (box_type == 2) {//radiobox
                    var ev_str = "";
                    if (objvar.txt_id) {
                        ev_str += "$('" + objvar.txt_id + "').value='" + obj.name + "';";
                    }
                    if (objvar.value_id) {
                        ev_str += "$('" + objvar.value_id + "').value='" + obj.id + "';";
                    }
                    str += jsUtils.format("<input type='radio' id='rad_{0}' value='{1}' onclick=\"jsUtils.sel_radio('{2}','rad_{0}');{3}\" />&nbsp;", obj.id, obj.name, result_table_id, ev_str);
                }
                str += jsUtils.format("<a href=\"{3}\" target='_blank' title=\"{2}\">{1}</a>", obj.id, obj.name, obj.show_id ? (obj.id + " | " + obj.desc) : obj.desc, obj.url);
                str += "</td>"
                output += str;
            }
            output += "</tr></table>";
            result_div.innerHTML = output;
        } else {
            result_div.innerHTML = "没有找到";
        }
    }
    // 仅仅为了适应播放, 在播放时全部链接在新页面打开, 否则在本页打开
    this.a_link = function(url, event){
        jsUtils.fix_flash();
        var if_blank = false;
        var ev = event || window.event;
        if (ev.shiftKey || ev.ctrlKey || jsVideo.if_playing()) {
            if_blank = true;
        }
        if (if_blank) { // 新页面打开
            window.open(url);
        } else { // 本页面打开
            window.location.href = url;
            ev.returnValue = false;
        }
    }
    this.toggle_list = function(event){
        jsUtils.fix_flash();
        var elem = event.target || event.srcElement;
        var lis = elem.parentNode.parentNode.getElementsByTagName("li");
        for (var i = 0; i < lis.length; i++) {
            lis[i].className = "";
            $(lis[i].id + "_div").style.display = "none";
        }
        elem.parentNode.className = "active";
        $(elem.parentNode.id + "_div").style.display = "block";
    }
    this.reflow = function(){
        jsUtils.fix_flash();
        document.body.style.zoom = 1.1;
        document.body.style.zoom = '';
    }
    this.fix_flash = function(){
        var player = window.$f ? $f() : null;
        if (player)
            player.doClose = true;
    }
    this.blank_a = function(){
        var as = document.getElementsByTagName("a");
        for (var i = 0; i < as.length; i++) {
            var href = as[i].getAttribute("href");
            var target = as[i].getAttribute("target");
            var clsname = as[i].className;
            if (href && href.indexOf("javascript") >= 0)
                continue;
            if (clsname && clsname.indexOf("nonew") >= 0)
                continue;
            if (clsname)
                clsname += " blank";
            else
                clsname = "blank";
            as[i].className = clsname;
            as[i].target = "_blank";
        }
    }
    this.restore_a = function(){
        var as = document.getElementsByTagName("a");
        for (var i = 0; i < as.length; i++) {
            var href = as[i].getAttribute("href");
            var target = as[i].getAttribute("target");
            var clsname = as[i].className;
            if (href && href.indexOf("javascript") >= 0)
                continue;
            if (clsname && clsname.indexOf("blank") >= 0) {
                if (clsname == "blank")
                    as[i].removeAttribute("class");
                else
                    as[i].className = clsname.replace(" blank", "");
                as[i].removeAttribute("target");
            }
        }
    }
    this.input_hint = function(ctrl_name, hint){
        var ctrl = $(ctrl_name);
        if (!ctrl)
            return;
        if (ctrl.value == "") {
            ctrl.value = hint;
            ctrl.addClass("hint");
        } else {
            ctrl.value = "";
            ctrl.removeClass("hint");
        }
        ctrl.onfocus = function(){
            if (ctrl.value == hint) {
                ctrl.value = "";
                ctrl.removeClass("hint");
            }
        }
        ctrl.onblur = function(){
            if (ctrl.value == "") {
                ctrl.value = hint;
                ctrl.addClass("hint");
            }
        }
    }
    // 用于检测函数input_hint是否有输入,没有输入返回false
    this.chk_input_hint = function(ctrl_name){
        var ctrl = $(ctrl_name);
        var ctrlcls = ctrl.className;
        if (ctrlcls.indexOf("hint") >= 0) {
            jsUtils.showMsg('没有输入查询条件');
            return false;
        }
        if (ctrl.value.trim() == "") {
            jsUtils.showMsg('没有输入查询条件');
            return false;
        }
        return true;
    }
    this.to_a_p = function(id, url, params){
        var pbox = $(id);
        if (pbox && pbox.parentNode) {
            var parent = pbox.parentNode;
            var qindex = url.indexOf("?");
            if (qindex >= 0) {
                url = url.substring(0, qindex);
            }
            $(parent.getAttribute("id")).load(url + params);
        }
    }
    this.pay_cb = function(type, order_code, bankTableName){
        var btbl = $(bankTableName);
        if (!btbl)
            return;
        if (!type || !order_code) {
            jsUtils.showMsg("没有找到付款类型/订单号");
            return;
        }
        var banks = btbl.getElementsByTagName("input");
        var bankcode = "";
        for (var i = 0; i < banks.length; i++) {
            if (banks[i].checked) {
                bankcode = banks[i].getAttribute("code");
                break;
            }
        }
        if (bankcode == "")
            return;
        window.open("/pay/cb/?type=" + type + "&order=" + order_code + "&bank=" + bankcode);
    }
}

var jsUtils = new JsUtils();

//JsDlg
String.prototype.isArgument = function(){
    return /^([a-zA-Z]){1,}=([0-9]){1,}$/.test(this);
}
function JsDlg(){
    this.dialog = function(url, name, feature, isModal){
        if (url == null) {
            return false;
        }
        url = url
        if (name == null) {
            name = ""
        }
        if (feature == null) {
            feature = ""
        };
        if (document.getBoxObjectFor) {
            if (isModal) {
                var Modal = window.open(url, name, "modal=1," + feature);
                var ModalFocus = function(){
                    if (!Modal.closed) {
                        Modal.focus();
                    } else {
                        Modal = null;
                        window.removeEventListener(ModalFocus, "focus");
                        ModalFocus = null;
                    };
                                    }
                window.addEventListener("focus", ModalFocus, false);
                return false;
            } else {
                return window.open(url, name, "modal=1," + feature);
            }
        } else {
            return window.open(url, name, feature);
        }
        return null;
    }
    this.modal = function(url, feature){
        dialog(url, "", feature, true);
        return false;
    }
}

var jsDlg = new JsDlg();
//Debug tools
function JsDebug(){
    this._container = null;
    this._lines = 0;
    this._height = 300;
    this.init = function(){
        var container = new Element("div", {
            style: "position:absolute;z-index:65535;overflow:scroll;border:solid 1px black;" +
            "top:0px;left:600px;width:400px;height:" +
            this._height +
            "px;"
        });
        var text = new Element("textarea", {
            rows: 15,
            style: "border:solid 1px red;width:98%;"
        });
        container.appendChild(text);
        $("body").grab(container);
        this._container = container;
    }
    this.info = function(msg){
        if (this._container == null)
            this.init();
        var dt = new Date();
        var dtstring = jsUtils.format("{0}/{1}/{2} {3}:{4}:{5}", dt.getFullYear(), dt.getMonth() + 1, dt.getDate(), dt.getHours(), dt.getMinutes(), dt.getSeconds());
        var text = this._container.firstChild;
        if (text.value == "")
            this._lines = 0;
        this._container.firstChild.value += jsUtils.format("[{0}] {1}\n", dtstring, msg);
        this._lines += 1;
        this._container.firstChild.scrollTo(0, this._lines * 20);
    }
}

var jsDebug = new JsDebug();
//JsVideo
function JsVideo(){
    this.play_div = "play_div";
    this.player_div = "player_div";
    this.serial_name = "playing_serial";
    this.serial_panel = "serial_span";
    this.provider_panel = "provider_span";
    this.play_js_div = "play_js_div";
    this.video_id = 0;
    this.video_serial = 0;
    this.user_type = 0;
    this.user_id = 0;
    this.user_token = 0;
    this.provider_id = 0;
    this.show_serial = false;
    this.play_next = '0';
    this.play = function(video_id, video_serial, provider_id, show_serial){
        var playerbox = $(jsVideo.player_div);
        var playbox = $(jsVideo.play_div);
        if (!jsUtils.if_logged()) {
            var url = window.location.href;
            if (url.indexOf("play=") < 0)
                url = url + "?play=" + video_serial;
            window.location.href = "/login_portal/?tip=1&to=" + url;
            return;
        }
        jsUtils.fix_flash();
        if (!this.oHeight) {
            playbox.style.display = "block";
            this.oHeight = parseInt(playerbox.getStyle("height"));
            playbox.style.display = "none";
        }
        var videoFx = new Fx.Tween(jsVideo.player_div, {
            onStart: function(){
                playerbox.setStyle("height", 0);
                playbox.style.display = "block";
            },
            onComplete: function(){
                jsVideo.show(video_id, video_serial, provider_id, show_serial);
                //jsVideo.mask_show();
            }
        });
        if (show_serial) {
            var spanel = $(this.serial_panel);
            var ppanel = $(this.provider_panel);
            if (spanel) {
                spanel.innerHTML = "正在播放第" + video_serial + "集";
                if (ppanel && ppanel.innerHTML != "") {
                    spanel.innerHTML += " | ";
                }
            }
        }
        var serial_is_playing = false;
        var now_serial = $F(this.serial_name);
        if (now_serial && jsUtils.is_int(now_serial)) {
            var serial = parseInt(now_serial);
            if (serial == video_serial) {
                serial_is_playing = true;
            }
        }
        // 如果正在播放,那么定位到页面最上方
        if (jsVideo.if_playing()) {
            if (!myScrollFx) {
                var myScrollFx = new Fx.Scroll(document.body);
            }
            myScrollFx.toTop();
            if (serial_is_playing) {
                return;
            } else
                jsVideo.show(video_id, video_serial, provider_id, show_serial);
        } else {
            videoFx.start("height", 0, this.oHeight);
        }
    }
    this.show = function(video_id, video_serial, provider_id, show_serial){
        var user_type = Cookie.read("uty");
        if (!user_type) {
            user_type = -1;
            Cookie.write("uty", "-1", {
                path: "/",
                duration: 365
            });
        }
        var user_id = Cookie.read("uid");
        if (!user_id) {
            user_id = 0;
            Cookie.write("uid", "0", {
                path: "/",
                duration: 365
            });
        }
        var user_token = Cookie.read("session_id");
        if (!user_token) {
            user_token = jsUtils.rand();
            Cookie.write("uto", user_token, {
                path: "/",
                duration: 365
            });
        }
        try {
            user_type = parseInt(user_type);
            user_id = parseInt(user_id);
            provider_id = parseInt(provider_id);
        } catch (e) {
            user_type = -1;
            user_id = 0;
            provider_id = 0;
        }
        jsVideo.video_id = video_id;
        jsVideo.video_serial = video_serial;
        jsVideo.provider_id = provider_id;
        jsVideo.show_serial = show_serial;
        jsVideo.user_id = user_id;
        jsVideo.user_type = user_type;
        jsVideo.user_token = user_token;
        //  首先从服务器取回文件地址
        var toUrl = "/video/play/";
        var params = "type=play&video_id=" + jsUtils.encode(video_id) + "&video_serial=" + jsUtils.encode(video_serial);
        var ajax = new Request.JSON({
            url: toUrl,
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    $(jsVideo.serial_name).value = video_serial;
                    if (ajaxresult.plus == '1') { // 如果存在下一集
                        jsVideo.play_next = '1';
                    } else
                        jsVideo.play_next = '0';

                    var jsdiv = $(jsVideo.play_js_div);
                    if (!jsdiv)
                        return;
                    // 如果该js存在, 那么删除它, 再重新建立, 必须是新的js代码块, 否则页面不执行
                    var jsname = "fplayjs";
                    var jscontent = $(jsname);
                    if (jscontent) {
                        jsdiv.removeChild(jscontent);
                    }
                    jscontent = new Element("script", {
                        "id": jsname,
                        "defer": true,
                        "type": "text/javascript",
                        "src": ajaxresult.message
                    });
                    jsdiv.appendChild(jscontent);
                } else {
                    if (ajaxresult.plus && ajaxresult.plus == "login") {
                        window.location.href = "/login_portal/?to=" + window.location;
                        return;
                    } else {
                        jsUtils.showMsg(ajaxresult.message);
                    }
                }
            },
            onFailure: function(){
                // 连接失败,重新连接
                jsVideo.show(video_id, video_serial, provider_id, show_serial);
                return;
                //jsUtils.showMsg("网络连接超时, 请关闭播放窗口再试一次");
            }
        }).send();
    }
    this.do_play = function(vod_url, next_url,no_feedback){
        var playerbox = $(jsVideo.player_div);
        // 将所有的链接全部加上_blank,其中href是javascript的不管,另外,已经是_blank的加上额外的class blank
        jsUtils.blank_a();
        var feedplugin = {url: '/static/swf/player.StreamFeedback-1.1.0.swf',
                        width: 230,height: 230,top: 20,right: 20,videoId: jsVideo.video_id,userType: jsVideo.user_type,
                        userId: jsVideo.user_id,userToken: jsVideo.user_token,cp: jsVideo.provider_id
                    };
        if(no_feedback == true) feedplugin = null;
        var player = $f();
        if (player && this.if_playing()) {
            player.play(vod_url);
        } else {
            flowplayer(jsVideo.player_div, 
            	{
            	src: "/static/swf/player-0.3.3.swf",
            	wmode: "opaque",
            	version: [9, 115],
                onFail: function(){
                    playerbox.set("html", "<div class='textBox'>你需要最新版本的Flash Player来观看本节目<br />" +
                    "你目前的版本是<span class='msgAlert'>" + this.getVersion() + "</span></div>");
                	}
            	}, {
                clip: {url: vod_url,scaling: 'fit',provider: 'pseudostreaming',
                    onLastSecond: function(){
                        if (jsVideo.play_next == '1') {
                            if (next_url != null) window.location.href = next_url;
                            else jsVideo.play(jsVideo.video_id, jsVideo.video_serial + 1, jsVideo.provider_id, jsVideo.show_serial);
                        }
                    }
                },
                canvas: {backgroundColor: '#000000',backgroundGradient: 'none'},
                plugins: {
                    pseudostreaming: {url: '/static/swf/player.pseudostreaming-0.3.1.swf'},
                    feedback: feedplugin,
                    controls: {
                        url: '/static/swf/player.controls-0.3.2.swf',
                        height: 24,
                        // base color
                        backgroundColor: '#A2A2A2',backgroundGradient: 'none',borderRadius: '0',opacity: 1.0,
                        // control color
                        timeColor: '#6DF02C',durationColor: '#FFFFFF',progressColor: '#1CAA1D',
                        progressGradient: 'medium',bufferColor: '#6DF02C',bufferGradient: 'high',
                        sliderColor: '#000000',sliderGradient: 'low',buttonColor: '#666666',buttonOverColor: '#1CAA1D'
                    }
                }
            });
        }
    }
    // if playing, return true, else return false
    this.if_playing = function(){
        var playerbox = $(jsVideo.player_div);
        if (playerbox) {
            return playerbox.innerHTML.trim() != "";
        } else {
            return false;
        }
    }
    this.stop_play = function(){
        var playerbox = $(jsVideo.player_div);
        jsUtils.fix_flash();
        jsUtils.restore_a();
        jsVideo.mask_hide();
        var videoFx = new Fx.Tween(jsVideo.player_div, {
            onStart: function(){
            	if (Browser.Engine.trident) {
	                var player = $f();
	                if (player) {
	                    player.close();
	                    player.unload();
	                }
	                playerbox.innerHTML = "";
	            }
            },
            onComplete: function(){
            	if (!Browser.Engine.trident) {
	                var player = $f();
	                if (player) {
	                    player.close();
	                    player.unload();
	                }
	                playerbox.innerHTML = "";
                }
                $(jsVideo.play_div).style.display = "none";
            }
        });
        videoFx.start("height", 0);
    }
    this.show_add_fix = function(event){
        if (jsVideo.if_playing()) {
            jsUtils.toggle_fv('fix_err_panel', event);
        } else {
            jsUtils.toggle_fv('fix_err_panel');
        }
    }
    this.add_fix = function(video_id){
        var input = $F("fix_err_text");
        if (input.length == 0) {
            jsUtils.showMsg("您还未输入内容");
            return;
        }
        var btn = $("fix_btn");
        if (btn) {
            btn.disabled = true;
            btn.addClass("disabled");
            btn.set("autocomplete", "off");
        }
        var params = jsUtils.format("video_id={0}&content={1}", video_id, jsUtils.encode(input));
        var ajax = new Request.JSON({
            url: "/video/fix/new/",
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    jsUtils.show_ajax_ok("fix_err_panel");
                } else {
                    jsUtils.showMsg(ajaxresult.message);
                }
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            },
            onFailure: function(){
                jsUtils.showMsg("网络连接超时, 请再试一次");
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            }
        }).send();
    }
    this.del_fix = function(fix_id){
        if (!confirm("您确定要删除该纠错吗？"))
            return;
        jsUtils.s_ajax("/video/fix/delete/", "value=" + fix_id, {
            re_load: true
        });
    }
    this.book = function(video_id){
        jsUtils.s_ajax("/user/book/new/", "video_id=" + video_id, {
            re_load: true
        });
    }
    this.del_book = function(video_id){
        jsUtils.s_ajax("/user/book/delete/", "video_id=" + video_id, {
            re_load: true
        });
    }
    this.hide_watch = function(watch_id){
        jsUtils.s_ajax("/video/watch/hide/", "id=" + watch_id, {
            re_load: true
        });
    }
    this.show_watch = function(watch_id){
        jsUtils.s_ajax("/video/watch/show/", "id=" + watch_id, {
            re_load: true
        });
    }
    this.add_want = function(video_id){
        jsUtils.s_ajax("/video/want/new/", "video_id=" + video_id, {
            re_load: true
        });
    }
    this.hide_want = function(want_id){
        jsUtils.s_ajax("/video/want/hide/", "id=" + want_id, {
            re_load: true
        });
    }
    this.show_want = function(want_id){
        jsUtils.s_ajax("/video/want/show/", "id=" + want_id, {
            re_load: true
        });
    }
    this.del_want = function(want_id){
        jsUtils.s_ajax("/user/want/delete/", "id=" + want_id, {
            re_load: true
        });
    }
    this.del_my_want = function(video_id){
        jsUtils.s_ajax("/video/want/delv/", "video_id=" + video_id, {
            re_load: true
        });
    }
    this.recommend = function(video_id){
        var input = $F("rec_text");
        if (input.length > 500) {
            jsUtils.showMsg("推荐语要小于500字");
            return;
        }
        var btn = $("rec_btn");
        if (btn) {
            btn.disabled = true;
            btn.addClass("disabled");
            btn.set("autocomplete", "off");
        }
        var params = jsUtils.format("video_id={0}&content={1}", video_id, jsUtils.encode(input));
        var ajax = new Request.JSON({
            url: "/video/recommend/new/",
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    jsUtils.show_ajax_ok("rec_panel");
                } else {
                    jsUtils.showMsg(ajaxresult.message);
                }
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            },
            onFailure: function(){
                jsUtils.showMsg("网络连接超时, 请再试一次");
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            }
        }).send();
    }
    this.del_recommend = function(rec_id){
        if (!confirm("您确定要删除这个推荐吗？"))
            return;
        var params = "value=" + jsUtils.encode(rec_id);
        jsUtils.s_ajax('/video/recommend/delete/', params, {
            re_load: true
        });
    }
    this.del_recommends = function(parent, chkall){
        if (!confirm("您确定要删除选中的内容吗？"))
            return;
        var ids = jsUtils.get_check_ids(parent, chkall);
        if (!ids) {
            jsUtils.showMsg("没有选中任何内容");
            return;
        }
        var params = "value=" + jsUtils.encode(ids);
        jsUtils.s_ajax('/video/recommend/delete/', params, {
            re_load: true
        });
    }
    this.show_add_label = function(init_label, event){
        var now_value = init_label + " "
        $("lbl_name").value = now_value;
        if (init_label) {
            // initial labels
            var lbl_parent = $("add_label_content");
            var as = lbl_parent.getElementsByTagName("a");
            for (var i = 0; i < as.length; i++) {
                var tl = as[i].getAttribute("title");
                if (now_value.indexOf(" " + tl + " ") >= 0) {
                    as[i].className = "tag_a";
                } else {
                    as[i].className = "tag";
                }
            }
        }
        jsUtils.toggle_fv('add_label', event);
    }
    this.sel_label = function(lb_ctrl, input_name){
        jsUtils.fix_flash();
        var input = $(input_name);
        if (!input)
            return;
        var lb_name = lb_ctrl.getAttribute("title");
        var now_value = input.value;
        // 如果不是以空格开头, 加上前后空格
        if (now_value.indexOf(" ") != 0) {
            if (now_value != "")
                now_value = " " + now_value + " ";
            else
                now_value = " ";
        }
        if (now_value.indexOf(" " + lb_name + " ") >= 0) {
            now_value = now_value.replace(" " + lb_name + " ", " ");
            lb_ctrl.className = "tag";
        } else {
            // 判断now_value是不是以空格结尾,如果不是, 则添加一个空格
            if (now_value.lastIndexOf(" ") < now_value.length - 1)
                now_value = now_value + " ";
            now_value = now_value + lb_name + " ";
            lb_ctrl.className = "tag_a";
        }
        input.value = now_value;
    }
    this.add_label = function(video_id){
        jsUtils.fix_flash();
        var info = $("add_label_info");
        info.innerHTML = "";
        var input = $F("lbl_name");
        if (input.length == 0) {
            info.innerHTML = "您还未输入内容";
            return;
        }
        var btn = $("lb_btn");
        if (btn) {
            btn.disabled = true;
            btn.addClass("disabled");
            btn.set("autocomplete", "off");
        }
        var params = jsUtils.format("video_id={0}&name={1}", jsUtils.encode(video_id), jsUtils.encode(input));
        var ajax = new Request.JSON({
            url: "/video/label/new/",
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    jsUtils.toggle_v("add_label");
                    $("lt_label").load("/video/" + video_id + "/little/label/?" + jsUtils.rand());
                } else {
                    jsUtils.showMsg(ajaxresult.message);
                }
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            },
            onFailure: function(){
                jsUtils.showMsg("网络连接超时, 请再试一次");
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            }
        }).send();
    }
    this.del_label = function(video_id, lbl_id){
        if (!confirm("您确定要删除该标签吗？"))
            return;
        jsUtils.s_ajax("/video/label/delete/", "video_id=" + video_id + "&label_id=" + lbl_id, {
            re_load: true
        });
    }
    this.del_alabel = function(video_id, lbl_id){
        if (!confirm("您确定要删除该标签吗，所有人对此节目打的此标签都将被删除？"))
            return;
        jsUtils.s_ajax("/video/label/adel/", "video_id=" + video_id + "&label_id=" + lbl_id, {
            re_load: true
        });
    }
    this.add_link = function(event){
        $("lnk_id").value = "";
        $("lnk_name").value = "";
        $("lnk_url").value = "";
        jsUtils.toggle_fv('add_link', event);
    }
    this.edit_link = function(link_id, name, url, ev){
        $("lnk_id").value = link_id;
        $("lnk_name").value = name;
        $("lnk_url").value = url;
        jsUtils.toggle_fv('add_link', ev);
    }
    this.do_link = function(video_id, link_id){
        var info = $("add_link_info");
        info.innerHTML = "";
        var name = $F("lnk_name");
        var url = $F("lnk_url");
        if (name.length == 0) {
            info.innerHTML = "您还未输入名称";
            return;
        }
        if (url.length == 0) {
            info.innerHTML = "您还未输入链接地址";
            return;
        }
        var params = "video_id=" + jsUtils.encode(video_id) + "&name=" + jsUtils.encode(name) + "&url=" + jsUtils.encode(url);
        var toUrl = "/video/link/new/";
        if (link_id != null && link_id != undefined && link_id != "") {
            toUrl = "/video/link/edit/";
            params += "&link_id=" + link_id;
        }
        var btn = $("lnk_btn");
        if (btn) {
            btn.disabled = true;
            btn.addClass("disabled");
            btn.set("autocomplete", "off");
        }
        var ajax = new Request.JSON({
            url: toUrl,
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    jsUtils.show_ajax_ok("add_link");
                } else {
                    jsUtils.showMsg(ajaxresult.message);
                }
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            },
            onFailure: function(){
                jsUtils.showMsg("网络连接超时, 请再试一次");
                if (btn) {
                    btn.removeAttribute("disabled");
                    btn.removeClass("disabled");
                }
            }
        }).send();
    }
    this.del_link = function(lnk_id){
        if (!confirm("您确定要删除该链接吗？"))
            return;
        jsUtils.s_ajax("/video/link/delete/", "value=" + jsUtils.encode(lnk_id), {
            re_load: true
        });
    }
    this.do_score = function(video_id, score){
        jsUtils.fix_flash();
        var params = "video_id=" + jsUtils.encode(video_id) + "&score=" + jsUtils.encode(score);
        var ajax = new Request.JSON({
            url: "/video/score/new/",
            data: params,
            onSuccess: function(response){
                var ajaxresult = response;
                if (ajaxresult.result == "true" || ajaxresult.result == true) {
                    $("lt_score").load("/video/" + video_id + "/little/score/?" + jsUtils.rand());
                } else {
                    jsUtils.showMsg(ajaxresult.message);
                }
            },
            onFailure: function(){
                jsUtils.showMsg("网络连接超时, 请再试一次");
            }
        }).send();
    }
    this.mask_show = function(){
        var obj = $('shadowDiv');
        if (!obj) {
            return;
        }
        obj.innerHTML = '';
        obj.setStyles({
            'display': 'block',
            'height': window.getScrollSize().y,
            'opacity': 0,
            'background': '#000'
        });
        var videoFx = new Fx.Tween(obj, {
            duration: 1000,
            onComplete: function(){
                var btn1 = $('theater_on');
                var btn2 = $('theater_off');
                if (btn1) {
                    btn1.setStyle('display', 'none');
                }
                if (btn2) {
                    btn2.setStyle('display', '');
                }
            }
        });
        videoFx.start('opacity', .8);
    }
    this.mask_hide = function(){
        var obj = $('shadowDiv');
        if (!obj) {
            return;
        }
        obj.innerHTML = '<iframe></iframe>';
        var videoFx = new Fx.Tween(obj, {
            onComplete: function(){
                obj.setStyles({
                    'display': 'none',
                    'opacity': .7,
                    'background': '#fff'
                });
                var btn1 = $('theater_on');
                var btn2 = $('theater_off');
                if (btn1) {
                    btn1.setStyle('display', '');
                }
                if (btn2) {
                    btn2.setStyle('display', 'none');
                }
            }
        });
        if (obj.getStyle('display') == 'block') {
            videoFx.start('opacity', 0);
        }
    }
}

var jsVideo = new JsVideo();
