/*!
 * Details page routines
 * Copyright (c) 2009 Apartment Hunters, Inc
 *
 * Date: 2009-04-15 17:34:21 -0500 (Wed, 15 Apr 2009)
 * Revision: 5
 */

/* dumb geo lat/lon */
var geoPoint = {
    lat: 34.069356,
    lon: -118.383837
};

var isGMapCompatible = GBrowserIsCompatible();

/* point */
var geoPointGMap = null;

/* photos */
var photoSet = null;

/* panorama */
var streetView = null;
var streetViewSmall = null;
var streetViewBig = null;

//var streetViewClient = null;
var povDefaults = {yaw: 180, pitch: 0, zoom: 0};
var timer = null;

/* area map */
var areaMap = null;
var searchControl = null;
var localSearch = null;


/* virtual earch object */
var geoPointVE = null;
var aerialViewSmall = null;
var aerialViewBig = null;

var isMember = false;
var isFeatured = false;
var activeView = 'overview';
var listingId = null;

$(function() {

    // get ID
    var str = $('#listing-id').text();
    listingId = parseInt(str.replace(/[^0-9]+/, ''));
    if (!listingId) {
        //console.log('can not get listing ID from: -' + str + '-');
        return false;
    }

    // replace links
    /*
    $('li#n-photos a').attr('href', '#n-photos');
    $('li#n-map a').attr('href', '#n-map');
    $('li#n-area a').attr('href', '#n-area');

    $('a[title=photos]').attr('href', '#n-photos');
    $('a[title=map]').attr('href', '#n-map');
    $('a[title=area]').attr('href', '#n-area');
    */

    // get view
    if (window.location.hash.length) {
        var av = window.location.hash.substring(3);
        if (av == 'print') {
            av = 'overview';
        }
        activeView = av;
    } else if ($('#current-view').length) {
        activeView = $('#current-view').text();
    }

    // wire tab click
    $('#nav-extra a').click(function() {
        var id = $(this).parent('li').attr('id');
        var view = id.replace(/n\-/, '');

        switchView(view);

        // remove focus
        this.blur();                 // most browsers
        this.hideFocus = false;      // internet explorer

        return false;
    });

    // inline links to photos, map etc
    $('a[title=photos],a[title=map],a[title=area]').click(function() {
        switchView(this.title);
        return false;
    });

    // photo image click
    $('a#main-photo-1').click(function() {
        switchView('photos');
        return false;
    });

    // is member
    isMember = $('#is-member').length ? true : false;
    isFeatured = $('#main-info .street-address').length ? true : false;

    // geo coordinates
    geoPoint = {
        lat: parseFloat( $('#main-info .geo .latitude').text() ),
        lon: parseFloat( $('#main-info .geo .longitude').text() )
    };

    if (!isMember) {
        geoPoint.lat += 0.0001;
        geoPoint.lon += 0.0001;
    }

    // GMap point
    geoPointGMap = new GLatLng(geoPoint.lat, geoPoint.lon);

    // VE point
    geoPointVE = new VELatLong(geoPoint.lat, geoPoint.lon);

    // switch to view
    switchView(activeView);

    // wire modal dialogs
    if (isMember) {
        initModalSave();
        initModalSendMember();
    } else {
        initModalJoin();
        initModalSendGuest();
        $('#dl-1').mouseover(function(e){
            $('#dl-2').slideDown('slow');
            return false;
        });
        $('#dl-2').mouseout(function(e){
            $(this).slideUp();
            return false;
        });
    }
    initModalCall();

    // print event
    $('a#print-link').click(function(e){
        e.preventDefault();

        if (activeView !== 'overview') {
            $('div[id^=content-]').remove();
        }

        switchView('overview');
        printPage();

        return false;
    });

    // set unload events
    $(window).unload(function() {
        if (streetView) {
            streetView.remove();
            streetView = null;
        }

        GUnload();

        if (null !== aerialViewSmall) {
            aerialViewSmall.Dispose();
            aerialViewSmall = null;
        }
        if (null !== aerialViewBig) {
            aerialViewBig.Dispose();
            aerialViewBig = null;
        }
    });


    return true;
});

//window.onunload = disposeMap;

