﻿/// <reference path="mootoolsIntellisense.js" />
/// <reference path="Tips.js" />
/// <reference path="Utils.js" />
/**
* PostMessage.js
* Author: Fdream
*/

// Message Class
function Message(){
    this.memName = '';
    this.memPass = '';
    this.memCode = '';
    this.saveMem = '';
    this.content = '';
    
    // check the value
    this.checkInstance = function(){
        var errMsg = '';
        if(this.memName.trim() == ''){
            errMsg = '用户名不能为空！';
            return errMsg;
        }
        if(this.memCode.trim() == ''){
            errMsg = '验证码不能为空！';
            return errMsg;
        }
        if(this.content.trim() == ''){
            errMsg = '留言内容不能为空！';
            return errMsg;
        }
        return true;
    }
}

// get form
function getForm(){
    var msg = new Message();
    msg.memName = $('comm_memName').get('value').trim();
    msg.memCode = $('comm_code').get('value').trim();
    msg.content = $('message').get('value').trim();
    if($('comm_memPassword') != null){
        msg.memPass = $('comm_memPassword').get('value').trim();
    }
    if($('comm_saveMem') != null){
        msg.saveMem = $('comm_saveMem').get('value');
    }
    
    return msg;
}

// post a comment
function postComment(e){
    $('messageSubmit').disabled = true;
	postSubmited = true;
    var msg = getForm();
    var result = msg.checkInstance();
    if(result != true){
        Tip.showBeside($('messageSubmit'), Tip.tip(result));
    }
    else{
        submitComment(msg);
    }
    $('messageSubmit').disabled = false;
    postSubmited = false;
}

// submit a comment
function submitComment(msg){
    var req = new Request({url:msgPostUrl, method:'post'}).send(Utils.Hash.toQueryString(msg));
    req.onFailure = function(r){
        Tip.showBeside($('messageSubmit'), Tip.tip('非常抱歉，提交留言失败！'));
    }
    req.onSuccess = function(responseText, responseXML){
        var xmlDoc = responseXML;
        var succeed = xmlDoc.getElementsByTagName('succeed')[0].childNodes[0].nodeValue;
        var message = xmlDoc.getElementsByTagName('message')[0].childNodes[0].nodeValue;
        var login = xmlDoc.getElementsByTagName('login')[0].childNodes[0].nodeValue;
        // if succeed
        if(succeed.toLowerCase() == 'true')
        {
            var commentNode = xmlDoc.getElementsByTagName('comment')[0];
            var author = commentNode.getElementsByTagName('author')[0].childNodes[0].nodeValue;
            var time = commentNode.getElementsByTagName('time')[0].childNodes[0].nodeValue;
            var content = commentNode.getElementsByTagName('content')[0].childNodes[0].nodeValue;
            DisplayMessage(author, time, content);
        }
        // if login
        if(login.toLowerCase() == 'true')
        {
            $('comm_memName').set('readOnly', true);
            $('comm_register').destroy();
        }
        $('messageSubmit').disabled = false;
        postSubmited = false;
        
        Tip.showBeside($('messageSubmit'), Tip.tip(message));
    }
    Tip.showBeside($('messageSubmit'), 0, Tip.tip('正在为您提交留言，请稍后...'));
}

// display the message
function DisplayMessage(author, time, content){
    var htmlString = '<div class="gbook_head"><a href="{3}member/{0}.aspx" title="查看 {0} 的个人资料">{0}</a> 发表于 {1}</div><div class="gbook_main">{2}</div>';
    
	htmlString = htmlString.replace(new RegExp('\\{0\\}', 'g'), encodeURIComponent(author));
	htmlString = htmlString.replace(new RegExp('\\{1\\}', 'g'), time);
	htmlString = htmlString.replace(new RegExp('\\{2\\}', 'g'), content);
	htmlString = htmlString.replace(new RegExp('\\{3\\}', 'g'), blogUrl);
	
	new Element('div', {
	    'class': 'gbook_msg',
	    'html': htmlString
	    }).inject($$('div.page')[0], 'after');

    $('message').set('value', '');
    $('comm_code').set('value', '');
    var img = $('codeImage');
    var imgUrl = img.get('src');
    imgUrl = (imgUrl.indexOf('&') > -1 ? imgUrl.substring(0, imgUrl.indexOf('&')) : imgUrl) + '&rnd=' + Math.random();
    img.set('src', imgUrl);
}

// is submitting
var postSubmited = false;
function CtrlEnter(evt) 
{
	if(postSubmited == false && (evt.ctrlKey && evt.keyCode == 13) || (evt.altKey && evt.keyCode == 83)) 
	{
		postComment(evt);
	}
}

window.addEvent('domready', function(){
    $('messageSubmit').addEvent('click', function(e){
        postComment(e);
        return false;
    });
    
    $('comm_form').addEvent('submit', function(e){
        postComment(e);
        return false;
    });
    
    initTips();
});