﻿//<![CDATA[
var __lattitude = 0;
var __longitude = 0;
var __tabs = ['photo', 'map', 'satellite', 'directions', 'appraise'];
var mapLoaded = false;
var pinCustomIcon;

function validate(form) {
    if (form.CityorZip.value == '') {
        alert("Please enter the starting City, State or Zip code");
    }
    else
        location = 'Directions.aspx?Street=' + form.Address.value + '&CityOrZip=' + form.CityorZip.value;
    return false;
}

function setTabByIndex(tab) {
    var ul = document.getElementById('tabs').previousSibling;
    var index = 0;
    while (__tabs[index] != tab) index++;


    var j = 0;
    var tabLink = null;
    for (var i = 0; i < ul.childNodes.length; i++) {
        if (ul.childNodes[i].tagName == 'LI') {
            if (index == j) {
                tabLink = ul.childNodes[i].childNodes[0];
            }
            j++;
        }
    }
    
    setTab(__tabs[index], tabLink);

}
    
function setTab(tab, anchor) {
    var container = document.getElementById('tabs');
    var ul = container.previousSibling;

    for (var i = 0; i < ul.childNodes.length; i++) {
        var el = ul.childNodes[i];
        if (el.tagName == "LI") {
            el.className = '';
        }
    }

    if(anchor) anchor.parentNode.className = 'sel';

    var x;
    for (var i = 0; i < container.childNodes.length; i++) {
        var el = container.childNodes[i];
        if (el.tagName == "DIV") {
            if (el.id == tab) {
                el.style.display = 'block';
            }
            else
                el.style.display = 'none';

        }
    }

    if (tab != 'photo') stopSlideShow();
    if (tab == 'map')
        document.getElementById("dvNearby").style.display = "block";
    else
        document.getElementById("dvNearby").style.display = "none";

    try {
        switch (tab) {
            case 'map':
                //__showMap(tab, __location, 16, true, true);
                if (!mapLoaded) {
                    map_element = tab;
                    zoomLevel = 15;
                    centerPin = true;
                    pinCustomIcon = "<img src=" + "/images/icons/map-pointer.gif" + " alt=''/>";
                    if (typeof (__location) == 'string') {

                        var geocoder = new google.maps.ClientGeocoder();
                        geocoder.getLatLng(point, function(p) {
                            init_location = "(" + p.lat() + "," + p.lng() + ")";
                            loadMap(true);
                        });

                    }
                    else {
                        init_location = "(" + __location.lat() + "," + __location.lng() + ")";
                        loadMap(true);
                    }
                    mapLoaded = true;
                }
                break;
            case 'satellite':
                __showMSMap(tab, __location, 14);

        }
    }
    catch (x) { }
    return false;
}

function setAppraiseTab() {
    setTabByIndex('appraise');
    var appTab = document.getElementById("appraise");
    if (appTab.loaded)
        return false;
    else {
        appTab.loaded = true;
        return true;
    }

}

function chkImgSize(img) {
    //alert(img.height + ':' + img.width);
    var i = new Image();
    i.src = img.src;
    if (i.height > i.width) {
        img.style.width = 'auto';
        img.style.height = '320px'
    }
    else {
        img.style.width = '460px';
        img.style.height = 'auto';
    }
}


