//declare global variables and settings

mp3Player = new FlashSound();
webSFX = new FlashSound();
FlashSound.setMinPlayer(7);

var player;
var bPlayer = false;
var newWindow;
var maxWindow = false;
var curDTMF = 0;
var prevDTMF = 0;

// embed graphical SWF
function embedPlayer(){
		
	if(FlashSound.hasMinPlayer() && FlashSound.configuredForInteraction()){
		mp3Player.customEmbedSWF(
  		'SRC="SoundControl2.swf" WIDTH=110 HEIGHT=25 ' +
  		'BGCOLOR="FFFFFF" ' + 'QUALITY="high"'
		);
		player = document.getElementById('player');
	}
}

function addEventHandler(oTarget, sEventType, fnHandler) {
    if (oTarget.addEventListener) {
        oTarget.addEventListener(sEventType, fnHandler, false);
    } else if (oTarget.attachEvent) {
        oTarget.attachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = fnHandler;
    }
}
        
addEventHandler(window, "load", function () {
	if(!FlashSound.hasMinPlayer() ||
		!FlashSound.configuredForInteraction() ||
		!document.getElementsByTagName) {
		
		if(document.getElementsByTagName) {
			miniWinListeners();
			}
		return;
	}
	linkListeners();
});

function miniWinListeners() {
	var all_links = document.getElementsByTagName('a');
  	for (var i = 0; i < all_links.length; i++) {
    	var aLink = all_links[i]; 
    	if (aLink.className && (' ' + aLink.className + ' ').indexOf(' audio ') !=-1) {
			addEventHandler(aLink, "click", handleMiniWin);
		}
		
		if (aLink.className && (' ' + aLink.className + ' ').indexOf(' nlink ') !=-1) {
			addEventHandler(aLink, "click", handleNavDivEvents);
		}
		
		if (aLink.className && (' ' + aLink.className + ' ').indexOf(' miniWin ') !=-1) {
			addEventHandler(aLink, "click", handleMiniWin);
		}
	}
}

function linkListeners() {
	var all_links = document.getElementsByTagName('a');
  	for (var i = 0; i < all_links.length; i++) {
    	var aLink = all_links[i]; 
    	if (aLink.className && (' ' + aLink.className + ' ').indexOf(' audio ') !=-1) {
			addEventHandler(aLink, "click", handleSpeakerEvents);
		}
		
		if (aLink.className && (' ' + aLink.className + ' ').indexOf(' nlink ') !=-1) {
			addEventHandler(aLink, "click", handleNavDivEvents);
		}
		
		if (aLink.className && (' ' + aLink.className + ' ').indexOf(' miniWin ') !=-1) {
			addEventHandler(aLink, "click", handleMiniWin);
		}
		
		if (aLink.className && (' ' + aLink.className + ' ').indexOf(' dtmf ') !=-1) {
			addEventHandler(aLink, "mouseover", handleMouseOverSFX);
		}
 	 }
}

function handleMouseOverSFX(e) {
var varTone;
while(curDTMF == prevDTMF) {
	curDTMF = Math.floor(Math.random() * 9);
	}
	
	prevDTMF = curDTMF;
	varTone = '/dtmf' + curDTMF;
	webSFX.gotoAndPlay(varTone,'start');
}

function handleMiniWin(e) {
	var el; 
 	if (window.event && window.event.srcElement) {
   		el = window.event.srcElement;
	}
 	if (e && e.target) { 
  	 	el = e.target; 
	}
 	if (!el) { 
   		return;
	}
	
	while (el.nodeName.toLowerCase() != 'a' &&
      	el.nodeName.toLowerCase() != 'body') {
    	el = el.parentNode;
  		if (el.nodeName.toLowerCase() == 'body') {
    		return;
		}
	}
	
	maxWindow = false;
	if (el.className && (' ' + el.className + ' ').indexOf(' maxW ') !=-1) {
			maxWindow = true;
	}
	
	makeNewWindow(el.href);
		
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	
	if (e && e.stopPropagation && e.preventDefault) {
		e.stopPropagation();
		e.preventDefault();
	}
}

