﻿var homeAddress = '';
var homePoint, map, geocoder;
var markers = new Array();
var letterNum = 0;
var locationBase, infoBase;
var formSubmitted = false;
var wsUrl = "./UILocatorWebService.asmx/GetFormattedFilteredLocations";
//var wsUrl = "./UILocatorWebService.asmx/GetFilteredLocations";
var lowLat, lowLng, hiLat, hiLng;
var wsBeg = 1;
var wsCnt = 10;
var wsTot = 0;
var wsRes = false;
var curPage = 1;
var pageTracker = _gat._getTracker(gaCode);
var iconZ = 0;
var myReq;

function getFilter () {
    var wsTyp = "";
    switch ($('whereField').get('value')) {
        case 'vioc':
            wsTyp = 'cv';
            break;
        case 'ec':
            wsTyp = 'ce';
            break;
        default:
            if ($('legend')) {
                if ($('legend').getElement('#vioc input').checked) {
                    wsTyp = wsTyp + 'cv,';
                }
                if ($('legend').getElement('#ec input').checked) {
                    wsTyp = wsTyp + 'ce,';
                }
                if ($('legend').getElement('#other input').checked) {
                    wsTyp = wsTyp + 'co,';
                }
                if ($('legend').getElement('#retail input').checked) {
                    wsTyp = wsTyp + 'cr,';
                }
                if (wsTyp.substring(wsTyp.length - 1) == ',') {
                    wsTyp = wsTyp.substring(0, (wsTyp.length - 1));
                }
            }
    }
    return wsTyp;
}

window.addEvent('scroll', function() {
    if (homeAddress != '') {
        if (Browser.Engine.trident && (Browser.Engine.version >= 5)) {
            var myTop = 120 - $(document.body).getScroll().y;
            $('locations').setStyle('background-position', 'left '+myTop+'px');
        }
    }
    else {
        if (Browser.Engine.trident && (Browser.Engine.version >= 5)) {
            var myTop = 80 - $(document.body).getScroll().y;
            $('locations').setStyle('background-position', 'left ' + myTop + 'px');
        }
    }
});

function createMap(mapDivId) {
    map = new GMap2($(mapDivId));
    map.setMapType(G_NORMAL_MAP);
    map.addMapType(G_SATELLITE_MAP);
    var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10, 10));
    var botRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 10));
    map.addControl(new GLargeMapControl3D(), topRight);
    map.addControl(new GMapTypeControl(), botRight);
    geocoder = new GClientGeocoder();
    if (homeAddress == '') {
        map.setCenter(new GLatLng(39.8, -98.5), 3);
    }
}

function drivingLink(dirFrom, dirTo) {
    var myHome = dirFrom.lat() + ',' + dirFrom.lng();
    return "http://maps.google.com/maps?pw=2&saddr=" + myHome + "&daddr=" + encodeURI(dirTo);
}

function resizeList() {
    if (homeAddress != '') {
        $('mylocation').setStyle('display', 'block');
        if ($('mylocation2')) {
            $('mylocation2').setStyle('display', 'inline-block');
        }
        if (!(Browser.Engine.trident && (Browser.Engine.version < 5))) {
            $('locations').setStyle('background-position', 'left 0px');
        }
        if (Browser.Engine.trident && (Browser.Engine.version >= 5)) {
            $('locations').setStyle('background-attachment', 'fixed');
            $('locations').setStyle('background-position', 'left 120px');
        }
    }
    else {
        $('mylocation').setStyle('display', 'none');
        if ($('mylocation2')) {
            $('mylocation2').setStyle('display', 'none');
        }
        if (!(Browser.Engine.trident && (Browser.Engine.version < 5))) {
            $('locations').setStyle('background-position', 'left 0px');
        }
        if (Browser.Engine.trident && (Browser.Engine.version >= 5)) {
            $('locations').setStyle('background-attachment', 'fixed');
            $('locations').setStyle('background-position', 'left 80px');
        }
    }
    $('content').addClass('open');
    map.checkResize();
    if (homePoint != '') {
        map.setCenter(homePoint, 11);
    }
    else {
        map.setCenter(new GLatLng(39.8, -98.5), 3);
    }
    setTimeout("resetZoom();", 100);
    
    var myLocationHeight = $('mylocation').getSize().y;
    $('locations').setStyle('height', ($('content').getElement('.left').getSize().y - myLocationHeight));
}

