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 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 parseDate(str) {
    var date = new Date();
    date.setTime(Date.parse(str.replace("-", "/")));
    return date;
}

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>";
        message.innerHTML = allMessages;
    }
}

//??????????????????????
function drawMessages(result) {
    var allMessages = "";
    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>";
    }
    if (result.actionMessages && result.actionMessages.length > 0) {
        for (var i = 0; i < result.actionMessages.length; i++) {
            allMessages += "<span>" + result.actionMessages[i] + "</span>";
        }
    }
    if (allMessages != "") {
        message.innerHTML = allMessages;
    }

    if (result.script) {
        eval(result.script);
    }
}

// More convenient method of draw messages (add by huangwj 2006/03/07)
function drawReplyMessages(reply) {
    var result = reply.getResult();
    var allMessages = "";

    if (reply.isFault()) {
        allMessages += "<ul>";
        allMessages += "<li>code: " + result.code + "</li>";
        allMessages += "<li>message: " + result.message + "</li>";
        allMessages += "</ul>";
        message.innerHTML = allMessages;
        return;
    }

    if (result.script) {
        eval(result.script);
    }

    if (result.actionMessages && result.actionMessages.length > 0) {
        for (var i = 0; i < result.actionMessages.length; i++) {
            allMessages += "<span>" + result.actionMessages[i] + "</span>";
        }
        message.innerHTML = allMessages;
    }
    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>";
        message.innerHTML = allMessages;
    }
}

function alertMessages(result) {
    var allMessages = "";
    if (result.actionErrors && result.actionErrors.length > 0) {
        for (var i = 0; i < result.actionErrors.length; i++) {
            allMessages += result.actionErrors[i] + "\n";
        }
    }
    if (result.actionMessages && result.actionMessages.length > 0) {
        for (var i = 0; i < result.actionMessages.length; i++) {
            allMessages += result.actionMessages[i] + "\n";
        }
    }
    if (allMessages != "") {
        alert(allMessages);
    }

    if (result.script) {
        eval(result.script);
    }
}

function hasErrors(result) {
    return hasActionErrors(result) > 0 || hasFieldErrors(result) > 0;
}

function hasActionErrors(result) {
    return result.actionErrors.length > 0;
}

function hasActionMessages(result) {
    return result.actionMessages.length > 0;
}

function hasFieldErrors(result) {
    return result.fieldErrors.length > 0;
}

// More convenient method (add by huangwj 2006/03/07)
function hasReplyErrors(reply) {
    return reply.isFault() || hasReplyActionErrors(reply) > 0 || hasReplyFieldErrors(reply) > 0;
}

function hasReplyActionErrors(reply) {
    var result = reply.getResult();
    return reply.isFault() || result && result.actionErrors && result.actionErrors.length > 0;
}

function hasReplyActionMessages(reply) {
    var result = reply.getResult();
    return result && result.actionMessages && result.actionMessages.length > 0;
}

function hasReplyFieldErrors(reply) {
    var result = reply.getResult();
    return result && result.fieldErrors && result.fieldErrors.length > 0;
}

var buffalo = new Buffalo("");

buffalo.onLoading = function(state) {
/*
    if (state) {
        window.status = "??????...";
    }
    else {
        window.status = "????????";
    }
*/
}
