<!-- 
// (c) 1999-2004 Live365, Inc.  All rights reserved.

var cBR = 0;
var cFR = 1;
var cST = 2;
var cCO = 3;
var cBC = 4;
var cVL = 5;
var cDS = 6;
var cCt = 7;

var cCtRecommended = 2;

// BR, FR, ST, codec, type, desc1, desc2, desc3
var gStreamingFormats = new Array(
	// START_STREAMING_FORMATS
	/* -- Recommended Formats -- */
	 64, 44100, "st",  "mp3PRO", "ALL", "64/44/st/mp3PRO", "64k mp3PRO stereo - CD Quality",	 
	 32, 32000, "st",  "mp3PRO", "ALL", "32/32/st/mp3PRO", "32k mp3PRO stereo - More Storage", 
	/* -- All Available Formats -- */
	128, 44100, "jst", "mp3",    "PRO", "128/44/jst/mp3",  "128kbps/44kHz/stereo mp3",   
	 96, 44100, "st",  "mp3PRO", "PRO", "96/44/st/mp3PRO", "96kbps/44kHz/stereo mp3PRO", 
	 96, 44100, "jst", "mp3",	 "PRO", "96/44/jst/mp3",   "96kbps/44kHz/stereo mp3", 
	 80, 44100, "st",  "mp3PRO", "PRO", "80/44/st/mp3PRO", "80kbps/44kHz/stereo mp3PRO", 
	 80, 44100, "jst", "mp3",	 "PRO", "80/44/jst/mp3",   "80kbps/44kHz/stereo mp3", 
	 64, 44100, "st",  "mp3PRO", "ALL", "64/44/st/mp3PRO", "64kbps/44kHz/stereo mp3PRO (recommended)", 
	 56, 44100, "st",  "mp3PRO", "ALL", "56/44/st/mp3PRO", "56kbps/44kHz/stereo mp3PRO", 
	 56, 22050, "jst", "mp3",    "ALL", "56/22/jst/mp3",   "56kbps/22kHz/stereo mp3",    
	 56, 44100, "sc",  "mp3",    "ALL", "56/44/sc/mp3",    "56kbps/44kHz/mono mp3",      
	 32, 32000, "st",  "mp3PRO", "ALL", "32/32/st/mp3PRO", "32kbps/32kHz/stereo mp3PRO (recommended)", 
	 32, 44100, "sc",  "mp3PRO", "ALL", "32/44/sc/mp3PRO", "32kbps/44kHz/mono mp3PRO",   
	 32, 22050, "sc",  "mp3",    "ALL", "32/22/sc/mp3",    "32kbps/22kHz/mono mp3",      
	 32, 11025, "jst", "mp3",    "ALL", "32/11/jst/mp3",   "32kbps/11kHz/stereo mp3",    
	 24, 22050, "sc",  "mp3",    "ALL", "24/22/sc/mp3",    "24kbps/22kHz/mono mp3",      
	 16, 11025, "sc",  "mp3",    "ALL", "16/11/sc/mp3",    "16kbps/11kHz/mono mp3",      
	  8, 11025, "sc",  "mp3",    "ALL", "8/11/sc/mp3",     "8kbps/11kHz/mono mp3"
	// END_STREAMING_FORMATS
);


var gBitratePairs = new Array(
	"T1/DSL/Cable", 256,
	"T1/DSL/Cable", 128,
	"T1/DSL/Cable", 112,
	"T1/DSL/Cable", 96,
	"T1/DSL/Cable", 80,
	"T1/DSL/Cable", 64,
	"T1/DSL/Cable", 56,
	"56k modem", 32,
	"33k modem", 24,
	"28k modem", 16,
	"14k modem", 8
);


function PostFormatChanged(fmt) 
{
	// overwrite if desired in host file
}

function HandleFormatChanged(frm, fmt) 
{
	// overwrite if desired in host file

	if (fmt != 'none') {
		var parts = fmt.split('/');
		frm.bitrate.value   = parseInt(parts[0]);
		var fr				= parseInt(parts[1]);
		frm.frequency.value = fr;
		frm.stereo.value	= parts[2];
		frm.codec.value	    = parts[3];

		if (fr == 11)
			frm.frequency.value = 11025;
		else if (fr == 22)
			frm.frequency.value = 22050;
		else if (fr == 32)
			frm.frequency.value = 32000;
		else if (fr == 44)
			frm.frequency.value = 44100;
	}
	
	PostFormatChanged(fmt);
}