function createHome() {
    if (homePoint) {
        makeMarker({ 'lat': homePoint.lat(), 'lng': homePoint.lng(), 'address': homeAddress, 'type': 'home' });
        $('myaddress').set('text', homeAddress);
        $('myaddress').removeEvents('click');
        $('myaddress').addEvent('click', function(e) {
            e = new Event(e).stop();
            this.blur();
            map.panTo(homePoint);
        });
        if ($('mylocation2')) {
            $('mylocation2').getElement('a').set('text', homeAddress);
            $('mylocation2').getElement('a').removeEvents('click');
            $('mylocation2').getElement('a').addEvent('click', function(e) {
                e = new Event(e).stop();
                this.blur();
                map.panTo(homePoint);
            });
        }
        setPaging();
        setTimeout('resizeList();', 100);
    }
}

function resetZoom() {
    if (homePoint) {
        if (lowLat != '') {
            var sw = Math.sqrt(Math.pow(69.1 * (lowLat - homePoint.lat()), 2) + Math.pow(53 * (lowLng - homePoint.lng()), 2));
            var ne = Math.sqrt(Math.pow(69.1 * (hiLat - homePoint.lat()), 2) + Math.pow(53 * (hiLng - homePoint.lng()), 2));
            if (sw > ne) {
                hiLat = (2 * homePoint.lat() - lowLat);
                hiLng = (2 * homePoint.lng() - lowLng);
            }
            else {
                lowLat = (2 * homePoint.lat() - hiLat);
                lowLng = (2 * homePoint.lng() - hiLng);
            }
            sw = new GLatLng(lowLat, lowLng);
            ne = new GLatLng(hiLat, hiLng);
            var bound = new GLatLngBounds(sw, ne);
            var zoom = map.getBoundsZoomLevel(bound);
            map.setZoom(zoom);
        }
    }
}

function cleanMap() {
    lowLat = '';
    lowLng = '';
    hiLat = '';
    hiLng = '';
    map.clearOverlays();
    $('locations').getElement('div').empty();
}

function myIconZ() {
    //iconZ = GOverlay.getZIndex(marker.getLatLng().lat);
    iconZ = (iconZ - 1);
    return iconZ;
}

function makeMarkers() {
    cleanMap();
    if (wsRes) {
        var start = (curPage - 1) * wsCnt;
        var end = (start + wsCnt);
        if (end >= wsTot) {
            end = wsTot;
        }
    }
    letterNum = 0;
    iconZ = 100;
    for (var i = start; i < end; i++) {
        makeMarker(wsRes[i]);
        if (i == (end - 1)) {
            setTimeout("$('loading').setStyle('display', 'none');", 500);
        }
    }
    pngfix();
    createHome(homePoint);
}

function formSubmit() {
    if (!formSubmitted) {
        $('loading').setStyle('opacity', .85);
        $('loading').setStyle('display', 'block');
        formSubmitted = true;
        homeAddress = '';
        homePoint = '';
        addressSearch($('search').getElement('input.text').get('value'), callWebService);
    }
}

