//======= global function ===================
var $$ = window.document,
    $id = function(strID) { return $$.getElementById(strID); },
    $name = function(strName) { return $$.getElementsByName(strName); },
    $js = function() { for(var i=0; i<arguments.length; i++) $$.write('<script type="text/javascript" src="' + arguments[i] + '"></script>'); };
$js("lang/lang.js", "common/class.js");
//======= tools function ====================
function $trim(str) {
  if(!str) return "";
  return str.replace(/(^[\s\n\t\r]*)|([\s\n\r\t]*$)/g, "").replace(/\r/g, "");
}
function $lengthW(str) {
  str = $trim(str);
  if(!str) return 0;
  var tLen = 0, strLen = str.length, charCode;
  for(var i=0; i<strLen; i++) {
    charCode = str.charCodeAt(i);
    if(charCode<0 || charCode>255) tLen += 2; else tLen++;
  }
  return tLen;
}
function $checkUsername(str) {
  if(typeof(str)!="string") return false;
  str = $trim(str);
  if($lengthW(str)<3 || str.length>24) return false;
  if(/[^\w\u3400-\u4DBF\u4E00-\u9FAF]/g.test(str)) return false;
  return str;
}
function $checkPassword(str) {
  if(!str) return false;
  str = $trim(str);
  if(str.length<6 || str.length>16) return false;
  if(/[^\x20-\x7e]/g.test(str)) return false;
  return str;
}
//========== check form & show message by ajax ========
function checkGuestForm(objThis) {
  var err = [], tmp, t = new Date();
  if(this.submitTime && t-this.submitTime<5*1000) err.push($lang["flood_control"]);
  tmp = $checkUsername(objThis["name"].value); if(tmp==false) err.push($lang["username_fail"]);
  tmp = $trim(objThis["content"].value); if(tmp.length<1) err.push($lang["content_fail"]);
  tmp = objThis["password"].value;
  if(tmp.length>0) {
    tmp = $checkPassword(tmp);
    if(tmp==false) err.push($lang["password_fail"]);
  }
  if(err.length>0) alert("* " + err.join("\n* ")); else { ajax.query(objThis.action, null, objThis); this.submitTime = t; }
  return false;
}
function checkLittleForm(objThis, bLite) {
  var err = "", tmp;
  if(tmp = objThis["content"]) if($trim(tmp.value).length<1) err = $lang["content_fail"];
  if(tmp = objThis["password"]) { tmp = $trim(tmp.value); tmp = bLite ? (tmp.length>0 && $lengthW(tmp)<50) : $checkPassword(tmp); if(tmp==false) err = $lang[bLite ? "logpassword_fail" : "password_fail"]; }
  if(err.length>0) { alert("* " + err); return false; }
  ajax.query(objThis.action, null, objThis);
  return false;
}
function checkSearchForm(objThis) {
  var err = [], tmp;
  tmp = $trim(objThis["search"].value);
  if(!tmp || $lengthW(tmp)<3) err.push($lang["search_keyword_fail"]);
  tmp = $trim(objThis["type"].value);
  if(!tmp) err.push($lang["search_type_fail"]);
  if(err.length>0) { alert("* " + err.join("\n* ")); return false; }
  return true;
}
//======= ajax request ====================
function showArticleContent(objThis, intLogID) {
  var obj = $id("article" + intLogID + "content");
  if(!obj) return;
  ajax.query("./?ajax=art&id=" + intLogID, obj);
  if(objThis) objThis.innerHTML = "";
}
function showAlbumIndex(objThis, intCatID) {
  var obj = $id("album" + intCatID + "index");
  if(!obj) return;
  ajax.query("./album.asp?ajax=album&cat=" + intCatID, obj);
  if(objThis) objThis.innerHTML = "";
}
function showTrackback(intLogID) {
  var obj = $id("article" + intLogID + "trackback");
  if(!obj) return;
  if(!obj.innerHTML) ajax.query("./?ajax=tb&id=" + intLogID, obj);
  else obj.innerHTML = "";
}
function showComment(intLogID, boolShow) {
 var obj = $id("article" + intLogID + "comment");
 if(!obj) return;
 if(!obj.innerHTML || boolShow==true) ajax.query("./?ajax=comm&id=" + intLogID, obj);
 else obj.innerHTML = "";
}
function showCommentContent(intLogID, intCommID) {
  var strID = "comment" + intCommID + "content";
  var obj = $id(strID);
  if(!obj) return;
  ajax.query("./comment.asp?ajax=con&comm=" + intCommID + "&id=" + intLogID, obj);
}
function showCommentForm(intLogID, intCommID, bReply) {
  var strID = "comment", questURL = "./comment.asp?ajax=";
  if(bReply==true) {
    strID += + intLogID + "form", questURL += "reply";
  } else {
   strID += intCommID + "content", questURL += "edit";
  }
  var obj = $id(strID);
  if(!obj) return;
  questURL += "&comm=" + intCommID + "&id=" + intLogID;
  ajax.query(questURL, obj, null, true);
}
function showGbookReply(intGbID) {
  var obj = $id("blog" + intGbID + "gbook");
  if(!obj) return;
  ajax.query("./gbook.asp?ajax=rep&gb=" + intGbID, obj);
}
function showGbookContent(intGbID) {
  var obj = $id("gbook" + intGbID + "content");
  if(!obj) return;
  ajax.query("./gbook.asp?ajax=con&gb=" + intGbID, obj);
}
function showGbookForm(intGbID) {
  var obj = $id("gbook" + intGbID + "content");
  if(!obj) return;
  ajax.query("./gbook.asp?ajax=edit&gb=" + intGbID, obj, null, true);
}
function showCalendar(intY, intM) {
  var obj = $id("blogCalendar");
  if(!obj) return;
  ajax.query("./?ajax=cale&date=" + [intY, intM].join("-"), obj);
}
//-------------------------------
function clearFormValue() {
  var f = $$.forms, a = {"content" : ["value", ""], "password" : ["value", ""], "secret" : ["checked", false]}, obj;
  for(var i=0; i<f.length; i++) for(var j in a) if(obj=f[i][j]) obj[a[j][0]] = a[j][1];
}