//************************* symbol, number, space, float, integer checking****************************************************//
function hasSymbol(n){
	var ex = { excludes: [] };
	return hasSymbolEx(n,ex);
}

function hasSymbolEx(n,ex){
	for(var i=0; i<n.length; i++){
		if(ex.excludes.length==0){
			if(isNaN(n.charAt(i))){
				if(n.charAt(i).toLowerCase()==n.charAt(i).toUpperCase()){ return true;}
			}
		}else{
			var j=0;
			var r=false;
			//each input char should go through all exclude char or until meet exclude char
			while(j<ex.excludes.length){
				if(n.charAt(i)==ex.excludes[j]){
					r=false;
					j=ex.excludes.length;
				}else{
					if(isNaN(n.charAt(i)))
						if(n.charAt(i).toLowerCase()==n.charAt(i).toUpperCase()){ 
							r=true;
						}
				}
				j++;
			}
			if(r) return true;
		}
	}
	return false;
}

function hasSpace(n){
	//it seems that type of input value cannot be determined correctly
	//if this function were called by function via function from the top level.
	//So define it to avoid error.
	var t = new String(n);
	return t.indexOf(" ")>-1? true:false;
}

function isNumber(n){
	return isNumberPN(n,true);
}

function isNumberPN(n,positiveOnly){
	if(isNaN(n)){
		return false;
	}else{
		if(hasSpace(n)){
			return false;
		}else{
			if(positiveOnly){
				if(hasSymbolEx(n,{excludes: ["."]}))
					return false;
			}else{
				if(hasSymbolEx(n,{excludes: ["-","."]}))
					return false;
			}
		}
	}
	return true;
}

function isInteger(n,positiveOnly){
	if(!isNumberPN(n,positiveOnly)){
		return false;
	}else{
		//it seems that type of input value cannot be determined correctly
		//if this function were called by function via function from the top level.
		//So define it to avoid error.
		var t = new String(n);
		if(t.indexOf(".")>-1)
			return false;
	}
	return true;
}

function isFloat(n,d,positiveOnly){
	var t = new String(n);
	if(!isInteger(d,true)||d<1||!isNumberPN(n,positiveOnly)||t.indexOf(".")<0){
		return false;
	}else{
		var m = t;
		var i=t.length-1;
		var stop = false;
		while(i>-1&&!stop){
			if(t.charAt(i)=="0")
				m = m.substring(0,i);
			else
				stop=true;
			i--;
		}
		//alert(parseInt(n*Math.pow(10,d))+" "+parseInt(m.replace(".","")));
		return parseInt(n*Math.pow(10,d))>=parseInt(m.replace(".",""))? true:false;
	}
}
//************************* symbol, number, space, float, integer checking****************************************************//