﻿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 imagePath = "../images/";
//var errorStyle = "float:left;margin-left:15px;padding:3px;padding-right:10px;border:solid 1px #FF6600;background-color:#FFF2E9;";
var feildErrorStyle = "float:left;margin-left:0px;padding:2px;padding-right:10px;border:solid 1px #FF6600;background-color:#FFF2E9;color: black;";
var errorStyle = "float:left;margin-left:0px;padding:3px;border:solid 1px #FF6600;background-color:#FFF2E9;color: black;";
var errorImage = " <img src=\"../images/icon_red.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";
//var messageStyle = "float:left;margin-left:15px;padding:3px;padding-right:10px;border:solid 1px #00BE00;background-color:#E6FFE6;";
var messageStyle = "float:left;margin-left:0px;padding:3px;border:solid 1px #00BE00;background-color:#E6FFE6;color: black;";
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;color: black;";
var promptImage = " <img src=\"" + imagePath + "icon_blue.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";

function initImagePath(imagePath){
	if(!imagePath){
		return;
	}
	this.errorImage = " <img src=\"" + imagePath + "icon_red.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";
	this.messageImage = " <img src=\"" + imagePath + "icon_green.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";
	this.promptImage = " <img src=\"" + imagePath + "icon_blue.gif\" width=\"14\" height=\"14\" align=\"absmiddle\" /> ";
}

function clearMessages(divId) {
  var div = document.getElementById(divId);
  div.innerHTML = "";
  div.style.cssText = "";
}


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 drawMessages(reply, actionErrorDivName) {
  if (!actionErrorDivName) {
    actionErrorDivName = "actionError";
  }

  var result = reply.getResult();
  var allMessages = "";
  
  if (reply.isFault()) {
    allMessages += "code: " + result.code + "<br />";
    allMessages += "message: " + result.message + "";
    var errorDiv = document.getElementById(actionErrorDivName);
    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(actionErrorDivName);
    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(actionErrorDivName);
    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 && result.actionMessages.length > 0) {
    for (var i = 0; i < result.actionMessages.length; i++) {
      allMessages += result.actionMessages[i] + "\n";
    }
    alert(allMessages);
  }
  else if (result.actionErrors && 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 = "";
  errorDiv.style.display = "none";
}

function openActionPrompt(promptContent, actionErrorDivName) {
  if (!actionErrorDivName) {
    actionErrorDivName = "actionError";
  }

  var errorDiv = document.getElementById("actionError");
  errorDiv.style.cssText = promptStyle;
  errorDiv.innerHTML = promptImage + promptContent;
}

function closeActionPrompt(promptMessages, actionErrorDivName) {
  if (!actionErrorDivName) {
    actionErrorDivName = "actionError";
  }

  var actionErrorDiv = document.getElementById(actionErrorDivName);
  actionErrorDiv.innerHTML = "";
  actionErrorDiv.style.cssText = "";
  actionErrorDiv.style.display = "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;
  }
}

