var xmlhttp=false;
var requestObject;
	
function getRequestText(url) {
	var result;
	requestObject = getRequest();
	if (!requestObject) {
		return;
	}
	requestObject.onreadystatechange = function() {
 		if (requestObject.readyState == 4) {
  			if (requestObject.status == 200) {
				
  			}
		}
	}
    requestObject.open("POST", url, false);
    requestObject.send(null);
    return requestObject.responseXML;
}
	
function getRequest() {
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
		    xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	  xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}
	
	
function aMethod(xml) {
	var fields = xml.selectNodes("validators/field");
	for(var i = 0; i < fields.length; i++) {
		if(iteratorValidator(fields[i], getNodeValue(fields[i].getAttribute("name"), document.forms[0])) == false) {
			return false;			
		}
	}
}

function getNodeValue(fieldName, form) {
	for(var i = 0; i < form.elements.length; i++) {
		if(fieldName == form.elements[i].name) {
			return form.elements[i].value;
		}
	}
}

function iteratorValidator(field, fieldValue) {
	var validators = field.selectNodes("field-validator");
	for(var i = 0; i < validators.length; i++) {
		if(validators[i].getAttribute("type") == "required") {
			if(isNull(fieldValue) == true) {
				alert(validators[i].firstChild.text);
				return false;
			}
		}
		if(validators[i].getAttribute("type") == "number") {
			if(isNumber(fieldValue) == false) {
				alert(validators[i].firstChild.text);
				return false;
			}
		}
		if(validators[i].getAttribute("type") == "regx") {
			if(isRegx(fieldValue, validators[i].getAttribute("regx")) == false) {
				alert(validators[i].firstChild.text);
				return false;
			}
		}
		if(validators[i].getAttribute("type") == "length") {
			if(isLengthEqual(fieldValue, validators[i].getAttribute("length")) == false) {
				alert(validators[i].firstChild.text);
				return false;
			}
		}
		if(validators[i].getAttribute("type") == "requiredNotEqualZero") {
			if(isNotEqualZero(fieldValue) == false) {
				alert(validators[i].firstChild.text);
				return false;
			}
		}
	}
	return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var flag = true;

function validation() {
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	var url = "validate.action?action="+document.forms[0].action;
	xmlDoc.load(getRequestText(url));
	return aMethod(xmlDoc);
}

function validationForRegInputActionUserNameSame(text) {
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	var url = "validateRegInput.action?logonName="+document.getElementById("logonName_id").value;
	xmlDoc.load(getRequestText(url));
	if(xmlDoc.xml != "") {
		if(xmlDoc.selectSingleNode("//res").firstChild.text == "true") {
			alert("?????????????????????");
			//multi
			document.getElementById("logonName_id").value = "";
			document.getElementById("logonName_id").focus();
		}
	}
}

function actCodeValidation() {
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	var url = "app/actcodeValidation.action";
	xmlDoc.load(getRequestText(url));
	if(xmlDoc.xml != "") {
		if(xmlDoc.selectSingleNode("//res").firstChild.text == "true") {
			return true;
		} else {
			return false;
		}
	}
}

function isNull(val) {
	if(val == "")
		return true;
	else 
		return false;
}

function isNumber(val) {
	var regExp = new RegExp("[0-9]+$");
	return regExp.test(val);
}

function isRegx(val, reg) {
	var regExp = new RegExp(reg);
	return regExp.test(val);
}

function isLengthEqual(val, len) {
	if(val.length <= len)
		return true; 
	else 
		return false;
}

function isNotEqualZero(val) {
	if(val == "0") 
		return false;
	else
		return true;
}