function DrawFormats(maxBitrate, BR, FR, ST, CO)
{
	var s;
	var i;
	var kbps;
	var custom = (!FR || !ST || !CO);
	var fmt = '';
	var foundOne = 0;
	var origFR = FR;
	var origST = ST;
	var origCO = CO;

	s = '<select name="FormatListBox" onchange="HandleFormatChanged(this.form, this.form.FormatListBox[this.form.FormatListBox.selectedIndex].value)">\n';

	s += '<option value="none">------------ Recommended Formats ------------</option>\n';

	for (i = 0; i < gStreamingFormats.length; i += cCt) {
		if (i == cCtRecommended*cCt) {
			s += '<option value="none"></option>\n';
			s += '<option value="none">------------ All Available Formats ------------</option>\n';
		}

		kbps  = gStreamingFormats[i + cBR];

		if (kbps <= maxBitrate) {
			s += '<option ';
			isMP3 = (gStreamingFormats[i + cCO] == 'mp3');

			if (!foundOne && BR == kbps && 
				((!FR && isMP3) || FR == gStreamingFormats[i + cFR]) && 
				((!ST && isMP3) || ST == gStreamingFormats[i + cST]) && 
				((!CO && isMP3) || CO == gStreamingFormats[i + cCO])) {
				foundOne = 1;
				s += 'selected ';

				if (custom)
					fmt = gStreamingFormats[i + cVL];

				FR = gStreamingFormats[i + cFR];
				ST = gStreamingFormats[i + cST];
				CO = gStreamingFormats[i + cCO];
			}

			s += 'value="' + gStreamingFormats[i + cVL] + '">' + gStreamingFormats[i + cDS] + '</option>\n';
		}
	}

	if (custom || !foundOne) {
		var selected = 0;

		if (!origCO)
			origCO = 'mp3';

		if (!origST)
			origST = (BR > 24) ? 'jst' : 'sc';

		if (!foundOne) {
			selected = (origST == 'sc') ? 2 : 1;
			ST = origST;
			CO = origCO;
		}

		s += '<option value="none"></option>\n';
		s += '<option value="none">------------ Other Formats ------------</option>\n';
		s += '<option value="' + BR + '/' + origFR + '/jst/' + origCO + '"' + ((selected == 1) ? 'selected' : '') + '>Custom ' + BR + 'kbps stereo ' + origCO + '</option>\n';
		s += '<option value="' + BR + '/' + origFR + '/sc/' + origCO + '"' + ((selected == 2) ? 'selected' : '') + '>Custom ' + BR + 'kbps mono ' + origCO + '</option>\n';
	}

	s += '</select>\n';

	s += '<input type="hidden" name="bitrate"   value="' + BR + '">\n';
	s += '<input type="hidden" name="frequency" value="' + FR + '">\n';
	s += '<input type="hidden" name="stereo"	value="' + ST + '">\n';
	s += '<input type="hidden" name="codec"	    value="' + CO + '">\n';

	document.write(s);

	if (fmt)
		PostFormatChanged(fmt);
}


function HandleBitrateChanged(bitrate) 
{
	// overwrite if desired in host file
}


function DrawBitrates(whichTool, currentBitrate, maxBitrate)
{
	var s;
	var i;
	var kbps;
	var device;

	if (DrawBitrates.arguments.length < 3 || maxBitrate <= 0)
		maxBitrate = 56;
	
	s = '<select name="BitrateListBox" onchange="HandleBitrateChanged(this.form.BitrateListBox[this.form.BitrateListBox.selectedIndex].value)">';

	if (whichTool == "Easy") {
		s += '<option value="-1">-- Maximum MP3 bitrate (Minimum connection) --</option>';
		s += '<option value="-1">------------------</option>';
	}

	for (i = 0; i < gBitratePairs.length; i += 2) {
		device = gBitratePairs[i];
		kbps   = gBitratePairs[i+1];

		if (kbps <= maxBitrate) {
			s += '<option ';

			if (currentBitrate >= kbps) {
				s += 'selected ';
				currentBitrate = 0;
			}

			s += 'value="' + kbps + '">' + kbps + ' kbps (' + device + ')</option>';
		}
	}

	s += '</select>';

	document.write(s);
}


function GetConnectionSpeed(bitrate) 
{
	var i;

	if (isNaN(parseInt(bitrate)))
		return "Unknown";

	for (i = 0; i < gBitratePairs.length; i += 2) {
		if (bitrate >= gBitratePairs[i+1]) {
			bitrate = gBitratePairs[i+1];
			break;
		}
	}

	return bitrate + "&nbsp;kbps";
}


function GetConnectionDevice(bitrate) 
{
	var i;

	if (isNaN(parseInt(bitrate)))
		return "";

	for (i = 0; i < gBitratePairs.length; i += 2) {
		if (bitrate >= gBitratePairs[i+1])
			return gBitratePairs[i];
	}

	return "";
}

// -->
