﻿
import_js("kmw_dialog");
import_js("kmw_autocp");

/* ---------------------------- Class SmsListDialog ------------------------- */

/*
 *  [Summary]
 *      短消息列表对话框
 *  [Parameters]
 *      vdid    - (required)对话框ID，在一个页面中唯一
 */
function SmsListDialog(vdid) {
    // 从KmwDialog派生
    KmwDialog.apply(this, new Array(vdid));

    this.title = "短消息";
    this.width = 560;
    this.height = 265;
    
    this.page_num = 0;
    this.page_no = 0;
    this.page_size = 5;
    this.page_direct = 0;
    
    this.xmldoc = null;
}

SmsListDialog.BODY_HTML = "<table class='table_SmsListDialog' cellpadding='0' cellspacing='0'>"
        + "<colgroup>"
        +     "<col width='20%' align='center' />"
        +     "<col width='53%' align='center' />"
        +     "<col width='20%' align='center' />"
        +     "<col width='7%' align='center' />"
        + "</colgroup>"
        + "<tr>"
        +     "<th>发信人</th>"
        +     "<th align=left>主题</th>"
        +     "<th>时间</th>"
        +     "<th><input type='checkbox' class='checkbox' id='{DLG_ID}_checkall' onclick='event_dialog(\"{DLG_ID}\", \"Check\");' /></th>"
        + "</tr>"
        + "{RECORDS}"
        + "</table>";

SmsListDialog.FOOT_HTML = "<table width='90%'>"
        + "<tr>"
        +     "<td align='left'>&nbsp;"
        +         "<a href='#' onclick='event_dialog(\"{DLG_ID}\", \"Page\", \"-2\");'>首页</a> | "
        +         "<a href='#' onclick='event_dialog(\"{DLG_ID}\", \"Page\", \"-1\");'>上页</a> | "
        +         "<a href='#' onclick='event_dialog(\"{DLG_ID}\", \"Page\", \"1\");'>下页</a> | "
        +         "<a href='#' onclick='event_dialog(\"{DLG_ID}\", \"Page\", \"2\");'>末页</a>&nbsp;"
        +         "{PAGE_NO} / {PAGE_SUM}"
        +     "</td>"
        +     "<td align='right'>"
        +         "<input type='button' class='button' value='新建' onclick='event_dialog(\"{DLG_ID}\", \"New\");' />&nbsp;"
        +         "<input type='button' class='button' value='删除' onclick='event_dialog(\"{DLG_ID}\", \"Delete\");' />&nbsp;"
        +         "<input type='button' class='button' value='关闭' onclick='close_dialog(\"{DLG_ID}\");' />&nbsp;"
        +     "</td>"
        + "</tr>"
        + "</table>";

SmsListDialog.prototype.refresh = function() {
    var reqdata = "type=smslst&ps=" + this.page_size + "&pn=" + this.page_no + "&pd=" + this.page_direct;
    var axaj = new KmwAxaj("/cmd/sms.php", "xml");
    this.xmldoc = axaj.post(reqdata); 
    this.show(true);
}

SmsListDialog.prototype.onShow = function() {

    var tmpstr = "";
    
	var result = this.xmldoc.selectSingleNode("/result");
	this.page_no = parseInt(result.getAttribute("page_no"));
	this.page_sum = parseInt(result.getAttribute("page_sum"));
	this.page_direct = 0;

	var count = result.childNodes.length;
	for (var i = 0; i < count; i++)
	{
		var node = result.childNodes[i];
		if (browser == "firefox") {
    		var sms_id = node.selectSingleNode("id").textContent;
    		var sms_type = node.selectSingleNode("type").textContent;
    		var sms_read = node.selectSingleNode("read").textContent;
    		var sms_from = node.selectSingleNode("from").textContent;
    		var sms_fromname = node.selectSingleNode("fromname").textContent;
    		var sms_time = node.selectSingleNode("time").textContent;
    		var sms_title = node.selectSingleNode("title").textContent;
		} else {
    		var sms_id = node.selectSingleNode("id").text;
    		var sms_type = node.selectSingleNode("type").text;
    		var sms_read = node.selectSingleNode("read").text;
    		var sms_from = node.selectSingleNode("from").text;
    		var sms_fromname = node.selectSingleNode("fromname").text;
    		var sms_time = node.selectSingleNode("time").text;
    		var sms_title = node.selectSingleNode("title").text;
		}

		tmpstr += "<tr><td>";
		tmpstr += (sms_type == 'S') ? "[系统消息]" : sms_fromname;
		tmpstr += "</td><td align=left>";
		if (sms_read == "N") {
			tmpstr += "<a href='#' onclick='event_dialog(\"" + this.id + "\",\"View\",\"" + sms_id + "\");'><font color=red> [新] " + sms_title + "</font></a>";
		} else {
			tmpstr += "<a href='#' onclick='event_dialog(\"" + this.id + "\",\"View\",\"" + sms_id + "\");'>" + sms_title + "</a>";
		}
		tmpstr += "</td><td>";
		tmpstr += sms_time;
		tmpstr += "</td><td>";
		tmpstr += "<input type='checkbox' class='checkbox' name='" + this.id + "_check' value='" + sms_id + "' />";
		tmpstr += "</td></tr>";
	}
	for (; i < this.page_size; i++)
	{
		tmpstr += "<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>";
	}

    var htmlstr = SmsListDialog.BODY_HTML;
    htmlstr = htmlstr.replace(/{DLG_ID}/g, this.id);
    htmlstr = htmlstr.replace(/{RECORDS}/g, tmpstr);
    this.body_html = htmlstr;
    
    htmlstr = SmsListDialog.FOOT_HTML;
    htmlstr = htmlstr.replace(/{DLG_ID}/g, this.id);
    htmlstr = htmlstr.replace(/{PAGE_NO}/g, this.page_no + 1);
    htmlstr = htmlstr.replace(/{PAGE_SUM}/g, this.page_sum);
    this.foot_html = htmlstr;
}

