//declare global variables and settings

mp3Player = new FlashSound();
webSFX = new FlashSound();
FlashSound.setMinPlayer(7);

var player;
var bPlayer = false;
var spkID;
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(' 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(' 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;
		}
	}
		
	spkID = el.id;
	player = document.getElementById('player');
	player.style.visibility = "visible";
	docPlayer();
	startPlayer(el.href);
		
	if (window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	
	if (e && e.stopPropagation && e.preventDefault) {
		e.stopPropagation();
		e.preventDefault();
	}
			
	if (!bPlayer) {
		addEventHandler(window, "resize", docPlayer);
		bPlayer = true;
	}
}

// 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 docPlayer() {
	var position = getElementPosition(spkID);
	position.left -= 1; // was 0
	player.style.left = position.left + "px";
	position.top -= 9; //was 10
	player.style.top = position.top + "px";
}

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;