var AngelsCare = {
    
    map: null,

    
    /**
     * Initializes class
     */
    init: function() {
        var selectors = 'h1, nav li a, .contact p, .contact address';

        if(Cufon.replace(selectors)) $(document.body).addClass('cufon') ;
        this.detectPage();
        
        // Observers
        $('#directions').bind('click', {that: this}, this.displayMap);
        $('.overlay_mask').bind('click', this.hideMap);
    },
    

    /**
     * Initializes map
     */
    initMap: function() {
        var latLng  = new google.maps.LatLng(37.379174,-121.949513),
            options = {
                zoom: 13,
                center: latLng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            },
            map     = new google.maps.Map(document.getElementById("map"), options),
            marker  = new google.maps.Marker({
                position: latLng,
                map: map
            }),
            markup  = "<h3>Angel's Care Collective</h3>"+
                      "<p>891 Laurelwood Rd, Suite 101"+
                      "<br>Santa Clara, CA 95054</p>"+
                      "<h4>Hours:</h4>"+
                      "<ul><li>M-F: 11am - 8pm</li>"+
                      "<li>Sat: 11am - 4pm</li></ul>",
            infoWindow = new google.maps.InfoWindow({
                content: markup
            });
            
        google.maps.event.addListener(marker, 'click', function() {
          infoWindow.open(map,marker);
        });
            
        this.map = map;
    },
    

    /**
     * Displays map (observer response)
     * param {event}
     */
    displayMap: function(event) {
        var that = event.data.that;

        if(!that.map) that.initMap();
        $('#overlay').addClass('visible');
        $(document.body).addClass('overlay_mode');
    },

    
    /**
     * Hides map (observer response)
     * param {event}
     */
    hideMap: function(event) {
        var target  = event.target || event.srcElement,
            overlay = $(target).parent();

        overlay.removeClass('visible');
        $(document.body).removeClass('overlay_mode');
    },

    
    /**
     *
     */
    locationAvailable: function() {
        return navigator.geolocation ? true : false;
    },
    

    /**
     *
     */
    getCurrentLocation: function() {
        if(!this.locationAvailable()) return 'Current location is not available';
        
        var getLocation = function(pos) {
                var lat  = pos.coords.latitude,
                    long = pos.coords.longitude;
            
                return { lat: lat, long: long };
            },
            unknownLocation = function() {
                return "Could not find your location";
            },
            location = navigator.geolocation.getCurrentPosition(getLocation, unknownLocation);
            
        console.log(location)
    },
    

    /**
     * Detects current page, manipulates body classes / navigation hilighting
     */
    detectPage: function() {
      var pageIndexes = [
            { page: 'home', uri:  '/' },
            { page: 'medication', uri: '/medication.html' },
            { page: 'resources', uri: '/resources.html' },
            { page: 'contact', uri: '/contact.html' }
          ], // todo: generate this list from the menu! page will be the classname
          pathname = document.location.pathname;

          if(pathname.length > 1) pathname = pathname.replace(/\/$/, '');
          
        $.each(pageIndexes, function(index, pageIndex) {
            if(pageIndex.uri == pathname) $(document.body).addClass(pageIndex.page);
        });
    }
}

AngelsCare.init();
Cufon.now();
