function collapseThread(theId) {$("#"+theId).toggleClass("collapsed")}
function expandThread(theId)   {$("#"+theId).removeClass("collapsed")}
var commentsub = false;
function onAddComment() {
	if (checkDocumentIntegrity())
	{
		if (commentsub) return;
		var $a = $("#author");
		if ($a.length!=0 && $a.val().length==0)
		{	
			alert("请输入昵称");
			$a.focus();
			return;
		}
		
		var $c = $("#comment");
		if ($c.length!=0 && $c.val().length==0)
		{	
			alert("请输入评论内容");
			$c.focus();
			return;
		}
		
		var $e = $("#email");
		var p = /^[-_+.a-zA-Z0-9]+@((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\.)+([a-z]{2,4})|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/
		if ($e.length!=0 && ($e.val().length==0 || !p.test($e.val())))
		{	
			alert("请输入正确的邮件地址");
			$e.focus();
			return;
		}
		
		var d="";
		d+="author="+$("#author").val();
		d+="&email="+$("#email").val();
		d+="&url="+$("#url").val();
		d+="&comment="+$("#comment").val();
		d+="&comment_reply_ID="+$("#comment_reply_ID").val();
		d+="&comment_post_ID="+$("#comment_post_ID").val();
		toggleSubmit(true);
		try{pageTracker._trackEvent("Comment", "Submit", "Comment Decision Time", getTimeDistance());}catch(e){};
		$.ajax({
			type: "POST",
			url: "/blog/wp-comments-post-aw-ajax.php",
			data: d,
			error :function(XMLHttpRequest, textStatus, errorThrown){
				toggleSubmit(false);
				alert("请勿重复发表评论");
					},
			success: function(msg){
				$("#comment").val("");
				gotSubmit();
				document.location.href=msg;
				document.location.reload();
				}
			})
	}
}
function gotSubmit()
{
	$adbtn = $("#addcommentbutton")
	$adbtn.val("发表成功！");
	$adbtn.css("cursor","default");
}
function toggleSubmit(b)
{
	var $adbtn = $("#addcommentbutton")
	if (b)
	{
		$adbtn.val("正在提交...");
		$adbtn.css("cursor","default");
		commentsub = true;
		/////////////////TODO
	}
	else
	{
		commentsub = false;
		$adbtn.css("cursor","pointer");
		$("#addcommentbutton").val("发表");
	}
}
function moveAddCommentBelow(theId, threadId, collapse)
{
expandThread(theId);
var $addComment = $("#addcomment");
var $comment = $("#"+theId);
if(!$addComment.length){alert("Sorry, the comment is currently closed"); return}
if(collapse)
$comment.children(".comment").addClass("collapsed");
$addComment.appendTo($comment);	
$("#comment_reply_ID").val(threadId);
$("#reroot").show();
$("#comment").focus();
}
function checkDocumentIntegrity()
{
if($("#reroot").length && 
$("#addcomment").length && 
$("#comment_reply_ID").length && 
$(".commentlist").length && 
$("#comment").length && 
$("#addcommentanchor").length)
{
return true
}
alert("暂时有故障");
return false;
}
function reRoot()
{
$("#reroot").hide();
$("#addcomment").appendTo($(".commentlist"));
try{$.scrollTo('#addcomment',800)}catch(e){document.location.href = "#addcommentanchor";}
_$ff();
$("#comment_reply_ID").val("0");
}
function _$h(){$(".comment").addClass("collapsed"); return false;}
function _$s(){$(".comment").removeClass("collapsed"); return false;}
function _$ff(){$("#comment").focus();return false;}

// hotkey
(function (jQuery){
    this.version = '(beta)(0.0.3)';
	this.all = {};
    this.special_keys = {
        27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock', 
        144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup', 
        34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3', 
        115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'};
        
    this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&", 
        "8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<", 
        ".":">",  "/":"?",  "\\":"|" };
        
    this.add = function(combi, options, callback) {
        if (jQuery.isFunction(options)){
            callback = options;
            options = {};
        }
        var opt = {},
            defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0], checkParent: true},
            that = this;
        opt = jQuery.extend( opt , defaults, options || {} );
        combi = combi.toLowerCase();        
        
        var inspector = function(event) {
            event = jQuery.event.fix(event); 
            var element = event.target;
            element = (element.nodeType==3) ? element.parentNode : element;
            
            if(opt['disableInInput']) { 
                var target = jQuery(element);
                if( target.is("input") || target.is("textarea")){
                    return;
                }
            }
            var code = event.which,
                type = event.type,
                character = String.fromCharCode(code).toLowerCase(),
                special = that.special_keys[code],
                shift = event.shiftKey,
                ctrl = event.ctrlKey,
                alt= event.altKey,
                propagate = true,
                mapPoint = null;
            if (jQuery.browser.opera || jQuery.browser.safari || opt.checkParent){
                while (!that.all[element] && element.parentNode){
                    element = element.parentNode;
                }
            }
            
            var cbMap = that.all[element].events[type].callbackMap;
            if(!shift && !ctrl && !alt) { 
                mapPoint = cbMap[special] ||  cbMap[character]
			}
            else{
                var modif = '';
                if(alt) modif +='alt+';
                if(ctrl) modif+= 'ctrl+';
                if(shift) modif += 'shift+';
               
                mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]]
            }
            if (mapPoint){
                mapPoint.cb(event);
                if(!mapPoint.propagate) {
                    event.stopPropagation();
                    event.preventDefault();
                    return false;
                }
            }
		};        
        if (!this.all[opt.target]){
            this.all[opt.target] = {events:{}};
        }
        if (!this.all[opt.target].events[opt.type]){
            this.all[opt.target].events[opt.type] = {callbackMap: {}}
            jQuery.event.add(opt.target, opt.type, inspector);
        }        
        this.all[opt.target].events[opt.type].callbackMap[combi] =  {cb: callback, propagate:opt.propagate};                
        return jQuery;
	};    
    this.remove = function(exp, opt) {
        opt = opt || {};
        target = opt.target || jQuery('html')[0];
        type = opt.type || 'keydown';
		exp = exp.toLowerCase();        
        delete this.all[target].events[type].callbackMap[exp]        
        return jQuery;
	};
    jQuery.hotkeys = this;
    return jQuery;    
})(jQuery);
$.hotkeys.add('Ctrl+return', onAddComment);
$.hotkeys.add('Alt+s', onAddComment);
// hotkey
