function getElementByNameOrId(name) {
	var obj;
	try {
		obj = eval("document.forms[0]." + name);
	} catch(e) {}
   
	if(!obj){
		var elements;
		var formElements = document.forms[0].elements;
		if(formElements) {
			elements = new Array();
			for(var i = 0; i < formElements.length; i++) {
				if(formElements[i].name == name) {
					elements[elements.length] = formElements[i];
				}
			}

			if(elements.length == 1) {
				obj = elements[0];
			} else if(elements.length > 0) {
				obj = elements;
			}
		}

		//try id if fails
		if(!obj) obj = document.getElementById(name);
	}

	return obj;
}

function __getItemLabel(obj) {
	if(!obj || !obj.parentNode) return "";
	var pn = obj.parentNode;
	while(pn.nodeName.toUpperCase() != "TD") {
		pn = pn.parentNode;
	}
	var labelNode = pn.previousSibling;
	while(labelNode && labelNode.nodeType != 1) labelNode = labelNode.previousSibling;
	return labelNode ? labelNode.innerHTML : "";
}

function assertNotEmpty(objname, labelstr){
	if(objname == undefined) return true;

	var obj;
	if(objname.substring != undefined) {
		obj = getElementByNameOrId(objname);
	} else {
		obj = objname;
	}

   	var isCheck = false;
   
	if(!obj){
		return true;
	}

	try {
		if(obj.tagName == "SELECT"){
			var allEmpty = true;
			for(var index = 0; index < obj.options.length; index++){
				if(obj.options[index].selected){
					allEmpty = false;
					break;
				}
			}
			
			if(allEmpty){
				var msg = (obj.multiple ? ASSERT_NOT_EMPTY_MULT : ASSERT_NOT_EMPTY_ALONE) + "'" + (labelstr == undefined ? __getItemLabel(obj) : labelstr) +  "'";
				alert(msg);
				if(!obj.disabled && obj.style.display != "none")
					obj.focus();
				return false;
			}
		}else{
			if(obj.length){
				//multipal objects
				var allEmpty = true;
				var inputEnabled = false;	//whether user has input in a enabled ctrl
				var hasEnabledInput = false;
				var objFocus = null;

				for(var index = 0; index < obj.length; index++){
					if(obj[index].tagName == "INPUT"){
						var objType = obj[index].type;
						if(!objType){
							objType = "text";
						}else{
							objType = objType.toLowerCase();
						}
						
						if(objType == "checkbox" || objType == "radio"){
							isCheck = true;
							if(obj[index].checked){
								allEmpty = false;
								if(!obj[index].disabled) {
									inputEnabled = true;
								}
							}

							if(!obj[index].disabled) {
								hasEnabledInput = true;
								if(objFocus == null) {
									objFocus = obj[index];
								}
							}
						}else if(objType == "text" || objType == "hidden"){
							if(trim(obj[index].value)){
								allEmpty = false;
								if(!obj[index].disabled) {
									inputEnabled = true;
								}
							}
							if(!obj[index].disabled) {
								hasEnabledInput = true;
								if(objFocus == null) {
									objFocus = obj[index];
								}
							}
						}
					}
				}

				if(allEmpty || (hasEnabledInput && !inputEnabled)) {
					if(labelstr == undefined) {
						labelstr = __getItemLabel(obj[0]);
					}
					if (isCheck){
						var msg = ASSERT_NOT_EMPTY_MULT_CHECK + "'" + labelstr +  "'";
					}else{
						var msg = ASSERT_NOT_EMPTY_MULT + "'" + labelstr +  "'";
					}
					alert(msg);
					if(objFocus != null && !objFocus.disabled && objFocus.style.display != "none") {
						objFocus.focus();
					}
					return false;
				}
			}else{
				if(obj.tagName == "INPUT"){
					var objType = obj.type;
					if(!objType){
						objType = "text";
					}else{
						objType = objType.toLowerCase();
					}
					
					var isEmpty = false;
					if(objType == "checkbox" || objType == "radio"){
						isCheck = true;
						if(!obj.checked){
							isEmpty = true;
						}
					}else{
						if(!trim(obj.value)){
							isEmpty = true;
						}
					}
				}
				else{
					if(!obj.value){
						isEmpty = true;
					}
				}
				
					if(isEmpty){
						if (isCheck){
							var msg = ASSERT_NOT_EMPTY_ALONE_CHECK + "'" + (labelstr == undefined ? __getItemLabel(obj) : labelstr) +  "'";
						}else{
							var msg = ASSERT_NOT_EMPTY_ALONE + "'" + (labelstr == undefined ? __getItemLabel(obj) : labelstr) +  "'";
						}
						alert(msg);
						if(obj.style.display != "none" && !obj.disabled)
							obj.focus();
						return false;
					}
				
			}
		}
	
	} catch (err) {
		alert("Script error: " + err.description);
		return false;
	}
	return true;
}