SmsListDialog.prototype.onPage = function(vDirect) {
    if (vDirect) {
        this.page_direct = vDirect;
    } else {
        this.page_direct = 0;
    }
    if ((this.page_direct < 0 && this.page_no == 0) ||
        (this.page_direct > 0 && this.page_no + 1 == this.page_sum)) {
        return;
    }
    this.refresh();
}

SmsListDialog.prototype.onView = function(vsid) {
    var dialog = open_dialog("smsview", "SmsViewDialog", this);
    dialog.sms_id = vsid;
    dialog.show(true);
}

SmsListDialog.prototype.onNew = function() {
    var dialog = open_dialog("smssend", "SmsSendDialog", this);
    dialog.show(true);
}

SmsListDialog.prototype.onCheck = function() {
    var checked = document.getElementById(this.id + "_checkall").checked;
    var objs = document.getElementsByName(this.id + "_check");
    var count = objs.length;
    for (var i = 0; i < count; i++) {
        objs[i].checked = checked;
    }
}

SmsListDialog.prototype.onDelete = function() {
    var reqdata = "";
    var objs = document.getElementsByName(this.id + "_check");
    var count = objs.length;
    for (var i = 0; i < count; i++) {
        if (objs[i].checked) {
            reqdata += objs[i].value + ",";
        }
    }
    if (reqdata == "") {
        alert("请先选中要删除的短消息。");
        return;
    }
    var axaj = new KmwAxaj("/cmd/sms.php", "xml");
    axaj.post("type=smsdel&id=" + reqdata);
    this.refresh();
}


/* ---------------------------- Class SmsViewDialog ------------------------- */

/*
 *  [Summary]
 *      查看短消息对话框
 *  [Parameters]
 *      vdid    - (required)对话框ID，在一个页面中唯一
 *      vsid    - (required)消息ID
 */
function SmsViewDialog(vdid) {
    // 从KmwDialog派生
    KmwDialog.apply(this, new Array(vdid));

    this.title = "查看短消息";
    this.width = 500;
    this.height = 400;
    
    this.sms_id = "";
    this.sms_type = "";
    this.sms_read = "";
    this.sms_from = "";
    this.sms_fromname = "";
    this.sms_time = "";
    this.sms_title = "";
    this.sms_content = "";
    
    this.xmldoc = null;
}

SmsViewDialog.BODY_HTML = '<table width="100%" cellpadding="0" cellspacing="1">'
        + '<colgroup>'
        +     '<col width="13%" align="right" />'
        +     '<col width="87%" align="left" />'
        + '</colgroup>'
        + '<tr><td valign="top"><b>发信人：</b></td>'
        +     '<td><input type="text" readonly="readonly" class="textbox size1" value="{SMS_FROM}" /></td>'
        + '</tr><tr>'
        +     '<td valign="top"><b>日期：</b></td>'
        +     '<td><input type="text" readonly="readonly" class="textbox size1" value="{SMS_TIME}" /></td>'
        + '</tr><tr>'
        +     '<td valign="top"><b>标题：</b></td>'
        +     '<td><input type="text" readonly="readonly" class="textbox size1" value="{SMS_TITLE}" /></td>'
        + '</tr><tr>'
        +     '<td valign="top"><b>正文：</b></td>'
        +     '<td><textarea readonly="readonly" class="textbox size2">{SMS_CONTENT}</textarea></td>'
        + '</tr></table>';

