Btv.Templating.Register([{id:"RatingsList",fnc:function($data){var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};with($data){ RatingItem = function(o, ht) {var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};_write('\r\n\n<div style=\"margin-bottom:10px;\">\n<div style=\"float:left; font-size:16px; font-weight:bold; margin-right:8px;\">#');_write(ht.info.iRating);_write('</div>\n<div style=\"float:left; margin-right:8px; padding-top:4px;\">');_write(ht.fncRenderImage(ht.info));_write('</div>\n<div style=\"float:left;\">\n<div style=\"font-size:14px; font-weight:bold;\">');_write(ht.info.strName);_write('</div>\n<div style=\"font-size:11px;\">');_write(YAHOO.Btv.String.FormatNumber(ht.info.iPoints));_write(' pts</div>\n<div style=\"font-size:10px;\"><a href=\"');_write(ht.info.strRateUrl);_write('\">Rate &gt;</a></div>\n</div>\n<div style=\"clear:both;\"></div>\n</div>\n');;return($text.join(""));};
new (function(d, ui) {
var oThis = Btv.Lang.Extend(this, Btv.Cst.BaseTemplate, [$data, true]);
var htUI = ui;
var $el = oThis.El;

    var oElMan = oThis.ElMan();


    function RenderImage(oInfo)
    {
        oImg = Btv.Templating.GetInstance("SmartImage", {
            sizeBounds: { width: 40, height: 40 }
                    , doCrop: true
                    , ImageInfo: oInfo.oImg
                    , oCropAnchor: { width: .5, height: .25 }
                    , link: { href: oInfo.imgLinkUrl }
                    , ChangeStrategy: 'View'
        });
        return (oImg.Render());
    }


    oThis.GetHTML = function(fnc)
    {
        fnc(oThis.Render());
    }



    function RenderView()
    {
        var str = "";
        for (var i = 0; i < d.aData.length; i++)
        {
            str += htUI.RatingItem(oThis, {
                fncRenderImage: RenderImage
                ,info: d.aData[i]
            });
        }
        return (str);
    }

    oThis.DeclareVirtualMethods({
        Render: RenderView
    });
})($data, {RatingItem:RatingItem});
}return $text.join("");}},{id:"SmartImage",fnc:function($data){var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};with($data){ Main = function(o, imageUI) {var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};_write('\r\n \n<div ');_write(o.Elem('outer'));_write('  style=\"position:relative; overflow:hidden; zoom:1;');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('\n');_write(imageUI);_write('\n</div>\n');;return($text.join(""));};WithLink = function(o, ht) {var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};_write('\r\n\n<a ');_write(o.Elem('link'));_write('  href=\"\" style=\"');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('\n<img ');_write(o.Elem('image1'));_write('  style=\"zoom:1; position:relative; border-width: 0px; visibility: hidden;');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('</img>\n</a>\n');;return($text.join(""));};ImageOnly = function(o, ht) {var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};_write('\r\n\n<img ');_write(o.Elem('image2'));_write('  style=\"zoom:1; position:relative; border-width: 0px; visibility: hidden;');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('</img>\n');;return($text.join(""));};
new (function(d, ui) {
var oThis = Btv.Lang.Extend(this, Btv.Cst.BaseTemplate, [$data, true]);
var htUI = ui;
var $el = oThis.El;

    oThis.d = d;
    var oElMan = oThis.ElMan();
    var oDefaultAnchor = {width:.5, height:.5};
    var s, img;
    
    function SetImageProperties(cstname, sizeImg)
    {
        function A(s)
        {
            oAnchor = (sizeScaledImage[s] > d.sizeBounds[s]) ? (d.oCropAnchor || oDefaultAnchor) : (d.oBoxAnchor || oDefaultAnchor);
            oElMan.Style(cstname, (s == 'width') ? 'left' : 'top', Math.round((d.sizeBounds[s] - sizeScaledImage[s]) * oAnchor[s]) + "px");
        }
        
        var flScale = Math[d.doCrop ? 'max' : 'min'](d.sizeBounds.height / sizeImg.height, d.sizeBounds.width / sizeImg.width);
        if (d.blnNoUpsize) flScale = Math.min(1, flScale);
        var sizeScaledImage = Btv.UI.Drawing.ScaleSize(sizeImg, flScale, true);
        A('width');
        A('height');
        oElMan.Style(cstname, 'width', sizeScaledImage.width + 'px');
        oElMan.Style(cstname, 'height', sizeScaledImage.height + 'px');
    }
    
    function ImageLoaded(elImg)
    {
        SetImageProperties(elImg, d.ImageInfo.Size);
        elImg.style.visibility = 'visible';
    }

    oThis.UpdateImage = function(oImageInfo) {
        function DoneChanging(elImg) {
            elImg.style.visibility = 'visible';
        }

        function Change(elImg) {
            elImg.style.visibility = 'hidden';
            elImg.src = oImageInfo.Src;
            
            if ($(oThis.htIds['image1'])) SetImageProperties('image1', oImageInfo.Size);
            if ($(oThis.htIds['image2'])) SetImageProperties('image2', oImageInfo.Size);
        }

        d.ImageInfo = oImageInfo;
        if (d.ChangeStrategy == 'Hide') {
            oElMan.Style('image1', 'visibility', 'hidden');
            oElMan.Style('image2', 'visibility', 'hidden');
        }

        if (!oImageChanger1 && $(oThis.htIds['image1'])) {
            oImageChanger1 = new Btv.UI.Imaging.ImageChanger($(oThis.htIds['image1']), true);
        }

        if (!oImageChanger2 && $(oThis.htIds['image2'])) {
            oImageChanger2 = new Btv.UI.Imaging.ImageChanger($(oThis.htIds['image2']), true);
        }

        if (oImageInfo) {
            if (oImageChanger1) oImageChanger1.Change(Change, DoneChanging);
            if (oImageChanger2) oImageChanger2.Change(Change, DoneChanging);
        }
    }
    var oImageChanger1;
    var oImageChanger2;

    function InitElements() {
        function fnc(oImg, bln) {
            if (bln) {
                SetImageProperties('image1', oImg);
                SetImageProperties('image2', oImg);
            }
        }
        
        oElMan.Style('outer', 'width', d.sizeBounds.width + 'px');
        oElMan.Style('outer', 'height', d.sizeBounds.height + 'px');

        if (d.ImageInfo) {
            oElMan.Style('image1', 'visibility', 'visible');
            oElMan.Style('image2', 'visibility', 'visible');
            oElMan.Attribute('image1', 'src', d.ImageInfo.Src);
            oElMan.Attribute('image2', 'src', d.ImageInfo.Src);

            if (d.ImageInfo.Size == null) {
                Btv.UI.Imaging.Load(d.ImageInfo.Src, fnc);
            }
            else {
                SetImageProperties('image1', d.ImageInfo.Size);
                SetImageProperties('image2', d.ImageInfo.Size);
            }
        }
    }

    oThis.ElementProps = function(id, scope, name, isInit, params, ht) {
        switch (scope) {
            case "link":
                if (isInit && d.link) {
                    ht.attr.href = d.link.href;
                    if (d.link.target) ht.attr.target = d.link.target;
                }
                break;
        }
    }

    function Render() {
        var imageUI = '';
        
        if (oThis.d.link == null) {
            imageUI = htUI.ImageOnly(oThis);
        }
        else {
            imageUI = htUI.WithLink(oThis);
        }
        InitElements();
        return (htUI.Main(oThis, imageUI));
    }

    oThis.DeclareVirtualMethods({
        Render: Render
    });

})($data, {Main:Main,WithLink:WithLink,ImageOnly:ImageOnly});
}return $text.join("");}},{id:"Container.ViewModule",fnc:function($data){var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};with($data){ Main = function(o, ht) {var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};_write('\r\n\n<div ');_write(o.Elem('Root'));_write('  class=\"content-container\" style=\"');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('\n<h2 ');_write(o.Elem('Title'));_write('  style=\"');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('</h2>\n<div class=\"sort-by\">\n<div ');_write(o.Elem('SortLinks'));_write('  style=\"');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('</div>\n</div>\n<div ');_write(o.Elem('ModuleBody'));_write('  style=\"');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('</div>\n<div style=\"clear:both;\"></div>\n</div>\n');;return($text.join(""));};ViewLink = function(o, ht) {var $text = [];var _write = function(text) {$text.push((typeof text == "number")?text:(text||""));};_write('\r\n\n<a ');_write(o.Elem('href' + '.' + ht.index));_write('  class=\"');_write(ht.blnStrongTag ? 'strong' : '');_write('\" href=\"javascript:');_write(ht.fncClick);_write('(');_write(ht.index);_write(')\" style=\"');_write(o.Style());_write('\">');_write(o.InnerHTML());_write('<span><span>');_write(ht.title);_write('</span></span></a>\n');;return($text.join(""));};
new (function(d, ui) {
var oThis = Btv.Lang.Extend(this, Btv.Cst.BaseTemplate, [$data, true]);
var htUI = ui;
var $el = oThis.El;

        var oElMan = oThis.ElMan();
        var blnDisplay = !!d.display;
        var currentView = d.currentView || 0;
        var moduleViewTemplates = {};

        function GetModuleViewTemplate (index) {
            if (!moduleViewTemplates[index]) {
                var oView = Btv.Templating.GetInstance(d.moduleViews[index].templateID, d.moduleViews[index].templateData || {});
                moduleViewTemplates[index] = oView;
            }
            return (moduleViewTemplates[index]);
        }
        
        function ChangeView(index)
        {
            if(index != currentView){
                var oldView = currentView;
                currentView = index;
                
                oElMan.Attribute(('href.' + oldView), 'class', '');
                oElMan.Attribute(('href.' + currentView), 'class', 'strong');
                oElMan.InnerHTML('ModuleBody', SetModuleViewBody(index));
                Btv.Ads.Change();
            }
        }
        
        function SetModuleViewBody(index)
        {
            function f() {
                if (++i == 2) {
                    oElMan.InnerHTML('ModuleBody', s);
                }
            }
            
            function HaveHTML(s_)
            {
                s = s_;
                f();
            }
            var s;
            var i=0;

            var view = GetModuleViewTemplate(index);
            view.GetHTML(HaveHTML);
            f();
        }

        function Render() {
            InitElements();
            return (htUI.Main(oThis));
        }

        function InitElements() {
            oElMan.Style('Root', 'display', (blnDisplay ? 'block' : 'none'));
            oElMan.InnerHTML('Title', d.title);

            var aViewTypes = new Array();
            for (var i = 0; i < d.moduleViews.length; i++) {
                var html = htUI.ViewLink(oThis, {
                             title: d.moduleViews[i].title
                            , fncClick: $OG(ChangeView)
                            , index: i
                            , blnStrongTag: i == currentView
                         });
                aViewTypes.push(html);

            }
            oElMan.InnerHTML("SortLinks", aViewTypes.join(""));
            oElMan.InnerHTML('ModuleBody', SetModuleViewBody(currentView));
        }

        oThis.DeclareVirtualMethods({
            Render: Render
        });
        
})($data, {Main:Main,ViewLink:ViewLink});
}return $text.join("");}}]);