function assertInteger(objname){
	if(objname == undefined) return true;

	var obj;
	if(objname.substring != undefined) {
		obj = getElementByNameOrId(objname);
	} else {
		obj = objname;
	}

	if(!obj){
		return true;
	}

	try
	{
		if(!isInteger(obj.value)){
			var msg = ASSERT_INTEGER + "'" + __getItemLabel(obj) +  "'";
			alert(msg);
			if(obj.style.display != "none" && !obj.disabled)
				obj.focus();
			return false;
		}		
	}
	catch (err) {
		alert("Script error: " + err.description);
		return false;
	}
	return true;
}

function assertPositiveInteger(objname){
	if(objname == undefined) return true;

	var obj;
	if(objname.substring != undefined) {
		obj = getElementByNameOrId(objname);
	} else {
		obj = objname;
	}

	if(!obj){
		return true;
	}

	try
	{
		if(!isInteger(obj.value)){
			var msg = ASSERT_INTEGER + "'" + __getItemLabel(obj) +  "'";
			alert(msg);
			if(obj.style.display != "none" && !obj.disabled)
				obj.focus();
			return false;
		}

		if(obj.value <= 0) {
			var msg = ASSERT_POSITIVE_INTEGER + "'" + __getItemLabel(obj) +  "'";
			alert(msg);
			if(obj.style.display != "none" && !obj.disabled)
				obj.focus();
			return false;
		}
	}
	catch (err) {
		alert("Script error[" + obj.name + "]: " + err.description);
		return false;
	}
	return true;
}
function isNumber(val)
{
	if (isNaN(val))
	{
		return false;
	}
	else
	{
	return true;
	} 
}

var reInteger = /^\d+$/;
function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return false;
       else return (isInteger.arguments[1] == true);

    return reInteger.test(s);
}

function isEmpty(s)
{   
	return ((s == null) || (s.length == 0));
}

var reEmail = /^.+\@.+\..+$/;
function isEmail (s)
{   
	if (isEmpty(s)) {
       if (isEmail.arguments.length == 1) return false;
       else return (isEmail.arguments[1] == true);
    
    } else {
       return reEmail.test(s);
    }
}



var reURL = /^http(s)?:\/\/.+\..+$/;
function isUrl (s)
{   
	if (isEmpty(s)) {
       if (isUrl.arguments.length == 1) return false;
       else return (isUrl.arguments[1] == true);
    
    } else {
       return reURL.test(s);
    }
} 
/*
var reIP = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b$/;
function isIP (s)
{   
	if (isEmpty(s)) {
       if (isIP.arguments.length == 1) return false;
       else return (isIP.arguments[1] == true);
    } else {
       return reIP.test(s);
    }
} 
*/
String.prototype.trim=function()
{
return this.replace(/(^s*)|(s*$)/g, "");
}

String.prototype.AllTrim= function()
{
　　var regEx = /s*/g;
　　return this.replace(regEx,'');　　　　　　　
}

function isIP(strIP) {
    var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
    if(re.test(strIP)){
        //alert(RegExp.$1 +'  '+RegExp.$2+'  '+RegExp.$3+'  '+RegExp.$4 );
        if( RegExp.$1 <256 && RegExp.$1 >0 && RegExp.$2<256 && RegExp.$2>=0 && RegExp.$3<256 && RegExp.$3>=0 && RegExp.$4<256 && RegExp.$4>0) 
        return true;
    }
    return false;
}


var reTrim = /(^\s*)|(\s*$)/g;
var reLTrim = /(^\s*)/g;
var reRTrim = /(\s*$)/g;
function trim(s) {
	if(s == undefined || s == "") {
		return s;
	}

	return s.replace(reTrim, "");
}
function ltrim(s) {
	if(s == undefined || s == "") {
		return s;
	}

	return s.replace(reLTrim, "");
}
function rtrim(s) {
	if(s == undefined || s == "") {
		return s;
	}

	return s.replace(reRTrim, "");
}
function isUrlValid(s) {
		var regexp = /^([A-Za-z]+:\/\/)?[A-Za-z0-9-_]+\.[A-Za-z0-9-_%&\?\/\.=\:\!\+\$]+$/;
		return regexp.test(s);
}
