/**
 * This is a common util script.
 *
 * @author huangwj
 * @version $Revision: 6435 $, $Date: 2010-05-18 14:48:46 +0800 (星期二, 18 五月 2010) $
 */
function checkAll(singleCheckboxName, allCheckboxObj) {
  var singleCheckboxes = document.getElementsByName(singleCheckboxName);
  for (i = 0; i < singleCheckboxes.length; i++) {
    singleCheckboxes[i].checked = allCheckboxObj.checked;
  }
}

function checkOne(singleCheckboxObj, allCheckboxId) {
  var selectAll = document.getElementById(allCheckboxId);
  if (!singleCheckboxObj.disabled && !singleCheckboxObj.checked && selectAll.checked) {
    selectAll.checked = false;
    return;
  }

  var selectOne = document.getElementsByName(singleCheckboxObj.name);
  var i = 0;
  var length = selectOne.length;
  for (; i < length; i++) {
    if (!selectOne[i].checked) {
      break;
    }
  }

  if (i >= length) {
    selectAll.checked = true;
  }
}

var feildErrorStyle = "float:left;margin-left:0px;padding-top:5px;padding:3px;padding-right:10px;border:solid 1px #FF6600;background-color:#FFF2E9;";
var errorStyle = "float:left;padding:3px;border:solid 1px #FF6600;background-color:#FFF;";
var errorImage = " <img src=\"images/icon_red.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";
var messageStyle = "float:left;padding:3px;border:solid 1px #00BE00;background-color:#E6FFE6;";
var messageImage = " <img src=\"images/icon_green.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";
var promptStyle = "float:left;margin-left:0px;padding:3px;border:solid 1px #00A8FF;background-color:#E2F5FF;";
var promptImage = " <img src=\"images/icon_blue.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";

var ajaxDebug = false;
function ajaxPost(url, param, callback, mime) {
  if (ajaxDebug) {
    alert("param: " + param + "\nmime: " + mime);
  }

  var loadingDiv = document.createElement('DIV');
  loadingDiv.setAttribute("id", "loading");
  loadingDiv.style.cssText = "display:none;font-family:Verdana;font-size:11px;border:1px solid #00CC00;background-color:#A4FFA4;padding:1px;position:absolute;right:2px;top:1px;height:14px;z-index:10000";
  loadingDiv.innerHTML = "Loading...";
  document.body.appendChild(loadingDiv);

  $("#loading").show(); // 显示进度条
  var _callback = function(result) {
    if (ajaxDebug) {
      alert("result: " + result);
    }

    try {
      callback(result);
    } catch (ex) {
      ; // Ignore
    } finally {
      $("#loading").hide(); // 隐藏进度条
    }
  };

  $.post(url, param, _callback, mime ? mime : "json");
}