/**
*  switch over views
*/
function switchView(view)
{
    // activate menu tab
    $('#nav-extra a').removeClass('active');
    $('#nav-extra #n-' + view + ' a').addClass('active');

    // set current active view
    $('#current-view').text(view);
    activeView = view;

    // switch controls
    switchViewControls(activeView);
    console.log('switchView: switch to: ' + activeView);

    // hide all content DIVs
    $('#details-extra div#[id^=content-]').hide();

    // if already exists
    var content = $('#content-' + view);
    if (content.length) {
        console.log('switchView: div exists: #content-' + view);

        // show div
        $(content).show();

        // init view objects
        initViewContent(activeView);

        return false;
    } else {
        console.log('switchView:loading view: ' + activeView);
        var s = loadViewContent(activeView);

        return s ? false : true;
    }
}

/**
*
*/
function switchViewControls(view)
{
    var divSVSmall = $('#details-street-small');
    var divSurveySmall =  $('#details-survey-small');

    var linkMap = $('a[title=map]');
    var linkPhotos = $('a[title=photos]');
    //var linkArea = $('a[title=area]');
    //var linkPrint = $('a#print-link');

    window.scroll(0, 400);

    switch (view) {
        case 'photos':
            // sidebar
            divSVSmall.hide();
            linkPhotos.hide();
            linkMap.show();
            divSurveySmall.show();
            //linkPrint.hide();
            break;

        case 'map':
            // sidebar
            divSVSmall.show();
            linkPhotos.show();
            linkMap.hide();
            divSurveySmall.show();
            //linkPrint.show();
            break;

        case 'area':
            // sidebar
            divSVSmall.show();
            linkPhotos.show();
            linkMap.show();
            divSurveySmall.hide();
            //linkPrint.hide();
            break;

        case 'apply':
            // sidebar
            divSVSmall.show();
            linkPhotos.show();
            linkMap.show();
            divSurveySmall.show();
            //linkPrint.hide();
            break;

        case 'overview':
        default:
            divSVSmall.show();
            linkPhotos.show();
            linkMap.show();
            divSurveySmall.show();
            //linkPrint.show();
            break;
    }

}

/**
*  load html
*/
function loadViewContent(view)
{
    var container = $('#details-extra');
    var success = false;
    var url = '/details/' + listingId + ((view !== 'overview') ? '/' + view : '') + '?ajax';

    // show loading
    container.append('<p class="loading">Loading data, please wait &hellip; <a href="' + url + '">refresh</a></p>');

    var res = $.get(url, null, function(data) {
        $('p.loading').remove();
        container.append(data);
        initViewContent(view);
        success = true;
    }, 'html');

    //console.log('res: ' + res);
    //console.log('loadViewContent() loading result: ' + success);

    return true;
    //return success;
}

/**
*  Init view objects
*/
function initViewContent(view)
{
    switch (view) {
        case 'photos':
            streetViewInitBig();
            aerialViewInitSmall();
            aerialViewInitBig();
            photosInit();
            break;

        case 'map':
            aerialViewInitSmall();
            streetViewInitSmall();
            areaMapInit();
            break;

        case 'area':
            aerialViewInitSmall();
            streetViewInitSmall();
            // hack
            $('span#dem-city').text($('span.locality').text());
            $('span#dem-zip').text($('span.postal-code').text());
            break;

        case 'apply':
            applyFormInit();
            aerialViewInitSmall();
            streetViewInitSmall();
            break;

        case 'print':
            areaMapInit();
            break;

        case 'overview':
        default:
            aerialViewInitSmall();
            streetViewInitSmall();
            break;
    }

    //_setColHeight();
}

/**
*  photos
*/
function photosInit()
{
    if (null !== photoSet)
        return false;

    photoSet = $('#photo-thumbs');
    if (!photoSet.length)
        return false;

    var photoContainer = $('#main-photo-2');

    // onclick
    $('#photo-thumbs a').click(function(e) {
        e.preventDefault();

        var imgUrl = this.href;

        // loading
        photoContainer.empty();
        photoContainer.addClass('loading');

        var img = new Image();
        $(img).load(function () {
            //$(this).hide();
            photoContainer.removeClass('loading').append(this);
            photoContainer.append(this);
            $(this).css('visiblity', 'hidden').fadeIn('slow');
        }).error(function () {
            // notify the user that the image could not be loaded
        }).attr('src', imgUrl);

        return false;
    });

    // inti carousel
    photoSet.jcarousel();

    return true;
}

