/*#####
# Title: brains.js
#
# Defines site JS object for thereason.us
#
# Rev: 1.0
# Author: jamesv
#*/

//Flickr info
API_KEY =           'c9bd02f52f9ea8efbb648cc432e12c46';
USER_ID =           '16612517@N00';
FLICKR_ENDPOINT =   'http://api.flickr.com/services/rest/';
PHOTOSET_ENDPOINT = FLICKR_ENDPOINT+'?method=flickr.photosets.getPhotos&api_key='+
                    API_KEY+'&format=json&extras=date_taken&photoset_id=',

defeat_burnthrough = false;

(function() {
window.thereason =
{
    
    photosets_to_load:0,
    photosets:{},
    initial_photo_to_load: {'map':[0,0],'date':0},
    
    init: function() {
        thereason.buildNavLinks();
        $('#loader').flash({ src: 'loader.swf', 'wmode':'transparent', 'width':84, 'height':84 }, { version: 9 });
        
        var options = { 
            beforeSubmit: function() { 
                $('#form_success').removeClass('hider');
                $('#contact_form').removeClass('ac');
                $('#contact_form').addClass('hider');
                thereason.track("/bio/contact/");
                return true;
            } 
        }; 

        $('#contact_form').ajaxForm(options);
        
    },
    
    cleanChars: function(str) {
        var nonAlphaNum=/[^0-9,a-z,A-Z]/gi;
        str = str.replace(nonAlphaNum, "_");
        return str.toLowerCase();  
    },

    buildNavLinks: function() {
        $(".source").each(
            function() {
                thereason.photosets_to_load++
                
                var link = $(this);
                var set_id = link.attr("href").split("sets/")[1].split("/")[0];
                link.attr("id","set_" + set_id);
                
                thereason.photosets[set_id] = {}
                thereason.photosets[set_id]['name'] = thereason.cleanChars(link.text());
                $.getJSON(PHOTOSET_ENDPOINT + set_id +"&jsoncallback=?", function(data){thereason.loadPhotosetData(data);});
                
                link.data('set_id',set_id);
                link.click(
                    function() {
                        var set_id = $(this).data('set_id');
                        var thumbs = $("#thumbs_"+set_id);
                        var open_thumbs = thumbs.hasClass("hider");
                        $("#subnav ul").addClass("hider");
                        $("#subnav ul").removeClass("ac");
                        $("#frame").removeClass("dim");
                        if(open_thumbs) {
                            if(!$("#set_"+set_id).hasClass("current_set")) {
                                thereason.loadPhoto(set_id, 0);   
                            }
                            thumbs.removeClass("hider");
                            thumbs.addClass("ac");
                            $("#frame").addClass("dim");
                        }
                        
                        return false;
                    }
                )
            }
        )
    },
    
    loadPhotosetData: function(data) {
        if (data.stat == "ok") {
            thereason.photosets[data.photoset.id]['num_in_set'] = data.photoset.total
            thereason.photosets[data.photoset.id]['photos'] = data.photoset.photo;
            photo_array_length = data.photoset.photo.length;
            for(var photo_id = 0; photo_id < photo_array_length; photo_id++) {
                check_photo = data.photoset.photo[photo_id]
                check_photo.date = check_photo.datetaken.split("-").join("").split(":").join("").split(" ").join("")
                if(check_photo.date > thereason.initial_photo_to_load.date) {
                    thereason.initial_photo_to_load = {'map':[data.photoset.id, photo_id],'date':check_photo.date};
                }
                
            }
        }

        thereason.photosets_to_load--
        if (thereason.photosets_to_load == 0){
            thereason.showInitialPhoto();
        }

    },
    
    showInitialPhoto: function(){
        thereason.loadPhoto(thereason.initial_photo_to_load.map[0], thereason.initial_photo_to_load.map[1])
        thereason.drawThumbnails()
    },
    
    showBio: function(){
        $("#subnav ul").addClass("hider");
        $("#subnav ul").removeClass("ac");
        $("#frame").addClass("dim");
        $("#bio").removeClass("hider");
        thereason.track("/bio/");
    },

    hideBioandSubNav: function(){
        if(defeat_burnthrough != true) {
            $("#subnav ul").addClass("hider");
            $("#subnav ul").removeClass("ac");
            $("#frame").removeClass("dim");
            $("#bio").addClass("hider");
        }
        defeat_burnthrough = false
    },
    
    loadPhoto: function(set_id, photo_id){
        
        $("#photo").empty();
        $("#nav .current_set").removeClass("current_set")
        $("#subnav ul").addClass("hider");
        $("#subnav ul").removeClass("ac");
        $("#frame").removeClass("dim");
        $("#bio").addClass("hider");
        
        try {
            $("#set_"+set_id).addClass("current_set")
            var photo_data = thereason.photosets[set_id]['photos'][photo_id];
            var photo_url = "http://farm"+photo_data['farm']+".static.flickr.com/"+photo_data['server']+"/"+photo_data['id']+"_"+photo_data['secret']+"_b.jpg";
            
            //photo = $("<img src='"+photo_url+"' alt='"+photo_data['title']+"' title='"+photo_data['title']+"' />");        
            var photo = document.createElement("IMG"); 
            photo.src = photo_url;
            photo.alt = photo_data['title'];
            photo.title = photo_data['title'];
            
            $("#photo").append(photo)
            
            thereason.drawPhotoNav(set_id, photo_id)

            //Track photo view
            var photo_title =  thereason.cleanChars(photo_data['title']);
            if (photo_title == "") {
                photo_title = photo_data['id'];
            }
            thereason.track("/photos/"+thereason.photosets[set_id]['name'] + "/" + photo_title + "/");
            
            
        } catch(err) {
            alert(err)
            //Couldn't find photo/photoset
        }
    },
    
    drawPhotoNav: function(set_id, photo_id) {
        $("#controls").empty();
        var set_count       = thereason.photosets[set_id]['num_in_set'] - 1;
        var counter         = $("<div class='counter'>"+(parseInt(photo_id) + 1) +"/"+(parseInt(set_count) + 1)+"</div>");
        
        var prev_photo_id   = (photo_id >= 1) ? photo_id - 1 : set_count;
        var prev_photo      = thereason.photosets[set_id]['photos'][prev_photo_id];
        var next_photo_id   = (photo_id >= set_count) ? 0 : parseInt(photo_id) + 1;
        
        var next_photo      = thereason.photosets[set_id]['photos'][next_photo_id];
        
        var controls = $("<div></div>");

        var prev_link       = $("<a href='http://flickr.com/photos/thereason/"+prev_photo['id']+"/in/set-"+set_id+"/' title='"+prev_photo['title']+"' class='prev'><span>prev</span></a>");
        prev_link.data("set_id", set_id);
        prev_link.data("photo_id", prev_photo_id);
        prev_link.click(
            function() {
                thereason.loadPhoto($(this).data('set_id'), $(this).data('photo_id'))
                return false;
            }
        )

        var next_link       = $("<a href='http://flickr.com/photos/thereason/"+next_photo['id']+"/in/set-"+set_id+"/' title='"+next_photo['title']+"' class='next'><span>next</span></a>");
        next_link.data("set_id", set_id);
        next_link.data("photo_id", next_photo_id);
        next_link.click(
            function() {
                thereason.loadPhoto($(this).data('set_id'), $(this).data('photo_id'))
                return false;
            }
        )
        
        prev_link.append($("<div class='arrow'><div class='ui'>&nbsp;</div></div>"));
        next_link.prepend($("<div class='arrow'><div class='ui'>&nbsp;</div></div>"));
        controls.append(prev_link);
        controls.append(counter);
        controls.append(next_link);
        $("#controls").append(controls)
    },
    
    drawThumbnails: function() {
        for(set in thereason.photosets){
            var thumbs = $("<ul></ul>");
            thumbs.attr("id", "thumbs_" + set)
            thumbs.addClass("hider");

            for(photo_place in thereason.photosets[set]['photos']) {
                var photo = thereason.photosets[set]['photos'][photo_place]
                var thumb = $("<li></li>")
                var link = $("<a href='http://flickr.com/photos/thereason/"+photo['id']+"/in/set-"+set+"/' title='"+photo['title']+"'></a>")
                link.data("set_id", set)
                link.data("photo", photo_place)
                link.click(
                    function() {
                        thereason.loadPhoto($(this).data('set_id'), $(this).data('photo'))
                        return false;
                    }
                )
                var photo_url = "http://farm"+photo['farm']+".static.flickr.com/"+photo['server']+"/"+photo['id']+"_"+photo['secret']+"_s.jpg";
                var img = $("<img src='"+photo_url+"' alt='"+photo['title']+"' title='"+photo['title']+"' />")

                link.append(img);
                thumb.append(link);
                thumbs.append(thumb);
                
            }
            
            $("#subnav").append(thumbs);
        }
    },
    
    track: function(page) {
        try {
    	var pageTracker = _gat._getTracker("UA-639236-15");
    	pageTracker._trackPageview(page);
    	} catch(err) {}    
    },
    
    nope: function() {
        defeat_burnthrough = true;
    }
}    
})();
