
(function($) {
    var createLat=function(str){
        var lat=str.split(",");
        return new google.maps.LatLng(lat[0]+0,lat[1]+0);
    };

    var maps={};

    $.fn["bindMap"] = function(center_marker){
        var elements = this;

        elements.each(function(){
            var self=$(this);
            var z=parseInt(self.attr("map-zoom"),0);

            var myOptions = {
                zoom: z,
                center: createLat(self.attr("map-center")),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map=new google.maps.Map(this, myOptions);

            if(false){
                google.maps.event.addListener(map, 'center_changed', function() {
                    console.debug("center",map.getCenter());
                });
            }
            if(center_marker){
                var marker = new google.maps.Marker({
                    position: createLat(self.attr("map-center")),
                    map: map
                });
            }
            maps[self.attr("id")]= map;
        });

        //method chain
        return this;
    };

    $.fn["bindMarker"] = function(){
        var elements = this;
        elements.each(function(){
            var self=$(this);
            var map=maps[self.attr("map-id")];

            var z=parseInt(self.attr("map-zindex"),0);
            var marker = new google.maps.Marker({
                position: createLat(self.attr("map-marker")),
                map: map
            });


            if($.trim(self.html()).length){
                var infowindow = new google.maps.InfoWindow({
                    content: self.html(),
                    pixelOffset: new google.maps.Size(0, 0),
                    zIndex:  z ? z : 100,
                    disableAutoPan: true
                });
                google.maps.event.addListener(marker, 'click', function() {
                    infowindow.open(map,marker);
                });
                if(!self.attr("map-hide")){
                    infowindow.open(map,marker);
                }
            }
        });
        return this;
    };

})(jQuery);




(function($){
    $(document).ready(function(){
    $=jQuery;

    function auto_bind(){
        $(".bind-map").bindMap();
        $(".bind-map-marker").bindMap(true);
        $(".bind-marker").bindMarker();
    }

    auto_bind();
})})(jQuery);