/**
* google street view
* sidebar
*/
function streetViewInitSmall()
{
    var container = $('#gsv-sidebar');
    if (!container.length) {
        return false;
    }

    if (false == streetViewSmall) {
        $('#details-street-small').hide();
        return false;
    } else if (null == streetViewSmall) {
        streetViewSmall = new GStreetviewPanorama(container.get(0));
        GEvent.addListener(streetViewSmall, 'error', panoHandleError);
        streetViewSmall.setLocationAndPOV(geoPointGMap, povDefaults);
    }

    return true;
}

function streetViewInitBig()
{
    var container = $('#gsv-main');
    if (!container.length) {
        return false;
    }

    if (false == streetViewBig) {
        $('#details-street').hide();
        return false;
    } else if (null == streetViewBig) {
        streetViewBig = new GStreetviewPanorama(container.get(0));
        GEvent.addListener(streetViewBig, 'error', panoHandleError);
        streetViewBig.setLocationAndPOV(geoPointGMap, povDefaults);
    }

    return true
}

/**
* google street view
*
*/
function streetViewInit(elId, autoplay)
{
    var container = $('#' + elId);
    if (!container.length) {
        console.log('streetViewInit: no container #' + elId + ' for streetview');
        return false;
    }

    if (false == streetView) {
        $('#details-street-small').hide();
        $('#details-street').hide();
        return false;
    }

    if (null !== streetView) {
        streetView.remove();
        streetView = null;
    }

    streetView = new GStreetviewPanorama(container.get(0));
    GEvent.addListener(streetView, 'error', panoHandleError);
    streetView.setLocationAndPOV(geoPointGMap, povDefaults);


    //test
    //geoPointGMap = new GLatLng(36.468785,-120.357285);

/*

    // 1st time init
    if (null == streetView) {
        streetView = new GStreetviewPanorama(container.get(0));
        GEvent.addListener(streetView, 'error', panoHandleError);
        streetView.setLocationAndPOV(geoPointGMap, povDefaults);
        //streetView.hide();
        //streetView.show();
    } else if (false !== streetView) {
        streetView.remove();
        streetView.hide();
        streetView.setContainer(container);
        streetView.setLocationAndPOV(geoPointGMap, povDefaults);
        streetView.checkResize();
        streetView.show();
    } else {
        // no streetview, hide divs
        $('#details-street-small').hide();
        $('#details-street').hide();
        return false;
    }

*/

    if (autoplay) {
        //timer = window.setTimeout(svAnimation, 5000);
        //GEvent.addListener(streetView, 'yawchanged', function() {
        //    clearTimeout(timer);
        //});
    }

    return true;
}

function panoHandleError(errorCode)
{
    // hide divs
    streetViewSmall = false;
    streetViewBig = false;
    $('#details-street-small').hide();
    $('#details-street').hide();

    if (errorCode == GStreetviewPanorama.ErrorValues.FLASH_UNAVAILABLE) {
        // alert no flash
    } else if (errorCode == GStreetviewPanorama.ErrorValues.NO_NEARBY_PANO ) {
        console.log('panoHandleError: No nearby pano: ' + errorCode);
    } else if (errorCode == GStreetviewPanorama.ErrorValues.SERVER_ERROR) {
        console.log('panoHandleError: Google server error: ' + errorCode);
    } else {
        console.log('panoHandleError: unknown error: ' + errorCode);
    }

    return;

}

function panoUpdate(point, pov)
{
    if (point !== null) {
        console.log('updatePano: point = ' + point);
        var res = streetView.setLocationAndPOV(point, pov);
        console.log('updatePano: res = ' + res);
        if (res != 200) {
            //return false;
        }
    }
    streetView.checkResize();

    return true;
}

function panoGetNearest(point)
{
    var panoClient = new GStreetviewClient();
    var res = panoClient.getNearestPanorama(point, panoShowData);
   console.log('panoGetNearest: res = ' + res);
}

function panoShowData(panoData)
{
    console.log('showPanoData: recieved: ' + panoData.location);

    if (panoData.code != 200 || !panoData.location.latlng) {
        console.log('showPanoData: Not getting pano: ' + panoData.code + ', ' + panoData.location);
        return false;
    }

    return panoUpdate(panoData.location.latlng, panoData.pov);
}





function panoAnimate()
{
    svYaw += 30;
    streetView.panTo({yaw:svYaw, pitch:svPitch});
    //console.log(svYaw);
}

