/*
 *  Project:    AD747
 *  Author(s):  Frank Oh
 *  Website:    www.it747.com
 *  Copyright:  This is the property of IT747.COM
 *              You are not allowed to change anything in this file
 *              without the permission of the owner.
 */


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 = '';

    for ( var p in obj ) {
        msg += "<b>" + p + "</b>" + ": " + typeof( obj[ p ]) + ":" + obj[ p ] + "<br>" + "\n";
    }
    // alert( msg );
    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
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
create_element( element )
{
    var body = document.getElementsByTagName( "body" ).item(0);

    body.appendChild( element );

    return;
}

function
delete_element( element )
{
    var body = document.getElementsByTagName( "body" ).item(0);

    body.removeChild( element );

    return;
}

function
create_div( name, top, left, width, height )
{
    // <div class="" id="" name="" style=""></div>
    var id = name;
    var element;
    var ele = document.getElementsByName( name ).item( 0 );

    if ( ele ) {
        element = ele;
    } else {
        element = document.createElement( "div" );
        element.setAttribute( "id", id );
        element.setAttribute( "name", id );
        element.setAttribute( "class", id );
    }


    var css = "";
    css  = " " + "position: absolute; z-index: 10; visibility: visible;";
    css += " " + "top: " + top + "px; left: " + left + "px;";
    css += " " + "width: " + width + "px; height: " + height + "px;";
    css += " " + "background-color: white;";
    element.style.cssText = css;

    if ( !ele ) create_element( element );

    return ( element );
}

function
delete_div( name )
{
    var elements = document.getElementsByName( name );
    var n = elements.length;

    for ( var i=0; i<n; i++ ) {
        delete_element( elements.item( i ) );
    }
    return;
}


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 );
}


// 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;
}

function
is_valid_number( param )
{
  var numbers = '0123456789';

  if ( param == "") return false;

  for (i=0; i<param.length; i++) {
    if ( numbers.indexOf( param.charAt(i), 0 ) == -1 ) return false;
  }
  return true;

}

function
pdf_view( href )
{
    var w = open( href, '', 'toolbar=no,scrollbars=yes,resizable=yes,width=800' );
    w.focus();
}


function
doc( href )
{
    var w = open( href, '', 'toolbar=no,scrollbars=yes,resizable=yes,width=650' );
    w.focus();

}


function
tour( href )
{
    var w = open( href, '', 'toolbar=no,scrollbars=yes,resizable=yes,width=650' );
    w.focus();

}


function
map( href )
{
    var w = open( href, 'map', 'toolbar=no,scrollbars=yes,resizable=yes,width=650' );
    w.focus();
}

function
loan( href )
{
    var w = open( href, 'loan', 'toolbar=no' );
    w.focus();

}

function
big_image( href, name )
{
    var w = open( href, 'big_image', 'toolbar=no,scrollbars=yes,resizable=yes,width=650' );

    if ( !name ) name='';

    var s = '';
    s += '<html><head><title>' + name + '</title></head><body>';
    s += '<h2>' + name + '</h2>' + '<hr>';
    s += '<img src="' + href + '" />';
    s += '</body></html>';

    w.document.write( s );
    w.document.close();
    w.focus();

}


function
result_window( window_name )
{
    if ( ! window_name ) {
        window_name = 'result';
    }
    var w = open( '', window_name, 'toolbar=no,scrollbars=yes,width=650' );
    w.focus();
}


function
show_info( show_info_id )
{
    var top  = get_absolute_top( g_show_area_id );
    var left = get_absolute_left( g_show_area_id );

    hide_all();
    show_it( left, top, show_info_id );

}

function
hide_info( hide_info_id )
{
    hide_it( hide_info_id );
}



// show / hide layered components
var g_show_area_id          = 'tools_area';
var g_mortgage_calculator_id= 'mortgage_calculator';
var g_tell_your_friend_id   = 'tell_your_friend';
var g_ask_agent_id          = 'ask_agent';
var g_print_listing_id      = 'print_listing';


function
hide_all()
{
    hide_info( g_mortgage_calculator_id );
    hide_info( g_tell_your_friend_id );
    hide_info( g_ask_agent_id );
    hide_info( g_print_listing_id );
}

function show_mortgage_calculator() { show_info( g_mortgage_calculator_id ); }
function hide_mortgage_calculator() { hide_info( g_mortgage_calculator_id ); }
function show_tell_your_friend() { tell_your_friend_reset(); show_info( g_tell_your_friend_id ); }
function hide_tell_your_friend() { hide_info( g_tell_your_friend_id ); }
function show_ask_agent() { ask_agent_reset(); show_info( g_ask_agent_id ); }
function hide_ask_agent() { hide_info( g_ask_agent_id ); }
function show_print_listing() { show_info( g_print_listing_id ); }
function hide_print_listing() { hide_info( g_print_listing_id ); }

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

/* javascript */

