

var BBwidget = {
    init: function() {
    
        // Detect IE
        var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
        var version = "0.58 Beta";
        var skin = 1;

        var picWidthLimit = 180;

        // Make global Objects
        if (typeof (recCount) == "undefined") {
            JSONdata = new Object;
            recCount = new Object;
            tabProfile = new Object;
            preview = new Object;
            showPlay = new Object;
        }

        var widgetID = 'BBwidget_1';
        widgetID = widgetID.toLowerCase();
        var debug = 'false';
        recCount[widgetID] = 3;
        tabProfile[widgetID] = 4;
        showPlay[widgetID] = true;
        preview[widgetID] = 'false'; 

        JSONdata[widgetID] = {
        "bandbase" : [
        
                {       
                "bandname":"Diamondback"
                ,"bandurl":"Http://www.bandbase.dk/Diamondback/"
                ,"bandimage":"/Images/NoPhoto/50_Band.gif"
                ,"trackname":"Home of the Brave, Home of the Ghosts"
                 ,"trackid":"122769"
                 ,"trackurl":"http://www.bandbase.dk/Diamondback/Track/122769/Home-of-the-Brave-Home-of-the-Ghosts/"    
                },
            
                {       
                "bandname":"Liboriussen"
                ,"bandurl":"Http://www.bandbase.dk/Liboriussen/"
                ,"bandimage":"http://node2.files.bandbase.com/Images/Band/Profile/50/2010/7/9/240d737b-ea92-46a4-80e9-fd8f59e99d38.jpg"
                ,"trackname":"Liboland"
                 ,"trackid":"158377"
                 ,"trackurl":"http://www.bandbase.dk/Liboriussen/Track/158377/Liboland/"    
                },
            
                {       
                "bandname":"Gun Art Audio"
                ,"bandurl":"Http://www.bandbase.dk/GunArtAudio/"
                ,"bandimage":"http://node2.files.bandbase.com/Images/Band/Profile/50/2009/8/29/8169ec12-1e06-427d-9605-0465d3ef6049.jpg"
                ,"trackname":"No Harm, No One's Charm"
                 ,"trackid":"157557"
                 ,"trackurl":"http://www.bandbase.dk/GunArtAudio/Track/157557/No-Harm-No-One's-Charm/"    
                }
            ]
        
        ,
        
         "TDC" : [
        
                {       
                "bandname":"Eminem"
                ,"bandurl":"http://musik.tdconline.dk/servlets/2452306090224Dispatch/19/jspinclude?file=.%2Findex.jsp&amp;tplDir=web&amp;page=viewartist&amp;artistid=747186"
                ,"bandimage":"http://api.mds.att-idns.net/xmlserver/img/20008000-20008999/8942669BCA025598E040010A0B062991.jpg"
                ,"trackname":"Love The Way You Lie"
                ,"trackid":"84958447"
                ,"trackurl":"http://musik.tdconline.dk/servlets/2452306090224Dispatch/19/jspinclude?file=.%2Findex.jsp&tplDir=web&page=viewtrack&trackid=84958447"
                ,"tracksampleurl":"http://api.mds.att-idns.net/xmlserver/samples/20807000-20807999/893C6AE4A10C6913E040010A0B067066.mp3"    
                },
            
                {       
                "bandname":"Matthew 'mdot' Finley"
                ,"bandurl":"http://musik.tdconline.dk/servlets/2452306090224Dispatch/19/jspinclude?file=.%2Findex.jsp&amp;tplDir=web&amp;page=viewartist&amp;artistid=14746100"
                ,"bandimage":"http://api.mds.att-idns.net/xmlserver/img/21442000-21442999/8BBAD6D9984FEDB1E040010A0B0618C4.jpg"
                ,"trackname":"Fire"
                ,"trackid":"86209679"
                ,"trackurl":"http://musik.tdconline.dk/servlets/2452306090224Dispatch/19/jspinclude?file=.%2Findex.jsp&tplDir=web&page=viewtrack&trackid=86209679"
                ,"tracksampleurl":"http://api.mds.att-idns.net/xmlserver/samples/21543000-21543999/8BBAD6D99876EDB1E040010A0B0618C4.mp3"    
                },
            
                {       
                "bandname":"Lady Gaga"
                ,"bandurl":"http://musik.tdconline.dk/servlets/2452306090224Dispatch/19/jspinclude?file=.%2Findex.jsp&amp;tplDir=web&amp;page=viewartist&amp;artistid=5095642"
                ,"bandimage":"http://api.mds.att-idns.net/xmlserver/img/15815000-15815999/782BC2229BD272C2E040010A0B060BA3.jpg"
                ,"trackname":"Alejandro"
                ,"trackid":"80195066"
                ,"trackurl":"http://musik.tdconline.dk/servlets/2452306090224Dispatch/19/jspinclude?file=.%2Findex.jsp&tplDir=web&page=viewtrack&trackid=80195066"
                ,"tracksampleurl":"http://api.mds.att-idns.net/xmlserver/samples/13000000-13000999/7807018EEB313CDBE040010A0B06784B.mp3"    
                }
            
            ]
        
        };

        // for Internet Explorer (using conditional comments)/*@cc_on @*//*@if (@_win32)document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");var script = document.getElementById("__ie_onload");script.onreadystatechange = function() {  if (this.readyState == "complete") { renderContainer(); // call the onload handler  }};/*@end @*/
        
        if (ie7) {
           document.onload = renderContainer();
        } else {
            window.onload = renderContainer();
        }
        
        if (document.getElementById('widgetTest') == undefined && debug=='true') {
            var widgetTest = document.createElement('div');
            widgetTest.setAttribute('id', 'widgetTest');
            widgetTest.setAttribute('style', 'border: dashed 2px #AAAAAA;padding:5px;margin:10px;position:absolute;top:10px;left:10px;font-family:Courier;font-size:10px;overflow:auto;height:200px; width:400px; background-color:#FEFEFE; text-align:left;z-index:1000000;');
            document.body.appendChild(widgetTest);
            widgetTest.innerHTML = widgetTest.innerHTML + "<strong>BandBase widget debug ready. <font color='green'>" + version + "</font></strong><hr />";
        }

        function renderContainer() {
            
            // GET THE CURRENT WIDGET JS
            if (widgetID != "") {
                var js = document.getElementsByTagName("script");
                for ( var i in js ) {
                    if (js[i].src != undefined) {
                        if (js[i].src.indexOf('BBLib') > 0 && js[i].src.toLowerCase().indexOf(widgetID)) {
                             gadgetJS = js[i];
                             writeDebug(widgetID, 'container init');
                        }
                    }
                }   
            } else {
                alert("FAILURE! There is no widgetID");
            }

            // LOAD EXTERNAL CSS
            loadCSS('http://www.bandbase.dk/StyleSheet/BBWidgetV2.css');

            // Make the container for the widget
            var widgetContainer = createElement(widgetID, 'BBw_container', 'div', 'BBw2_container', '');

            // Loading image container
            var loadingContainer = document.createElement('div');
            loadingContainer.setAttribute('id', widgetID + 'BBw_loading');
            loadingContainer.setAttribute('style','display: block; background: url("http://www.bandbase.dk/images/icons/load.gif") no-repeat 50% 50%; height: 50px;')

            // Make the header content
            var BBHeader = createElement(widgetID, 'BBHeader', 'div', 'BBw2_header');

            var BBSubHeader = createElement(widgetID, 'BBSubHeader', 'span', 'BBw2_LH',null, 'Local Heroes');

            var BBSubHeader2 = document.createElement('strong');
            BBSubHeader2.innerHTML = 'Top 3 <em> Mest populære bands fra 8500</em>';

            var BBTabs = createElement(widgetID, 'BBTabs', 'div', 'BBw2_tabs');

            var TDCTab = createTabHyperlink(widgetID, "BBTabsTDCSpan", "TDCTab", "TDC PLAY");
            var BBtab = createTabHyperlink(widgetID, "BBTabsBandBaseSpan", "BBTab", "BandBase");

            BBHeader.appendChild(BBTabs);
            BBHeader.appendChild(BBSubHeader);

            switch (tabProfile[widgetID]) {
                case 1:
                    break;
                case 2:
                    break;      
                case 3:
                    BBTabs.appendChild(BBtab);
                    BBTabs.appendChild(TDCTab);
                    break;
                case 4:
                    BBTabs.appendChild(TDCTab);
                    BBTabs.appendChild(BBtab);
                    break;
            }

            // Make content tabs
            var BBContentTab = document.createElement('span');
            BBContentTab.setAttribute('id', widgetID + 'BBw_content');
            var TDCContentTab = document.createElement('span');
            TDCContentTab.setAttribute('id', widgetID + 'TDCw_content');

            // DEBUG HEADER
            var debugHeader = createElement(widgetID, 'debugHeader', 'div', undefined, 'text-align:center;font-family:Arial;font-size:9px;font-weight:bold;', widgetID);

            // Assemble widget content
            widgetContainer.appendChild(BBHeader);
            widgetContainer.appendChild(BBSubHeader2);
            widgetContainer.appendChild(loadingContainer);

            widgetContainer.appendChild(TDCContentTab);
            widgetContainer.appendChild(BBContentTab);

            // Insert the container just before the javascript on loading page
            if (debug == 'true') {gadgetJS.parentNode.insertBefore(debugHeader, gadgetJS);};
            gadgetJS.parentNode.insertBefore(widgetContainer, gadgetJS);

            writeDebug(widgetID, "end of init<hr />");  

            // If we are in previewMode
            if (preview[widgetID] == 'true') { renderContent(); }

            renderContent();

        }

        function renderContent(){
            
            writeDebug(0, "<font color='maroon'><strong>All widgets are initialized</strong></font><hr />");
            writeDebug(0, "Finding widget containers...");
            
            var scriptTags = document.getElementsByTagName('script');
            var i;
            
            // Find script occurences
            for (i in scriptTags) {
                // Make sure script has src
                if (scriptTags[i].src) {
                    // Get those BB widgets
                    if (scriptTags[i].src.toLowerCase().indexOf("bbwidgetid")!=-1) {
                        
                        // Find widget id in javascript src
                        var tagSplit = scriptTags[i].src.split('?')[1].split('&');
                        for (b in tagSplit) {
                            
                            if (typeof (tagSplit[b]) == 'string') {
                                var tester = tagSplit[b].toLowerCase().split('=');
                                if (tester[0] == 'bbwidgetid') {
                                    var scriptTagID = tester[1];
                                }
                            }
                        } 
                                   
                       writeDebug(scriptTagID, "found");
                       
                       var tabs = document.getElementById(scriptTagID + 'BBTabs');
                       
                       switch (tabProfile[scriptTagID]) {
                        case 1:
                            // Bandbase tab
                            renderList(scriptTagID,0);
                            break;
                        case 2:
                            // TDC PLAY tab
                            renderList(scriptTagID,1);
                            break;
                        case 3:
                            // Bandbase tab
                            renderList(scriptTagID,0);      
                            // TDC PLAY tab
                            renderList(scriptTagID,1);              
                            // Set selected and Hide other tab
                            shiftClass(scriptTagID + 'BBTabsBandBaseSpan', 'selected');
                            document.getElementById(scriptTagID + 'TDCw_content').style.display = "none"; 
                            break;
                        case 4:
                            // TDC PLAY tab
                            renderList(scriptTagID,1);      
                            // Bandbase tab
                            renderList(scriptTagID,0);     
                            // Set selected and Hide other tab
                            shiftClass(scriptTagID + 'BBTabsTDCSpan', 'selected');
                            document.getElementById(scriptTagID + 'BBw_content').style.display = "none";  
                            break;
                        }
                                      
                }
            }     
        }

        function renderList(scriptTagID, widgettype) {
            // DECLARE VARIABLES
            var str = "";
            var i = 0;
            var imageurl = "";
            var itemimage;
            var itemEntryName;
            var partner;

            // Make object with items
            if (widgettype==0) {
                var items = JSONdata[scriptTagID].bandbase;
                 writeDebug(scriptTagID, "Showing content from BandBase");
                 partner = 0;
            } else {
                var items = JSONdata[scriptTagID].TDC;
                writeDebug(scriptTagID, "Showing content from TDC PLAY");
                partner = 1;
            }

            if (items != undefined) {
                writeDebug(scriptTagID, "Found JSON data");
            } else {
                writeDebug(scriptTagID, "<font color='red'>Did not find JSON data</font>");
                return false;
            }

            // hide loader
            document.getElementById(scriptTagID + 'BBw_loading').setAttribute('style','display:none;');

            str = str + "<div id='BBw_chart'><ol id='" + scriptTagID + "BBw_list' class='BBw_list'>"
              
            writeDebug(scriptTagID, "Making content");

            for (i=0;i<=(recCount[scriptTagID]-1) && i<=items.length-1;i++) {

                //MAKE IMAGE URL
                itemimage = items[i].bandimage;
                if (itemimage != undefined) {
                    if (itemimage.indexOf("http") > -1 ) {
                        imageurl = itemimage;
                    } else {
                        imageurl = "http://www.bandbase.dk" + itemimage;
                    }
                }
                
                itemEntryName =  items[i].trackname;
                
                if (items[i].trackname.length > 40) {
                    itemEntryName = items[i].trackname.substring(0,40) + '...';
                }      

                str = str + "<li class='entry'>"; 
                
                str = str + "<div class='count'>" + (i+1) + ".</div>";
                
                // ONLY SHOW PICTURE IF WIDGET WIDTH > picWidthLimit PX
                if (document.getElementById(scriptTagID + "BBw_container").offsetWidth > picWidthLimit) {

                    str = str + "<a href='" + items[i].bandurl + "' target='_blank'>"
                    str = str + "<img class='' src='" + imageurl + "' alt='" + items[i].bandname + "'/>";
                    str = str + "</a>";
                }
                
                if (showPlay[scriptTagID] != false) {
                
                    if (partner == 0) {
                        // Make BandBase Player
                        str = str + '<embed height="20" width="20" flashvars="bbTrackId=' + items[i].trackid + '&amp;bbuid=0" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" quality="high" bgcolor="#ffffff" name="271760_4" id="271760_4" style="" src="http://www.bandbase.dk/PlayerV2/InlinePlayer.swf" type="application/x-shockwave-flash"/>';
                    } else {
                        // Make TDC Player    
                        str = str + '<embed height="20" width="20" flashvars="mp3Track=' + items[i].tracksampleurl + '" wmode="transparent" allowfullscreen="true" allowscriptaccess="always" quality="high" bgcolor="#ffffff" style="" src="http://www.bandbase.dk/PlayerV2/InlinePlayer.swf" type="application/x-shockwave-flash"/>';
                    }
                }
                
                str = str + "<span><a href='" + items[i].bandurl + "' target='_blank'>" + items[i].bandname + "</a></span>";
                str = str + "<a href='" + items[i].trackurl + "' target='_blank'>" + itemEntryName + "</a>";
                
                str = str + "</li>";
            }

            str = str + "</ol></div>"

            // Write content to gadget...voila!
            writeDebug(scriptTagID, "Writing content to content div");
            
            if (partner == 0) {
                var widgetContent = document.getElementById(scriptTagID + 'BBw_content');
                widgetContent.innerHTML = str;
                widgetContent.appendChild(boilerPlate(scriptTagID, partner));
            } else {
                var widgetContent = document.getElementById(scriptTagID + 'TDCw_content');
                widgetContent.innerHTML = str;
                widgetContent.appendChild(boilerPlate(scriptTagID, partner));
            } 

            writeDebug(scriptTagID, "Finished rendering content<hr />");
            if (preview[scriptTagID] == 'true') {document.getElementById("loaderimage").style.display = "none";} 
            }
        }

        function createTabHyperlink (widgetID, id, openTab, text) {
            
            // Make Tabs
            var Hyperlink = document.createElement('a');
            Hyperlink.setAttribute('href', 'javascript:void(0);');
            Hyperlink.onclick = function () {showTab(widgetID + openTab);};
            Hyperlink.innerHTML = text;

            var Span = document.createElement('span');
            Span.setAttribute('id', widgetID + id);
            Span.appendChild(Hyperlink);
            
            return Span;
        }

        function boilerPlate (scriptTagID, partnerID) {

            var boilerPlateID;
            var boilerPlaterContent;
            var logos = new Array;
            
                    
            switch (partnerID) {
                case 0:

                    if (skin==1) {
                        logos[0] = "http://www.bandbase.dk/Images/Widget/koda_spillesteder.png"
                        logos[1] = "http://www.bandbase.dk/Images/Widget/partner_BB.png"
                    } else {
                        // Dark alternative
                        logos[0] = "http://www.bandbase.dk/Images/Widget/koda_spillesteder_dark.png"
                        logos[1] = "http://www.bandbase.dk/Images/Widget/partner_BB_dark.png"
                    }
                    // Make BandBase Boilerplate
                    boilerPlateID = "BBw_BandBaseBoilerplate";

                        BoilerPlateContent = '<span style="display: block; padding: 5px 10px; text-align: left;">';
                        BoilerPlateContent = BoilerPlateContent + 'Hent musikken gratis p&aring; <a href="http://www.bandbase.dk/">BandBase.dk</a><br><img alt="#" src="' +  logos[0] + '" style="margin-top: 2px" /><a href="http://www.bandbase.dk/" target="_blank"><img style="border: medium none ; padding: 0pt; float: right; margin-top: 2px;" alt="BandBase.dk" src="' + logos[1] + '"/></a></span>';
                   
                    break;
                    
                case 1:
                    
                    if (skin==1) {
                        logos[0] = "http://www.bandbase.dk/Images/Widget/koda_spillesteder.png"
                        logos[1] = "http://www.bandbase.dk/Images/Widget/partner_tdcplay.png"
                    } else {
                        // Dark alternative
                        logos[0] = "http://www.bandbase.dk/Images/Widget/koda_spillesteder_dark.png"
                        logos[1] = "http://www.bandbase.dk/Images/Widget/partner_tdcplay_dark.png"
                    }   
                    
                    // Make TDC Boilerplate        
                    boilerPlateID = "BBw_TDCBoilerplate";
                    //widgetContent = document.getElementById(scriptTagID + 'TDCw_content');

                    BoilerPlateContent = '<span style="display: block; padding: 5px 10px; text-align: left;">';
                    BoilerPlateContent = BoilerPlateContent + 'Find musikken p&aring; <a href="http://tdcplay.dk/">tdcplay.dk</a><br><img alt="#" src="' +  logos[0] + '" style="margin-top: 2px" /><a href="http://tdcplay.dk/" target="_blank"><img style="border: medium none ; padding: 0pt; float: right; margin-top: 2px;" alt="tdcplay.dk" src="' + logos[1] + '"/></a></span>';
                     
                    break;
            }
            
            var Boilerplate = document.createElement('div');
            Boilerplate.setAttribute('id', widgetID + boilerPlateID);
            Boilerplate.setAttribute('class','BBw2_boilerplate');
            Boilerplate.setAttribute('className','BBw2_boilerplate');
            
            Boilerplate.innerHTML = BoilerPlateContent;
            
            return Boilerplate;  
        }

        function showTab(tab) {

            var selector = 0;
            
            if (tab.indexOf('BBTab') > -1) {selector = 1;};
            
            tab = tab.replace("BBTab","");
            tab = tab.replace("TDCTab","");

            if (selector == 1) {
                document.getElementById(tab + 'BBw_content').style.display = "inline";
                document.getElementById(tab + 'TDCw_content').style.display = "none";
                shiftClass(tab + 'BBTabsBandBaseSpan', 'selected');
                shiftClass(tab + 'BBTabsTDCSpan', '');
            } else {
                document.getElementById(tab + 'BBw_content').style.display = "none";
                document.getElementById(tab + 'TDCw_content').style.display = "inline";
                shiftClass(tab + 'BBTabsBandBaseSpan', '');
                shiftClass(tab + 'BBTabsTDCSpan', 'selected');
            }
        }

        function createElement(widgetId, elementId, elementType, elementClass, style, text) {
            
            // Make the container for the widget
            var element = document.createElement(elementType);
            element.setAttribute('id', widgetId + elementId);
            element.setAttribute('class', elementClass);
            element.setAttribute('className', elementClass);
            
            if (style!=undefined) {element.setAttribute('style', style)};
            if (text!=undefined) {element.innerHTML = text};
            
            return element;
        }

        function shiftClass(id, className) {
            document.getElementById(id).setAttribute('class', className);
            document.getElementById(id).setAttribute('className', className);
        }

        function loadCSS(path) {
            // LOAD EXTERNAL CSS
            // TO-DO: Make rutine that checks if current stylesheet is already loaded, and then skip
            var fileref = document.createElement("link")
            var filename = path;
            fileref.setAttribute("rel", "stylesheet")
            fileref.setAttribute("type", "text/css")
            fileref.setAttribute("href", filename)
            
            if (path.toString().toLowerCase().indexOf("dark") > 0) {
                skin = 2;
            }

            // APPEND THE LOADED CSS IN HEAD
            document.getElementsByTagName("head")[0].appendChild(fileref)
            writeDebug(widgetID, 'stylesheet <a href="' + filename + '"><font color="blue"><strong>' + filename + '</strong></font></a> appended to HTML header');
        }

        function writeDebug(widgetID, debugstring) {
            if (debug == 'true') {
                if (widgetID != 0) {
                    widgetTest.innerHTML = widgetTest.innerHTML + '<font color=green>' + widgetID + ':</font>' + debugstring + '<br />';
                } else {
                    widgetTest.innerHTML = widgetTest.innerHTML + debugstring + '<br />';
                }
            }
        }

        // SETUP DEBUG WINDOW
        function createDebugWindow() {
            if (document.getElementById('widgetTest') == undefined && debug=='true') {
                var widgetTest = document.createElement('div');
                widgetTest.setAttribute('id', 'widgetTest');
                widgetTest.setAttribute('style', 'border: dashed 2px #AAAAAA;padding:5px;margin:10px;position:absolute;top:10px;left:10px;font-family:Courier;font-size:10px;overflow:auto;height:200px; width:400px; background-color:#FEFEFE; text-align:left;z-index:1000000;');
                document.body.appendChild(widgetTest);
                widgetTest.innerHTML = widgetTest.innerHTML + "<strong>BandBase widget debug ready.</strong><hr />";
            }
        }
    }
};

BBwidget.init();