/**
* virtual earth aerial
* small box, main photo
*/
function aerialViewInitSmall()
{
    // map exists?
    if (null !== aerialViewSmall) {
        return true;
    }

    // DIV exists?
    var container = $('#msav-top');
    if (!container.length)
        return false;

    console.log('aerialViewInitSmall: loading');

    aerialViewSmall = new VEMap('msav-top');
    try {
        aerialViewSmall.LoadMap(geoPointVE, 19, VEMapStyle.Birdseye, true);
    } catch(e) {
        console.log('can not load birdseye:' + e.message);
        try {
            aerialViewSmall.LoadMap(geoPointVE, 17, VEMapStyle.Aerial, true);
        } catch(e) {
            console.log('can not load aerial:' + e.message);
        }
    }
    aerialViewSmall.HideDashboard();
    aerialViewSmall.HideScalebar();

    $('.MSVE_PoweredByLogo').hide();

    return true;
}

/**
* virtual earth aerial
* large box, photos page
*
*/
function aerialViewInitBig()
{
    // map exists?
    if (null !== aerialViewBig)
        return true;

    // DIV exists?
    var container = $('#msav-main');
    if (!container.length)
        return false;

    //console.log('aerialViewInitSmall: loading');

    aerialViewBig = new VEMap('msav-main');
    try {
        aerialViewBig.LoadMap(geoPointVE, 17, VEMapStyle.Birdseye);
    } catch(e) {
        console.log('can not load birdseye:' + e.message);
        try {
            aerialViewBig.LoadMap(geoPointVE, 16, VEMapStyle.Aerial);
        } catch(e) {
            console.log('can not load aerial:' + e.message);
        }
    }

    //aerialViewBig.HideDashboard();
    aerialViewBig.HideScalebar();

    aerialViewBig.AttachEvent('onmousewheel', function() {
        return true;
    });


    $('.MSVE_PoweredByLogo').css('visibility', 'hidden');
    $('#MSVE_navAction_modeCell').css('visibility', 'hidden');
    $('#MSVE_navAction_showLabels').css('visibility', 'hidden');
    $('.MSVE_navAction_separator').css('visibility', 'hidden');

    return true;
}

/**
* main GMap
*
*/
function areaMapInit()
{
    // map exists?
    if (null !== areaMap)
        return true;

    // DIV exists?
    var container = $('#gmap-main');
    if (!container.length)
        return false;

    //console.log('areaMapInit: loading map');

    areaMap = new GMap2(container.get(0));
    areaMap.addControl(new GSmallMapControl());
    //areaMap.addControl(new GMapTypeControl());
    areaMap.checkResize();

    //var marker = new GMarker(geoPointGMap);
    if (isMember || isFeatured) {
        areaMap.setCenter(geoPointGMap, 15);
        areaMap.addOverlay(new GMarker(geoPointGMap));
    } else {
        areaMap.setCenter(geoPointGMap, 14);
        areaMap.panBy(new GSize(20, 20));
    }


    // find nearby
    $('#map-search-nearby ul a').click(function(e) {
        e.preventDefault();
        _areaMapSearch(this.title);
        return false;
    })
    $('#map-search-nearby').submit(function(e) {
        e.preventDefault();
        var query = $(this).find('input[name=query]').val();
        console.log(query);
        _areaMapSearch(query);
        return false;
    })

    // driving sirections
    $('#map-search-dir').submit(function(e) {
        e.preventDefault();
        var results = $('#area-map-results');
        results.empty();
        results.addClass('loading');
        results.show();

        //var directionsPanel = results.get(0);
        var directions = new GDirections(areaMap, results.get(0));

        var from = $(this).find('input[name=from]').val();
        var to = $(this).find('input[name=to]').val();
        //from = '201 N Robertson Blvd, Beverly Hills, CA 90211';
        //to = 'Mountain Dr, Beverly Hills, CA 90210';

        var q = 'from: ' + from + ' to: ' + to;
        //alert(q);

        directions.load(q);
        results.removeClass('loading');

        return false;
    });


    return true;
}

