﻿/**
*	Download - Javascript Tools
*
*	@date		2008-01-08
*	@author		Michael Giuliano
*	@copyright	Live Nation (Music) UK
*/



/**
*  Loader function
*  Add a function to window.onload event
*/
function addLoadEvent(func, args) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = function() {
            func(args);
        }
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func(args);
        }
    }
}



/**
*  Background Functions
*  Updates the background image
*/
var Background = {

    bgs: new Array(
        new Array('#000', 'url(/_Resources/img/bgs/1.jpg)'),
        new Array('#000', 'url(/_Resources/img/bgs/2.gif)'),
        new Array('#fff', 'url(/_Resources/img/bgs/3.gif) repeat-x'),
        new Array('#000', 'url(/_Resources/img/bgs/5.jpg)'),
        new Array('#000', 'url(/_Resources/img/bgs/6.jpg)')
    ),

    update: function() {

        var isHomePage = location.href.indexOf('home') >= 0 ? true : false;
        var c_bg = Background.checkCookie(isHomePage == true ? 'forceUpdate' : null);

        var html = document.getElementsByTagName('html')[0];
        var body = document.getElementsByTagName('body')[0];

        html.style.background = Background.bgs[c_bg][0];
        body.style.background = Background.bgs[c_bg][1];

    },

    checkCookie: function(_action) {
        switch (_action) {
            case null:
                var c_bg = Background.getCookie('c_bg');
                if (c_bg != null) {
                    return c_bg;
                } else {
                    var bgs_count = Background.bgs.length;
                    var randomNb = Math.floor(Math.random() * bgs_count);
                    Background.setCookie('c_bg', randomNb, null);
                    return randomNb;
                }
                break;
            case 'forceUpdate':
                var bgs_count = Background.bgs.length;
                var randomNb = Math.floor(Math.random() * bgs_count);
                while (this.getCookie('c_bg') == randomNb) {
                    randomNb = Math.floor(Math.random() * bgs_count);
                }
                this.setCookie('c_bg', randomNb, null);
                return randomNb;
                break;
        }
    },

    setCookie: function(_name, _value, _expiredays) {
        var expirydate = new Date();
        expirydate.setDate(expirydate.getDate() + _expiredays);
        document.cookie = _name + "=" + escape(_value);
        document.cookie += ((_expiredays == null) ? "" : ";expires=" + expirydate.toGMTString());
        document.cookie += ";path=/";
    },

    getCookie: function(_name) {
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(_name + "=");
            if (c_start != -1) {
                c_start = c_start + _name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return null;
    }

};



/**
*  Home page Functions
*/
var Home = {

    hDiv: null,
    aList: new Array(),
    hList: new Array(
        "0de5fae3-82bc-49fb-89d7-1cb6de225a4d",
        "23c4d35e-86c5-4a74-a91d-62669c81e690",
        "2b2aebf3-b102-40b2-8971-9ae3716d3c17",
        "2b43f9c0-43bb-439b-bf11-0a5fb98659f5",
        "3b7330f9-14db-4c53-858f-ca73866c0741",
        "3bdd492e-e1d1-42a6-af5f-b67ce419ffc1",
        "58998376-ce69-4424-9967-85434910bba0",
        "5ebba636-4414-450c-a316-7c06a9a7b948",
        "68b055ee-a55c-460a-a0c5-6aacfe8b0cab",
        "9258f185-5351-4bb6-a826-eb9b3ee61d05",
        "a18de418-dca8-44c2-ae84-1f484404ab93",
        "b35b295e-0e61-4fe9-adb3-2defd0761ee2",
        "c4b371c6-8304-43a1-b5d5-3e745e06d4af",
        "c7f37aa8-bf6b-49f7-9110-f282aa627470",
        "ccbf3f3d-cea9-4ec8-82b9-b6338abb86c3",
        "e1d6550f-ba03-40b9-af41-6f72a0e919a4",
        "fafe0f4c-52e3-4d14-a220-b12ae4cb9465"
    ),

    init: function(args) {

        Home.aList = args[0];
        Home.hDiv = args[1];
        alert(args[2]);
        // Start SlideShow
        var ss = new SlideShow('slideShow', args[2]);

        // Start news ticker
        NewsTicker.init();

        // Initialize Lightbox for Map
        lb = new LBox(null);

        // Fill in Headliners box
        //Home.populateHeadliners();

        // Fill in Artist Details box
        //Home.populateArtist();

        // Start "The Lowdown" Flash Element
        //var so = new SWFObject("/_Resources/flash/entry.swf", "thelowdown", "188", "254", "8", "#000000");
        //so.write("thelowdown");

        // Start "Video" Flash Element
        //var so = new SWFObject("videoDownload.swf", "dl_video", "265", "170", "8", "#000000");
        //so.addParam("allowScriptAccess", "always");
        //so.addParam("allowNetworking", "all");
        //so.addParam("quality", "high");
        //so.addParam("play", "false");
        //so.write("dl_video");

    },

    populateHeadliners: function() {

        // Build Headliners list
        var headliners = new Array();
        var al = Home.aList.length;
        var hl = Home.hList.length;

        if (al > 0) {
            for (i = 0; i < hl; i++) {
                for (j = 0; j < al; j++) {
                    if (Home.hList[i] == Home.aList[j]["guid"]) {
                        headliners.push(Home.aList[j]);
                        break;
                    }
                }

            }
        }

        // Build list of 3 random headliners
        var randomHeadliners = new Array(3);
        randomHeadliners = Home.getRandoms(headliners, 3);

        // Render HTML
        var as = $(Home.hDiv).getElementsByTagName('a');
        var imgs = $(Home.hDiv).getElementsByTagName('img');
        for (i = 0; i < 3; i++) {
            imgs[i].src = "/_Resources/img/bands/" + randomHeadliners[i]["guid"] + ".jpg";
            imgs[i].alt = randomHeadliners[i]["name"];
            as[i].href = "/lineup/artist.aspx?AID=" + randomHeadliners[i]["guid"];
        }

    },

    getRandoms: function(list, sticky) {
        var finalList = new Array(3);
        var randomNb = null;
        var aux = null;

        for (i = 0; i < sticky; i++) {
            var l = list.length;
            randomNb = Math.floor(Math.random() * l);
            aux = list[randomNb];
            list[randomNb] = list[l - 1];
            list[l - 1] = aux;
            finalList[i] = list.pop();
        }
        return finalList;
    },

    populateArtist: function() {
        var l = Home.aList.length;
        if (l > 0) {
            var randomNb = Math.floor(Math.random() * (l - 1));
            //$('artist_logo').src = this.aList[randomNb]["logo"];
            //$('artist_logo').alt = this.aList[randomNb]["name"];
            $('artist_name').innerHTML = Home.aList[randomNb]["name"];
            $('artist_img').src = Home.aList[randomNb]["url"];
            $('artist_biography').innerHTML = Home.aList[randomNb]["biography"];
            $('artist_link').href = "/lineup/artist.aspx?AID=" + Home.aList[randomNb]["guid"];
        }
    }
}


/**
*  Podcast page Functions
*/
var Podcast = {

    pDiv: null,     // MP3 Player DIV
    so: null,

    init: function(args) {

        Podcast.pDiv = args[0];

        // Start "Podcast" Flash Element
        Podcast.so = new SWFObject("/_Resources/flash/mp3player/mp3player.swf", "mp3player", "320", "300", "8", "#000000");
        Podcast.so.addVariable("configFile", "/_Resources/flash/mp3player/config.xml");

    },

    playlist: function(xmlfile) {
        Podcast.so.addVariable("playlistFile", xmlfile);
        Podcast.so.write(Podcast.pDiv);
    }

}



/**
*  Accordion Effects
*  Initialises accordion, and desactivate links
*/
var StartEffects = {

    divId: null,
    displayClass: null,
    stretcherClass: null,
    specialEffects: null,
    openFirstElement: false,

    init: function(args) {

        this.divId = args[0];               // Block ID
        this.displayClass = args[1];        // Display block class name
        this.stretcherClass = args[2];      // Stretcher block class name
        this.specialEffects = args[3];      // Special effect to apply after the Accordion affect
        this.openFirstElement = args[4];    // Opens first Accordion Element

        var stretchers = document.getElementsByClassName(this.stretcherClass);
        var toggles = document.getElementsByClassName(this.displayClass);

        // disable link
        var tl = toggles.length;
        for (i = 0; i < tl; i++) {
            var aTags = toggles[i].getElementsByTagName("a");
            aTags[0].onclick = function() {
                return false;
            };
        }

        // accordion effect
        var myAccordion = new fx.Accordion(
		    toggles, stretchers, { opacity: true, duration: 200 }, this.specialEffects, null
	    );

        // if loader present - initialise After effects function
        var _loader = $('loader_1');
        if (_loader != null) this.specialEffects.init('', null);

        // Open first element
        if (this.openFirstElement) {
            myAccordion.showThisHideOpen(stretchers[0]);
        }
    }

};


/**
*  Activates the link with the "active" class
*/
var ActiveEffects = {

    mode: '',
    obj: null,

    init: function(m, o) {
        this.mode = m;
        this.obj = o;
        if (this.obj != null) {
            var aTag = this.obj.getElementsByTagName('a')[0];
            switch (this.mode) {
                case 'open':
                    aTag.className = 'active';
                    break;
                case 'close':
                    aTag.className = '';
                    break;
                case 'closeAndOpen':
                    aTag.className = '';
                    break;
            }
        } else {

            // hide loaders
            var _loader_1 = $('loader_1');
            var _loader_2 = $('loader_2');
            if (_loader_1 != null) _loader_1.style.display = 'none';
            if (_loader_2 != null) _loader_2.style.display = 'none';

            // show contents
            var _content_1 = $('content_1');
            var _content_2 = $('content_2');
            if (_content_1 != null) _content_1.style.display = 'block';
            if (_content_2 != null) _content_2.style.display = 'block';
        }
    }

};


/**
*  Changes the class of the toggler
*  and the arrow image
*/
var ArrowEffects = {

    mode: '',
    obj: null,

    init: function(m, o) {
        this.mode = m;
        this.obj = o;
        if (this.obj != null) {
            var aTag = this.obj.getElementsByTagName('a')[0];
            var iTag = this.obj.getElementsByTagName('img')[0];
            switch (this.mode) {
                case 'open':
                    aTag.className = 'active';
                    iTag.src = '/_Resources/img/arrow-down.png';
                    break;
                case 'close':
                    aTag.className = '';
                    iTag.src = '/_Resources/img/arrow.png';
                    break;
                case 'closeAndOpen':
                    aTag.className = '';
                    iTag.src = '/_Resources/img/arrow.png';
                    break;
            }
        } else {

            // hide loaders
            var _loader_1 = $('loader_1');
            var _loader_2 = $('loader_2');
            if (_loader_1 != null) _loader_1.style.display = 'none';
            if (_loader_2 != null) _loader_2.style.display = 'none';

            // show contents
            var _content_1 = $('content_1');
            var _content_2 = $('content_2');
            if (_content_1 != null) _content_1.style.display = 'block';
            if (_content_2 != null) _content_2.style.display = 'block';
        }
    }

};




/**
*  Info page Functions
*/
var Info = {

    blockId: null,
    blockClass: null,
    headersId: null,
    infoItems: new Array(),

    init: function(args) {

        this.blockId = args[0];
        this.blockClass = args[1];
        this.headersId = $(args[2]);

        // Build info blocks objects
        var block = $(this.blockId);
        var el = block.getElementsByTagName('div');
        var el_length = el.length;
        for (i = 0; i < el_length; i++) {
            if (el[i].className == this.blockClass) {
                var tmp = el[i];
                Info.setParam(tmp, 'id', el[i].id);
                Info.infoItems.push(tmp);
            }
        }

        // Disable headers links & add click events
        var aTags = this.headersId.getElementsByTagName('a');
        var aL = aTags.length;
        for (i = 0; i < aL; i++) {
            aTags[i].onclick = function() {
                Info.showInfo(this);
                return false;
            }
        }

        // Show first info block
        Info.infoItems[0].style.display = 'block';

    },

    showInfo: function(el) {
        var l = Info.infoItems.length;
        for (i = 0; i < l; i++) {
            if (Info.infoItems[i].id == el.id) {
                Info.infoItems[i].style.display = 'block';
            } else {
                Info.infoItems[i].style.display = 'none';
            }
        }
    },

    setParam: function(e, param, value) {
        e[param] = value;
    },

    getParam: function(e, param) {
        return e[param];
    }

};


/**
*  Downloads page Functions
*/
var Downloads = {

    blockId: null,
    blockClass: null,
    dlContainers: new Array(),

    init: function(args) {

        this.blockId = args[0];
        this.blockClass = args[1];

        // Build container objects
        var block = $(this.blockId);
        var el = block.getElementsByTagName('div');
        var el_length = el.length;
        for (i = 0; i < el_length; i++) {
            if (el[i].className == this.blockClass) {
                var tmp = el[i];
                Downloads.dlContainers.push(tmp);
            }
        }

        // Build items objects
        var cl = Downloads.dlContainers.length;
        for (i = 0; i < cl; i++) {
            var a = Downloads.dlContainers[i].getElementsByTagName('a');
            var al = a.length;
            for (j = 0; j < al; j++) {
                a[j].onclick = function() {
                    Downloads.openWindow(this.href);
                    return false;
                };
            }
        }

    },

    openWindow: function(url) {
        var wRef = window.open(
            url,
            'Downloads',
            'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0'
        );
    },

    setParam: function(e, param, value) {
        e[param] = value;
    },

    getParam: function(e, param) {
        return e[param];
    }

};