var loader = new YAHOO.util.YUILoader({
    require: ["element", "carousel"],
    onSuccess: function() {
      FCG.page = function () {
        var initializeLoader = function(){
          if (!FCG.element.loader) {
            FCG.element.loader = new YAHOO.widget.Panel("wait",  
               { width:"240px", 
                 fixedcenter:true, 
                 close:false, 
                 draggable:false, 
                 zindex:4,
                 modal:true,
                 visible:false
               } 
             );
            FCG.element.loader.setHeader("Loading Photos, Please Wait...");
            FCG.element.loader.setBody('<img src="http://us.i1.yimg.com/us.yimg.com/i/us/per/gr/gp/rel_interstitial_loading.gif" />');
            FCG.element.loader.render(document.body);
          }
        };

        var populateEvent = function(){
          var updatePhotos = function(){
            var photoCount = FCG.data.event.photos.length;
            //Build gallery
            var t = new Template(
            	'<li>\
            		<a href="/photo/#{id}" id="#{id}" title="#{caption}">\
            		  <img src="#{src}" class="thumb" />\
            		</a>\
            	</li>'
            );
            FCG.data.event.photos.each(function(photo){
              var values = {id: photo.id, src: photo.thumb, img_full: photo.full, caption: photo.caption || '' };
              var content = t.evaluate(values);
              $('photos').insert( { bottom: content } );
            });
          };

          return{
            start: function(){
              updatePhotos();
              createCarousel();
            }
          };
        }();

        var photoProxy = function(el){
          var el, statusEl;
          var isLoading = function(val){
            if (val){
              $('photos').hide();
              FCG.element.loader.show();
            } else {  
              $('photos').show();
              FCG.element.loader.hide();
            }
          };

          return {
            init: function (element) {
              el = $(element);
              statusEl = element + "_status";
            },
            get: function(event_id){
              isLoading(true);
              var callback = {
                success: function(r){
                  FCG.data.event = r.responseText.evalJSON(true);
                  populateEvent.start();
                  isLoading(false);
                },
                failure: function(r){
                  if (parseInt(r.status) == 400){
                    FCG.field.bad(statusEl, "Bad data");
                   isLoading(false);
                  } else {
                    FCG.message.set('The site is busy.');
                    isLoading(false);
                  }
                }
              }; 
              var cObj = $C.asyncRequest('get', "/events/"+ event_id + ".js", callback);
            }
          };
        }();
      
        var createCarousel = function(){
          FCG.page.carousel = new YAHOO.widget.Carousel("photos_container", { 
            numVisible: 6
          });
          FCG.page.carousel.render(); // render the widget inside the container 
          FCG.page.carousel.show(); // display the widget
        };
          
        var start = function(){
          // initializeLoader();
          // FCG.element.loader.show();
          (/^\/photos\/(\w+)/).exec(document.location.pathname);
          FCG.page.event_id = RegExp.$1;
          // createCarousel();
          // photoProxy.get(FCG.page.event_id);
        };

        return{
          init:function(){
            $E.on(window, 'load', start);
          }
        };
      }();
      FCG.page.init();
    },
    timeout: 10000,
    combine: true
});
loader.insert();