box.js 4.07 KB
/**
 * @fileOverview 弹出层组件
 * @author:Hbomb(zhouqq@yoho.cn)
 * @date:2012-08-07
 */

var $ = require("jquery");
var tools = require("yoho-tools");

var html_front = 
'<div class="comfirm">\n\
<div class="comfirm-head">\n\
    <a href="javascript:void(0);" class="iconfont close" title="close">&#xe64d;</a>\n\
</div>\n\
<div class="comfirm-content">\n\
    <p class="comfirm-text">';
var html_end = 
    '</p>\n\
</div>\n\
<div class="comfirm-foot">\n\
    <div class="comfirm-line"></div>\n\
    <div class="comfirm-ctrl clearfix">\n\
        <a href="javascript:void(0);" class="cancel">取消</a>\n\
        <a href="javascript:void(0);" class="ok">确定</a>\n\
    </div>\n\
</div>\n\
</div>';

var zhHK = {
    '晕了晕了...明明是空的!':'暈了暈了...明明是空的!',
    '请输入有效的邮箱或手机号!':'請輸入有效的郵箱或手機號!',
    '密码不得小于6位字符':'密碼不得小於6位字符',
    '账号或密码不正确!':'賬號或密碼不正確!',
    '你确定要删除该评论吗?':'妳確定要刪除該評論嗎?',
    '评论内容不能为空!':'評論內容不能為空!',
    '评论内容超过上限60个字!':'評論內容超過上限60個字!',
    '系统繁忙,请稍候再试!':'系統繁忙,請稍候再試!',
    '请输入Email!':'請輸入Email!',
    '输入的Email格式不对!':'輸入的Email格式不對!',
    '密码不正确,请重新输入':'密碼不正確,請重新輸入',
    '5分钟内不能评论重复内容':'5分鐘內不能評論重復內容'
};

var setPos = function()
{
    var _dialog = $(".comfirm");

    var wH = $(window).height();

    var dialogH = _dialog.height();

    var w = $(window).width();
    var t = $(window).scrollTop();
    var ww =  _dialog.outerWidth();
    
    _dialog.css({"top":(wH-dialogH)/2,"left":(w/2-ww/2)+"px",'z-index':10000000000,'position': 'absolute'});
    if (!($.browser.msie&&$.browser.version=='6.0'))
    {
        _dialog.css({"position":"fixed"});
    }
    else
    {
        _dialog.css({"top":t+"px"});
    }
};

$(window).resize(function () {
    setTimeout(function () {
        setPos();
    },500);
});

/**
 * 弹出提示框
 * 
 * @param string message 弹出的提示消息内容
 * @param int delay 当需要几秒后自动关闭时,设置该值
 */
exports.alert = function(message, delay,callback)
{
    message = translate(message);
    if ($(".comfirm").length > 0)
    {
        $(".confirm").remove();
    }
    
    $("body").append(html_front + message + html_end);
    
    $('.comfirm .cancel').hide();
            
    setPos();
    
    $(".close,.ok").click(function()
    {
        $(".comfirm").remove();
    if (callback) {
	callback();
    }
    
    return false;
    });
    
    if (delay && !isNaN(delay))
    {
        window.setTimeout(function()
        {
            $(".comfirm").remove();
        }, delay * 1000);
    }
};

/**
 * 弹出确认对话框
 * 
 * @param string message 弹出的提示消息内容
 * @param int delay 当需要几秒后自动关闭时,设置该值
 */
exports.confirm = function(message, callback, delay)
{
    message = translate(message);
    
    if ($(".comfirm").length > 0)
    {
        $(".confirm").remove();
    }
    
    $("body").append(html_front + message + html_end);
    
    setPos();
    
    $(".cancel,.close").click(function()
    {
        $('.comfirm .ok').unbind('click');
        $(".comfirm").remove();
    });
    
    if (callback)
    {
    $('.comfirm .ok').click(function()
        {
            $(".comfirm").remove();
            
            callback();
        });
    }
    
    if (delay && !isNaN(delay))
    {
        window.setTimeout(function()
        {
            $(".comfirm").remove();
        }, delay * 1000);
    }
};

/**
 * 转换消息简繁体
 * 
 * @param string message
 * @returns string
 */
function translate(message)
{
    var lang = tools.cookie('yh_language');
    if (!lang)
    {
        return message;
    }
    
    if (lang == 'zh-hk' && zhHK[message])
    {
        message = zhHK[message];
    }
    
    return message;
}