function _areaMapSearch(query)
{
    // reset map overlays
    areaMap.clearOverlays();

    console.log('searching for: ' + query);

    var results = $('#area-map-results');

    // init search object
    if (null == localSearch) {
        //searchControl = new google.search.SearchControl();
        localSearch = new google.search.LocalSearch();
        localSearch.setCenterPoint(geoPointGMap);
        localSearch.setSearchCompleteCallback(null, function() {
            var max = (localSearch.results.length > 10) ? 10 : localSearch.results.length;

            var html = '<table>';
            for (i = 0; i < max; i++) {
                var res = localSearch.results[i];

                // add marker
                var point = new GLatLng(res.lat, res.lng);
                areaMap.addOverlay(new GMarker(point));

                //
                var phoneStr = (res.phoneNumbers) ? '<p>' + res.phoneNumbers[0].number + '</p>' : '';

                // text
                var addrStr = res.streetAddress + ', ' + res.city + ', ' + res.region;

                var dist = geoPointGMap.distanceFrom(point);
                dist = parseFloat(parseFloat(dist / 1609.344).toFixed(2));

                html += '<tr>' +
                    '<td>' + (i + 1) +'</td>' +
                    '<td><a href="' + res.url + '"><strong>' + res.titleNoFormatting + '</strong></a>' +
                    '<p>' + addrStr + '</p>' + phoneStr + '</td>' +
                    '<td>' + dist + '&nbsp;mi</td>'
                '</tr>';
            }
            html += '</table>';

            //var html = localSearch.results.html
            //results.append(localSearch.results.html);
            results.append(html);

            return true;
        });// on search complete
    }

    results.empty();
    results.addClass('loading');

    // do search
    //searchControl.draw(results.get(0));
    localSearch.execute(query);

    results.removeClass('loading');
    results.show();

    // add property icon
    if (isMember) {
        areaMap.addOverlay(new GMarker(geoPointGMap));
    }

    return true;
}

/**
*  save to favorites, for members
*/
function initModalSave()
{
    var modal = $('#save-listing-modal');

    if (! modal.length)
        return false;

    // save / view saved links
    $('#save-fav-link').click(function() {

        modal.dialog({
            bgiframe: true,
            autoOpen: false,
            modal: true,
            draggable: false,
            width: 300,
            minWidth: 300,
            buttons: {
                'Cancel': function() {
                    $(this).dialog('close');
                },
                'Save': function() {
                    var url =  '/details/' + listingId + '/save';
                    var data = {
                        keyid: $('#save-listing-modal form input[name=keyid]').val(),
                        description: $('#save-listing-modal form textarea').val()
                    }

                    $.post(url, data);
                    $(this).dialog('close');
                }
            }
        });

        modal.dialog('open');

        return false;
    });
}

/**
*  send listing to email / SMS
*/
function initModalSendGuest()
{
    var modal = $('#send-this-modal');

    if (! modal.length)
        return false;

    modal.dialog({
        bgiframe: true,
        autoOpen: false,
        modal: true,
        draggable: false,
        width: 400,
        buttons: {
            Cancel: function() {
                $(this).dialog('close');
            },
            'Send': function() {
                var bValid = true;
                var error = '';
                var allFields = $('#send-this-modal input');
                var tips = $('#send-this-modal #send-tip');

                tips.html('').removeClass('error');

                // check
                //var mode = $('#alert-switch').val();
                //var o = null;
                var sendData = {};

                var phoneField = $('#alert-phone');
                var emailField = $('#alert-email');
                var phone = '';
                var email = '';

                if (phoneField.val()) {
                    error = 'Phone number is incorrect';
                    phone = phoneField.val().replace(/[^0-9]+/, '');
                    bValid = (phone.length >= 10);
                }

                if (emailField.val()) {
                    error = 'Email address is incorrect';
                    email = emailField.val().replace(/[^A-Za-z0-9\-\_\.\@]+/, '');
                    var regexp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
                    bValid = regexp.test(email);
                }

                if (!bValid) {
                    tips.html(error).addClass('error');
                } else {
                    // send
                    var url = '/details/' + listingId + '/send';
                    $.post(url, {phone: phone, email: email});
                    $(this).dialog('close');
                }
            }
        },
        close: function() {
            //allFields.val('').removeClass('ui-state-error');
        }
    });

    $('#send-link').click(function() {
        modal.dialog('open');
        return false;
    });

    return true;
}