function makeNewWindow(nUrl) {
    if (!newWindow || newWindow.closed) {
		openWindow(nUrl);
    } else {
        // window is already open, so close it
        newWindow.close();
		openWindow(nUrl);
    }
}

function openWindow(winUrl) {
	var width = 400;
   	var height = 350;
	
	if(maxWindow) {
		width = 550;
		height = 500;
	}
	
    var left = parseInt((screen.availWidth) - (width + 30));
	var top = 25;
	var windowFeatures = "width=" + width + ",height=" + height + 
        ",status,resizable,scrollbars,left=" + left + ",top=" + top + 
        "screenX=" + left + ",screenY=" + top;
				
    newWindow = window.open(winUrl,"subWind", windowFeatures);
}

function handleSpeakerEvents(e) {
	var el; 
 	if (window.event && window.event.srcElement) {
   		el = window.event.srcElement;
	}
 	if (e && e.target) { 
  	 	el = e.target; 
	}
 	if (!el) { 
   		return;
	}
	
	while (el.nodeName.toLowerCase() != 'a' &&
      	el.nodeName.toLowerCase() != 'body') {
    	el = el.parentNode;
  		if (el.nodeName.toLowerCase() == 'body') {
    		return;
		}
	}
			
	player = document.getElementById('player');
	player.style.visibility = "visible";
	
	updateWindow(el);
	
	startPlayer(el.href);
		
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	
	if (e && e.stopPropagation && e.preventDefault) {
		e.stopPropagation();
		e.preventDefault();
	}
}

function handleNavDivEvents(e) {
	var el; 
 	if (window.event && window.event.srcElement) {
   		el = window.event.srcElement;
	}
 	if (e && e.target) { 
  	 	el = e.target; 
	}
 	if (!el) { 
   		return;
	}
	
	while (el.nodeName.toLowerCase() != 'a' &&
      	el.nodeName.toLowerCase() != 'body') {
    	el = el.parentNode;
  		if (el.nodeName.toLowerCase() == 'body') {
    		return;
		}
	}
	
	var elid = el.href.slice(-3);
	docMusicPlayer(elid);
}

// find xy location of speakers
function getElementPosition(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
}

function docMusicPlayer(elemID) {
	var mplayer = document.getElementById('music_player');
	var position = getElementPosition(elemID);
	var lowMaxPos = getElementPosition('voc'); //lowest element to align with
	
	if (position.top > lowMaxPos.top) {
		position.top = lowMaxPos.top;
	}
	
	position.top -= 10;
	mplayer.style.top = position.top + "px";
}

function updateWindow(elem) {
	var el = elem;
			
	while (el.nodeName.toLowerCase() != 'div' &&
      	el.nodeName.toLowerCase() != 'body') {
    	el = el.parentNode;
		if (el.nodeName.toLowerCase() == 'body') {
    		return;
		}
	}
			
	var clsColor = el.className.slice(-6);
		
	elem.style.color = "#" + clsColor;
	elem.style.fontWeight = "bold";
	elem.style.borderBottom = "none";
	
	var info = document.getElementById('minfo');
	info.childNodes[0].nodeValue = elem.id;
	
	var cata = document.getElementById('catagory');
	cata.style.marginTop = "35px";
	
	el = el.getElementsByTagName('h3')[0];
	docMusicPlayer(el.id);
}

function startPlayer(path) {
	
	mp3Player.SetVariable("/:txt.path", path); 
		
}

function SetVariable(variableName,value) {
	if(!this.isPlayerReady()) return;
		value = String(value);
		window.document[this.playerID].SetVariable(variableName,value);
}

FlashSound.prototype.SetVariable = SetVariable;
