var myNAME = 1, myEMAIL = 2, myTEXT = 3, myVPN = 4, myMAC = 5, myIP = 6, myMASK = 7, myNumber = 8, myString = 9, myDomain=10, myNAME2 = 11, myMultiEMail = 12;
var Ret_Pass = 0, Ret_Empty = 1, Ret_Space = 2, Ret_Limited = 3, Ret_First_Limited = 4, Ret_Invalid = 5;
var Ret_Double_Exist = 6, Ret_Zero = 7;
var HOST_IP = 0, BROADCAST_IP = 1;

function check_value(myElement, checkType) { 
	var Chk_Result = Ret_Pass;
	var value_flag = 0;

	myElement = myElement.toLowerCase();
	VALUE_RULES = "^document.*.*";
        if(myElement.match(VALUE_RULES)) {
		value_flag = 0;
		var myValue = eval(myElement+'.value');
	} else {
		value_flag = 1;
		var myValue = myElement;
	}

	if (myValue.length == 0) {
		Chk_Result = Ret_Empty;

	} else {
		switch (checkType) {
		   case myNAME :
                       {
			if (myValue.charAt(0) == "-")
				return Ret_First_Limited;

			for (var i = 0; i < myValue.length; i++) {
				if ((myValue.charAt(i) < "-") ||
				   ((myValue.charAt(i) > "-") && (myValue.charAt(i) < "0")) ||
				   ((myValue.charAt(i) > "9") && (myValue.charAt(i) < "A")) ||
				   ((myValue.charAt(i) > "Z") && (myValue.charAt(i) < "_")) ||
				   ((myValue.charAt(i) > "_") && (myValue.charAt(i) < "a")) ||
				    (myValue.charAt(i) > "z")) {
					if (myValue.charAt(i) == ".")
					    continue;
					
					Chk_Result = Ret_Limited;
					break;
				}
			}
		        break;
		       }
		   case myNAME2 :
                       {
			for (var i = 0; i < myValue.length; i++) {
				if ((myValue.charAt(i) < "0") ||
				   ((myValue.charAt(i) > "9") && (myValue.charAt(i) < "A")) ||
				   ((myValue.charAt(i) > "Z") && (myValue.charAt(i) < "_")) ||
				   ((myValue.charAt(i) > "_") && (myValue.charAt(i) < "a")) ||
				    (myValue.charAt(i) > "z")) {
					Chk_Result = Ret_Limited;
					break;
				}
			}
		        break;
		       }

		   case myEMAIL :
		       {
//			EMAIL_RULES = "^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]$";
//			EMAIL_RULES = "/.+@.+\..+/";
			var at_count = 0;
			for (var i = 0, dot_count = 0; i < myValue.length; i++) {
				if (myValue.charAt(i) == unescape('%20')) {
					Chk_Result = Ret_Space;
					break;
				}
                                if (myValue.charAt(i) == "@") {
					at_count++;
					if (at_count > 1) {
						Chk_Result = Ret_Invalid;
						break;
					}
				}
				if (myValue.charAt(i) == ".")
					dot_count++;

				if ((myValue.charAt(i) < "-") ||
				   ((myValue.charAt(i) > ".") && (myValue.charAt(i) < "0")) ||
				   ((myValue.charAt(i) > "9") && (myValue.charAt(i) < "@")) ||
				   ((myValue.charAt(i) > "Z") && (myValue.charAt(i) < "_")) ||
				   ((myValue.charAt(i) > "_") && (myValue.charAt(i) < "a")) ||
				    (myValue.charAt(i) > "z")) {
					Chk_Result = Ret_Invalid;
					break;
				}
			}
			if ((dot_count == 0) || (at_count == 0) || ((eval(myValue.length) - at_count) < 3))
				return Ret_Invalid;

		        break;
		       }

		   case myTEXT :
		       {
			for (var i = 0; i < myValue.length; i++) {
				if ((myValue.charAt(i) == unescape('%20')) ||
				    (myValue.charAt(i) == unescape('%22')) ||
				    (myValue.charAt(i) == unescape('%27')) ||
				    (myValue.charAt(i) == unescape('%3C')) ||
				    (myValue.charAt(i) == unescape('%3E')) ||
				    (myValue.charAt(i) == unescape('%5C'))) {
					Chk_Result = Ret_Limited;
					break;
				}
			}
		        break;
		       }

		   case myVPN :
                       {
			if ((myValue.charAt(0) == "-") ||
			   ((myValue.charAt(0) >= "0") && (myValue.charAt(0) <= "9")))
				return Ret_First_Limited;

			for (var i = 0; i < myValue.length; i++) {
				if ((myValue.charAt(i) < "-") ||
				   ((myValue.charAt(i) > "-") && (myValue.charAt(i) < "0")) ||
				   ((myValue.charAt(i) > "0") && (myValue.charAt(i) < "9")) ||
				   ((myValue.charAt(i) > "9") && (myValue.charAt(i) < "A")) ||
				   ((myValue.charAt(i) > "Z") && (myValue.charAt(i) < "_")) ||
				   ((myValue.charAt(i) > "_") && (myValue.charAt(i) < "a")) ||
				    (myValue.charAt(i) > "z"))
					Chk_Result = Ret_Limited;
					break;
			}
			break;
		       }

		   case myMAC :
		       {
			MAC_RULES = "^[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}$";
                        if(!myValue.match(MAC_RULES)) {
				Chk_Result = Ret_Invalid;
			}
		        break;
		       }

		   case myIP :
		       {
			IP_RULES = "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$";
                        if(!myValue.match(IP_RULES)) {
				Chk_Result = Ret_Invalid;
			}
		        break;
		       }

		   case myMASK :
		       {
			MASK_RULES = "^(((255|254|252|248|240|224|192|128)\\.0\\.0\\.0)|(255\\.(255|254|252|248|240|224|192|128)\\.0\\.0)|(255\\.255\\.(255|254|252|248|240|224|192|128)\\.0)|(255\\.255\\.255\\.(255|254|252|248|240|224|192|128)))$";
                        if(!myValue.match(MASK_RULES)) {
				Chk_Result = Ret_Invalid;
			}
		        break;
		       }
		   case myNumber :
                       {
			for (var i = 0; i < myValue.length; i++) {
				if ((myValue.charAt(i) > "9") || (myValue.charAt(i) < "0")) {
					Chk_Result = Ret_Invalid;
					break;
				}
			}
		        break;
		       }
		   case myString :
                       {
			if(myValue.search("[<>/\"']") >= 0 || myValue.search(/\\/) >= 0)
				Chk_Result = Ret_Invalid;
		        break;
		       }
		   case myDomain :
		       {
			for (var i = 0; i < myValue.length; i++) {
				if (!(((myValue.charAt(i) >= "0") && (myValue.charAt(i) <= "9")) ||
				      ((myValue.charAt(i) >= "A") && (myValue.charAt(i) <= "Z")) ||
				      ((myValue.charAt(i) >= "a") && (myValue.charAt(i) <= "z")))) {
					if (!((i == 0) || (i == (myValue.length - 1)))) {
						if ((myValue.charAt(i) == "-") || (myValue.charAt(i) == "."))
							continue;
						else {
							Chk_Result = Ret_Limited;
							break;
						}
					} else {
						Chk_Result = Ret_First_Limited;
						break;
					}
				}
			}
			break;
		       }
		   case myMultiEMail :
                       {
			var step = 0;
			if(myValue.search("[<>/\"']") >= 0 || myValue.search(/\\/) >= 0)
				Chk_Result = Ret_Invalid;
			for (var i = 0; i < myValue.length; i++) {
			    if(myValue.charAt(i) == '@') {
				if(step == 0)
				    step = 1;
				else {
				    Chk_Result = Ret_Invalid;
				    break;
				}
			    } else if(myValue.charAt(i) == ',') {
				if(step == 1)
				    step = 0;
				else {
				    Chk_Result = Ret_Invalid;
				    break;
				}
			    }
			}
			if(step == 0)
			    Chk_Result = Ret_Invalid;
		        break;
		       }
		}
	}

	if(Chk_Result != Ret_Pass && Chk_Result != Ret_Empty && value_flag == 0) {
		eval(myElement+ '.select()');
	}
		
	return Chk_Result;
}

