var map = null;

function load() {
    loadGoogleMaps();
    if ($('isAuthenticatedOrHigher').innerHTML == 'true') {
            showHide('mapBody');
            plusMinus('expandMapBody');
            if (document.getElementById("membershipFeesHeading")) {
                showHide('membershipFeesInfo');
                plusMinus('expandMembershipFeesInfo');
            }
            if (document.getElementById("taxonomies")) {
                showHide('relatedSubjectsInfo');
                plusMinus('expandRelatedSubjectsInfo');
            }
    }
    loadToggleElements();
}
var messages = "The following address(es) have no map data: ";
var msgLength = messages.length;

function loadGoogleMaps() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(51.019874, -114.067784), 17);
        map.addControl(new GLargeMapControl());
        // allows zoom in zoom out controls
        map.addControl(new GMapTypeControl());
        // allows user to flip between Map, Satellite and Hybrid views
        geocoder = new GClientGeocoder();
        showAddress($('mapAddress').innerHTML, $('orgName').innerHTML);
        window.setTimeout(showErrorMessages, 1000);
    }
}

function showAddress(mapAddress, bubbleText) {
    bubbleText = "<div class=\"bubbleText\">" + bubbleText + "</div>";
    if (geocoder) {
        geocoder.getLatLng(
                mapAddress,
                function(point) {
                    if (!point) {
                        point = new GLatLng(-51.019874, -114.067784);
                        map.setCenter(point, 10);
                        var marker = new GMarker(point);
                        map.addOverlay(marker);
                        messages += " " + mapAddress;
                        var notFountText = "<div class=\"bubbleText\">" + "No map data found for this address" + "</div>";
                        marker.openInfoWindowHtml(notFountText);
                    } else {
                        map.setCenter(point, 15);
                        var marker = new GMarker(point);
                        map.addOverlay(marker);
                        marker.openInfoWindowHtml(bubbleText);
                    }
                }
                );
    }
}

function showErrorMessages() {
    if (messages.length != msgLength) {
//        alert(messages);
    }
}

function loadToggleElements() {
        // true below means it is hidden by default
        this.toggleElements = {relatedSubjectsInfo:true, membershipFeesInfo:true, mapBody:false};

        this.toggleElementHeadings = {expandRelatedSubjectsInfo:true, expandMembershipFeesInfo:true, expandMapBody:false};


        this.toggleElementsHash = $H(this.toggleElements);
        this.toggleElementHeadingsHash = $H(this.toggleElementHeadings);
        this.toggleSmallHash = $H(this.toggleSmall);
}

function expandAll() {
    this.toggleElementsHash.each(function(pair) {
        var element = document.getElementById(pair.key);
        if (element != null) {
            this.toggleElementsHash[pair.key] = false;
            Effect.Appear(pair.key)
        }
    });

    this.toggleElementHeadingsHash.each(function(pair) {
        var element = document.getElementById(pair.key);
        if (element != null) {
            $(pair.key).src = '../../images_public/ia_style/icon_min.gif';
            this.toggleElementHeadings[pair.key] = false;
        }
    });

    this.toggleSmallHash.each(function(pair) {
        var element = document.getElementById(pair.key);
        if (element != null) {
            $(pair.key).src = '../../images_public/ia_style/icon_min.gif';
            this.toggleSmall[pair.key] = false;
        }
    });
}

function collapseAll() {
    this.toggleElementsHash.each(function(pair) {
        var element = document.getElementById(pair.key);
        if (element != null) {
            this.toggleElementsHash[pair.key] = true;
            //                    this.toggleSmallHash[pair.key] = true;
            Effect.Fade(pair.key)
        }
    });

    this.toggleElementHeadingsHash.each(function(pair) {
        var element = document.getElementById(pair.key);
        if (element != null) {
            $(pair.key).src = '../../images_public/ia_style/icon_plus.gif';
            this.toggleElementHeadings[pair.key] = true;
        }
    });

    this.toggleSmallHash.each(function(pair) {
        var element = document.getElementById(pair.key);
        if (element != null) {
            $(pair.key).src = '../../images_public/ia_style/icon_plus.gif';
            this.toggleSmall[pair.key] = true;
        }
    });

}