function is_url( str )
{
    return is_pattern( '^https?:\\/\\/(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?(?:(?:[a-z0-9-]{1,128}\\.)+(?:com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\\.){3}(?!0|255)[0-9]{1,3})(?:\\/[a-z0-9.,_@%&?+=\\~\\/-]*)?(?:#[^ \'"&<>]*)?$', str.toLowerCase() );
}

function is_numeric( str )
{
    return is_pattern( '^[0-9]+$', str );
}

function is_integer( str )
{
    return is_numeric( str );
}

function is_float( str )
{
    return is_pattern( '^[1-9]?[0-9]+(\\.[0-9]+)?$', str );
}

function is_amount( str )
{
    return is_pattern( '^[0-9]+(\.[0-9]{0,2})?$', str );
}

function is_email( str )
{
    return is_pattern( '^([a-z0-9_-]+)(\\.[a-z0-9_-]+)*@((([a-z0-9-]+\\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2}))|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))$', str.toLowerCase() );
}

function is_pattern( pattern, str )
{
    if ( str.length && pattern.length ) {

        var re = new RegExp( pattern, 'g' );

        return re.test( str );
    }

    return false;
}

function is_string( str )
{
    str = str.replace( /[\s]/g, '' );
    for ( var i = 0; i < str.length; i++ ) {

        if ( str[ i ] != ' ' ) {

            return true;
        }
    }

    return false;
}

function is_ip_address( str )
{
    return is_pattern( '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$', str );
}

function is_ip_mask( str )
{
    if ( str == '' ) {

        return true;
    }
    return is_pattern( '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,3}$', str );
}

function is_string_or_empty( str )
{
    if ( str == '' ) {

        return true;
    }

    return is_string( str );
}

function is_identical( element )
{
    var ftarget   = false;

    if ( ftarget = element.getAttribute( 'ftarget' ) ) {

        for ( var i = 0; i < element.form.elements.length; i++ ) {

            var item = element.form.elements[ i ];

            if ( item.name == ftarget ) {
                break;
            }
        }

        if ( element.value == item.value ) {

            return true;
        }

    }

    return validate_notice( element );
}

function is_dependence( element )
{
    var ftarget   = false;

    if ( ftarget = element.getAttribute( 'ftarget' ) ) {

        for ( var i = 0; i < element.form.elements.length; i++ ) {

            var item = element.form.elements[ i ];

            if ( item.name == ftarget ) {
                break;
            }
        }
    }
    
    if ( item && is_string( item.value ) ) {

        if ( ! is_string( element.value ) ) {
            return validate_notice( element );
        }
    }

    return true;
}

function is_dependence_empty_fields( element )
{
    var ftarget   = false;

    if ( ftarget = element.getAttribute( 'ftarget' ) ) {

        for ( var i = 0; i < element.form.elements.length; i++ ) {

            var item = element.form.elements[ i ];

            if ( item.name == ftarget ) {
                break;
            }
        }
    }
    
    if ( item ) {
        
        if ( item.value == '' && element.value == '' ) {
        
            return validate_notice( element );
        }
    }

    return true;
}
