/*jslint browser: true, cap: false, passfail: false, undef: false, white: false */
/*global SONGHAY YAHOO */

(function(){

    //Module-level members:
    var application = SONGHAY.ui.MegaFunk;
    var index = SONGHAY.ui.Index;

    application.displayBuilder =
    {
        megaBabbleCallMade:false,
        megaBrowserAjaxDisplay:null,

		forDefaultCall:function(oTarget)
        {
            if(oTarget && (oTarget.innerHTML !== undefined))
            {
                oTarget.innerHTML = '<div class="AjaxMessage"><p>Sending request&#8230;<\/p><\/div>';
            }
        },

        forDisplayBlockResponse:function(oTarget, vTargetContent)
        {
            if(oTarget)
            {
                oTarget.innerHTML = vTargetContent;
                application.buildDisplay();
            }
        },

		forMegaBabble:function()
        {
            var o = YAHOO.util.Dom.get('MegaBabbleAjaxBlock');
            if(o && !self.megaBabbleCallMade)
            {
                index.ajax.display(null,
                    {
                        serverCommand:'babble',
                        targetId:o.id,
                        uriCase:'default'
                    });
            }
        },

        forMegaBabbleCall:function()
        {
            var o = YAHOO.util.Dom.get('MegaBabbleAjaxBlock');
            if(o)
            {
                o.innerHTML = "<img id=\"AjaxImage\" alt=\"Loading...\" src=\"./images/ajax-loading-browse.gif\" />";
            }
            self.megaBabbleCallMade = true;
        },

		forMegaBrowserCall:function()
		{
            var o = YAHOO.util.Dom.get('MegaBrowserDisplayArea');
            if(o && self.megaBrowserAjaxDisplay && (YAHOO.util.Dom.get('CarouselBlock') == null))
			{
				o.innerHTML = self.megaBrowserAjaxDisplay;
			}
		},

		forMegaBrowserCarousel:function()
        {
            var o = YAHOO.util.Dom.get('CarouselBlock');
            if(o)
            {
	            application.carouselHandlePrevButtonState = function(type, args)
	            {
	
	                var enabling = args[0];
	                var leftImage = args[1];
	                if(enabling)
					{
	                    leftImage.src = index.settings.CarouselLeftButtonUri.value;   
	                }
					else
					{
	                    leftImage.src = index.settings.CarouselLeftButtonDisabledUri.value;  
	                }
	
	            };
	            application.carouselHandleNextButtonState = function(type, args)
	            {
	
	                var enabling = args[0];
	                var rightImage = args[1];
	
	                if(enabling)
					{
	                    rightImage.src = index.settings.CarouselRightButtonUri.value;
	                }
					else
					{
	                    rightImage.src = index.settings.CarouselRightButtonDisabledUri.value;
	                }
	
	            };

	            index.carousel = new YAHOO.extension.Carousel("CarouselBlock", 
	                {
	                    numVisible:             8,
	                    animationSpeed:         0.6,
	                    scrollInc:              4,
	                    navMargin:              20,
	                    prevElement:            "prev-arrow",
	                    nextElement:            "next-arrow",
	                    size:                   16,
	                    wrap:                   true,
	                    prevButtonStateHandler: application.carouselHandlePrevButtonState,
	                    nextButtonStateHandler: application.carouselHandleNextButtonState,
						scrollAfterAmount:      1
	                }
	            );

                o = YAHOO.util.Dom.getElementsByClassName('CarouselBlockCommand', 'a', o);
                if(o && o.length)
                {
                    for(var i=0; i < o.length; i++)
                    {
                        index.ui.EventCore.setEventByMetaDataId('CarouselBlockCommand', o[i]);
                    }
                }
            }
        },

        forMegaBrowserDisplayArea:function()
        {
            var oDisplayArea = YAHOO.util.Dom.get('MegaBrowserDisplayArea');
            var oAjaxBlock = YAHOO.util.Dom.get('MegaBrowserAjaxBlock');
            if(oDisplayArea && oAjaxBlock)
            {
                self.megaBrowserAjaxDisplay = oDisplayArea.innerHTML;
                index.ajax.display(null,
                    {
                        serverCommand:'browse',
                        targetId:oDisplayArea.id,
                        uriCase:'default'
                    });
            }
        },

		forMegaGalleryList:function()
		{
            var o = YAHOO.util.Dom.get('MegaGalleryList');
			if(o)
			{
                YAHOO.util.Dom.setStyle(o, '-moz-border-radius', '96px');

                o = YAHOO.util.Dom.getElementsByClassName('MegaGalleryLink', 'a', o);
                if(o && o.length)
                {
                    for(var i=0; i < o.length; i++)
                    {
                        index.ui.EventCore.setEventByMetaDataId('MegaGalleryLink', o[i]);
                    }
                }
            }
		},

        forMegaHeader:function()
        {
            var o = YAHOO.util.Dom.get('MegaHeader');
            if(o)
            {
                YAHOO.util.Dom.setStyle(o, '-moz-border-radius', '96px');
            }
        }
    };

    //Module-level "self":
    var self = application.displayBuilder;

})();
