function isNS4() {
	return (document.layers) ? true : false;
}

function isIE4() {
	return (document.all) ? true : false;
}

function addAgentDataToUrl(url) {
	var userAgent;
	if (isNS4()) {
		userAgent = "ns";
	} else if(isIE4()) {
		userAgent = "ie";
	} else {
		userAgent = "simple";
	}
	var result = url;
	if (result.indexOf("?") > -1) {
		result += "&agent=" + userAgent;
	} else {
		result += "?agent=" + userAgent;
	}
	result += "&w=" + screen.width;
	result += "&h=" + screen.height;
	return result;
}

function countChar(str,chr) {
	var _len = str.length;
	var _result = 0;
	for (var _i = 0; _i < _len; _i++) {
		if (str.charAt(_i) == chr) {
			_result++;
		}
	}
	return _result;
}

function countNonASCII(str) {
	var _len = str.length;
	var _result = 0;
	for (var _i = 0; _i < _len; _i++) {
		if (str.charCodeAt(_i) > 127) {
			_result++;
		}
	}
	return _result;
}

function countWhiteSpaces(str) {
	var _len = str.length;
	var _result = 0;
	for (var _i = 0; _i < _len; _i++) {
		if (str.charCodeAt(_i) < 33) {
			_result++;
		}
	}
	return _result;
}

function countNonDigits(str) {
	var _len = str.length;
	var _result = 0;
	for(var _i = 0; _i < _len; _i++) {
		if ((str.charCodeAt(_i) < 48) || (str.charCodeAt(_i) > 57)) {
			_result++;
		}
	}
	return _result;
}

function isInteger(n) {
	return (!isNaN(n) && (Math.ceil(n) == Math.floor(n)));
}

function isNatural(n) {
	return (isInteger(n) && (n >= 0));
}

function isPositiveNumber(n) {
	return (!isNaN(n) && (n > 0));
}

function isPositiveInteger(n) {
	return (isInteger(n) && (n > 0));
}

function trimLeft(str) {
	var _len = str.length;
	var _i;
	var _result = new String(str);
	if (_len < 1) {
		return _result;
	}
	for (_i = 0; _i < _len; _i++) {
		if ((str.charCodeAt(_i) > 32) || (str.charCodeAt(_i) < -1)) {
			break;
		}
	}
	if (_i < 1) {
		return _result;
	}
	_result = _result.substring(_i,_len);
	return _result;
}

function trimRight(str) {
	var _len = str.length;
	var _i;
	var _result = new String(str);
	if (_len < 1) {
		return _result;
	}
	for (_i = 0; _i < _len; _i++) {
		if ((str.charCodeAt(_len - _i - 1) > 32) || (str.charCodeAt(_i) < -1)) {
			break;
		}
	}
	if (_i < 1) {
		return _result;
	}
	_result = _result.substring(0,_len - _i);
	return _result;
}

function trim(str) {
	var _result = trimLeft(str);
	if (_result.length > 0) {
		_result = trimRight(_result);
	}
	return _result;
}

function isBlank(str) {
	return (trimLeft(str) == "");
}

function isEmail(str) {
	var _str = new String(trim(str));
	if (countWhiteSpaces(_str) > 0) {
		return false;
	}
	if (countNonASCII(_str) > 0) {
		return false;
	}
	if ((_str.length < 6) || (countChar(_str,"@") != 1)) {
		return false;
	}
	var leftPart = _str.substring(0,_str.indexOf("@"));
	var rightPart = _str.substr(_str.indexOf("@") + 1);
	return ((leftPart.length > 0) && (rightPart.length > 3)
		&& (countChar(rightPart,".") > 0)
		&& (rightPart.charAt(rightPart.length - 1) != ".")
		&& (rightPart.charAt(0) != "."));
}

function isPhoneNumber(str) {
	var _len = str.length;
	var _result = true;
	var _code;
	if (_len < 1) {
		return false;
	}
	for(var _i = 0; _i < _len ; _i++) {
		_code = str.charCodeAt(_i);
		if(
			(_code == 32) // space
			|| ((_code >= 48) && (_code <= 57)) // digits
			|| (_code == 43) // plus sign
			|| (_code == 45) // minus sign
			) {
			continue;
		}
		_result = false;
		break;
	}
	return _result;
}


function isWWW(str) {
	var _str = new String(trim(str));
	if (countWhiteSpaces(_str) > 0) {
		return false;
	}
	if (countChar(_str,".") < 1) {
		return false;
	}
	return true;
}

function fillLeft(s,c,l) {
	if (s.length >= l) {
		return new String(s);
	}
	var result = "";
	for (var i = 0; i < (l - s.length); i++) {
		result += c;
	}
	return result + s;
}

function fillRight(s,c,l) {
	if (s.length >= l) {
		return new String(s);
	}
	var result = "";
	for (var i = 0; i < (l - s.length); i++) {
		result += c;
	}
	return s + result;
}