SmsViewDialog.FOOT_HTML = '<table width="100%">'
        + '<tr><td align="right">'
        +     '<input type="button" class="button" value="回复" onclick="event_dialog(\'{DLG_ID}\', \'Reply\');" />&nbsp;'
        +     '<input type="button" class="button" value="删除" onclick="event_dialog(\'{DLG_ID}\', \'Delete\', \'{SMS_ID}\');" />&nbsp;'
        +     '<input type="button" class="button" value="关闭" onclick="close_dialog(\'{DLG_ID}\');" />&nbsp;'
        + '</td></tr>'
        + '</table>';

SmsViewDialog.prototype.onShow = function() {
    var axaj = new KmwAxaj("/cmd/sms.php", "xml");
    this.xmldoc = axaj.post("type=smsone&id=" + this.sms_id);

	var result = this.xmldoc.selectSingleNode("/result");
	if (result.childNodes.length > 0) {
		var node = result.childNodes[0];
		if (browser == "firefox") { 
    		this.sms_type = node.selectSingleNode("type").textContent;
    		this.sms_read = node.selectSingleNode("read").textContent;
    		this.sms_from = node.selectSingleNode("from").textContent;
    		this.sms_fromname = node.selectSingleNode("fromname").textContent;
    		this.sms_time = node.selectSingleNode("time").textContent;
    		this.sms_title = node.selectSingleNode("title").textContent;
    		this.sms_content = node.selectSingleNode("content").textContent;
		} else {
    		this.sms_type = node.selectSingleNode("type").text;
    		this.sms_read = node.selectSingleNode("read").text;
    		this.sms_from = node.selectSingleNode("from").text;
    		this.sms_fromname = node.selectSingleNode("fromname").text;
    		this.sms_time = node.selectSingleNode("time").text;
    		this.sms_title = node.selectSingleNode("title").text;
    		this.sms_content = node.selectSingleNode("content").text;
		}
	}
    
    var htmlstr = SmsViewDialog.BODY_HTML;
    htmlstr = htmlstr.replace(/{DLG_ID}/g, this.id);
    htmlstr = htmlstr.replace(/{SMS_FROM}/, this.sms_fromname);
    htmlstr = htmlstr.replace(/{SMS_TIME}/, this.sms_time);
    htmlstr = htmlstr.replace(/{SMS_TITLE}/, this.sms_title);
    htmlstr = htmlstr.replace(/{SMS_CONTENT}/, this.sms_content);
    this.body_html = htmlstr;
    
    htmlstr = SmsViewDialog.FOOT_HTML;
    htmlstr = htmlstr.replace(/{DLG_ID}/g, this.id);
    htmlstr = htmlstr.replace(/{SMS_ID}/g, this.sms_id);
    this.foot_html = htmlstr;

    if (this.sms_read == "N") {
        axaj.post("type=smsmrk&id=" + this.sms_id);
        if (this.opener) {
            this.opener.refresh();
        }
    }
    if (this.opener) {
        this.opener.disable(true);
    }
}

SmsViewDialog.prototype.onReply = function() {
	if (this.sms_fromname == "[系统消息]") {
	    alert("系统消息不能回复。");
	    return;
	}
    if (this.opener) {
        this.opener.refresh();
    }
    this.close();
    show_smssend(this.sms_fromname, "Re: " + this.sms_title);
}

SmsViewDialog.prototype.onDelete = function() {
	var reqdata = "type=smsdel&id=" + this.sms_id;
    var axaj = new KmwAxaj("/cmd/sms.php", "xml");
    axaj.post(reqdata);
    
    if (this.opener) {
        this.opener.refresh();
    }
    this.close();
}

SmsViewDialog.prototype.onClose = function() {
    if (this.opener) {
        this.opener.disable(false);
    }
}


/* ---------------------------- Class SmsSendDialog ------------------------- */

/*
 *  [Summary]
 *      发送短消息对话框
 *  [Parameters]
 *      vdid    - (required)对话框ID，在一个页面中唯一
 */
function SmsSendDialog(vdid) {
    // 从KmwDialog派生
    KmwDialog.apply(this, arguments);

    this.title = "发送短消息";
    this.width = 500;
    this.height = 380;
    this.sms_to = "";
    this.sms_title = "";
}

