/** * @author ZhangHuihua@msn.com */ $.setRegional("alertMsg", { title:{error:"Error", info:"Information", warn:"Warning", correct:"Successful", confirm:"Confirmation"}, butMsg:{ok:"OK", yes:"Yes", no:"No", cancel:"Cancel"} }); var alertMsg = { _boxId: "#alertMsgBox", _bgId: "#alertBackground", _closeTimer: null, _types: {error:"error", info:"info", warn:"warn", correct:"correct", confirm:"confirm"}, _getTitle: function(key){ return $.regional.alertMsg.title[key]; }, _keydownOk: function(event){ if (event.keyCode == DWZ.keyCode.ENTER) event.data.target.trigger("click"); return false; }, _keydownEsc: function(event){ if (event.keyCode == DWZ.keyCode.ESC) event.data.target.trigger("click"); }, /** * * @param {Object} type * @param {Object} msg * @param {Object} buttons [button1, button2] */ _open: function(type, msg, buttons){ $(this._boxId).remove(); var butsHtml = ""; if (buttons) { for (var i = 0; i < buttons.length; i++) { var sRel = buttons[i].call ? "callback" : ""; butsHtml += DWZ.frag["alertButFrag"].replace("#butMsg#", buttons[i].name).replace("#callback#", sRel); } } var boxHtml = DWZ.frag["alertBoxFrag"].replace("#type#", type).replace("#title#", this._getTitle(type)).replace("#message#", msg).replace("#butFragment#", butsHtml); $(boxHtml).appendTo("body").css({top:-$(this._boxId).height()+"px"}).animate({top:"0px"}, 500); if (this._closeTimer) { clearTimeout(this._closeTimer); this._closeTimer = null; } if (this._types.info == type || this._types.correct == type){ this._closeTimer = setTimeout(function(){alertMsg.close()}, 3500); } else { $(this._bgId).show(); } var jButs = $(this._boxId).find("a.button"); var jCallButs = jButs.filter("[rel=callback]"); var jDoc = $(document); for (var i = 0; i < buttons.length; i++) { if (buttons[i].call) jCallButs.eq(i).click(buttons[i].call); if (buttons[i].keyCode == DWZ.keyCode.ENTER) { jDoc.bind("keydown",{target:jButs.eq(i)}, this._keydownOk); } if (buttons[i].keyCode == DWZ.keyCode.ESC) { jDoc.bind("keydown",{target:jButs.eq(i)}, this._keydownEsc); } } }, close: function(){ $(document).unbind("keydown", this._keydownOk).unbind("keydown", this._keydownEsc); $(this._boxId).animate({top:-$(this._boxId).height()}, 500, function(){ $(this).remove(); }); $(this._bgId).hide(); }, error: function(msg, options) { this._alert(this._types.error, msg, options); }, info: function(msg, options) { this._alert(this._types.info, msg, options); }, warn: function(msg, options) { this._alert(this._types.warn, msg, options); }, correct: function(msg, options) { this._alert(this._types.correct, msg, options); }, _alert: function(type, msg, options) { var op = {okName:$.regional.alertMsg.butMsg.ok, okCall:null}; $.extend(op, options); var buttons = [ {name:op.okName, call: op.okCall, keyCode:DWZ.keyCode.ENTER} ]; this._open(type, msg, buttons); }, /** * * @param {Object} msg * @param {Object} options {okName, okCal, cancelName, cancelCall} */ confirm: function(msg, options) { var op = {okName:$.regional.alertMsg.butMsg.ok, okCall:null, cancelName:$.regional.alertMsg.butMsg.cancel, cancelCall:null}; $.extend(op, options); var buttons = [ {name:op.okName, call: op.okCall, keyCode:DWZ.keyCode.ENTER}, {name:op.cancelName, call: op.cancelCall, keyCode:DWZ.keyCode.ESC} ]; this._open(this._types.confirm, msg, buttons); } };