var bgzDDEnabled = true;

function init( ){
    initA( );
    initObjects( );
    initRecords( );

    if(window.load_cufon){ loadCufonFonts( ); }
}

function initPopup( ){
    /*var lnk = window.location.href.toString( );
    if(lnk.match(/\/view_mls.php\?/) && window.resizeTo){
        window.resizeTo(1080, 980);
    }*/
    initTopMenuLinks( );
    initPriceHistory( );
    if(window.load_cufon){ loadCufonFonts( ); }
    if(window.load_mls_map){
        loadGoogleMap(false, false, false, false);
    }
}

function report_mls(mls, mls_class){
    window.location = '/real-estate.html?mls=' + mls + '?class=' + mls_class + '&report=1';
    return false;
}

function initA( ){
    if(!document.getElementsByTagName){
        return;
    }

    var links = document.getElementsByTagName('a');

    for(var i = 0; i < links.length; i++){
        var a = links[i];
        if(a.href.match(/orion\.mcad\-tx\.org/)){
            a.target = '_blank';
        }
    }
}

function initObjects( ){
    if(document.getElementsByTagName){
        var objects = document.getElementsByTagName("div");
        var len = objects.length;

        for(var i = 0; i < len; i++){
            var obj = objects[i];
            if(obj.className && obj.className == 'bgzobject'){
                var paramStr = '';
                var objStr = '\n<object ';
                var embedStr = '\n<embed ';
                var params = obj.getElementsByTagName('param');
                var plen = params.length;
                var o_type = '';
                var o_filename = '';
                var o_width = '';
                var o_height = '';
                //need o_type, it will be first or second in the list, but just in case.
                for(j = 0; j < plen; j++){
                    var param = params[j];
                    var pn = param.name;
                    var pv = param.value;
                    if(pn == 'o_type'){
                        o_type = pv;

                        //do this here because we have to force video type for wmv files
                        var isWindows = false;
                        //if( o_type != 'wmv' && !document.all){
                        //     isWindows = false;
                        //}else if(o_type == 'wmv' || navigator.userAgent.match(/windows/i)){
                        if(o_type == 'wmv' || navigator.userAgent.match(/windows/i)){
                            isWindows = true;
                        }

                        break;
                    }
                }
                for(j = 0; j < plen; j++){
                    var param = params[j];
                    var pn = param.name;
                    var pv = param.value;

                    switch(pn){
                    case 'o_type':
                        if(o_type == 'swf'){
                            embedStr += ' type="application/x-shockwave-flash" ';
                            objStr += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
                            objStr += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ';
                        }
                        else if(isWindows && o_type != 'mov'){

                            embedStr += ' type="application/x-mplayer2" ';
                            embedStr += '  pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" ';
                            objStr += ' classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" ';
                            objStr += ' standby="Loading..." ';
                            objStr += ' type="application/x-oleobject" ';
                            objStr += ' codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" ';
                        }
                        else{
                            embedStr += ' pluginspage="http://www.apple.com/quicktime/download/" ';
                            objStr += ' classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" ';
                            objStr += ' codebase="http://www.apple.com/qtactivex/qtplugin.cab" ';
                        }
                        break;
                    case 'o_filename':
                        o_filename = pv;
                        if(o_type == 'swf'){
                            paramStr += ' <param name="movie" value="/docs/' + pv + '" /> \n';
                        }
                        else if(isWindows && o_type != 'mov'){
                            paramStr += ' <param name="filename" value="/docs/' + pv + '" /> \n';
                        }
                        else{
                            paramStr += ' <param name="src" value="/docs/' + pv + '" /> \n';
                        }
                        embedStr += ' src="/docs/' + pv + '" ';

                        break;
                    case 'o_width':
                        o_width = pv;
                        obj.width = pv;
                        embedStr += ' width="' + pv + '" ';
                        objStr += ' width="' + pv + '" ';
                        break;
                    case 'o_height':
                        o_height = pv;
                        obj.height = pv;
                        embedStr += ' height="' + pv + '" ';
                        objStr += ' height="' + pv + '" ';
                        break;
                    default:
                        pn = pn.replace(/^(o\_)/, '');

                        if(!isWindows && pn == 'showcontrols'){
                            pn = 'controller';
                        }

                        if(pn == 'transparency'){
                            pn = 'wmode';
                            pv = 'transparent';
                        }

                        paramStr += ' <param name="' + pn + '" value="' + pv + '" /> ';

                        if(pv.toLowerCase( ) == 'false'){
                            pv = '0';
                        }
                        else if(pv.toLowerCase( ) == 'true'){
                            pv = '1';
                        }

                        if(pn == 'showcontrols'){
                            if(pv == '0'){
                                paramStr += ' <param name="ShowStatusBar" value="false" /> \n';
                                embedStr += ' showstatusbar="0" ';
                            }
                            else{
                                paramStr += ' <param name="ShowStatusBar" value="true" /> \n';
                                embedStr += ' showstatusbar="1" ';
                            }
                        }

                        embedStr += ' ' + pn + '="' + pv + '" ';


                        break;
                    }
                }//end params

                embedStr += '></embed>\n';
                objStr += '>\n';
                //alert(objStr + paramStr + embedStr + '</object>');
                obj.innerHTML = objStr + paramStr + embedStr + '</object>\n';
                //alert(obj.innerHTML);
                obj.style.display = 'block';
            }//end if bgzobject
        }
    }
}

