﻿/**
 *	Festival Republic - 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);
        }
    }
}


/**
 *  Accordion Effects
 *  Initialises accordion, and desactivate links
 */
var StartEffects = {

    divId: null,
    displayClass: null,
    stretcherClass: null,
    specialEffects: null,
    
    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
        
        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: 400}, this.specialEffects
	    );
	}
	
};


/**
 *  Activates the link with the "active" class
 */
var ActiveEffects = {
    
    mode: '',
    obj: null,
    
    init: function(m, o) {
        this.mode = m;
        this.obj = o;
        var aTag = this.obj.getElementsByTagName('a')[0];
        var aSpan = aTag.getElementsByTagName('span')[0];
        switch(this.mode) {
            case 'open':
                aTag.title = 'Close';
                aSpan.innerHTML = 'Close';
                break;
            case 'close':
                aTag.title = 'More';
                aSpan.innerHTML = 'More';
                break;
            case 'closeAndOpen':
                aTag.title = 'More';
                aSpan.innerHTML = 'More';
                break;
        }
    }
    
};


/**
 *  Festival Lightbox functions
 */
var LBox = {

    detect: null,
    OS: null,
    browser: null,
    version: null,
    total: null,
    thestring: null,
    place: null,
    
    overlayBox: null,
    leightboxHolder: null,

    init: function(args) {
        LBox.overlayBox = args[0];
        LBox.leightboxHolder = args[1];
        LBox.detect = navigator.userAgent.toLowerCase();
        LBox.getBrowserInfo();
        LBox.addLightboxMarkup();
	    
	    var lbox = document.getElementsByClassName('lbOn');
	    for(i = 0; i < lbox.length; i++) {
		    valid = new lightbox(lbox[i], args);
	    }
    },
    
    getBrowserInfo: function() {
	    if (LBox.checkIt('konqueror')) {
		    LBox.browser = "Konqueror";
		    LBox.OS = "Linux";
	    }
	    else if (LBox.checkIt('safari')) LBox.browser 	= "Safari"
	    else if (LBox.checkIt('omniweb')) LBox.browser 	= "OmniWeb"
	    else if (LBox.checkIt('opera')) LBox.browser 	= "Opera"
	    else if (LBox.checkIt('webtv')) LBox.browser 	= "WebTV";
	    else if (LBox.checkIt('icab')) LBox.browser 	= "iCab"
	    else if (LBox.checkIt('msie')) LBox.browser 	= "Internet Explorer"
	    else if (!LBox.checkIt('compatible')) {
		    LBox.browser = "Netscape Navigator"
		    LBox.version = LBox.detect.charAt(8);
	    }
	    else LBox.browser = "An unknown browser";

	    if (!LBox.version) LBox.version = LBox.detect.charAt(LBox.place + LBox.thestring.length);

	    if (!LBox.OS) {
		    if (LBox.checkIt('linux')) LBox.OS 		= "Linux";
		    else if (LBox.checkIt('x11')) LBox.OS 	= "Unix";
		    else if (LBox.checkIt('mac')) LBox.OS 	= "Mac"
		    else if (LBox.checkIt('win')) LBox.OS 	= "Windows"
		    else LBox.OS 							= "an unknown operating system";
	    }
    },
    
    checkIt: function(string) {
	    LBox.place = LBox.detect.indexOf(string) + 1;
	    LBox.thestring = string;
	    return LBox.place;
    },
    
    addLightboxMarkup:function() {
        
        // Overlay Box
	    var bod = document.getElementsByTagName('body')[0];
	    var overlayBox = document.createElement('div');
	    overlayBox.id = LBox.overlayBox;
	    bod.appendChild(overlayBox);
    	
    	// Lighbox Box
	    var leightboxHolder = document.createElement('div');
	    leightboxHolder.id = LBox.leightboxHolder;
	    bod.appendChild(leightboxHolder);
	    var lb_container = document.createElement('div');
	    lb_container.className = 'lb_container';
	    leightboxHolder.appendChild(lb_container);
    
    }
    
}

 

/**
 *  FAQ page functions
 */
var FAQ = {

    headerId: null,
    blockId: null,
    blockClass: null,
    
    blocks: new Array(),
    headers: new Array(),
        
    init: function(args) {
        this.headerId = args[0];
        this.blockId = args[1];
        this.blockClass = args[2];
    
        var b = $(this.blockId).getElementsByTagName('div');
        var bL = b.length;
        for(i=0;i<bL;i++) {
            if(b[i].className == this.blockClass) {
                FAQ.blocks.push(b[i]);
            }
        }
        
        var aTags = $(this.headerId).getElementsByTagName('a');
        var aL = aTags.length;
        for(i=0;i<aL;i++) {
            aTags[i].onclick = function() {
                FAQ.toggleBlock(this.id);
                return false;
            };
            FAQ.headers.push(aTags[i]);                
        }
        
        // Show first FAQ block
        FAQ.toggleBlock(1);
        
    },
    
    toggleBlock: function(eid) {
        var activeEl = null;
        var l = FAQ.blocks.length;
        for(i=0;i<l;i++) {
            if(FAQ.blocks[i].id == eid) {
                FAQ.showBlock(FAQ.blocks[i]);
                activeEl = eid;
            } else {
                FAQ.hideBlock(FAQ.blocks[i]);
            }
        }
        if(activeEl != null) {
            FAQ.activate(activeEl);
        }
    },
    
    activate: function(eid) {
        var l = FAQ.headers.length;
        for(i=0;i<l;i++) {
            if(i == eid-1) {
                FAQ.headers[i].className = 'active';
            } else {
                FAQ.headers[i].className = 'inactive';
            }
        }
    },
    
    showBlock: function(el) {
        el.style.display = 'block';
    },
    
    hideBlock: function(el) {
        el.style.display = 'none';
    }
    
};