window.addEvent('domready', function() {

    if ($('legend')) {
        if ($('whereRadios')) {
            $('whereRadios').dispose();
        }
        $('legend').getElements('input').each(function(myIn) {
            if (myIn.checked) {
                myIn.getParent('div').addClass('select');
            }
            else {
                myIn.getParent('div').removeClass('select');
            }
            myIn.addEvent('click', function(e) {
                this.blur();
                var tempBool = true;
                if (this.checked) {
                    this.getParent('div').addClass('select');
                }
                else {
                    this.getParent('div').removeClass('select');
                }
                formSubmit();
            });
        });
        $('legend').getElements('label').each(function(myLbl) {
            myLbl.addEvent('click', function(e) {
                this.getParent('div').getElement('input').fireEvent('click', e);
            });
        });
    }
    var myImage = new Asset.image('./App_Themes/VIOC/images/loading.gif');
    $('mylocation').setStyle('display', 'none');
    if ($('mylocation2')) {
        $('mylocation2').setStyle('display', 'none');
    }

    locationBase = $('templateLocation').clone();
    $('templateLocation').dispose();

    infoBase = $('templateInfo').clone();
    $('templateInfo').dispose();

    createMap('map_canvas');

    $('search').getElements('input').each(function(el) {
        el.addEvent('keydown', function(evt) {
            if (evt.key == 'enter') {
                if ($('legend')) {
                    $('legend').getElement('#vioc input').checked = true;
                    $('legend').getElement('#ec input').checked = true;
                    $('legend').getElement('#other input').checked = true;
                    $('legend').getElement('#retail input').checked = false;
                    $('legend').getElements('input').fireEvent('click', evt);
                }
                formSubmit();
                return false;
            }
        });
    });
    if ($('search').getElement('.button')) {
        $('search').getElement('.button').addEvent('click', function() {
            formSubmit();
            return false;
        });
    }
    if ($('search').getElements('.btnService, .btnRetail, .btnGo').length > 0) {
        if ($('search').getElement('.btnService')) {
            $('search').getElement('.btnService').addEvent('click', function(e) {
                $('legend').getElement('#vioc input').checked = true;
                $('legend').getElement('#ec input').checked = true;
                $('legend').getElement('#other input').checked = true;
                $('legend').getElement('#retail input').checked = false;
                $('legend').getElements('input').fireEvent('click', e);
                formSubmit();
                return false;
            });
        }
        if ($('search').getElement('.btnRetail')) {
            $('search').getElement('.btnRetail').addEvent('click', function(e) {
                $('legend').getElement('#vioc input').checked = false;
                $('legend').getElement('#ec input').checked = false;
                $('legend').getElement('#other input').checked = false;
                $('legend').getElement('#retail input').checked = true;
                $('legend').getElements('input').fireEvent('click', e);
                formSubmit();
                return false;
            });
        }
        if ($('search').getElement('.btnGo')) {
            $('search').getElement('.btnGo').addEvent('click', function(e) {
                $('legend').getElement('#vioc input').checked = false;
                $('legend').getElement('#ec input').checked = true;
                $('legend').getElement('#other input').checked = false;
                $('legend').getElement('#retail input').checked = false;
                $('legend').getElements('input').fireEvent('click', e);
                formSubmit();
                return false;
            });
        }
    }

    $(document.body).getElement('form').addEvent('submit', function(evt) {
        evt.stop();
        formSubmit();
        return false;
    });
    if ($('search').getElement('input.text').get('value') != '') {
        formSubmit();
        return false;
    }
});

window.addEvent('unload', function() {
    GUnload();
});

var clear = "/images/clear.gif" //path to clear.gif

pngfix = function() {
    if(Browser.Engine.trident && (Browser.Engine.version < 5))
    {
        var els = document.getElementsByTagName('*');
        var ip = /\.png/i;
        var i = els.length;
        while (i-- > 0) {
            var el = els[i];
            var es = el.style;
            if (el.src && el.src.match(ip) && !es.filter) {
                es.height = el.height;
                es.width = el.width;
                es.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='crop')";
                el.src = clear;
            }
            else {
                var elb = el.currentStyle.backgroundImage;
                if (elb.match(ip)) {
                    var path = elb.split('"');
                    var rep = (el.currentStyle.backgroundRepeat == 'no-repeat') ? 'crop' : 'scale';
                    es.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + path[1] + "',sizingMethod='" + rep + "')";
                    es.height = el.clientHeight + 'px';
                    es.backgroundImage = 'none';
                    var elkids = el.getElementsByTagName('*');
                    if (elkids) {
                        var j = elkids.length;
                        if (el.currentStyle.position != "absolute") es.position = 'static';
                        while (j-- > 0) if (!elkids[j].style.position) elkids[j].style.position = "relative";
                    }
                }
            }
        }

        $('locations').getElements('div.location a.icon img').each(function(myimg) {
            myimg.setStyle('width', 21);
            myimg.setStyle('height', 34);
        });
        $('locations').getElements('div.location').each(function(mydiv) {
            mydiv.setStyle('height', 'auto');
            myimg = mydiv.getElement('a.icon img');
            if (mydiv.hasClass('vioc')) {
                myimg.setStyle('width', 24);
                myimg.setStyle('height', 46);
            }
            else if (mydiv.hasClass('express')) {
                myimg.setStyle('width', 25);
                myimg.setStyle('height', 40);
            }
            else {
                myimg.setStyle('width', 21);
                myimg.setStyle('height', 34);
            }
        });
    }
}