SmsSendDialog.BODY_HTML = "<table width='100%' cellpadding='0' cellspacing='1'>"
        + "<colgroup>"
        +     "<col width='13%' align='right' />"
        +     "<col width='87%' align='left' />"
        + "</colgroup>"
        + "<tr><td valign='top'><b>收信人：</b></td>"
        +     "<td><input type='text' class='textbox size1' id='{DLG_ID}_smsto' value='{SMS_TO}'"
        +              " onfocus='KmwAutocp.attach(this,\"/cmd/sms.php\",71,58,388);' />"
        +     "<div id='{DLG_ID}_smsto_atc' class='autocp'></div></td>"
        + "</tr><tr>"
        +     "<td valign='top'><b>标题：</b></td>"
        +     "<td><input type='text' class='textbox size1' id='{DLG_ID}_smsttl' value='{SMS_TITLE}' /></td>"
        + "</tr><tr>"
        +     "<td valign='top'><b>正文：</b></td>"
        +     "<td><textarea type='text' class='textbox size2' id='{DLG_ID}_smscnt'></textarea></td>"
        + "</tr></table>";

SmsSendDialog.FOOT_HTML = "<table width='100%'>"
        + "<tr><td align='right'>"
        +     "<input type='button' class='button' value='发送' onclick='event_dialog(\"{DLG_ID}\", \"Send\");' />&nbsp;"
        +     "<input type='button' class='button' value='关闭' onclick='close_dialog(\"{DLG_ID}\");' />&nbsp;"
        + "</td></tr></table>";


SmsSendDialog.prototype.onShow = function() {
    var htmlstr = SmsSendDialog.BODY_HTML;
    htmlstr = htmlstr.replace(/{DLG_ID}/g, this.id);
    htmlstr = htmlstr.replace(/{SMS_TO}/g, this.sms_to);
    htmlstr = htmlstr.replace(/{SMS_TITLE}/g, this.sms_title);
    this.body_html = htmlstr;
    
    htmlstr = SmsSendDialog.FOOT_HTML;
    htmlstr = htmlstr.replace(/{DLG_ID}/g, this.id);
    this.foot_html = htmlstr;

    if (this.opener) {
        this.opener.disable(true);
    }
}

SmsSendDialog.prototype.onSend = function() {

    this.disable(true);
    var sms_to = document.getElementById(this.id + "_smsto").value;
	sms_to = sms_to.replace(/ /g, "");
	sms_to = sms_to.replace(/'/g, "");
	sms_to = sms_to.replace(/"/g, "");
	sms_to = sms_to.replace(/，/g, ",");
    if (sms_to == "") {
        alert("请指定收信人。");
        return;
    }

    var sms_title = document.getElementById(this.id + "_smsttl").value;
	sms_title = sms_title.replace(/</g, "&lt;");
	sms_title = sms_title.replace(/>/g, "&gt;");
	sms_title = sms_title.replace(/"/g, "&quot;");
    if (sms_title.length < 4 || sms_title.length > 200) {
        alert("请输入消息标题，字数必须在4～200之间。");
        return;
    }
	sms_title = escape(sms_title);
	
    var sms_content = document.getElementById(this.id + "_smscnt").value;
	sms_content = sms_content.replace(/</g, "&lt;");
	sms_content = sms_content.replace(/>/g, "&gt;");
	sms_content = sms_content.replace(/"/g, "&quot;");
    if (sms_content.length < 10 || sms_title.length > 3000 ) {
        alert("请输入消息正文，字数必须在10～3000之间。");
        return;
    }
	sms_content = escape(sms_content);
	
	var reqdata = "type=smsnew&to=" + sms_to + "&title=" + sms_title + "&content=" + sms_content;
    var axaj = new KmwAxaj("/cmd/sms.php", "xml");
    var xmldoc = axaj.post(reqdata);

	var result = xmldoc.selectSingleNode("/result");
	var total = parseInt(result.getAttribute("total"));
	alert((browser == "firefox") ? result.textContent : result.text);
    this.disable(false);

	if (total > 0) {
        if (this.opener) {
            this.opener.refresh();
        }
        this.close();
	}
}

SmsSendDialog.prototype.onClose = function() {
    if (this.opener) {
        this.opener.disable(false);
    }
}


/* -------------------------------- Functions ------------------------------- */

function show_smslist() {
    var dialog = open_dialog("smslst", "SmsListDialog");
    dialog.refresh();
}

function show_smssend($to, $title) {
    var dialog = open_dialog("smssnd", "SmsSendDialog");
    dialog.sms_to = $to;
    if ($title) {
        dialog.sms_title = $title;
    }
    dialog.show(true);
}
