
(function() {

    Josh = {};
    
    var layouts = [
        {
            "pageClass":        "layoutCharleston",
            "captionTitle":     "East Bay Street",
            "captionSubtitle":  "Charleston | December 2007"
        },
        {
            "pageClass":        "layoutAustin",
            "captionTitle":     "Downtown",
            "captionSubtitle":  "Austin | March 2008"
        },
        {
            "pageClass":        "layoutTree",
            "captionTitle":     "Trees",
            "captionSubtitle":  "November 2007  "
        },
        {
            "pageClass":        "layoutGus",
            "captionTitle":     "Gus",
            "captionSubtitle":  "2010"
        },
        {
            "pageClass":        "layoutJoshGus",
            "captionTitle":     "With Gus",
            "captionSubtitle":  "2010"
        },
        {
            "pageClass":        "layoutRedFlower",
            "captionTitle":     "Red Flower",
            "captionSubtitle":  "2010"
        },
        {
            "pageClass":        "layoutSeeding",
            "captionTitle":     "Seeding",
            "captionSubtitle":  "April 2009"
        },
        {
            "pageClass":        "layoutBloodOrange",
            "captionTitle":     "Blood Orange",
            "captionSubtitle":  "January 2009"
        },
        {
            "pageClass":        "layoutSmelliott",
            "captionTitle":     "Smelliott",
            "captionSubtitle":  "January 2009"
        }
        /*{
            "pageClass":        "layoutPresidential",
            "captionTitle":     "Presidential",
            "captionSubtitle":  "January 2008"
        }*/
    ];

    var parseQS = function() {
        Josh.qs = {};

        if (!location.href.match(/\?/))
            return;

        var split = (/\?(.*?)$/ig).exec(location.href + "&");
        var pairs = split[1].split("&");

        $.each(pairs,function(setId,set) {
            var pair = set.split(/=/);
            if (pair[0] == null || pair[1] == null) return;
            Josh.qs[ decodeURIComponent(pair[0]) ] = decodeURIComponent( pair[1] );
        });
    };

    var viewToLayoutId = function(view) {
        var layoutId = null;

        if (!view)
            return(layoutId);

        $.map(layouts,function(_layout,_layoutId) {
            
            var layoutName = _layout.pageClass.replace(/layout/i,"").toLowerCase();

            if (view.toLowerCase() == layoutName)
                layoutId = _layoutId;
            
        });

        return(layoutId);
    };


    var showText = function() {
        $("body").css("visibility","visible");
        //$("#caption,#info").show();
        //$("#caption,#info").fadeIn(900,"easeInSine");
    };


    var loadLayout = function(layoutId) {
        
        // if mobile/touch, KILL KILL KILL (maybe?)
            // TODO
        
        // if no layout, KILL
            if (layouts[layoutId] == null) return;

        var data = layouts[layoutId];

        $("body").removeClass().addClass(data.pageClass);
        $("#captionTitle").html(data.captionTitle);
        $("#captionSubtitle").html(data.captionSubtitle);

        $.cookie("lastLayoutId",layoutId);
        
        // Help fight FOUT on IE9 ... and let the bg load
            setTimeout(function() {
                showText();
            },1000);
        
    }


    var getNewLayoutId = function() {
        var randLayoutId = Math.floor(Math.random() * layouts.length),
            lastLayoutId = $.cookie("lastLayoutId") || 0;

        if (lastLayoutId != randLayoutId)
            return(randLayoutId);
        else
            return( getNewLayoutId() );
    };


    var pageLoad = function() {

        var layoutId = null;

        // parse QS
            parseQS();
        
        // die if < IE9 :)
            if ( $("html").hasClass("no-backgroundsize") ) {
                showText();
                return;
            }
                

        // get layout id (via ?view or random)
            var layoutId =  viewToLayoutId(Josh.qs.view) || getNewLayoutId();
        
        // load layout
            loadLayout(layoutId);
    }

    // page load
        $(pageLoad);

})();
