/**
 * index.js
 * @requires YUI YAHOO, Dom, Event, Get, Carousel
 */

YAHOO.namespace("ss");

YAHOO.ss.Background = function(){
    var Dom   = YAHOO.util.Dom,
        Event = YAHOO.util.Event;
    
    var oCanvas   = Dom.get("bg");
    
    if (oCanvas && oCanvas.getContext) {
    	var oContext = oCanvas.getContext("2d");
    }
    
    Event.onDOMReady(function(){
        if (oContext) {
            oContext.beginPath();
            
            var oGradBlur = oContext.createRadialGradient(70, 0, 0, 70, 0, 150);
            oGradBlur.addColorStop(0, "rgba(255, 255, 255, 1)");
            oGradBlur.addColorStop(0.2, "rgba(255, 255, 255, 0.5)");
            oGradBlur.addColorStop(1, "rgba(255, 255, 255, 0)");
            oContext.fillStyle = oGradBlur;
            oContext.arc(150, 0, 500, 0, Math.PI*2, false);
            oContext.fill();
        }
    });
}();

YAHOO.ss.LatestPost = function(){
    var Dom   = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        Get   = YAHOO.util.Get;
    
    var _sApiUrl   = "http://stonedsoul.org/api/read/json?num=1&type=",
        _oTargetId = {
            "regular":"latestentry",
            "photo": "latestphoto",
            "video": "latestvideo",
            "quote": "latestquote"
        };
    
    var _get = function(sType){
        var sRequestUrl  = _sApiUrl + sType + "&callback=YAHOO.ss.LatestPost.show";
        var oTransaction = Get.script(sRequestUrl, {
            onSuccess: function(o){
                o.purge();
            }
        });
    };
    
    Event.onDOMReady(function(){
        _get("text");
        _get("photo");
        _get("video");
        _get("quote");
    });
    
    return {
        show: function(oJson){
            var sText     = oJson["posts"][0]["regular-body"] || "",
                sPhotoUrl = oJson["posts"][0]["photo-url-400"] || "",
                sQuote    = oJson["posts"][0]["quote-text"] || "",
                sTitle    = oJson["posts"][0]["regular-title"] || "",
                sType     = oJson["posts"][0]["type"],
                sUrl      = oJson["posts"][0]["url"],
                sVideo    = oJson["posts"][0]["video-player"] || "",
                sBody     = "";
            
            switch(sType){
                case "regular":
                    sBody = '<h2>Latest Post</h2>'
                          + '<h3>' + sTitle + '</h3>'
                          + '<div id="bottom_fade"></div>'
                          + '<div id="postbody"' + sText + '</div>';
                    break;
                case "photo":
                    sBody = '<img src="' + sPhotoUrl + '">';
                    break;
                case "video":
                    sBody = sVideo;
                    break;
                case "quote":
                    sBody = sQuote;
                    break;
            };
            
            var sHtml = sBody + '<p class="permalink"><a href="' + sUrl + '">View the full entry</a></p>';
            Dom.get(_oTargetId[sType]).innerHTML = sHtml;
        }
    };
}();


YAHOO.ss.RecentEntryList = function(){
    var Dom   = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        Get   = YAHOO.util.Get;
        
    var _sRequestUrl = "http://stonedsoul.org/api/read/json?num=10&type=text&callback=YAHOO.ss.RecentEntryList.show";
    
    Event.onDOMReady(function(){
        var oTransaction = Get.script(_sRequestUrl, {
            onSuccess: function(o){
                o.purge();
            }
        });
    });
    
    return {
        show: function(oJson){
            var aPosts = oJson["posts"],
                oUl    = document.createElement("ul");
            
            for (var i=0, l=aPosts.length; i<l; i++){
                var sTitle = aPosts[i]["regular-title"],
                    sType  = aPosts[i]["type"],
                    sUrl   = aPosts[i]["url"],
                    oLi    = document.createElement("li");
                
                oLi.innerHTML = '<a href="' + sUrl + '">' + sTitle + '</a>';
                oUl.appendChild(oLi);
            }
            
            oTargetEl = Dom.get("recententry_list");
            oTargetEl.innerHTML = '<h2>Recent Entries</h2>';
            oTargetEl.appendChild(oUl);
        }
    };
}();

YAHOO.ss.Showcase = function(){
    var Carousel = YAHOO.widget.Carousel,
        Event    = YAHOO.util.Event;
    
    Event.onDOMReady(function(){
        var oCarousel = new Carousel("showcase", {
            animation: { speed: 0.3 },
            autoPlayInterval: 10000,
            isCircular: true,
            numVisible: 1
        });
        oCarousel.render();
        oCarousel.startAutoPlay();
    });
}();