var hover_mls = 0;
var hovering_over_row = false;
function checkImageLoad( ){
    if($('#image_preview_' + mls_num + ' img').length > 0 || $('#image_preview_' + mls_num + ' .load_error').length > 0){
        hover_mls = 0;
        hovering_over_row = false;
    }

    if(hovering_over_row && hover_mls > 0){
        b_xml.request('/get_image_preview.php?mls=' + hover_mls);
        setTimeout('checkImageLoad( )', 500);
    }
}

function initRecords( ){
    if($('#workNode').length == 0){
        $('body').append('<div id="workNode"></div>');
        $('#workNode').hide( );
    }

    if(document.getElementsByTagName){
        var tbls = document.getElementsByTagName('table');
        var tlen = tbls.length;


        //mlsHashA = new Array( );
        /*var mlsCookie = getCookie("vMLS");
        if(mlsCookie != ''){
            var mlsCA = mlsCookie.split(/\|/);
            var mlsCLen = mlsCA.length;

            alert(mlsCLen);
            for(var i = 0; i < mlsCLen; i++){
                mlsHashA["-" + mlsCA[i] + "-"] = new Object;
                mlsHashA["-" + mlsCA[i] + "-"].num = mlsCA[i];
            }
        }*/
        //

        for(var i = 0; i < tlen; i++){
            var tbl = tbls[i];
            if(!tbl){ continue; }
            if(tbl.className != 'show'){ continue; }
            var trs = tbl.getElementsByTagName("tr");
            var len = trs.length;

            for(var j = 0; j < len; j++){
                var tr = trs[j];

                if(!tr){ continue; }

                //
                var trID = tr.id;
                var idA = trID.split(/\-/);
                var mlsNum = idA[1];

                for(var m in mlsHashA){
                    mls = m.replace(/\-/g, '');
                    if(mlsNum == mls){
                        tr.className = "cellVisited";
                    }
                }
                //

                var tds = tr.getElementsByTagName("td");
                var tdlen = tds.length;

                tr.t_href = '/';
                for(var k = 0; k < tdlen; k++){
                    var td = tds[k];

                    if(td){
                        var a_tags = td.getElementsByTagName('a');
                        if(a_tags.length > 0){
                            var a = a_tags.item(0);
                            if(a.href.match(/property-details/)){
                                tr.t_href = a.href;
                                td.innerHTML = a.innerHTML;
                            }
                        }
                    }

                    $(td).mouseenter(function( ){
                        //if(!$(this).hasClass('mapLnk')){
                            property_values = $(this).parent( ).attr('id').split('-');
                            prop_type = property_values[0];
                            mls_num = property_values[1];
                            if(mls_num != undefined){
                                if($('#image_preview_' + mls_num + ' img').length == 0 && $('#image_preview_' + mls_num + ' .load_error').length == 0){
                                    $('body').append('<div id="image_preview_' + mls_num + '" class="property_preview_loader"></div>');
                                    //build, load image
                                    //b_xml.request('/get_image_preview.php?mls=' + mls_num);
                                }

                                cell_parent = $(this).parent( );
                                preview_left = $(cell_parent).offset( ).left + $(cell_parent).width( ) - 177;
                                $('#image_preview_' + mls_num).css({'top': $(cell_parent).offset( ).top + 'px'});
                                $('#image_preview_' + mls_num).css({'left': preview_left + 'px'});

                                //show the image
                                $('#image_preview_' + mls_num).show( );

                                hover_mls = mls_num;
                                hovering_over_row = true;

                                setTimeout('checkImageLoad( )', 800);
                            }
                        //}
                    }).mouseleave(function( ){
                        //if(!$(this).hasClass('mapLnk')){
                            property_values = $(this).parent( ).attr('id').split('-');
                            prop_type = property_values[0];
                            mls_num = property_values[1];
                            if($('#image_preview_' + mls_num).length != 0){
                                $('#image_preview_' + mls_num).hide( );
                            }

                            hover_mls = 0;
                            hover_over_row = false;
                        //}
                    });

                    if(tr.id != ''){
                        tr.onmouseover = function( ){
                            var tId = this.id;
                            this.classNameBak = this.className;
                            this.className = "cellOver";
                        }
                        tr.onmouseout = function( ){
                            this.className = this.classNameBak;
                        }
                        td.onclick = function( ){
                            //alert(this.className + " " + k);
                            if(this.className != 'mapLnk'){
                                //cid=489807&mlnum=1825375&ALLMLS=Y&class=2&themecolor=29048C&sTYPE=0&PUBLICID=
                                //http://www.har.com/search/idx/DispSearch.cfm?cid=489807&mlnum=2529844&ALLMLS=Y&class=2&themecolor=29048C&sTYPE=0&PUBLICID=
                                //http://www.har.com/search/idx/DispSearch.cfm?cid=489807&mlnum=1595059&ALLMLS=Y&class=2&themecolor=29048C&sTYPE=0&PUBLICID=


                                var trId = (this.parentNode.id);
                                var idA = trId.split(/\-/);

                                //
                                this.parentNode.classNameBak = "cellVisited";
                                this.parentNode.className = "cellVisited";
                                var mlsCookie = getCookie("vMLS");

                                setcookie("vMLS", mlsCookie + idA[1] + "|");
                                //

                                if(idA.length == 3){
                                    var t_type = idA[0].toLowerCase( );
                                    var t_id = idA[1];
                                    var t_class = null;


                                    //it seems as if this information would be pulled automaticly
                                    //on the script, but it isn't.  Not sure why...
                                    t_type
                                    switch(t_type){
                                    case 'res':
                                        t_class = '1';
                                        break;
                                    case 'cnd':
                                        t_class = '2';
                                        break;
                                    case 'lnd':
                                        t_class = '3';
                                        break;
                                    case 'acr':
                                        t_class = '5';
                                        break;
                                    case 'rnt':
                                        t_class = '7';
                                    case 'hir':
                                        t_class = '8';
                                    default:
                                        break;
                                    }

                                    if(t_class){
                                        //this is where we take over
                                        //var lnk = "/view_mls.php?mls=" + t_id + "&printoptions=" + 0;
                                        var lnk = this.parentNode.t_href;

                                        //var mlsPop = window.open(lnk, "_blank");
                                        window.location = lnk;
                                    }
                                    else{
                                        alert('MLS Number ' + t_id + ' with type ' + t_type + ' is not supported');
                                    }
                                }
                            }
                        }
                    }
                }
            }//end for each trs
        }//end foreach table
    }
}

