/** $Id: replyutils.js 25875 2008-11-18 10:39:11Z zhaosf $ */
function fGetXY(a,offset) {
  var p=offset?offset.slice(0):[0,0],tn;
  while(a) {
    tn=a.tagName.toUpperCase();
    p[0]+=a.offsetLeft-(tn=="DIV"&&a.scrollLeft?a.scrollLeft:0);
    p[1]+=a.offsetTop-(tn=="DIV"&&a.scrollTop?a.scrollTop:0);
    if (tn=="BODY") break;
    a=a.offsetParent;
  }
  return p;
}

function getRadioValue(field) {
  if (field.length) {
    for (var i = 0; i < field.length; i++) {
      if (field[i].checked) {
        return field[i].value;
      }
    }
  }
  else {
    if (field.checked) {
      return field.value;
    }
  }
  return null;
}

function parseDate(str) {
    var date = new Date();
    date.setTime(Date.parse(str.replace("-", "/")));
    return date;
}

function getCheckboxValues(field, uncheckedValue) {
  var valueArray = new Array();
  if (field.length) {
    for (var i = 0; i < field.length; i++) {
      if (field[i].checked) {
        valueArray[i] = field[i].value;
      }
      else {
        valueArray[i] = uncheckedValue;
      }
    }
  }
  else {
    if (field.checked) {
       valueArray[0] = field.value;
    }
    else {
       valueArray[0] = uncheckedValue;
    }
  }
  return valueArray;
}

function getValueArray(fields) {
  var valueArray = new Array();
	
  if (!fields) {
    return valueArray;
  }

  if (!fields.length) {
    if (fields.value) {
      valueArray[0] = fields.value;
    }
      return valueArray;
  }

  if ("checkbox" == fields[0].type || "radio" == fields[0].type) {
    var index = 0;
    for (var i = 0; i < fields.length; i++) {
      if (fields[i].checked) {
        valueArray[index++] = fields[i].value;
      }
    }
  }
  else {
    for (var i = 0; i < fields.length; i++) {
      valueArray[i] = fields[i].value;
    }
  }
  return valueArray;
}

//用来客户端信息显示
var clientErrors = new Array();
var clientErrorCount = 0;

function addClientError(anErrorMessage) {
  clientErrors[clientErrorCount++] = anErrorMessage;
}

function hasClientErrors() {
    return clientErrors.length > 0;
}

function drawClientMessages() {
  var allMessages = "";
  if (clientErrors.length > 0) {
    allMessages += "<ul>";
    for (var i = 0; i < clientErrors.length; i++) {
      allMessages += "<li>" + clientErrors[i] + "</li>";
    }
    allMessages += "</ul>";
    document.getElementById("message").innerHTML = allMessages;
  }
}

var _contextPath = "";//暂且如此

var feildErrorStyle = "float:left;margin-left:5px;padding-top:2px;padding:1.5px;padding-right:10px;border:solid 1px #FF6600;background-color:#FFF2E9;";
var errorStyle = "float:left;border:solid 1px #FF6600;background-color:#FFF2E9;padding:3px;margin-top:5px;width:auto !important;width:1px;min-width:1px;white-space:nowrap;";
var errorImage = "<img src=\""+_contextPath+"/images/message/icon_red.gif\" width=\"14\" height=\"14\" align=\"absmiddle\"/>";
var messageStyle = "border:solid 1px #00BE00;background-color:#E6FFE6;padding:3px;margin-top:5px;width:auto !important;width:1px;min-width:1px;white-space:nowrap;";
var messageImage = "<img src=\""+_contextPath+"/images/message/icon_green.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" />";
var promptStyle = "float:left;margin-left:15px;padding:3px;padding-right:10px;border:solid 1px #00A8FF;background-color:#E2F5FF;";
var promptImage = "<img src=\""+_contextPath+"/images/message/icon_blue.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" />";


// 清除提示信息
function clearMessages(divId) {
  var div = document.getElementById(divId);
  div.style.display = "none";
}

// 显示客户端提示信息
function drawClientMessage(divId, message) {
  var div = document.getElementById(divId);
  div.style.cssText = messageStyle;
  div.innerHTML = messageImage + message;
  window.scrollTo(0, 0);
}

// 显示客户端提示错误信息
function drawClientError(divId, error) {
  var div = document.getElementById(divId);
  div.style.cssText = errorStyle;
  div.innerHTML = errorImage + error;
  window.scrollTo(0, 0);
}

function drawClientError1(divId, error) {
  var div = document.getElementById(divId);
  div.style.cssText = errorStyle;
  div.innerHTML = errorImage + error;
  //window.scrollTo(0, 0);
}

// 显示客户端字段信息
function drawFieldError(divId, error) {
  var div = document.getElementById(divId);
  div.style.cssText = feildErrorStyle;
  div.innerHTML = errorImage + error;

}