var _title = '';
var _url = '';
if (typeof __Bookmark == 'undefined')
    __Bookmark = function() {
    //Get the title and url, if not present
    if (_title == '') _title = document.title;
    if (_url == '') _url = document.location;

    if (window.sidebar) { // Firefox
        window.sidebar.addPanel(_title, _url, '');
    } else if (window.opera) { //Opera
        if (navigator.appVersion.substring(0, 1) > 8)//Version 9+
            alert('Please press Ctrl+D to bookmark this page');
        else {
            var a = document.createElement("a");
            a.rel = "sidebar";
            //a.target = "_search";
            a.title = _title;
            a.href = _url;
            a.click();
        }
    } else if (document.all) { //IE
        window.external.AddFavorite(_url, _title);
    }
}


    function __showMap(elementID, point, zoomLevel, showPointer, showPZ, showScale, showTypes) {
        var mElement = document.getElementById(elementID);
        if (mElement.mapLoaded) return;

        if (typeof (point) == 'string') {

            var geocoder = new google.maps.ClientGeocoder();
            geocoder.getLatLng(point, function(p) {
                __showMap(elementID, p, zoomLevel, showPointer, showPZ, showScale, showTypes);
            });

        }
        else {
            __lattitude = point.lat();
            __longitude = point.lng();
        }
        
        var map = new google.maps.Map2(mElement);
        if(!zoomLevel) zoomLevel = 15;     //Default Zoom Level

        if (showPZ) map.addControl(new google.maps.LargeMapControl());
        if (showScale) map.addControl(new google.maps.ScaleControl());
        if (showTypes) map.addControl(new google.maps.MapTypeControl());
        map.setCenter(point, zoomLevel);
        
        if(showPointer){
            var markerOptions = new Object();           
            var icon = new google.maps.Icon();
            icon.image = "/images/icons/map-pointer.gif";
            icon.iconAnchor = new GPoint(6, 28);
            icon.infoWindowAnchor = new GPoint(10, 6);
            markerOptions.icon = icon;
            
            var marker = new google.maps.Marker(point, markerOptions);
	        map.addOverlay(marker);
        }
        mElement.mapLoaded = true;
    }

    function __showVESatellite() {


    }
    function __showMSMap(el, point, zoomLevel) {

        var element = document.getElementById(el);
        if (element.loaded) return; //already loaded
        
        if (typeof (point) == 'string') {

            var geocoder = new google.maps.ClientGeocoder();
            geocoder.getLatLng(point, function(p) {
                __showMSMap(el, p, zoomLevel);
            });

        }

        if (!zoomLevel) zoomLevel = 14;//default zoom level

        var map = new VEMap(el);

        // Load Microsoft's Virtual Earth map...    
        var vpoint =  new VELatLong(point.lat(),point.lng());     
        map.LoadMap(vpoint, zoomLevel, "h", false, VEMapMode.Mode2D, true);

        var pin = new VEShape(VEShapeType.Pushpin, vpoint);

        pin.SetCustomIcon("<div class=" + "\"pinStyle pinStyleMain\"" + "><div class=" + "\"texto\">" + "" + "</div></div>");
        map.AddShape(pin);

        element.loaded = true;

        return false;
    }

    function addPin(map) {
        // Add a new pushpin to the point on the map...
        pinPoint = map.GetCenter();
        pinPixel = map.LatLongToPixel(pinPoint);

        var pin = map.AddPushpin(pinPoint);
        pin.SetTitle("Property Id: " + document.getElementById("splstId").innerHTML);
        pin.SetDescription(address);
    }

    function getBirdsEye(map) {
        map.SetMapStyle(VEMapStyle.Birdseye);
        if (map.IsBirdseyeAvailable()) {
            if (!beyestord) {
                // Store the Bird's Eye indicator for this listing...
                AjaxService.PersistBirdsEye(document.getElementById("splstId").innerHTML, OKAY, NOOKAY);
                beyestord = true;
            }
        }
    }

    //Slideshow...

    var __ssInterval = 3000;
    var __ssTimer;
    var __ssImages = __images;
    var __ssIndex = -1;
    var __ssStatusID = 'slideShowStatus';
    var __ssbtnStartID = 'ssBtnStart';
    var __ssbtnStopID = 'ssBtnStop';
    function startSlideShow() {
        nextImage();
        __ssTimer = window.setInterval(nextImage, __ssInterval);
        setStatus('Slide show started. (' + __ssImages.length + ' photos)' );
        document.getElementById(__ssbtnStartID).style.display = 'none';
        document.getElementById(__ssbtnStopID).style.display = 'inline';
    }

    function setStatus(status) {
        var elem = document.getElementById(__ssStatusID);
        if(elem) elem.innerHTML = status;
    }

    function stopSlideShow() {
        if (__ssTimer)
            window.clearInterval(__ssTimer);
        __ssTimer = null;
        setStatus('Slide show stopped!');
        if (__ssImages.length > 1) {
            document.getElementById(__ssbtnStartID).style.display = 'inline';
            document.getElementById(__ssbtnStopID).style.display = 'none';
        }
    }

    function getThumb(index) {
        var idx = index;
        var thumbs = document.getElementById("thumbList").rows[0];
        var j = 0;
        for (var i = 0; i < thumbs.childNodes.length; i++) {
            if (thumbs.childNodes[i].tagName == "TD") {
                if (j++ == idx) {
                    var img = thumbs.childNodes[i].childNodes[0];
                    return img;
                }
            }
        }
        alert("thumb " + index + " not located in " + thumbs.childNodes[0].childNodes[0]);
    }

    function nextImage() {
        __ssIndex = ++__ssIndex % __ssImages.length;
        setImage(__ssIndex);
    }

    function prevImage() {
        if (__ssIndex == 0)
            __ssIndex = __ssImages.length - 1;
        else
            __ssIndex--;
        setImage(__ssIndex);
    }

    function setThumbImage(index) {
        stopSlideShow();
        setImage(index);
        return false;
    }

    function setImage(index) {
        //Highlight the thumb

        var imgSrc = __ssImages[index];
        var imgEl = document.getElementById(__ssImageID);
        imgEl.src = imgSrc;
        imgEl.alt = __desc[index];
        imgEl.title = imgEl.alt;

        if (imgEl.activeThumb) {
            imgEl.activeThumb.style.backgroundColor = "#fff";
            imgEl.activeThumb.style.borderColor = "#666";
        }

        imgEl.activeThumb = getThumb(index);
        imgEl.activeThumb.style.backgroundColor = "#fd9";
        imgEl.activeThumb.style.borderColor = "#f90";

        ensureVisible(imgEl.activeThumb);


        //Preload next image
        if (!imgEl.preloaded && index < __ssImages.length - 1) //Need to preload
        {
            var nextIndex = index + 1;
            if (!imgEl.nextImg) imgEl.nextImg = new Image();
            imgEl.nextImg.src = __ssImages[nextIndex];

            if (nextIndex == (__ssImages.length - 1)) //Preload complete
                imgEl.preloaded = true;
        }
        __ssIndex = index;
        return false;
    }

    function toggleSlideShow(a) {
        if (__ssTimer)
            stopSlideShow();
        else startSlideShow();
        if (a) {
            if (__ssTimer)
                a.innerText = 'Stop';
            else
                a.innerText = 'Start';
        }

        return false;
    }

    function ensureVisible(img) {
        i = img;
        var tbl = i.offsetParent.offsetParent;

        var offset = 0;
        var padding = 30;
        var steps = 4

        //Do we need to scroll?
        var effectiveLeft = i.offsetParent.offsetLeft + tbl.offsetLeft;
        if ((effectiveLeft + i.offsetWidth) >= tbl.parentElement.offsetWidth) { //scroll left to make visible
            offset = (effectiveLeft + i.offsetWidth + padding) - tbl.parentElement.offsetWidth;
            for (j = 1; j <= steps; j++)
                window.setTimeout(function() { off = (tbl.offsetLeft - offset / steps); if ((off + tbl.offsetWidth) < tbl.parentElement.offsetWidth) off = tbl.parentElement.offsetWidth - tbl.offsetWidth; tbl.style.left = off + "px"; }, (50 * (j - 1)));
        }
        else if (effectiveLeft <= 0) { //scroll right to make visible
            offset = (-1) * effectiveLeft + padding;
            for (j = 1; j <= steps; j++)
                window.setTimeout(function() { off = (tbl.offsetLeft + offset / steps); if (off > 0) off = 0; tbl.style.left = off + "px"; }, (50 * (j - 1)));
        }

    }

//]]>