function viewMLS_listing(t_id){
    if(parseInt(t_id) > 0){
        var lnk = "http://www.lakeconroecentral.com/view_mls.php?mls=" + t_id;
        window.location = lnk;
        //var mlsPop = window.open(lnk, "mlsPopUp", "width=780,height=600, scrollbars=1, status=no,toolbar=no,resizable=yes");
        //mlsPop.focus( );
    }
    else{
        alert('Enter an MLS number in the field');
    }
}


function setcookie(cookieName,cookieValue){
    //sets a cookie that expires at the end of the session
    document.cookie = cookieName + "=" + escape(cookieValue) + ";path=/";
}

function getCookie(cname){
    var dc = document.cookie;
    var prefix = cname + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1){
        begin = dc.indexOf(prefix);
        if (begin != 0) return '';
    }
    else{
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1){
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function generalPopUp(loc, w, h, scrollB){
    if(!scrollB){
        scrollB = 0;
    }

    gPopUp = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=" + scrollB + ", status=no,toolbar=no,resizable=yes");
    gPopUp.focus( );
}

function changeMLSImg(imgIndex){
    var imgC = document.getElementById('imgMain');
    var imgD = document.getElementById('imgDesc');

    if(!imgC || !imgD || !imgA || !imgDescA){
        return;
    }

    imgC.src = imgA[imgIndex].src;
    imgD.innerHTML = imgDescA[imgIndex];

    return false;
}

function changeGalleryImg(imgSrc, imgDesc){
    var imgC = document.getElementById('mainImage');
    var imgD = document.getElementById('mainImageDesc');

    if(!imgC || !imgD || !imgSrc){
        return;
    }

    imgC.getElementsByTagName('img')[0].src = imgSrc;
    imgD.innerHTML = imgDesc;
}

function getMap(mlsID){
    var mapPopup = window.open('/hmls_map.php?id=' + mlsID, "MLSMap", "width=600,height=500, menubar=no, location=no, scrollbars=yes, status=no,toolbar=no,resizable=yes");
    mapPopup.focus( );
}

function getImages(mlsNum, prop_type){
    b_xml.request('/get_images.php/mls/' + mlsNum + '/class/' + prop_type);
}

function initTopMenuLinks( ){
    var hmenu = document.getElementById('vptmenu');
    if(!hmenu){ return; }
    var tdA = hmenu.getElementsByTagName('td')
    var len = tdA.length;
    for(var i = 0; i < len; i++){
        var td = tdA[i];
        if(bgzDDEnabled){
            td.bgzdd = new bgzDropDown( );
            var ul = td.getElementsByTagName('ul')[0];
            if(ul){
                td.bgzdd.init(td, ul, 'down');
            }
        }
    }
}

//***********************
//Google Map Properties *
//***********************

var map;
var active_markers = new Array( );
var old_markers = new Array( );
var old_location = new String( );
var cur_id;
var myPano;
var panoClient;
function loadGoogleMap(lat, lon, msg, msg2, mls_id){
    if(!lat || !lon){
        lat = document.getElementById('lat').value;
        lon = document.getElementById('lon').value;
        msg = document.getElementById('msg').value;
        msg2 = document.getElementById('msg2').value;
        mls_id = document.getElementById('uid').value;
    }

    if(GBrowserIsCompatible( )) {
        var msg = unescape(msg);
        msg = msg.replace(/\+/g, ' ');

        var msg2 = unescape(msg2);
        msg2 = msg2.replace(/\+/g, ' ');

        var infoTabs = [new GInfoWindowTab("Address", msg), new GInfoWindowTab("Details", msg2)];

        var google_map_div = document.getElementById("map");
        var google_map_width = google_map_div.style.width.replace('px', '');
        var google_map_height = google_map_div.style.height.replace('px', '');

        map = new GMap2(google_map_div);
        map.setUIToDefault( );

        var point = new GLatLng(lat, lon);

        map.setCenter(point, 17);
        map.setMapType(G_HYBRID_MAP);

        var cur_icon = new GIcon( );
        cur_icon.image = "/images/mls_blue.png";
        cur_icon.iconSize = new GSize(18, 35);
        cur_icon.iconAnchor = new GPoint(9, 34);

        marker_options = { icon:cur_icon, zIndexProcess:markerZIndex };

        var marker = new GMarker(point, marker_options);
        marker.importance = 1;
        map.addOverlay(marker);

        var sv_container = document.getElementById("google_pano");
        if(sv_container){
            panoClient = new GStreetviewClient( );

            myPano = new GStreetviewPanorama(sv_container);
            svOverlay = new GStreetviewOverlay( );
            map.addOverlay(svOverlay);
            myPano.setLocationAndPOV(point);
            GEvent.addListener(myPano, "error", handleNoFlash);
        }

        //GEvent.addListener(marker, "click", function( ){
            if(sv_container){
                panoClient.getNearestPanorama(point, showPanoData);
            }

            map.openInfoWindowTabsHtml(point, infoTabs);
        //});

        GEvent.addListener(marker, "click", function( ){
            if(sv_container){
                panoClient.getNearestPanorama(point, showPanoData);
            }

            map.openInfoWindowTabsHtml(point, infoTabs);
        });

        cur_id = mls_id;

        googleMapsMove( );
        GEvent.addListener(map, "moveend", googleMapsMove);
    }
    else{
        alert("Your browser does not support Google Maps, it is recommended you download Firefox from http://www.mozilla.com.");
    }
}

var pageMap1;
var pageMap2;
function loadGoogleMapOnPage(lat, lon){

    var latLon = new google.maps.LatLng(lat,lon);
    var map_options = {
        zoom: 17,
        center: latLon,
        mapTypeId: google.maps.MapTypeId.HYBRID
    }

    if(!document.getElementById("map1")){
        return;
    }

    pageMap1 = new google.maps.Map(document.getElementById("map1"), map_options);

    var img = '../images/mcr/map_icon.png';
    var marker = new google.maps.Marker({
        position: latLon,
        map: pageMap1,
        icon: img
    });
}

function markerZIndex(marker, b){
    return GOverlay.getZIndex(marker.getPoint( ).lat( )) + marker.importance * 1000000;
}

function googleMapsMove( ){
    var google_map_div = document.getElementById("map");
    var google_map_width = google_map_div.style.width.replace('px', '');
    var google_map_height = google_map_div.style.height.replace('px', '');

    var tl_corner_px = new GPoint(0, 0);
    var tl_corner_ll = map.fromContainerPixelToLatLng(tl_corner_px, true);

    var tl_corner_ll = new String(tl_corner_ll);
    var tl_corner_ll = tl_corner_ll.replace(/\)|\(/g, '');
    var tl_corner_ll = tl_corner_ll.replace(/\s+/, '');

    var br_corner_px = new GPoint(google_map_width  - 5, google_map_height - 5);
    var br_corner_ll = map.fromContainerPixelToLatLng(br_corner_px, true);

    var br_corner_ll = new String(br_corner_ll);
    var br_corner_ll = br_corner_ll.replace(/\)|\(/g, '');
    var br_corner_ll = br_corner_ll.replace(/\s+/, '');

    cur_zoom = map.getZoom( );
    if(old_location != ''){
        var old_tl_llA = old_location.split(',');
        var old_tl_lat = parseFloat(old_tl_llA[0]);
        var old_tl_lng = parseFloat(old_tl_llA[1]);

        var new_tl_llA = tl_corner_ll.split(',');
        var new_tl_lat = parseFloat(new_tl_llA[0]);
        var new_tl_lng = parseFloat(new_tl_llA[1]);

        //only refresh the markers if they've moved far enough
        //alert(cur_zoom);
        //alert(old_tl_llA);
        //alert(new_tl_llA);
        //alert(Math.abs(old_tl_lat - new_tl_lat));
        //alert(Math.abs(old_tl_lng - new_tl_lng));
        if(cur_zoom <= 7 && Math.abs(old_tl_lat - new_tl_lat) < .384 && Math.abs(old_tl_lng - new_tl_lng) < .384){
            return;
        }
        if(cur_zoom == 8 && Math.abs(old_tl_lat - new_tl_lat) < .192 && Math.abs(old_tl_lng - new_tl_lng) < .192){
            return;
        }
        if(cur_zoom == 9 && Math.abs(old_tl_lat - new_tl_lat) < .096 && Math.abs(old_tl_lng - new_tl_lng) < .096){
            return;
        }
        if(cur_zoom == 10 && Math.abs(old_tl_lat - new_tl_lat) < .048 && Math.abs(old_tl_lng - new_tl_lng) < .048){
            return;
        }
        if(cur_zoom == 11 && Math.abs(old_tl_lat - new_tl_lat) < .024 && Math.abs(old_tl_lng - new_tl_lng) < .024){
            return;
        }
        if(cur_zoom == 12 && Math.abs(old_tl_lat - new_tl_lat) < .012 && Math.abs(old_tl_lng - new_tl_lng) < .012){
            return;
        }
        if(cur_zoom == 13 && Math.abs(old_tl_lat - new_tl_lat) < .006 && Math.abs(old_tl_lng - new_tl_lng) < .006){
            return;
        }
        if(cur_zoom == 14 && Math.abs(old_tl_lat - new_tl_lat) < .003 && Math.abs(old_tl_lng - new_tl_lng) < .003){
            return;
        }
        if(cur_zoom == 15 && Math.abs(old_tl_lat - new_tl_lat) < .001 && Math.abs(old_tl_lng - new_tl_lng) < .001){
            return;
        }
        if(cur_zoom == 16 && Math.abs(old_tl_lat - new_tl_lat) < .0005 && Math.abs(old_tl_lng - new_tl_lng) < .0005){
            return;
        }
        if(cur_zoom == 17 && Math.abs(old_tl_lat - new_tl_lat) < .00025 && Math.abs(old_tl_lng - new_tl_lng) < .00025){
            return;
        }
        if(cur_zoom == 18 && Math.abs(old_tl_lat - new_tl_lat) < .00012 && Math.abs(old_tl_lng - new_tl_lng) < .00012){
            return;
        }
        if(cur_zoom == 19 && Math.abs(old_tl_lat - new_tl_lat) < .00006 && Math.abs(old_tl_lng - new_tl_lng) < .00006){
            return;
        }
    }

    old_location = tl_corner_ll;

    //alert("/get_markers.php?tl=" + tl_corner_ll + "&br=" + br_corner_ll);

    var request = GXmlHttp.create( );
    request.open("GET", "/get_markers.php?tl=" + tl_corner_ll + "&br=" + br_corner_ll + "&cz=" + cur_zoom + "&id=" + cur_id, true);
    request.onreadystatechange = function() {
        if(request.readyState == 4){
            document.getElementById('map_loader').style.display = 'none';
            var xmlDoc = GXml.parse(request.responseText);
            var markers = xmlDoc.documentElement.getElementsByTagName("marker");

            old_markers = active_markers;
            active_markers = new Array( );
            for(var i = 0; i < markers.length; i++){
                var lat = parseFloat(markers[i].getAttribute("lat"));
                var lng = parseFloat(markers[i].getAttribute("lng"));

                var point = new GLatLng(lat, lng);

                var tabs = markers[i].getElementsByTagName('tab');
                var tab1 = unescape(markers[i].getAttribute("tab1"));
                tab1 = tab1.replace(/\+/g, ' ');
                var tab2 = unescape(markers[i].getAttribute("tab2"));
                tab2 = tab2.replace(/\+/g, ' ');

                var address = unescape(markers[i].getAttribute("address"));
                address = address.replace(/\+/g, ' ');

                if(!old_markers[point]){
                    var t_marker = createMarker(point, tab1, tab2, address);
                    active_markers[point] = t_marker;
                }
                else{
                    active_markers[point] = old_markers[point];
                }
            }

            for(var k in old_markers){
                if(!active_markers[k]){
                    map.removeOverlay(old_markers[k]);
                    old_markers[k] = false;
                }
            }
        }
        else{
            document.getElementById('map_loader').style.display = 'block';
        }
    }
    request.send(null);
}

function createMarker(point, tab1, tab2, address){
    if(GBrowserIsCompatible( )) {
        var infoTabs = [new GInfoWindowTab("Address", tab1), new GInfoWindowTab("Details", tab2)];

        var icon = new GIcon( );
        icon.image = "/images/mls_orange.png";
        icon.iconSize = new GSize(18, 35);
        icon.iconAnchor = new GPoint(9, 35);

        var marker = new GMarker(point, icon);
        map.addOverlay(marker);

        var sv_container = document.getElementById("google_pano");
        GEvent.addListener(marker, "click", function( ){
            map.openInfoWindowTabsHtml(point, infoTabs);

            document.getElementById('endAddress').value = address;
            document.getElementById('endAddressDisp').innerHTML = address;

            if(sv_container){
                panoClient.getNearestPanorama(point, showPanoData);
            }
        });

        return marker;
    }
    else{
        alert("Your browser does not support Google Maps, it is recommended you download Firefox from http://www.mozilla.com.");
    }
}

function handleNoFlash(errorCode){
    if(errorCode == 603){
        //alert("Error: Flash doesn't appear to be supported by your browser");
        return;
    }
}

function showPanoData(panoData) {
    if (panoData.code != 200) {
        //GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
        return;
    }

    var sv_container = document.getElementById("google_pano");
    sv_container.style.display = 'block';

    myPano.setLocationAndPOV(panoData.location.latlng);
}

function setDirections(toAddress, fromAddress){
    if(!fromAddress || !toAddress){
        return;
    }

    var mapObj = document.getElementById("map");
    if(!mapObj){
        return;
    }

    var directions = document.getElementById('directions');
    if(!directions){
        return;
    }

    var map = new GMap2(mapObj);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    gdir = new GDirections(map, directions);
    GEvent.addListener(gdir, "load", onGDirectionsLoad);
    GEvent.addListener(gdir, "error", handleErrors);

    gdir.load("from: " + fromAddress + " to: " + toAddress);

}

function handleErrors( ){
    if (gdir.getStatus( ).code == G_GEO_UNKNOWN_ADDRESS)
        alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_SERVER_ERROR)
        alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_MISSING_QUERY)
        alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_BAD_KEY)
        alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_BAD_REQUEST)
        alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);

    else alert("An unknown error occurred.");
}

function onGDirectionsLoad( ){
    var directions = document.getElementById('directions');
    directions.style.display = 'block';
}

function loadCufonFonts( ){
    Cufon.replace('#vptmenu td span a, #schedule_button,h2,#tb_menu td a',{
        fontFamily: 'tahoma'
    });
    Cufon.replace('#hh_phone, #sub_links td a, #aff_hh_phone',{
        fontFamily: 'futura'
    });
    Cufon.replace('#pagetitle, h4',{
        fontFamily: 'tahoma'
    });
}

function initPriceHistory( ){
    if($('#price_history').length == 0){ return false; }

    $('#price_history').hide( );
    $('#property_history_menu_link').click(function( ){
        $('#price_history').slideToggle( );
        return false;
    });

    $('#hide_property_history').click(function( ){
        $('#price_history').slideUp( );
        return false;
    });

}
