function isNS() {
    return (document.layers) ? true : false;
}

function isIE() {
    return (document.all) ? true : false;
}

function isOpera() {
    return navigator.userAgent.match(/Opera/i);
}

function trim(str) {
    str = str.replace(/^\s+|\s+$/, '', str);
    return str;
}

function isBlank(str) {
    return ('' == trim(str));
}

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 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 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 openPopup(url,opt) {
    var optls=[];
    for(var prop in opt) optls.push(prop+'='+opt[prop]);
    pWnd=window.open(url, opt.name, optls.join(','));
    if(pWnd && pWnd.focus) pWnd.focus();
    return pWnd;
}

function getPosition(element) {
    var left = element.offsetLeft;
    var top = element.offsetTop;
    for (var parent = element.offsetParent; parent; parent = parent.offsetParent) {
        left += parent.offsetLeft;
        top += parent.offsetTop;
    }
    return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