function initModalSendMember()
{
    var modal = $('#send-this-modal');

    if (! modal.length)
        return false;

    // save / view saved links
    $('#send-link').click(function() {
        modal.dialog({
            bgiframe: true,
                autoOpen: false,
                modal: true,
                draggable: false,
                width: 400,
                buttons: {
                    Cancel: function() {
                        $(this).dialog('close');
                    },
                    'Save': function() {
                        // save search
                        var fields = {
                            'email_alert': $(this).find('input[name=email_alert]:checked').length,
                            'sms_alert':   $(this).find('input[name=sms_alert]:checked').length
                        };
                        console.log(fields);
                        var url = '/details/' + listingId + '/send';
                        $.post(url, fields, function(res) {
                            //console.log(res);
                            return true;
                        });
                        $(this).dialog('close');
                    }
                }
        });

        modal.dialog('open');
        return false;
    });
}


function initModalCall()
{
    if ($('#call-join-modal').length) {
        return initModalCallJoin();
    }

    if ($('#call-upgrade-modal').length) {
        return initModalCallUpgrade();
    }

    // normal call
    var modal = $('#call-modal');

    if (! modal.length)
        return false;

    // save / view saved links
    $('#call-link').click(function() {
        modal.dialog({
            bgiframe: true,
            autoOpen: false,
            modal: true,
            draggable: false,
            width: 470,
            buttons: {
                'Cancel': function() {
                    $(this).find('.status').removeClass('fail').removeClass('loading');
                    $(this).dialog('close');
                },
                'Place a Call': function() {
                    var status = $(this).find('.status');
                    status.removeClass('fail').addClass('loading').html('Calling&hellip;');

                    var url = '/details/' + listingId + '/call';
                    var from = $(this).find('select[name=from]').val();
                    var to = $(this).find('select[name=to]').val();
                        console.log(from + ', ' + to);
                    $.post(url, {from: from, to: to}, function(data, textStatus) {
                        console.log(data);
                        if (data == 'true') {
                            status.removeClass('loading');
                            modal.dialog('close');
                        } else {
                            status.removeClass('loading').addClass('fail').html('Could not connect');
                        }
                    }, 'text');

                }
            }
        });

        modal.dialog('open');

        return false;
    });

}


function initModalCallUpgrade()
{
    var modal = $('#call-upgrade-modal');
    var url = modal.find('a').attr('href');

    $('#call-link').click(function() {
        modal.dialog({
            bgiframe: true,
            autoOpen: false,
            modal: true,
            draggable: false,
            width: 620,
            buttons: {
                'No Thanks': function() {
                    $(this).dialog('close');
                },
                'Yes! Upgrade to Click-to-call': function() {
                    $(this).dialog('close');
                    window.location = url;
                }
            }
        });

        modal.dialog('open');
        return false;
    });

    return true;
}

function initModalCallJoin()
{
    var modal = $('#call-join-modal');
    var url = modal.find('a').attr('href');

    $('#call-link,#dl-call').click(function() {
        modal.dialog({
            bgiframe: true,
            autoOpen: false,
            modal: true,
            draggable: false,
            width: 620,
            buttons: {
                'Sign Up Now': function() {
                    $(this).dialog('close');
                    window.location = url;
                }
            }
        });

        modal.dialog('open');
        return false;
    });

    return true;
}

function initModalJoin()
{
    var modal = $('#join-modal');

    if (! modal.length)
        return false;

    // save / view saved links
    $('#save-fav-link').click(function() {

        modal.dialog({
            bgiframe: true,
            autoOpen: false,
            modal: true,
            draggable: false,
            width: 300,
            minWidth: 300,
            buttons: {
                //'No thanks': function() {
                //    $(this).dialog('close');
                //},
                'Sign Up': function() {
                    var url = modal.find('form').attr('action');
                    $(this).dialog('close');
                    window.location = url;
                }
            }
        });

        modal.dialog('open');
        return false;
    });

}

function applyFormInit()
{
    var form = $('#apply-email-form');
    if (! form.length) {
        return false;
    }

    form.submit(function(e){
        $('#content-apply .notice').hide();
        form.before('<div class="loading">Sending Request&hellip;</div>').hide();


        // send http post
        var url = '/details/' + listingId + '/email';
        $.post(url, {}, function (data) {
            $('#content-apply .success').show();
            $('#content-apply .loading').remove();
            form.remove();
        });

        return false;
    });

}

function _setColHeight()
{
    var tallest = 0;
    var cols = $('#main-content .col, #right-sidebar .col');
    cols.each(function() {
        thisHeight = $(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    cols.height(tallest);
}