// 用来服务端返回信息显示
function drawMessages(reply) {
  var result = reply.getResult();
  var allMessages = "";

  // 如果返回消息有错误, 则显示异常信息
  if (reply.isFault()) {
    allMessages += "code: " + result.code + "<br />";
    allMessages += "message: " + result.message + "";
    var errorDiv = document.getElementById("actionError");
    if (errorDiv) {
      errorDiv.style.cssText = errorStyle;
      errorDiv.innerHTML = errorImage + allMessages;
    }
    return;
  }

  // If return a script, execute it
  if (result.script) {
    eval(result.script);
  }

  if (result.fieldErrors) {
    for (var i in result.fieldErrors) {
      if (i == Buffalo.BOCLASS) {
        continue;
      }
      //alert(i + ":" + result.fieldErrors[i]);
      var errorDiv = document.getElementById(i + "Error");
      //alert(errorDiv.style.cssText);
      if (errorDiv) {
        errorDiv.style.cssText = feildErrorStyle;
        errorDiv.innerHTML = errorImage + result.fieldErrors[i];
      }
    }
  }

  if (result.actionMessages && result.actionMessages.length > 0) {
    //for (var i = 0; i < result.actionMessages.length; i++) {
    //    allMessages += "<span>" + result.actionMessages[i] + "</span>";
    //}
    //document.getElementById("message").innerHTML = allMessages;

    var errorDiv = document.getElementById("actionError");
    if (errorDiv) {
      errorDiv.style.cssText = messageStyle;
      errorDiv.innerHTML = messageImage + result.actionMessages;
    }
  }
  else if (result.actionErrors && result.actionErrors.length > 0) {
    //allMessages += "<ul>";
    //for (var i = 0; i < result.actionErrors.length; i++) {
    //    allMessages += "<li>" + result.actionErrors[i] + "</li>";
    //}
    //allMessages += "</ul>";
    //document.getElementById("message").innerHTML = allMessages;

    var errorDiv = document.getElementById("actionError");
    if (errorDiv) {
      errorDiv.style.cssText = errorStyle;
      errorDiv.innerHTML = errorImage + result.actionErrors;
    }
  }
}

function drawSuccessMessage(successMessage) {
  var errorDiv = document.getElementById("actionError");
  errorDiv.style.cssText = messageStyle;
  errorDiv.innerHTML = messageImage + successMessage;
}

function alertMessages(reply) {
  var result = reply.getResult();
  var allMessages = "";

  // 如果返回消息有错误, 则显示异常信息
  if (reply.isFault()) {
    allMessages += "code: " + result.code + "\n";
    allMessages += "message: " + result.message + "\n";
    alert(allMessages);
    return;
  }

  // If return a script, execute it
  if (result.script) {
    eval(result.script);
  }

  if (result.actionMessages.length > 0) {
    for (var i = 0; i < result.actionMessages.length; i++) {
      allMessages += result.actionMessages[i] + "\n";
    }
    alert(allMessages);
  }
  else if (result.actionErrors.length > 0) {
    for (var i = 0; i < result.actionErrors.length; i++) {
      allMessages += result.actionErrors[i] + "\n";
    }
    alert(allMessages);
  }
}

function hasErrors(reply) {
  return reply.isFault() || hasActionErrors(reply) > 0 || hasFieldErrors(reply) > 0;
}

function hasActionErrors(reply) {
  var result = reply.getResult();
  return result && result.actionErrors && result.actionErrors.length > 0;
}

function hasActionMessages(reply) {
  var result = reply.getResult();
  return result && result.actionMessages && result.actionMessages.length > 0;
}

function hasFieldErrors(reply) {
  var result = reply.getResult();
  if (!result || !result.fieldErrors) {
    return false;
  }

  var errors = result.fieldErrors;
  for (i in errors) {
    return true;
  }

  return false;
}

var buffalo = new Buffalo("");

buffalo.onLoading = function(state) {
/*
    if (state) {
        window.status = "加载中...";
    }
    else {
        window.status = "加载完成";
    }
*/
}

function openPrompt(field) {
  var promptMessage = promptMessages[field.name];
  if (!promptMessage) {
    return;
  }
  var errorDiv = document.getElementById(field.name + "Error");
  errorDiv.style.cssText = promptStyle;
  errorDiv.innerHTML = promptImage + promptMessage;
}

function closePrompt(field) {
  var errorDiv = document.getElementById(field.name + "Error");
  errorDiv.style.cssText = "";
  errorDiv.innerHTML = "";
}

function openActionPrompt(promptContent) {
  var errorDiv = document.getElementById("actionError");
  errorDiv.style.cssText = promptStyle;
  errorDiv.innerHTML = promptImage + promptContent;
}

function closeActionPrompt(promptMessages) {
  var actionErrorDiv = document.getElementById("actionError");
  actionErrorDiv.innerHTML = "";
  actionErrorDiv.style.cssText = "";
  actionErrorDiv.style.disply = "none";

  if (promptMessages == null) {
    return;
  }

  for (var fieldName in promptMessages) {
    var fieldErrorDiv = document.getElementById(fieldName + "Error");
    if (fieldErrorDiv) {
      fieldErrorDiv.style.cssText = "";
      fieldErrorDiv.innerHTML = "";
    }
  }  
}

function isDate(dateStr, dilimeter) {
  if (dateStr == null) {
    return false;
  }

  if (dilimeter == "" || dilimeter == null) {
    dilimeter = "-";
  }

  var tempy = "";
  var tempm = "";
  var tempd = "";
  var tempArray;
  if (dateStr.length < 8 && dateStr.length > 10) {
    return false;
  }

  tempArray = dateStr.split(dilimeter);
  if (tempArray.length != 3) {
    return false;
  }

  if (tempArray[0].length == 4) {
    tempy = tempArray[0];
    tempd = tempArray[2];
  } else {
    tempy = tempArray[2];
    tempd = tempArray[1];
  }
  tempm = tempArray[1];
  var tDateString = tempy + "/" + tempm + "/" + tempd;
  var tempDate = new Date(tDateString);
  if (isNaN(tempDate)) {
    return false;
  }

  if (((tempDate.getUTCFullYear()).toString() == tempy)
      && (tempDate.getMonth() == parseInt(tempm) - 1)
      && (tempDate.getDate() == parseInt(tempd))) {
    return true;
  } else {
    return false;
  }
}

