/*
 *  Project:    FAQ757
 *  Author(s):  Frank Oh
 *  Website:    www.it747.com
 *  Copyright:  This is the property of IT747.COM
 */

function
www_start()
{
    smart_table();
}

function
www_stop()
{
}

function
open_box( name )
{
    var w = open( '', name );
    w.focus();
}

function
win( name, msg )
{
    var w = window.open( '', name, '' );
    var d = w.document;

    d.open();
    d.write( msg );
    d.close();
}

function
dump_obj( obj )
{
    var msg = '';

    obj = get_object( obj );

    for ( var p in obj ) {
        msg += "<b>" + p + "</b>" + ": " + typeof( obj[ p ]) + ":" + obj[ p ] + "<br>" + "\n";
    }

    win( 'dump', msg );
}

function
not_object( obj )
{
    var ret = false;

    if ( typeof( obj ) === typeof( 'string' ) ) {
        ret = true;
    }

    return ( ret );
}

function
get_object( obj )
{
    var o = obj;

    if ( not_object( o ) ) {
        var o = document.getElementById( o );
    }

    return ( o );
}

function
hide_object( obj )
{
    var o = get_object( obj );
    var style = o.style;

    style.visibility = 'hidden';
}

function
show_object( obj )
{
    var o = get_object( obj );
    var style = o.style;

    style.visibility = 'visible';

}

function
delete_object( obj )
{
    var o = get_object( obj );
    if ( o ) {
        o.parentNode.removeChild( o );

    }
}

function
get_absolute_left( obj_id )
{
    var obj = get_object( obj_id );
    var left = obj.offsetLeft;

    while ( obj.offsetParent ) {
        var parent = obj.offsetParent;
        left += parent.offsetLeft;
        obj = parent;
    }

    return ( left );

}

function
get_absolute_top( obj_id )
{
    var obj = get_object( obj_id );
    var top = obj.offsetTop;

    while ( obj.offsetParent ) {
        var parent = obj.offsetParent;
        top += parent.offsetTop;
        obj = parent;
    }

    return ( top );
}


function
show_it( left, top, target_obj_id )
{
    var obj = document.getElementById( target_obj_id );
    var style = obj.style;

    style.position   = 'absolute';
    style.left       = left + 'px';
    style.top        = top  + 'px'
    style.zIndex     = 255;
    style.visibility = 'visible';

}

function
hide_it( target_obj_id )
{
    hide_object( target_obj_id );
}

function
hide_block( obj )
{
    var o = get_object( obj );

    if ( o ) {
        o.style.display = 'none';
    }
}

function
show_block( obj )
{
    var o = get_object( obj );

    if ( o ) {
        o.style.display = 'block';
    }
}

function
getElementsByName_usingTag( tag, name )
{
    var elements = document.getElementsByTagName( tag );
    var arr = new Array();

    for ( var i=0, j=0; i<elements.length; i++ ) {
        var value = elements[i].getAttribute( "name" );
        if ( name == value ) {
            arr[ j ] = elements[ i ];
            j++;
        }
    }

    return ( arr );
}

function
toggle( obj )
{
        // <tag id="xxx" ...
    var o = get_object( obj );

    if ( o.style.display == "none" ){
        o.style.display = "";
    } else {
        o.style.display = "none";
    }
}

function
toggle_all( tag, element_name )
{
        // <tag name="xxx" ...
    var elements = getElementsByName_usingTag( tag, element_name );
    var n = elements.length;

    for ( var i=0; i<n; i++ ) {
        toggle( elements[ i ] );
    }
}

function
is_radio_button_checked( form, button_name )
{
    var checked = false;

    for (var n=0; n<form[ button_name ].length; n++)
    {
        if ( form[ button_name][n].checked) {
            checked = true;
        }
    }

    return ( checked );
}

function
get_radio_button_value( form, button_name )
{
    var value = false;

    for (var n=0; n<form[ button_name ].length; n++)
    {
        if ( form[ button_name][n].checked ) {
            value = form[ button_name][n].value;
        }
    }

    return ( value );
}


function
smart_table()
{
    var elem = "TR"; // TR or TD

    if ( document.getElementsByTagName ) {
        var el = document.getElementsByTagName( elem );
        for(var i=0; i<el.length; i++) {
            if( el[i].childNodes[0].tagName != "TH" && el[i].parentNode.parentNode.className.indexOf( "smart_table" ) != -1) {
                if( i%2 == 1 ) {
                    el[i].className = "on";
                    el[i].oldClassName = "on";
                    el[i].onmouseout  = function() {
                        this.className = "on";
                    }
                } else {
                    el[i].className = "off";
                    el[i].oldClassName = "off";
                    el[i].onmouseout  = function() {
                        this.className = "off";
                    }
                }

                el[i].onmouseover_not_used = function() {
                    if( this.className == this.oldClassName ) {
                        this.className = "hover";
                    }
                    if( this.onmouseout == null && this.className != "click" ) {
                        this.onmouseout = function() {
                            this.className = this.oldClassName;
                        }
                    }
                }

                el[i].onclick_not_used = function() {
                    if( this.className != "click" ) {
                        this.className = "click";
                    } else {
                        this.className = this.oldClassName;
                    }
                    this.onmouseout = null;
                }
            }
        }
    }
}

function
append_onload( func )
{
    var orig_onload = window.onload;
    window.onload = function() {
        if ( orig_onload ) orig_onload();
        func();
    }
}

// resource: http://javascript.internet.com/forms/check-email.html
function
is_valid_email ( emailStr )
{
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

    var matchArray=emailStr.match(emailPat);
    if (matchArray==null) {
        return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];

    if (user.match(userPat)==null) {
        return false;
    }

    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        return false;
    }

    var domainArray=domain.match(domainPat)
    if (domainArray==null) {
        return false;
    }

    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if (domArr[domArr.length-1].length<2 ||
        domArr[domArr.length-1].length>3) {
       return false;
    }

    if (len<2) {
       return false;
    }

    return true;
}

/* vim: set expandtab sw=4 ts=4 sts=4: */