function CHECK_CODE(myPwd) {
	var Chk_Result = Ret_Pass;

	if (myPwd.length == 0)
		return Ret_Empty;

	for(var i = 0; i < myPwd.length; i++) {
		if ((myPwd.charAt(i) < "!") || (myPwd.charAt(i) > "~")) {
			Chk_Result = Ret_Space;
			break;
		}
	}
	return Chk_Result;
}

function SEL_ELEMENT(Form_Name, Element_Name) {
	if(Form_Name == "")
		Form_Name = "a";
	eval('document.' + Form_Name + '.' + Element_Name).focus();
	eval('document.' + Form_Name + '.' + Element_Name).select();
}

function GET_NETBROAD (IP, MASK) {
	if (IP && MASK) {
		var ip = IP.split(".");
		var mask = MASK.split(".");
		var host = new Array(4);
		var broad = new Array(4);

		
		if (mask[0] != '255' ) {
			var x = parseInt(ip[0], 10);
			var y = 256 - parseInt(mask[0], 10);

			host[1] = host[2] = host[3] = '0';
			broad[1] = broad[2] = broad[3] = '255';
			while (ip[0]) {
				if (x < y) {
					host[0] = parseInt(ip[0], 10) - x;
					broad[0] = parseInt(host[0], 10) + y - 1;
					break;
				}
				x = x - y;
			}
		}
		
		if ((mask[0] == '255') && (mask[1] != '255')) {
			var x = parseInt(ip[1], 10);
			var y = 256 - parseInt(mask[1], 10);

			host[0] = ip[0]; host[2] = host[3] = '0';
			broad[0] = ip[0]; broad[2] = broad[3] = '255';
			while (ip[1]) {
				if (x < y) {
					host[1] = parseInt(ip[1], 10) - x;
					broad[1] = parseInt(host[1], 10) + y - 1;
					break;
				}
				x = x - y;
			}
		}
		
		if ((mask[1] == '255') && (mask[2] != '255')) {
			var x = parseInt(ip[2], 10);
			var y = 256 - parseInt(mask[2], 10);

			host[0] = ip[0]; host[1] = ip[1]; host[3] = '0';
			broad[0] = ip[0]; broad[1] = ip[1]; broad[3] = '255';
			while (ip[2]) {
				if (x < y) {
					host[2] = parseInt(ip[2], 10) - x;
					broad[2] = parseInt(host[2], 10) + y - 1;
					break;
				}
				x = x - y;
			}
		}

		if ((mask[2] == '255') && (mask[3] != '255')) {
			var x = parseInt(ip[3], 10);
			var y = 256 - parseInt(mask[3], 10);

			host[0] = ip[0]; host[1] = ip[1]; host[2] = ip[2];
			broad[0] = ip[0]; broad[1] = ip[1]; broad[2] = ip[2];
			while (ip[3]) {
				if (x < y) {
					host[3] = parseInt(ip[3], 10) - x;
					broad[3] = parseInt(host[3], 10) + y - 1;
					break;
				}
				x = x - y;
			}
		}
		
		if (mask[3] == '255') {
			host[0] = ip[0]; host[1] = ip[1]; host[2] = ip[2]; host[3] = ip[3];
			broad[0] = ip[0]; broad[1] = ip[1]; broad[2] = ip[2]; broad[3] = ip[3];
		}
		return [(host[0]+"."+host[1]+"."+host[2]+"."+host[3]), (broad[0]+"."+broad[1]+"."+broad[2]+"."+broad[3])];
	}
	return null;
}

function AUTO_MASK(IP, oMASK) {
	var range = 0;
	if (IP != "") {
		for (var i = 0;i < IP.length;i++) {
			if (IP.charAt(i) == ".") {
				range = IP.substring(0, i);
				break;
			}
		}
		if (range < 128)
			oMASK.value = "255.0.0.0";
		else if ((range >= 128) && (range < 192))
                        oMASK.value = "255.255.0.0";
                else if ((range >= 192) && (range <= 255))
			oMASK.value = "255.255.255.0";
	}
	return;
}
