﻿/* JW Media Player interactive functions
modified for use with swfobject 2.0 */
function getUpdate(typ,pr1,pr2,swf) {};
function sendEvent(swf,typ,prm) {
    swfobject.getObjectById(swf).sendEvent(typ,prm); 
};
function loadFile(swf,obj) {
    swfobject.getObjectById(swf).loadFile(obj);
};

/* 
    The repMaker code originated from an article at A List Apart
    called A More Accessible Map.
    http://www.alistapart.com/articles/cssmaps/
*/
	
var repMaker = {
	offsetX: -30, // tooltip X offset
	offsetY: 16,  // tooltip Y offset
	element: false,
	DLs:     false,
	DTs:     false,
	on:      false,
	/* constructor - sets events */
	init: function(){
		var i=0;
		var ii=0;
		var currentLocation = 0;
		repMaker.DLs = document.getElementsByTagName('dl');
		repMaker.DTs = document.getElementsByTagName('dt');
		// only loop thru items once
		if( repMaker.on == false ){
			//loop through each DL on page
			while (repMaker.DLs.length > i) {
				//only affect DLs with a class of 'songList'
				if (repMaker.DLs[i].className == 'songList'){
					//change songList DL class, this way list is text only without javascript enabled
					repMaker.DLs[i].className = 'songList on';
					//remove any white space
					repMaker.stripWhitespace(repMaker.DLs[i]);
					repMaker.stripWhitespace(repMaker.DTs[i]);
					// loop thru all DT elements
					while (repMaker.DTs.length > ii){
						//current Location
						currentLocation = repMaker.DTs[ii].firstChild;
						// add events to links
						//repMaker.addEvt(currentLocation,'mouseover',repMaker.showTooltip);//displays tooltip on mouse over
						//repMaker.addEvt(currentLocation,'mouseout',repMaker.hideTooltip);//hide tooltip on mouse out
						//repMaker.addEvt(currentLocation,'focus',repMaker.showTooltip);//display tooltip on focus, for added keyboard accessibility
						//repMaker.addEvt(currentLocation,'blur',repMaker.hideTooltip);//hide tooltip on focus, for added keyboard accessibility
						repMaker.addEvt(currentLocation,'click',repMaker.toggleTT);
						ii++;
					};
					ii=0;
				};
				i++;
			};
			repMaker.on = true;
		};
	},
	/* TOGGLE TOOLTIP */
	toggleTT: function() {
	    var evt = this;
	    var objid = evt.parentNode.nextSibling;
	    var showNew = false;
	    
	    // Check if this one is different than the original one that was clicked
        if (repMaker.element != objid) showNew = true;

        // Hide the current box if it's up
	    if (repMaker.element)
	    {
	        repMaker.element.style.left = '-9999px';
	        repMaker.element = false;
        }
        
        // Show the new box if necessary
	    if (showNew)
        {
            repMaker.element = objid;
	        objid.style.left = evt.offsetLeft + repMaker.offsetX + 'px';
	        objid.style.top = evt.offsetTop + repMaker.offsetY + 'px';
	    }
	    // since we're using click instead of the original mouseover, we need to return
	    // false so that the link isn't actually followed
	    return false;
	},
	/* SHOW TOOLTIP */
	showTooltip: function() {
		var evt = this;
		//Find DD to display - based on currently hovered anchor move to parent DT then next sibling DD
		var objid = evt.parentNode.nextSibling;
		repMaker.element = objid; //set for the hideTooltip

		objid.style.left = evt.offsetLeft + repMaker.offsetX + 'px';
		objid.style.top = evt.offsetTop + repMaker.offsetY + 'px';
/*		
		//get width and height of background map
		var mapWidth  = objid.parentNode.parentNode.offsetWidth;
		var mapHeight = objid.parentNode.parentNode.offsetHeight;
		//get width and height of the DD
		var toopTipWidth = objid.offsetWidth;
		var toopTipHeight = objid.offsetHeight;
		//figure out where tooltip should be places based on point location
		var newX = evt.offsetLeft + repMaker.offsetX;
		var newY = evt.offsetTop + repMaker.offsetY;
		//check if tooltip fits map width 
		if ((newX + toopTipWidth) > mapWidth) {
			objid.style.left = newX-toopTipWidth-24 + 'px';
		} else {
			objid.style.left = newX + 'px';
		};
		//check if tooltip fits map height 
		if ((newY + toopTipHeight) > mapHeight) {
			objid.style.top = newY-toopTipHeight-14 + 'px';
		} else {
			objid.style.top = newY + 'px';
		};
*/		
	},
	/* HIDE TOOLTIP */
	hideTooltip: function() {
		repMaker.element.style.left = '-9999px';
	},
	addEvt: function(element, type, handler) {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = repMaker.addEvt.guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			};
		};
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = repMaker.handleEvent;
	},
	handleEvent: function(event) {
		var returnValue = true;
		// grab the event object (IE uses a global event object)
		event = event || repMaker.fixEvent(window.event);
		// get a reference to the hash table of event handlers
		var handlers = this.events[event.type];
		// execute each event handler
		for (var i in handlers) {
			this.$$handleEvent = handlers[i];
			if (this.$$handleEvent(event) === false) {
				returnValue = false;
			};
		};
		return returnValue;
	},
	fixEvent: function(event) {
		// add W3C standard event methods
		event.preventDefault = repMaker.fixEvent.preventDefault;
		event.stopPropagation = repMaker.fixEvent.stopPropagation;
		return event;
	},
	stripWhitespace: function( el ){
		for(var i = 0; i < el.childNodes.length; i++){
			var node = el.childNodes[i];
			if( node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
				node.parentNode.removeChild(node);
			};
		};
	}
};
repMaker.fixEvent.preventDefault = function() {this.returnValue = false;};
repMaker.fixEvent.stopPropagation = function() {this.cancelBubble = true;};
repMaker.addEvt.guid = 1;

/* LOAD SCRIPT */
	/* for Mozilla */
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", repMaker.init, null);
		};
		
	/* for Internet Explorer */
		/*@cc_on @*/
		/*@if (@_win32)
			document.write("<script defer src='/js/repertoire-ie-onload.js'><"+"/script>");
		/*@end @*/
		
	/* for other browsers */
		repMaker.addEvt( window, 'load', repMaker.init);