// 用来显示服务端返回信息
function drawMessages(result) {
  var allMessages = "";

  // 如果返回消息有错误, 则显示异常信息
  if (result.exception) {
    var errorDiv = $("#actionError");
    if (errorDiv.length) {
      allMessages = result.exception.message;
      errorDiv.attr("style", errorStyle);
      errorDiv.html(errorImage + allMessages);
    } else {
      var stackTrace = result.exception.stackTrace.replace(/\t/g, "&nbsp; &nbsp; ").replace(/\n/g, "<br/>");
      allMessages += "<ul style='color:maroon'>";
      allMessages += "<h1>Server Error</h1>";
      allMessages += "<p>您可以将此错误报告给我们的系统管理员，也可以稍后重试刚才的操作。谢谢您的合作！</p>";
      allMessages += "<h3>错误信息</h3><p>" + result.exception.message + "</p>";
      allMessages += "<h3><a id='stackTraceText' href='javascript:stackTraceSwitch()'>显示错误详情</a></h3><p id='stackTrace' style='display:none'>"
          + stackTrace + "</p>";
      allMessages += "</ul>";
      $("#message").html(allMessages);
    }
    return;
  }

  // 如果是脚本就执行
  if (result.script) {
    eval(result.script);
  }

  if (result.fieldErrors) {
    for (var i in result.fieldErrors) {
      var errorDiv = $("#" + i + "Error");
      if (errorDiv.length) {
        errorDiv.attr("style", feildErrorStyle);
        errorDiv.html(errorImage + result.fieldErrors[i]);
        // if ($("#" + i).length) {
        // $("#" + i).focus();
        // } else {
        // $(":text[name='" + i + "']").focus();
        // }
      } else {
        allMessages += "<li>" + result.fieldErrors[i] + "</li>";
      }
    }
  }

  if (result.actionMessages && result.actionMessages.length > 0) {
    var errorDiv = $("#actionError");
    if (errorDiv.length) {
      errorDiv.attr("style", messageStyle);
      errorDiv.html(messageImage + result.actionMessages);
    } else {
      for ( var i = 0; i < result.actionMessages.length; i++) {
        allMessages += "<span class=\"msg\">" + result.actionMessages[i] + "</span>";
      }
    }
  } else if (result.actionErrors && result.actionErrors.length > 0) {
    var errorDiv = $("#actionError");
    if (errorDiv.length) {
      errorDiv.attr("style", errorStyle);
      errorDiv.html(errorImage + result.actionErrors);
    } else {
      for ( var i = 0; i < result.actionErrors.length; i++) {
        allMessages += "<li>" + result.actionErrors[i] + "</li>";
      }
    }
  }

  if ($("#message").length && allMessages) {
    allMessages = "<ul>" + allMessages + "</ul>";
    $("html,body").animate({scrollTop : 0}, 100);
    $("#message").html(allMessages);
  }
}

//显示客户端错误信息
function drawClientError(divId, error) {
  var div = $("#" + divId);
  div.attr("style", errorStyle);
  div.html(errorImage + error);
}

// 显示客户端提示信息
function drawClientMessage(divId, message) {
  var div = $("#" + divId);
  div.attr("style", messageStyle);
  div.html(messageImage + message);
}

function stackTraceSwitch() {
  if ($("#stackTrace").css("display") == "none") {
    $("#stackTrace").css("display", "");
    $("#stackTraceText").text("隐藏错误详情");
  } else {
    $("#stackTrace").css("display", "none");
    $("#stackTraceText").text("显示错误详情");
  }
}

function hasErrors(result) {
  if (result.exception) {
    return true;
  }

  if (!$.isEmptyObject(result.fieldErrors)) {
    return true;
  }

  if (result.actionErrors && result.actionErrors.length > 0) {
    return true;
  }

  return false;
}

function hasActionErrors(result) {
  return hasErrors(result);
}

function openPrompt(field) {
  var promptMessage = promptMessages[field.name];
  if ("undefined" == promptMessage) {
    return;
  }

  var errorDiv = $("#" + field.name + "Error");
  errorDiv.attr("style", promptStyle);
  errorDiv.html(promptImage + promptMessage);
}

function closePrompt(field) {
  var errorDiv = $("#" + field.name + "Error");
  errorDiv.attr("style", "");

  var fieldNameInit = field.name + "_init";
  var promptMessageInit = promptMessages[fieldNameInit];

  if (null == promptMessageInit) {
    errorDiv.html("&nbsp;");
  }
  else{
    errorDiv.html(promptMessageInit);
  }
}

function openActionPrompt(promptContent) {
  var errorDiv = $("#actionError");
  errorDiv.attr("style", promptStyle);
  errorDiv.html(promptImage + promptContent);
}

function closeActionPrompt() {
  var errorDiv = $("#actionError");
  errorDiv.attr("style", "");
  errorDiv.html("&nbsp;");
}

function changeVerifyCode() {
  $("#verifyImage").attr("src", "verifyImage?v=" + new Date().getTime());
}

function changeLoginIdText(loginMode) {
  $("#loginIdText").html($("#" + loginMode + " option:selected").text());
  $("#username").focus();
}

/*
$(function() {
  $("form:not(.filter) :input:visible:enabled:first").focus();
});
*/

