﻿$j(document).ready(function () {
    if ($j('#map_canvas').length > 0) {
        initializeMap();
    }
	slider();
});

var markers = [], layers = [];

function initializeMap() {

    var latlng = new google.maps.LatLng(-37.82580, 144.95394),
		myOptions = {
			zoom: 16,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		},
		mapDiv = document.getElementById("map_canvas"),
		map = new google.maps.Map(mapDiv, myOptions),
		mapControls = $j('#map_controls');

    $j.ajax({
        url: "/services/mapservice.asmx/MapLocations",
        dataType: "xml",
        success: function (data) {
            $j(data).find('MapLocation').each(function () {
                var latitude = $j(this).find('Latitude').text(),
					longitude = $j(this).find('Longitude').text(),
					layer = $j(this).find('LayerName').text(),
					layerIcon = $j(this).find('LayerIconURL').text();

                latlng = new google.maps.LatLng(parseFloat(latitude), parseFloat(longitude)),

                marker = new google.maps.Marker({
                    map: map,
                    position: latlng,
                    icon: layerIcon
                }),
                indexOfLayer = indexOf(layers, layer);
				
                if (indexOfLayer == -1) {
                    push(layers, layer);
                    indexOfLayer = layers.length - 1;
                    markers[indexOfLayer] = [];
					
					var checkbox = $j("<input/>", {
						id: 'maplayer-' + layer,
						name: layer,
						value: indexOfLayer,
						type: 'checkbox',
						checked: true,
						click: function(evt) {
							var layerID = indexOf(layers, $j(this).attr('name')),
								layerArr = markers[layerID];
								
							for (var markerID = 0, len = layerArr.length; markerID < len; markerID++) {
								layerArr[markerID].setVisible($j(this).attr('checked'));
							}
						}
					}),
					chklabel = $j("<label/>", {
						"text": " "+layer+" ",
						"for": 'maplayer-' + layer
					});
					
                    $j('#map_controls').append(checkbox,chklabel);
                }
                push(markers[indexOfLayer], marker);

            });
        }
    });
}

function push(array, object) {
    if (array != null) {
        array[array.length] = object;
    }
    else {
        array[0] = object;
    }
}

function indexOf(array, object) {
    if (array != null) {
        for (var i = 0; i < array.length; i++) {
            if (array[i] == object) {
                return i;
            }
        }
    }
    return -1;
}

function slider() {
	$j(".info01", $j("#mainform")).hide();
	
	$j("[data-slider]").live("click",function(e) {
		var elem = $j(this),
			slidertype = $j(this).data("slider"),
			indicator = elem.children("span"),
			sibling = elem.next(),
			closed = true;
			
		
		// Fork for multiple sliders based on data attribute
		if(slidertype === "slider01") {
			sibling.slideToggle(function(){
				closed = (sibling.is(":hidden"));
				
				if(closed) {
					indicator.text("+ Show");
				} else {
					indicator.text("- Hide");
				}
			});
		}
		
		e.preventDefault();
	});
}