function
pdf_view( href )
{
    var w = open( href, 'pdf_view', 'toolbar=no,scrollbars=yes,resizable=yes,width=800' );
    w.moveTo( 0, 0 );
    w.focus();
}

function
brochure( href )
{
    var w = open( href, 'brochure', 'toolbar=no,scrollbars=yes,resizable=yes,width=730' );
    w.moveTo( 0, 0 );
    w.focus();
}

function
doc( href )
{
    var w = open( href, 'doc', 'toolbar=no,scrollbars=yes,resizable=yes,width=650' );
    w.moveTo( 0, 0 );
    w.focus();

}

function
map( href )
{
    var w = open( href, 'map', 'toolbar=no,scrollbars=yes,resizable=yes,width=650' );
    w.moveTo( 0, 0 );
    w.focus();
}

function
loan( href )
{
    var w = open( href, 'loan', 'toolbar=no' );
    w.moveTo( 0, 0 );
    w.focus();

}


function
result_window( window_name )
{
    if ( ! window_name ) {
        window_name = 'result';
    }
    var w = open( '', window_name, 'toolbar=no,scrollbars=yes,width=650' );
    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( object )
{
    var msg = '';

    obj = get_object( object );

    for ( var p in obj ) {
        msg += "<b>" + p + "</b>" + ": " + typeof( obj[ p ]) + ":" + obj[ p ] + "<br>" + "\n";
    }
    // alert( msg );
    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
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
create_element( element )
{
    var body = document.getElementsByTagName( "body" ).item(0);

    body.appendChild( element );

    return;
}

function
delete_element( element )
{
    var body = document.getElementsByTagName( "body" ).item(0);

    body.removeChild( element );

    return;
}

function
create_div( name, top, left, width, height )
{
    // <div class="" id="" name="" style=""></div>
    var id = name;
    var element;
    var ele = document.getElementsByName( name ).item( 0 );

    if ( ele ) {
        element = ele;
    } else {
        element = document.createElement( "div" );
        element.setAttribute( "id", id );
        element.setAttribute( "name", id );
        element.setAttribute( "class", id );
    }


    var css = "";
    css  = " " + "position: absolute; z-index: 10; visibility: visible;";
    css += " " + "top: " + top + "px; left: " + left + "px;";
    css += " " + "width: " + width + "px; height: " + height + "px;";
    css += " " + "background-color: #ffffff; border: 3px solid #cccccc;";
    element.style.cssText = css;

    if ( !ele ) create_element( element );

    return ( element );
}

function
delete_div( name )
{
    var elements = document.getElementsByName( name );
    var n = elements.length;

    for ( var i=0; i<n; i++ ) {
        delete_element( elements.item( i ) );
    }
    return;
}

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     = 100;
    style.visibility = 'visible';

}

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

function
show_info( show_info_id )
{
    var top  = get_absolute_top( g_show_area_id );
    var left = get_absolute_left( g_show_area_id );

    hide_all();
    show_it( left, top, show_info_id );

}

function
hide_info( hide_info_id )
{
    hide_it( hide_info_id );
}


// Image replacement
function
show_big_image( image_url, image_name, image_index )
{
    document.big_image.src = image_url;
    document.big_image.alt = image_name;
    // document.image_name.image_name.value = image_name;
    g_current_image = image_index;
}

function
show_next_image()
{
    g_current_image++;
    if ( g_current_image >= g_n_images ) g_current_image = 0;
    show_big_image( g_images[g_current_image],  g_titles[g_current_image], g_current_image );
}

function
show_prev_image()
{
    g_current_image--;
    if ( g_current_image < 0 ) g_current_image = g_n_images-1;
    show_big_image( g_images[g_current_image],  g_titles[g_current_image], g_current_image );
}


// Image Slide show

var fade_out_seq = 0;

function
do_fade_out( top, left, width, height )
{
    if ( fade_out_seq == 0 ) {
        g_top = top; g_left = left; g_width = width; g_height = height;
    } else {
        top = g_top; left = g_left; width = g_width; height = g_height;
    }

    fade_out_seq++;
    if ( fade_out_seq > 20 ) {
        fade_out_seq = 0;
        fade_out_callback();
        delete_div( "fade_out" );
    } else {
        top     = g_top + g_height - ( g_height/20 ) * fade_out_seq;
        left    = g_left - 3;    // 3 : the boder width
        width   = g_width;
        height  = g_height * (fade_out_seq/20);

        create_div( "fade_out", top, left, width, height );
        setTimeout( "do_fade_out()", 25 );
    }
}

function
fade_out( obj, callback )
{
    fade_out_callback = callback;
    var o = get_object( obj );

    var left    = get_absolute_left( o );
    var top     = get_absolute_top( o );
    var width   = o.width;
    var height  = o.height;

    // alert ( "left: " + left + " " + "top: " + top + " width: " + width + " height: " + height );
    do_fade_out( top, left, width, height );

}

var fade_in_seq = 0;

function
do_fade_in( top, left, width, height )
{

    if ( fade_in_seq == 0 ) {
        g_top = top; g_left = left; g_width = width; g_height = height;
    } else {
        top = g_top; left = g_left; width = g_width; height = g_height;
    }

    fade_in_seq++;
    if ( fade_in_seq > 20 ) {
        fade_in_seq = 0;
        delete_div( "fade_in" );
    } else {
            //  top -> bottom
        top     = g_top + ( g_height/20 ) * fade_in_seq;
        left    = g_left - 3;    // 3 : the boder width
        width   = g_width;
        height  = g_height;

        create_div( "fade_in", top, left, width, height );
        if ( fade_in_seq == 1 ) {
                fade_in_callback();
        }
        setTimeout( "do_fade_in()", 25 );
    }
}

function
fade_in( obj, callback )
{
    fade_in_callback = callback;
    var o = get_object( obj );

    var left    = get_absolute_left( o );
    var top     = get_absolute_top( o );
    var width   = o.width;
    var height  = o.height;

    // alert ( "left: " + left + " " + "top: " + top + " width: " + width + " height: " + height );
    do_fade_in( top, left, width, height );

}

var g_slide_show            = false;
var g_button_position_id    = 'slide_show_button_position';
var g_play_id               = 'slide_show_button_play';
var g_stop_id               = 'slide_show_button_stop';

function
show_button( show_button_id )
{
    var top  = get_absolute_top( g_button_position_id );
    var left = get_absolute_left( g_button_position_id );

    show_it( left, top, show_button_id );

}

function
hide_button( hide_button_id )
{
    hide_it( hide_button_id );
}


function show_play() { show_button( g_play_id ); }
function hide_play() { hide_button( g_play_id ); }
function show_stop() { show_button( g_stop_id ); }
function hide_stop() { hide_button( g_stop_id ); }

function
slide_show_next()
{
    if ( g_slide_show ) {
        fade_in( document.big_image, show_next_image );
    }
}

var g_slide_show_timeout_id=0;

function
slide_show()
{
    if ( g_slide_show ) {
        fade_out( document.big_image, slide_show_next );
        g_slide_show_timeout_id = setTimeout( "slide_show()", 7*1000 );
    } else {
        g_slide_show_timeout_id = 0;
    }

    return;
}

function
slide_show_stop()
{
    g_slide_show = false;
    if ( g_slide_show_timeout_id ) clearTimeout( g_slide_show_timeout_id );
    hide_stop();
    show_play();
}

function
slide_show_play()
{
    g_slide_show = true;

    if ( g_n_images > 1 ) {
        hide_play();
        show_stop();
        slide_show();
    } else {
        show_play();
    }
}
// special listing slide show
function sp_show_next()
{
        document.sp_image.src = sp_imgs[ sp_current_image ];
        document.form_special.sp_title.value = sp_titles[ sp_current_image ];
        sp_current_image++;
}

function sp_next()
{
        fade_in( document.sp_image, sp_show_next );
}

function sp_slide_show()
{
    if ( sp_current_image > (sp_n_images-1) ) {
        sp_current_image = 0;
    }
    {
        fade_out( document.sp_image, sp_next );
    }

    setTimeout( "sp_slide_show()", 5*1000 );
}

// show / hide layered components
var g_show_area_id          = 'show_position';
var g_mortgage_calculator_id= 'mortgage_calculator';
var g_tell_your_friend_id   = 'tell_your_friend';
var g_ask_agent_id          = 'ask_agent';
var g_print_listing_id      = 'print_listing';


function
hide_all()
{
    hide_info( g_mortgage_calculator_id );
    hide_info( g_tell_your_friend_id );
    hide_info( g_ask_agent_id );
    hide_info( g_print_listing_id );
}

function show_mortgage_calculator() { show_info( g_mortgage_calculator_id ); mortgage_calc(); }
function hide_mortgage_calculator() { hide_info( g_mortgage_calculator_id ); }
function show_tell_your_friend() { tell_your_friend_reset(); show_info( g_tell_your_friend_id ); }
function hide_tell_your_friend() { hide_info( g_tell_your_friend_id ); }
function show_ask_agent() { ask_agent_reset(); show_info( g_ask_agent_id ); }
function hide_ask_agent() { hide_info( g_ask_agent_id ); }
function show_print_listing() { show_info( g_print_listing_id ); }
function hide_print_listing() { hide_info( g_print_listing_id ); }


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;
}

function
is_valid_number( param )
{
  var numbers = '0123456789';

  if ( param == "") return false;

  for (i=0; i<param.length; i++) {
    if ( numbers.indexOf( param.charAt(i), 0 ) == -1 ) return false;
  }
  return true;

}

function
bl_view_start()
{
    slide_show_play();
}

/* javascript */

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


