Darwin-Streaming-Server/WebAdmin/WebAdminHtml/playlist_detail.html

1572 lines
55 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta name="generator" content="BBEdit 6.1.1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
td
{
font-family: Arial, Helvetica, Geneva, Swiss, sans-serif;
font-size: 12px;
line-height: 12px;
}
.large
{
font-weight: bold;
font-size: 14px;
line-height: 12px;
}
.small { font-size: 10px; }
.reallysmall
{
font-size: 10px;
color: #333;
}
.tooltiptext
{
font-family: Arial, Helvetica, Geneva, Swiss, sans-serif;
font-size: 9px;
background: #FFFFCC;
}
.header
{
font-size: 18px;
color: #669;
line-height: 18px;
}
.white { color: #FFFFFF }
.listing
{
font-family: Monaco, monospace;
font-size: 10px;
}
#libbackground
{
position: absolute;
z-index: 1;
top: 222px;
left: 35px;
visibility: visible;
}
#libfiles
{
position: absolute;
z-index: 3;
top: 237px;
left: 37px;
width: 218px;
line-height: 18px;
<qtssobject name=monospaceIfNotJapanese/>visibility: visible;
}
#libscrollbardisabled
{
position: absolute;
z-index: 1;
top: 236px;
left: 254px;
width: 16px;
visibility: visible;
}
#libscrollbar
{
position: absolute;
z-index: 1;
top: 236px;
left: 254px;
width: 16px;
visibility: hidden;
}
#libscrollthumb
{
position: absolute;
z-index: 3;
top: 251px;
left: 254px;
width: 16px;
height: 16px;
visibility: hidden;
}
#plfileorders
{
position: absolute;
z-index: 3;
top: 237px;
left: 284px;
width: 39px;
line-height: 18px;
<qtssobject name=monospaceIfNotJapanese/>visibility: visible;
}
#plfiles
{
position: absolute;
z-index: 3;
top: 237px;
left: 323px;
width: 210px;
line-height: 18px;
<qtssobject name=monospaceIfNotJapanese/>visibility: visible;
}
#plfileweights
{
position: absolute;
z-index: 3;
top: 237px;
left: 547px;
width: 15px;
<qtssobject name=monospaceIfNotJapanese/>visibility: visible;
}
#plfileweightadjs
{
position: absolute;
z-index: 3;
top: 237px;
left: 565px;
width: 7px;
line-height: 20px;
<qtssobject name=monospaceIfNotJapanese/>
visibility: visible;
}
#libhighlight
{
position: absolute;
z-index: 2;
top: 223px;
left: 36px;
width: 218px;
height: 20px;
visibility: hidden;
}
#libsinglehighlight
{
position: absolute;
z-index: 2;
top: 223px;
left: 36px;
width: 218px;
height: 20px;
visibility: hidden;
}
#plbackground
{
position: absolute;
z-index: 1;
top: 222px;
left: 283px;
visibility: visible;
}
#plscrollbardisabled
{
position: absolute;
z-index: 1;
top: 236px;
left: 589px;
width: 16px;
visibility: visible;
}
#plscrollbar
{
position: absolute;
z-index: 1;
top: 236px;
left: 589px;
width: 16px;
visibility: hidden;
}
#plscrollthumb
{
position: absolute;
z-index: 3;
top: 251px;
left: 589px;
width: 16px;
height: 16px;
visibility: hidden;
}
#draglayer
{
position: absolute;
z-index: 4;
top: 10px;
left: 10px;
width: 240px;
height: 20px;
line-height: 20px;
<qtssobject name=monospaceIfNotJapanese/>
visibility: hidden;
}
#inserthere
{
position: absolute;
z-index: 2;
top: 20px;
left: 240px;
width: 170px;
height: 20px;
visibility: hidden;
}
#plhighlight
{
position: absolute;
z-index: 2;
top: 20px;
left: 240px;
width: 170px;
height: 20px;
visibility: hidden;
}
#plsinglehighlight
{
position: absolute;
z-index: 2;
top: 20px;
left: 240px;
width: 170px;
height: 20px;
visibility: hidden;
}
#openFolderButton
{
position: absolute;
z-index: 3;
top: 566px;
left: 35px;
width: 380px;
height: 40px;
color: #999999;
font-family: Lucida Grande, Arial, Helvetica, Geneva, Swiss, sans-serif;
visibility: hidden;
}
#openFolderButtonDisabled
{
position: absolute;
z-index: 3;
top: 566px;
left: 35px;
width: 380px;
height: 40px;
color: #999999;
font-family: Lucida Grande, Arial, Helvetica, Geneva, Swiss, sans-serif;
visibility: visible;
}
#removeItemButton
{
position: absolute;
z-index: 5;
top: 566px;
left: 283px;
width: 380px;
height: 40px;
color: #999999;
font-family: Lucida Grande, Arial, Helvetica, Geneva, Swiss, sans-serif;
visibility: hidden;
}
#removeItemButtonDisabled
{
position: absolute;
z-index: 5;
top: 566px;
left: 283px;
width: 380px;
height: 40px;
color: #999999;
font-family: Lucida Grande, Arial, Helvetica, Geneva, Swiss, sans-serif;
visibility: visible;
}
#tooltip
{
position: absolute;
z-index: 10;
top: 30px;
left: 323px;
visibility: hidden;
}
</style>
<script src="includes/encode_unicode.js" type="text/javascript" language="Javascript" charset="utf-8"></script>
<script src="includes/standardNav.js" type="text/javascript" language="javascript"></script>
<qtssobject name=scriptTag>
//<script language=javascript>
var gLibBasePosX = 36; // left of library listbox content
var gLibBasePosY = 237; // top of library listbox content
var gLibItemWidth = 218; // width of library listbox content
var gLibItemHeight = 20; // height of each library listbox item
var gLibNumItems = 16; // number of library items to display
var gLibMaxChars = 29; // trim each text item to this many chars
var gPLBasePosX = 284; // these are same as above only for playlist listbox this time:
var gPLBasePosY = 237;
var gPLItemWidth = 305;
var gPLItemClickWidth = 260;
var gPLItemHeight = 20;
var gPLNumItems = 16;
var gPLMaxChars = 33;
var gDefaultImage = 'images/spacer.gif'; // image for drag of multiple items
var gDragThreshold = 6; // number of pixels the user must move mouse with button down to initiate drag
var gNumberOfSteps = 4; // for "rubberband" animation if user drags to invalid place on screen ... number of steps
var gStepTiming = 35; // milliseconds between each step
var gTextSpacerImg = '<img src="images/spacer.gif" width=3 height=20 align=middle>'; // tag for spacer image before each column's contents
var gThumbRangeTop = 251; // top of scroll thumg ranges
var gThumbRangeBottom = 527; // bottom of scroll thumb ranges
var gThumbHeight = 16; // height of thumb itself
var gScrollArrowWidth = 16; // width of scroll arrows
var gScrollArrowHeight = 16; // height of scroll arrows
var gDirScrollbarLeft = 254; // left pos of dirlisting scrollbar
var gPLScrollbarLeft = 589; // left pos of playlist scrollbar
var gScrollUpArrowTop = 236; //
var gScrollDownArrowTop = 542;
var gWindowsOffsetAmt = 35;
var gNSWinOffsetAmt = 70;
var gNSMacOffsetAmt = 35;
var dblClickDelay = 300;
var gScrollDelay = 200;
var libHighlightStart = (-1);
var libHighlightEnd = (-1);
var libScrollPos = 0;
var plScrollPos = 0;
var dragStatus = 'false';
var draggedItems = new Array();
var draggedItemsDisplay = new Array();
var draggedItemWeights = new Array();
var directoryListing = new Array();
var directoryListingDisplay = new Array();
var iconImages = new Array();
var playlistFiles = new Array();
var playlistFilesDisplay = new Array();
var playlistWeights = new Array();
var allPlaylists = new Array();
var doContiguousSelection = false;
var insertPos = (-1);
var removeOldItem = (-1);
var showedAlert = false;
var isDblClick = false;
var dblClickTimer;
var scrollTimer;
var scrollBy = 1; // -1=scroll up, 1=scroll down
var scrollWhich = 0; // 0=library, 1=playlist contents
var currentTooltipTimer;
var hasRun = false;
function DoScroll() {
if (dragStatus == 'timedscroll') {
if (scrollWhich == 0) {
var dataHeight = directoryListing.length - gLibNumItems;
libScrollPos = Math.max(Math.min(libScrollPos+scrollBy, dataHeight), 0);
BuildLibrary();
libSetThumbPos();
}
else {
var dataHeight = playlistFiles.length - gPLNumItems;
plScrollPos = Math.max(Math.min(plScrollPos+scrollBy, dataHeight), 0);
BuildPlaylist();
PLSetThumbPos();
}
SetScrollTimer();
}
else {
clearInterval(scrollTimer);
scrollTimer = null;
}
}
function SetScrollTimer() {
if (scrollTimer == null) {
scrollTimer = setInterval("DoScroll()", gScrollDelay)
}
}
function OffsetLayer(s, d, p) {
SetStylePos(s, d, GetStylePos(s, d) + p);
}
function handleBrowserOffsets() {
var offsetAmount = 0;
if (IsWin32()) {
if (IsIE()) offsetAmount = gWindowsOffsetAmt;
else offsetAmount = gNSWinOffsetAmt;
}
else if (!IsIE() && !IsNS6()) offsetAmount = gNSMacOffsetAmt;
if (offsetAmount != 0) {
offsetAmount = gNSMacOffsetAmt;
gLibBasePosY = gLibBasePosY + offsetAmount;
gPLBasePosY = gPLBasePosY + offsetAmount;
gThumbRangeTop = gThumbRangeTop + offsetAmount;
gThumbRangeBottom = gThumbRangeBottom + offsetAmount;
gScrollUpArrowTop = gScrollUpArrowTop + offsetAmount;
gScrollDownArrowTop = gScrollDownArrowTop + offsetAmount;
SetStylePos('libbackground', 1, gLibBasePosY - 15);
SetStylePos('libfiles', 1, gLibBasePosY);
SetStylePos('libscrollbardisabled', 1, gScrollUpArrowTop);
SetStylePos('libscrollbar', 1, gScrollUpArrowTop);
SetStylePos('libscrollthumb', 1, gThumbRangeTop);
SetStylePos('plfileorders', 1, gPLBasePosY);
SetStylePos('plfiles', 1, gPLBasePosY);
SetStylePos('plfileweights', 1, gPLBasePosY);
SetStylePos('plfileweightadjs', 1, gPLBasePosY);
SetStylePos('plbackground', 1, gLibBasePosY - 15);
SetStylePos('plscrollbardisabled', 1, gScrollUpArrowTop);
SetStylePos('plscrollbar', 1, gScrollUpArrowTop);
SetStylePos('plscrollthumb', 1, gThumbRangeTop);
SetStylePos('openFolderButton', 1, gLibBasePosY + 330);
SetStylePos('openFolderButtonDisabled', 1, gLibBasePosY + 330);
SetStylePos('removeItemButton', 1, gLibBasePosY + 330);
SetStylePos('removeItemButtonDisabled', 1, gLibBasePosY + 330);
}
}
function BuildLibrary() {
var layerText = '<span class=small>';
for (var i=libScrollPos; i < Math.min((libScrollPos+gLibNumItems), directoryListing.length); i++) {
var itemText = directoryListingDisplay[i];
itemTextArray = itemText.split('<qtssobject name=chdelim/>');
itemText = itemTextArray[itemTextArray.length-1];
if (itemText.length > gLibMaxChars) {
itemText = itemText.substr(0, gLibMaxChars) + "&#8230;";
}
itemText = itemText.replace('<', '&lt;');
itemText = itemText.replace('>', '&gt;');
layerText = layerText + '<div style="width:327px; height:20px;">';
layerText = layerText + '<img src="' + iconImages[i] + '" width=16 height=16 align=middle vspace=2>';
layerText = layerText + gTextSpacerImg + itemText + '<' + '/div>';
}
layerText = layerText + '<' + '/span>';
SetStyleText('libfiles', layerText);
SetLibHighlightBar();
if (directoryListing.length > gLibNumItems) {
SetStyleVisible('libscrollbardisabled', false);
SetStyleVisible('libscrollbar', true);
SetStyleVisible('libscrollthumb', true);
}
else {
SetStyleVisible('libscrollbardisabled', true);
SetStyleVisible('libscrollbar', false);
SetStyleVisible('libscrollthumb', false);
}
}
function BuildPlaylist() {
var orderLayerText = '<span class=small>';
var nameLayerText = '<span class=small>';
var weightLayerText = '<span class=small>';
var weightAdjLayerText = '';
for (var i=plScrollPos; i < Math.min((plScrollPos+gPLNumItems), playlistFiles.length); i++) {
var itemText = playlistFilesDisplay[i];
itemTextArray = itemText.split('<qtssobject name=chdelim/>');
itemText = itemTextArray[itemTextArray.length-1];
if (itemText.length > gPLMaxChars) {
itemText = itemText.substr(0, gPLMaxChars) + "&#8230;";
}
itemText = itemText.replace('<', '&lt;');
itemText = itemText.replace('>', '&gt;');
orderLayerText = orderLayerText + '<div style="width:39px; height:20px;">';
orderLayerText = orderLayerText + gTextSpacerImg + (i+1) + '<' + '/div>';
nameLayerText = nameLayerText + '<div style="width:210px; height:20px;">';
nameLayerText = nameLayerText + gTextSpacerImg + itemText + '<' + '/div>';
weightLayerText = weightLayerText + gTextSpacerImg + playlistWeights[i] + '<br>';
if (dragStatus != 'timedscroll') { // if we're scrolling, don't draw weight adjusting images
if (IsIE() || IsNS6()) weightAdjLayerText = weightAdjLayerText + '<img src="images/spacer.gif" width=7 height=4>';
weightAdjLayerText = weightAdjLayerText + '<a href="javascript:increaseWeight(' + i + ')">';
weightAdjLayerText = weightAdjLayerText + '<img src="images/weight_up_arrow.gif" width=7 height=4 vspace=1 border=0><' + '/a><br>';
weightAdjLayerText = weightAdjLayerText + '<a href="javascript:decreaseWeight(' + i + ')">';
weightAdjLayerText = weightAdjLayerText + '<img src="images/wieght_down_arrow.gif" width=7 height=4 vspace=1 border=0><' + '/a><br>';
weightAdjLayerText = weightAdjLayerText + '<img src="images/spacer.gif" width=7 height=4><br>';
if (!IsIE() && !IsNS6()) weightAdjLayerText = weightAdjLayerText + '<img src="images/spacer.gif" width=7 height=4><br>';
}
}
orderLayerText = orderLayerText + '<' + '/span>';
nameLayerText = nameLayerText + '<' + '/span>';
SetStyleText('plfileorders', orderLayerText);
SetStyleText('plfiles', nameLayerText);
SetStyleText('plfileweights', weightLayerText);
if (dragStatus == 'timedscroll') SetStyleText('plfileweightadjs', '');
else SetStyleText('plfileweightadjs', weightAdjLayerText);
UpdateHiddenFields();
if (playlistFiles.length > gPLNumItems) {
SetStyleVisible('plscrollbardisabled', false);
SetStyleVisible('plscrollbar', true);
SetStyleVisible('plscrollthumb', true);
}
else {
SetStyleVisible('plscrollbardisabled', true);
SetStyleVisible('plscrollbar', false);
SetStyleVisible('plscrollthumb', false);
}
}
function BuildDragLayer() {
var layerText = '<span class=small>';
if (libHighlightEnd > libHighlightStart) {
layerText = layerText + '<img src="' + gDefaultImage + '" width=16 height=16>';
layerText = layerText + '&nbsp;<i>Multiple Items Selected<' + '/i>';
}
else {
var itemText = directoryListingDisplay[libHighlightStart];
itemText = itemText.replace('<', '&lt;');
itemText = itemText.replace('>', '&gt;');
itemTextArray = itemText.split('<qtssobject name=chdelim/>');
itemText = itemTextArray[itemTextArray.length-1];
if (itemText.length > gLibMaxChars) {
itemText = itemText.substr(0, gLibMaxChars) + "&#8230;";
}
itemText = itemText.replace('<', '&lt;');
itemText = itemText.replace('>', '&gt;');
layerText = layerText + '<img src="' + iconImages[libHighlightStart] + '" width=16 height=16 align=middle>';
layerText = layerText + '&nbsp;' + itemText;
}
layerText = layerText + '<' + '/span>';
SetStyleText('draglayer', layerText);
SetStyleVisible('draglayer', true);
}
function handleLibDblClick() {
ClearDblClickTimer();
if ((libHighlightStart >= 0) && (libHighlightStart == libHighlightEnd) && (iconImages[libHighlightStart].indexOf('folder') >= 0)) {
// open folder
openFolder();
}
else {
// copy item(s)
draggedItems.length = 0;
draggedItemsDisplay.length = 0;
for (var i=libHighlightStart; i<=libHighlightEnd; i++) {
draggedItems[draggedItems.length] = directoryListing[i];
draggedItemsDisplay[draggedItemsDisplay.length] = directoryListingDisplay[i];
draggedItemWeights[draggedItemWeights.length] = 5;
}
insertPos = playlistFiles.length;
insertItems();
}
dragStatus = 'false';
}
function handlePLDblClick() {
ClearDblClickTimer();
removeFromPlaylist();
status = '';
dragStatus = 'false';
}
function SetDblClickTimer() {
isDblClick = true;
currentTooltipTimer = setTimeout("ClearDblClickTimer()", dblClickDelay);
}
function ClearDblClickTimer() {
isDblClick = false;
dblClickTimer = null;
}
function increaseWeight(whichOne) {
if (playlistWeights[whichOne] < 10) {
playlistWeights[whichOne]++;
}
BuildPlaylist();
}
function decreaseWeight(whichOne) {
if (playlistWeights[whichOne] > 1) {
playlistWeights[whichOne]--;
}
BuildPlaylist();
}
function libScrollDown() {
var dataHeight = directoryListing.length - gLibNumItems;
if (libScrollPos < dataHeight) {
libScrollPos = Math.min(libScrollPos+gScrollBy, dataHeight);
BuildLibrary();
libSetThumbPos();
}
}
function libScrollUp() {
if (libScrollPos > 0) {
libScrollPos = Math.max(libScrollPos-gScrollBy, 0);
BuildLibrary();
libSetThumbPos();
}
}
function libSetThumbPos() {
var scrollbarHeight = gThumbRangeBottom - gThumbRangeTop;
var dataHeight = directoryListing.length - gLibNumItems;
if (dataHeight > 1) {
var scrollRatio = libScrollPos / dataHeight;
SetStylePos('libscrollthumb', 1, (gThumbRangeTop + (scrollRatio * scrollbarHeight)));
}
}
function libGetThumbPos() {
var scrollbarHeight = gThumbRangeBottom - gThumbRangeTop;
var dataHeight = directoryListing.length - gLibNumItems;
if (dataHeight > 1) {
var scrollRatio = (GetStylePos('libscrollthumb', 1) - gThumbRangeTop) / scrollbarHeight;
libScrollPos = Math.round(scrollRatio * (directoryListing.length - gLibNumItems));
BuildLibrary();
libSetThumbPos();
}
}
function PLScrollDown() {
var dataHeight = playlistFiles.length - gPLNumItems;
if (plScrollPos < dataHeight) {
plScrollPos = Math.min(plScrollPos+gScrollBy, dataHeight);
BuildPlaylist();
PLSetThumbPos();
}
}
function PLScrollUp() {
if (plScrollPos > 0) {
plScrollPos = Math.max(plScrollPos-gScrollBy, 0);
BuildPlaylist();
PLSetThumbPos();
}
}
function PLSetThumbPos() {
var scrollbarHeight = gThumbRangeBottom - gThumbRangeTop;
var dataHeight = playlistFiles.length - gPLNumItems;
if (dataHeight > 1) {
var scrollRatio = plScrollPos / dataHeight;
SetStylePos('plscrollthumb', 1, (gThumbRangeTop + (scrollRatio * scrollbarHeight)));
}
}
function PLGetThumbPos() {
var scrollbarHeight = gThumbRangeBottom - gThumbRangeTop;
var dataHeight = playlistFiles.length - gPLNumItems;
if (dataHeight > 1) {
var scrollRatio = (GetStylePos('plscrollthumb', 1) - gThumbRangeTop) / scrollbarHeight;
plScrollPos = Math.round(scrollRatio * (playlistFiles.length - gPLNumItems));
BuildPlaylist();
PLSetThumbPos();
}
}
function SetLibHighlightBar() {
if ((libHighlightStart >= libScrollPos + gLibNumItems) || (libHighlightEnd < libScrollPos)) {
SetStyleVisible('libhighlight', false);
SetStyleVisible('libsinglehighlight', false);
}
else {
var displayHighlightStart = Math.max(libHighlightStart - libScrollPos, 0);
var displayHighlightEnd = Math.min(libHighlightEnd - libScrollPos, libScrollPos + gLibNumItems - 1);
var highlightHeight = (displayHighlightEnd - displayHighlightStart + 1) * gLibItemHeight;
var startPos = (displayHighlightStart * gLibItemHeight) + gLibBasePosY;
if ((highlightHeight / gLibItemHeight) == 1) {
SetStyleVisible('libhighlight', false);
SetStylePos('libsinglehighlight', 1, startPos);
SetStyleVisible('libsinglehighlight', true);
}
else {
SetStyleVisible('libsinglehighlight', false);
SetStyleText('libhighlight', '<img src="images/highlight.gif" width=' + gLibItemWidth + ' height=' + highlightHeight + '>');
SetStylePos('libhighlight', 1, startPos);
SetStyleVisible('libhighlight', true);
}
}
if ((libHighlightStart >= 0) && (libHighlightStart == libHighlightEnd) && (iconImages[libHighlightStart].indexOf('folder') >= 0)) {
SetOpenButtonEnabled(true);
}
else {
SetOpenButtonEnabled(false);
}
}
function SetOpenButtonEnabled(isEnabled) {
SetStyleVisible('openFolderButtonDisabled', !isEnabled);
SetStyleVisible('openFolderButton', isEnabled);
}
function SetRemoveButtonEnabled(isEnabled) {
SetStyleVisible('removeItemButtonDisabled', !isEnabled);
SetStyleVisible('removeItemButton', isEnabled);
}
function stageCall(s) {
currentStepNumber++;
if ((currentStepNumber == gNumberOfSteps) || ((GetStylePos(s, 0) == xFinalValue) && (GetStylePos(s, 1) == yFinalValue))) {
SetStylePos(s, 0, xFinalValue);
SetStylePos(s, 1, yFinalValue);
SetStyleVisible(s, false);
}
else {
SetStylePos(s, 0, (GetStylePos(s, 0) - xStepValue));
SetStylePos(s, 1, (GetStylePos(s, 1) - yStepValue));
var currentTimer = setTimeout('stageCall("' + s + '")', gStepTiming);
}
}
function moveInStages(s, xVal, yVal) {
currentStepNumber = 0;
xStepValue = ((GetStylePos(s, 0) - xVal) / gNumberOfSteps);
yStepValue = ((GetStylePos(s, 1) - yVal) / gNumberOfSteps);
xFinalValue = xVal;
yFinalValue = yVal;
var currentTimer = setTimeout('stageCall("' + s + '")', gStepTiming);
}
function insertItems() {
var doSlice = (insertPos < playlistFiles.length);
var filesEndArray = playlistFiles.slice(insertPos);
var filesEndArrayDisplay = playlistFilesDisplay.slice(insertPos);
var weightsEndArray = playlistWeights.slice(insertPos);
playlistFiles.length = insertPos;
playlistFilesDisplay.length = insertPos;
playlistWeights.length = insertPos;
for (var i=0;i<draggedItems.length; i++) {
playlistFiles[playlistFiles.length] = draggedItems[i];
playlistFilesDisplay[playlistFilesDisplay.length] = draggedItemsDisplay[i];
playlistWeights[playlistWeights.length] = draggedItemWeights[i];
}
if (doSlice) {
for (i=0;i<filesEndArray.length;i++) {
playlistFiles[playlistFiles.length] = filesEndArray[i];
playlistFilesDisplay[playlistFilesDisplay.length] = filesEndArrayDisplay[i];
playlistWeights[playlistWeights.length] = weightsEndArray[i];
}
}
BuildPlaylist();
}
function openFolder() {
var itemText = directoryListing[libHighlightStart];
var itemTextArray = itemText.split('<qtssobject name=chdelim format=urlencode/>');
itemText = itemTextArray[itemTextArray.length-1];
document.forms[0].elements['submitcurrentdir'].value = '<qtssobject name=currentdir format=nosinglequotes/><qtssobject name=chdelim/>' + itemText;
document.forms[0].elements['action'].value = 'RefreshPlaylistDir';
document.forms[0].elements['filename'].value = 'playlist_detail.html';
document.forms[0].submit()
}
function openParentFolder() {
document.forms[0].elements['submitcurrentdir'].value = document.forms[0].elements['currentdir'].value;
document.forms[0].elements['action'].value = 'RefreshPlaylistDir';
document.forms[0].elements['filename'].value = 'playlist_detail.html';
document.forms[0].submit()
}
function removeFromPlaylist() {
var filesEndArray = playlistFiles.slice(insertPos+1);
var filesEndArrayDisplay = playlistFilesDisplay.slice(insertPos+1);
var weightsEndArray = playlistWeights.slice(insertPos+1);
playlistFiles.length = insertPos;
playlistFilesDisplay.length = insertPos;
playlistWeights.length = insertPos;
for (i=0;i<filesEndArray.length;i++) {
playlistFiles[playlistFiles.length] = filesEndArray[i];
playlistFilesDisplay[playlistFilesDisplay.length] = filesEndArrayDisplay[i];
playlistWeights[playlistWeights.length] = weightsEndArray[i];
}
BuildPlaylist();
SetStyleVisible('inserthere', false);
SetRemoveButtonEnabled(false);
}
function handleMouseDown(e) {
status = '';
var continueClick = true;
if (IsIE()) var theTarget = window.event.srcElement;
else var theTarget = e.target;
if (IsIE()) var theButton = event.button;
else var theButton = e.which;
if (IsIE()) doContiguousSelection = window.event.shiftKey;
else if (IsNS6()) doContiguousSelection = e.shiftKey;
else doContiguousSelection = (e.modifiers == 4);
if (IsIE()) {
oldX = event.clientX + GetIEScrollPos(0);
oldY = event.clientY + GetIEScrollPos(1);
}
else {
oldX = e.pageX
oldY = e.pageY
}
removeOldItem = (-1);
if ((oldX >= gDirScrollbarLeft) && (oldX <= (gDirScrollbarLeft + gScrollArrowWidth)) && (oldY >= gScrollUpArrowTop) && (oldY <= (gScrollUpArrowTop + gScrollArrowHeight))) { // dir up scroll
dragStatus = 'timedscroll';
scrollWhich = 0;
scrollBy = (-1);
DoScroll();
continueClick = false;
}
if ((oldX >= gDirScrollbarLeft) && (oldX <= (gDirScrollbarLeft + gScrollArrowWidth)) && (oldY > (gScrollUpArrowTop + gScrollArrowHeight)) && (oldY < GetStylePos('libscrollthumb', 1))) { // jump up
dragStatus = 'timedscroll';
scrollWhich = 0;
scrollBy = ((-1) * (gLibNumItems - 1));
DoScroll();
continueClick = false;
}
if ((oldX >= gDirScrollbarLeft) && (oldX <= (gDirScrollbarLeft + gScrollArrowWidth)) && (oldY >= GetStylePos('libscrollthumb', 1)) && (oldY <= (GetStylePos('libscrollthumb', 1) + gThumbHeight))) { // dir scroll thumb
layerClicked = 'libscrollthumb';
dragStatus = 'scrolling';
continueClick = false;
}
if ((oldX >= gDirScrollbarLeft) && (oldX <= (gDirScrollbarLeft + gScrollArrowWidth)) && (oldY > (GetStylePos('libscrollthumb', 1) + gThumbHeight)) && (oldY < gScrollDownArrowTop)) { // jump down
dragStatus = 'timedscroll';
scrollWhich = 0;
scrollBy = gLibNumItems - 1;
DoScroll();
continueClick = false;
}
if ((oldX >= gDirScrollbarLeft) && (oldX <= (gDirScrollbarLeft + gScrollArrowWidth)) && (oldY >= gScrollDownArrowTop) && (oldY <= (gScrollDownArrowTop + gScrollArrowHeight))) { // dir up scroll
dragStatus = 'timedscroll';
scrollWhich = 0;
scrollBy = 1;
DoScroll();
continueClick = false;
}
if ((oldX >= gPLScrollbarLeft) && (oldX <= (gPLScrollbarLeft + gScrollArrowWidth)) && (oldY >= gScrollUpArrowTop) && (oldY <= (gScrollUpArrowTop + gScrollArrowHeight))) { // PL up scroll
dragStatus = 'timedscroll';
scrollWhich = 1;
scrollBy = (-1);
DoScroll();
continueClick = false;
}
if ((oldX >= gPLScrollbarLeft) && (oldX <= (gPLScrollbarLeft + gScrollArrowWidth)) && (oldY > (gScrollUpArrowTop + gScrollArrowHeight)) && (oldY < GetStylePos('plscrollthumb', 1))) { // jump up
dragStatus = 'timedscroll';
scrollWhich = 1;
scrollBy = ((-1) * (gLibNumItems - 1));
DoScroll();
continueClick = false;
}
if ((oldX >= gPLScrollbarLeft) && (oldX <= (gPLScrollbarLeft + gScrollArrowWidth)) && (oldY >= GetStylePos('plscrollthumb', 1)) && (oldY <= (GetStylePos('plscrollthumb', 1) + gThumbHeight))) { // PL scroll thumb
layerClicked = 'plscrollthumb';
dragStatus = 'scrolling';
continueClick = false;
}
if ((oldX >= gPLScrollbarLeft) && (oldX <= (gPLScrollbarLeft + gScrollArrowWidth)) && (oldY > (GetStylePos('plscrollthumb', 1) + gThumbHeight)) && (oldY < gScrollDownArrowTop)) { // jump down
dragStatus = 'timedscroll';
scrollWhich = 1;
scrollBy = gLibNumItems - 1;
DoScroll();
continueClick = false;
}
if ((oldX >= gPLScrollbarLeft) && (oldX <= (gPLScrollbarLeft + gScrollArrowWidth)) && (oldY >= gScrollDownArrowTop) && (oldY <= (gScrollDownArrowTop + gScrollArrowHeight))) { // PL up scroll
dragStatus = 'timedscroll';
scrollWhich = 1;
scrollBy = 1;
DoScroll();
continueClick = false;
}
if ((oldX >= gLibBasePosX) && (oldX <= gLibBasePosX+gLibItemWidth) && (oldY >= gLibBasePosY) && (oldY <= gLibBasePosY+(gLibNumItems*gLibItemHeight))) {
var itemClicked = (oldY - gLibBasePosY) / gLibItemHeight;
itemClicked = Math.floor(itemClicked);
itemClicked = itemClicked + libScrollPos;
if (itemClicked > (directoryListing.length - 1)) {
return false;
}
offsetX = oldX - gLibBasePosX;
offsetY = oldY - (gLibBasePosY + ((itemClicked - libScrollPos) * gLibItemHeight));
if ((itemClicked < libHighlightStart) || (itemClicked > libHighlightEnd)) {
if (doContiguousSelection) {
libHighlightStart = Math.min(itemClicked, libHighlightStart);
libHighlightEnd = Math.max(itemClicked, libHighlightEnd);
}
else {
libHighlightStart = itemClicked;
libHighlightEnd = itemClicked;
}
SetLibHighlightBar();
}
dragStatus = 'click';
SetStyleVisible('inserthere', false);
SetRemoveButtonEnabled(false);
continueClick = false;
if (isDblClick) { // double-click; handle
handleLibDblClick()
}
else { // first click; set isDblClick to true and set a timer to set it to false after the delay
SetDblClickTimer();
}
}
if ((oldX >= gPLBasePosX) && (oldX <= gPLBasePosX+gPLItemClickWidth) && (oldY >= gPLBasePosY) && (oldY <= gPLBasePosY+(gPLNumItems*gPLItemHeight))) {
insertPos = Math.min(Math.floor((oldY - gPLBasePosY) / gPLItemHeight), playlistFiles.length-1);
offsetX = oldX - gPLBasePosX;
offsetY = oldY - (gPLBasePosY + (insertPos * gPLItemHeight));
if (insertPos >= 0) {
dragStatus = 'plclick';
SetStylePos('inserthere', 0, gPLBasePosX);
SetStylePos('inserthere', 1, gPLBasePosY + (insertPos * gPLItemHeight));
SetStyleVisible('inserthere', true);
insertPos = insertPos + plScrollPos;
SetRemoveButtonEnabled(true);
if (isDblClick) { // double-click; handle
handlePLDblClick()
}
else { // first click; set isDblClick to true and set a timer to set it to false after the delay
SetDblClickTimer();
}
}
continueClick = false;
}
if (!continueClick) {
if (!IsIE()) {
document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = handleDrag
}
if (continueClick) return;
else return continueClick;
}
function handleDrag(e) {
status = '';
if (IsIE()) {
currentX = event.clientX + GetIEScrollPos(0);
currentY = event.clientY + GetIEScrollPos(1);
}
else {
currentX = e.pageX
currentY = e.pageY
}
if (dragStatus == 'click') {
if ((Math.abs(currentX - oldX) > gDragThreshold) || (Math.abs(currentY - oldY) > gDragThreshold)) {
dragStatus = 'drag';
draggedItems.length = 0;
draggedItemsDisplay.length = 0;
for (var i=libHighlightStart; i<=libHighlightEnd; i++) {
draggedItems[draggedItems.length] = directoryListing[i];
draggedItemsDisplay[draggedItemsDisplay.length] = directoryListingDisplay[i];
draggedItemWeights[draggedItemWeights.length] = 5;
}
SetStylePos('draglayer', 0, currentX - offsetX);
SetStylePos('draglayer', 1, currentY - offsetY);
BuildDragLayer();
}
}
if (dragStatus == 'plclick') {
if ((Math.abs(currentX - oldX) > gDragThreshold) || (Math.abs(currentY - oldY) > gDragThreshold)) {
dragStatus = 'drag';
draggedItems.length = 0;
draggedItemsDisplay.length = 0;
draggedItems[draggedItems.length] = playlistFiles[insertPos];
draggedItemsDisplay[draggedItemsDisplay.length] = playlistFilesDisplay[insertPos];
draggedItemWeights[draggedItemWeights.length] = playlistWeights[insertPos];
offsetX = offsetX - 39;
SetStylePos('draglayer', 0, (currentX - offsetX));
SetStylePos('draglayer', 1, (currentY - offsetY));
var itemText = playlistFilesDisplay[insertPos];
itemTextArray = itemText.split('<qtssobject name=chdelim/>');
itemText = itemTextArray[itemTextArray.length-1];
if (itemText.length > gLibMaxChars) {
itemText = itemText.substr(0, gPLMaxChars) + "&#8230;";
}
SetStyleText('draglayer', '<span class=small>' + gTextSpacerImg + itemText + '<' + '/span>');
removeOldItem = insertPos;
}
}
if (dragStatus == 'drag') {
var maxPos = playlistFiles.length;
if (removeOldItem >= 0) {
maxPos--;
}
SetStylePos('draglayer', 0, currentX - offsetX);
SetStylePos('draglayer', 1, currentY - offsetY);
if ((currentX >= gPLBasePosX) && (currentX <= gPLBasePosX+gPLItemWidth) && (currentY >= gPLBasePosY) && (currentY <= gPLBasePosY+(gPLNumItems*gPLItemHeight))) {
insertPos = Math.min(Math.floor((currentY - gPLBasePosY) / gPLItemHeight), maxPos);
SetStylePos('inserthere', 0, gPLBasePosX);
SetStylePos('inserthere', 1, gPLBasePosY + (insertPos * gPLItemHeight));
insertPos = insertPos + plScrollPos;
SetStyleVisible('inserthere', true);
}
else {
SetStyleVisible('inserthere', false);
}
}
if (dragStatus == 'scrolling') {
SetStylePos(layerClicked, 1, Math.max(Math.min(currentY, gThumbRangeBottom), gThumbRangeTop));
}
// set the status text
var maxPos = playlistFiles.length;
if ((currentX >= gPLBasePosX) && (currentX <= gPLBasePosX+gPLItemWidth) && (currentY >= gPLBasePosY) && (currentY <= gPLBasePosY+(gPLNumItems*gPLItemHeight))) {
// check to see if we've switched positions
tooltipPosY = Math.min(Math.floor((currentY - gPLBasePosY) / gPLItemHeight), maxPos);
if (tooltipPosY < playlistFiles.length) {
if (status != playlistFilesDisplay[tooltipPosY]) {
status = playlistFilesDisplay[tooltipPosY];
}
}
}
var maxPos = directoryListing.length;
if ((currentX >= gLibBasePosX) && (currentX <= gLibBasePosX+gLibItemWidth) && (currentY >= gLibBasePosY) && (currentY <= gLibBasePosY+(gLibNumItems*gLibItemHeight))) {
// check to see if we've switched positions
tooltipPosY = Math.min(Math.floor((currentY - gLibBasePosY) / gLibItemHeight), maxPos);
if (tooltipPosY < directoryListing.length) {
if (status != directoryListingDisplay[tooltipPosY]) {
status = directoryListingDisplay[tooltipPosY];
}
}
}
return false;
}
function handleMouseUp() {
var continueClick = true;
if (!IsIE()) document.releaseEvents(Event.MOUSEMOVE);
if (dragStatus == 'drag') {
if (GetStyleVisible('inserthere')) {
SetStyleVisible('draglayer', false);
dragStatus = 'false';
if ((insertPos > removeOldItem) && (removeOldItem >= 0)) {
insertPos++;
}
insertItems();
if (removeOldItem >= 0) {
if (insertPos < removeOldItem) {
removeOldItem++;
}
insertPos = removeOldItem;
removeFromPlaylist();
}
SetStyleVisible('inserthere', false);
}
else {
moveInStages('draglayer', oldX, oldY);
}
continueClick = false;
}
if (dragStatus == 'scrolling') {
dragStatus = 'false';
if (layerClicked == 'libscrollthumb') libGetThumbPos();
else PLGetThumbPos();
continueClick = false;
}
if (dragStatus == 'timedscroll') {
dragStatus = 'false';
if (scrollWhich == 1) BuildPlaylist();
}
dragStatus = 'false';
if (continueClick) return;
else return continueClick;
}
function UpdateHiddenFields() {
var myString = '';
var myString2 = '';
for (var i = 0; i < playlistFiles.length; i++) {
myString = myString + playlistFiles[i];
myString2 = myString2 + playlistWeights[i];
if (i < (playlistFiles.length - 1)) {
myString = myString + "\t";
myString2 = myString2 + "\t";
}
}
document.forms[0].submitplaylistfiles.value = myString;
document.forms[0].submitplaylistweights.value = myString2;
}
function onLoadScript() {
// handleBrowserOffsets();
BuildLibrary();
BuildPlaylist();
document.forms[0].elements['qtssCurPlaylistTitle'].focus();
document.forms[0].elements['qtssCurPlaylistTitle'].select();
document.onmousemove = handleDrag;
}
function fixMountPoint() {
if ((document.forms[0].elements['isMP3'].value == '0') && (document.forms[0].elements['qtssCurPlaylistURL'].value.indexOf('.sdp') < 0) && (document.forms[0].elements['qtssCurPlaylistURL'].value != '')) {
document.forms[0].elements['qtssCurPlaylistURL'].value = document.forms[0].elements['qtssCurPlaylistURL'].value + '.sdp';
}
else if ((document.forms[0].elements['isMP3'].value == '1') && (document.forms[0].elements['qtssCurPlaylistURL'].value.indexOf('/') != 0)) {
document.forms[0].elements['qtssCurPlaylistURL'].value = '/' + document.forms[0].elements['qtssCurPlaylistURL'].value;
}
}
function validateFormData() {
var playlistNameOK = true;
if (document.forms[0].elements['qtssCurPlaylistTitle'].value != document.forms[0].elements['qtssCurPlaylistTitle_shadow'].value) {
for (var i = 0; i < allPlaylists.length; i++) {
if (allPlaylists[i] == document.forms[0].elements['qtssCurPlaylistTitle'].value) playlistNameOK = false;
}
}
if (!playlistNameOK) {
entityAlert("<qtssstring name=PLErrNameConflict/>");
document.forms[0].elements['qtssCurPlaylistTitle'].value = document.forms[0].elements['qtssCurPlaylistTitle_shadow'].value;
return false;
}
fixMountPoint();
if (document.forms[0].elements['qtssCurPlaylistTitle'].value == '') {
entityAlert("<qtssstring name=PLErrNameCannotBeBlank/>");
document.forms[0].elements['qtssCurPlaylistTitle'].value = document.forms[0].elements['qtssCurPlaylistTitle_shadow'].value;
return false;
}
if (document.forms[0].elements['qtssCurPlaylistURL'].value.indexOf(' ') >= 0) {
entityAlert("<qtssstring name=PLErrMountPointCannotContainSpaces/>");
return false;
}
if (document.forms[0].elements['qtssCurPlaylistURL'].value == '') {
entityAlert("<qtssstring name=PLErrMountPointCannotBeBlank/>");
return false;
}
if ((document.forms[0].elements['qtssCurPlaylistMode'].value == 'weighted_random') && (document.forms[0].elements['qtssCurPlaylistRep'].value > playlistFiles.length)) {
entityAlert("<qtssstring name=PLErrRepetitionTooLarge/>");
return false;
}
return true;
}
// populate array from QTSS
<qtssrepeater name=dirlisting>
directoryListing[directoryListing.length] = '<qtssobject name=qtssIndividualFileName format=urlencode/>';
directoryListingDisplay[directoryListingDisplay.length] = '<qtssobject name=qtssIndividualFileName format=unicode-convert/>';
iconImages[iconImages.length] = '<qtssobject name=qtssFileIcon/>';
</qtssrepeater>
<qtssrepeater name=playlistitems>
playlistFiles[playlistFiles.length] = '<qtssobject name=qtssPlaylistItemName format=urlencode/>';
playlistFilesDisplay[playlistFilesDisplay.length] = '<qtssobject name=qtssPlaylistItemName format=unicode-convert/>';
playlistWeights[playlistWeights.length] = '<qtssobject name=qtssPlaylistItemWeight/>';
</qtssrepeater>
<qtssrepeater name=playlists>
allPlaylists[allPlaylists.length] = '<qtssobject name=qtssPlaylistTitles format=nosinglequotes/>';
</qtssrepeater>
// re-route events to handlers
if (!IsIE()) document.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN|Event.MOUSEMOVE);
document.onmousedown = handleMouseDown;
document.onmouseup = handleMouseUp;
</script>
</head>
<body bgcolor="#FFFFFF" background="images/stripes_gray.gif" onload="onLoadScript()">
<qtssobject type=validatedform>
<input type=hidden name="filename" value=playlists.html>
<input type=hidden name="action" value="CreatePlaylist">
<input type=hidden name="submitplaylistfiles" value="">
<input type=hidden name="submitplaylistweights" value="">
<input type=hidden name="submitcurrentdir" value="">
<qtssobject type=hidden name="qtssSvrDefaultDNSName"/>
<qtssobject type=hidden name="isMP3"/>
<qtssobject type=hidden name=qtssCurPlaylistName"/>
<table border="0" cellspacing="0" cellpadding="0" width="620">
<tr>
<td align=left valign="top" nowrap width="20"><img src="images/spacer.gif" width="20" height="20" align="top" alt=""></td>
<td valign="top" align="center">
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td align=left nowrap class="header"><qtssobject name="doctitle" /></td>
</tr>
<tr>
<td align=left><img src="images/divider.gif" width="600" height="1" align="middle" alt=""></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td align=left valign="top" nowrap width="20"><img src="images/spacer.gif" width="20" height="20" align="top" alt=""></td>
<td align=center>
<table border="0" cellspacing="4" cellpadding="0" width="95%">
<tr>
<td align=left nowrap><b><qtssstring name="PLName" /></b></td>
<td align=left><qtssobject type=string name="qtssCurPlaylistTitle" param=" size=38 onchange=validateFormData()" /></td>
<td align=left width="16"><img src="images/spacer.gif" width="16" height="10" align="bottom" alt=""></td>
<td align=left nowrap><b><qtssstring name="PLPlayMode" /></b></td>
<td align=left nowrap><qtssobject type=select name="qtssCurPlaylistMode"><qtssobject format=option type=option name="qtssCurPlaylistMode" param=sequential><qtssstring name="PLPlayModeSequential" /></qtssobject><qtssobject format=option type=option name="qtssCurPlaylistMode" param=sequential_looped><qtssstring name="PLPlayModeSequentialLooped" /></qtssobject><qtssobject format=option type=option name="qtssCurPlaylistMode" param=weighted_random><qtssstring name="PLPlayModeWeightedRandom" /></qtssobject></qtssobject></td>
</tr>
<tr>
<td align=left nowrap>
<b><qtssstring name="MountPoint"/></b>
</td>
<td align=left>
<qtssobject type=string name="qtssCurPlaylistURL" param=" size=38 maxlength=251 onchange=fixMountPoint()"/>
</td>
<td align=left width="16">
&nbsp;
</td>
<td align=left valign="bottom">
<b><qtssstring name="PLRepetition"/></b>
</td>
<td align=left valign="top" rowspan="2" class=small>
<qtssstring name="PLItemsRepeatAfter"/> <qtssobject type=string name="qtssCurPlaylistRep" param=" size=4 maxlength=4"> <qtssstring name="PLItemsHavePlayed"/>
</td>
</tr>
<tr>
<td align=left nowrap>
<b><qtssobject name="extraFieldLabel"/></b>
</td>
<td align=left nowrap>
<qtssobject name="extraFieldHTML"/>
</td>
<td align=left width="16">
&nbsp;
</td>
<td align=left>
&nbsp;
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td align=left valign="top" nowrap width="20"><img src="images/spacer.gif" width="20" height="20" align="top" alt=""></td>
<td align=center>
<table border="0" cellspacing="0" cellpadding="2" width="95%">
<tr>
<td align=left><img src="images/divider.gif" width="100%" height="1" align="middle" alt=""></td>
</tr>
<tr>
<td class="small" align=center><qtssstring name="PLInstructions" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td align=left valign="top" nowrap width="20"><img src="images/spacer.gif" width="20" height="20" align="top" alt=""></td>
<td align=center>
<table border="0" cellspacing="0" cellpadding="0" width="95%">
<tr>
<td align=left valign="top" width="220">
<b><qtssstring name="PLAvailableMedia"/>
<br>
</b><select name="currentdir" onchange="openParentFolder()">
<qtssrepeater name=pathlist>
<option value="<qtssobject name=dirpath format=urlencode/>">
<qtssobject name=dirname format=unicode-convert/>
</option>
</qtssrepeater>
</select>
</td>
<td align=left width="30">
&nbsp;
</td>
<td align=left valign="top">
<b><qtssstring name="PLItemsInPlaylist"/>
<br>
</b><span class="small"><qtssstring name="PLReorderInstructions"/></span>
</td>
</tr>
<tr>
<td align=left colspan="3" height="190">
<img src="images/spacer.gif" width="1" height="1" vspace="188" alt="">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td align=left valign="top" nowrap width="20"><img src="images/spacer.gif" width="20" height="20" align="top" alt=""></td>
<td align=center>
<table border="0" cellspacing="4" cellpadding="0" width="95%">
<tr>
<td align=left colspan=3>
<img src="images/divider.gif" width="100%" height="1" align="middle" alt="">
</td>
</tr>
<tr>
<td align=left>
&nbsp;
</td>
</tr>
<tr>
<td align=left colspan=3><qtssobject format=checkbox name="pllogging" param=enabled/>&nbsp;<b><qtssstring name=PLLogging/></b></td>
</tr>
<tr>
<td align=left>
&nbsp;
</td>
</tr>
<tr>
<td align=left colspan=3><qtssobject format=checkbox name=plexternal param=1/>&nbsp;<b><qtssstring name="PLRelayToExternal"/></b></td>
</tr>
<tr>
<td align=left>&nbsp;</td>
<td align=right><qtssstring name="RelayDetailsDestHostname"/></td>
<td align=left><qtssobject type=text name=plbroadcastip/></td>
</tr>
<qtssobject name="playlistUsernameHTML"/>
<tr>
<td align=left>&nbsp;</td>
<td align=right><qtssstring name="Password"/></td>
<td align=left><qtssobject type=password name=plbroadcastpassword/></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2>&nbsp;</td>
</tr>
<tr>
<td align=left valign="top" nowrap width="20">
<img src="images/spacer.gif" width="20" height="20" align="top" alt="">
</td>
<td align=center>
<table border=0 cellspacing=0 cellpadding=2 width="100%">
<tr>
<td align=right valign=top>
<img src="images/divider.gif" width=600 height=1 align=middle alt="">
<br>&nbsp;<br>
<input type="submit" value="<qtssstring name=SubmitButtonTitle/>">
</td>
</tr>
<tr>
<td align=right valign=top>
<br>&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
<div id="libbackground">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=233 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=233 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
</tr>
<tr>
<td width=1 height=13><img src="images/greypixel.gif" width=1 height=13 alt=""></td>
<td width=233 height=13 nowrap bgcolor="#c6c6d6" class=reallysmall><img src="images/headerpixel.gif" width=2 height=1 alt=""><qtssstring name="PLTitleHeader" /></td>
<td width=1 height=13><img src="images/greypixel.gif" width=1 height=13 alt=""></td>
</tr>
<tr>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=233 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=233 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
</tr>
<tr>
<td width=1 height=320 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=1 height=320 alt=""></td>
<td width=233 height=320 bgcolor="#FFFFFF"><img src="images/whitepixel.gif" width=233 height=320 alt=""></td>
<td width=1 height=320 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=1 height=320 alt=""></td>
</tr>
<tr>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=233 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=233 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
</tr>
</table>
</div>
<div id="plbackground">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=40 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=40 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=210 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=210 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=68 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=68 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
</tr>
<tr>
<td width=1 height=13><img src="images/greypixel.gif" width=1 height=13 alt=""></td>
<td width=40 height=13 nowrap bgcolor="#c6c6d6" class=reallysmall><img src="images/headerpixel.gif" width=2 height=1 alt=""><qtssstring name="PLOrderHeader" /></td>
<td width=1 height=13><img src="images/greypixel.gif" width=1 height=13 alt=""></td>
<td width=210 height=1 nowrap bgcolor="#c6c6d6" class=reallysmall><img src="images/headerpixel.gif" width=2 height=1 alt=""><qtssstring name="PLTitleHeader" /></td>
<td width=1 height=13><img src="images/greypixel.gif" width=1 height=13 alt=""></td>
<td width=68 height=1 nowrap bgcolor="#c6c6d6" class=reallysmall><img src="images/headerpixel.gif" width=2 height=1 alt=""><qtssstring name="PLWeightHeader" /></td>
<td width=1 height=13><img src="images/greypixel.gif" width=1 height=13 alt=""></td>
</tr>
<tr>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=40 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=40 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=210 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=210 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=68 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=68 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
</tr>
<tr>
<td width=1 height=320 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=1 height=320 alt=""></td>
<td width=40 height=320 bgcolor="#FFFFFF"><img src="images/whitepixel.gif" width=40 height=320 alt=""></td>
<td width=1 height=320 bgcolor="#8c93ad"><img src="images/whitepixel.gif" width=1 height=320 alt=""></td>
<td width=210 height=320 bgcolor="#FFFFFF"><img src="images/whitepixel.gif" width=210 height=320 alt=""></td>
<td width=1 height=320 bgcolor="#8c93ad"><img src="images/whitepixel.gif" width=1 height=320 alt=""></td>
<td width=68 height=320 bgcolor="#FFFFFF"><img src="images/whitepixel.gif" width=68 height=320 alt=""></td>
<td width=1 height=320 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=1 height=320 alt=""></td>
</tr>
<tr>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=40 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=40 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=210 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=210 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
<td width=68 height=1 bgcolor="#8c93ad"><img src="images/greypixel.gif" width=68 height=1 alt=""></td>
<td width=1 height=1><img src="images/greypixel.gif" width=1 height=1 alt=""></td>
</tr>
</table>
</div>
<div id="libscrollbardisabled">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td background="images/scroll_bg_inactive.gif" width=16 height=1><img src="images/greypixel.gif" width="16" height="1"></td>
</tr>
<tr>
<td background="images/scroll_bg_inactive.gif" height=320><img src="images/scroll_bg_inactive.gif" width="16" height="320"></td>
</tr>
<tr>
<td background="images/scroll_bg_inactive.gif" width=16 height=1><img src="images/greypixel.gif" width="16" height="1"></td>
</tr>
</table>
</div>
<div id="libscrollbar">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td><img src="images/scroll_arrow_up.gif" width=16 height=16></td>
</tr>
<tr>
<td background="images/scroll_bg.gif" height=290><img src="images/scroll_bg.gif" width=16 height=290></td>
</tr>
<tr>
<td><img src="images/scroll_arrow_down.gif" width=16 height=16></td>
</tr>
</table>
</div>
<div id="libscrollthumb">
<img src="images/scroll_thumb.gif" width=16 height=16>
</div>
<div id="plscrollbardisabled">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td background="images/scroll_bg_inactive.gif" width=16 height=1><img src="images/greypixel.gif" width="16" height="1"></td>
</tr>
<tr>
<td background="images/scroll_bg_inactive.gif" height=320><img src="images/scroll_bg_inactive.gif" width="16" height="320"></td>
</tr>
<tr>
<td background="images/scroll_bg_inactive.gif" width=16 height=1><img src="images/greypixel.gif" width="16" height="1"></td>
</tr>
</table>
</div>
<div id="plscrollbar">
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td><img src="images/scroll_arrow_up.gif" width=16 height=16></td>
</tr>
<tr>
<td background="images/scroll_bg.gif" height=290><img src="images/scroll_bg.gif" width=16 height=290></td>
</tr>
<tr>
<td><img src="images/scroll_arrow_down.gif" width=16 height=16></td>
</tr>
</table>
</div>
<div id="plscrollthumb">
<img src="images/scroll_thumb.gif" width=16 height=16>
</div>
<div id="inserthere">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td align=left width="305" height="20" bgcolor="#E0E0E0"><img src="images/highlight.gif" alt="" width="305" height="20"></td>
</tr>
</table>
</div>
<div id="openFolderButton">
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=left><a href="javascript:openFolder()"><img src="images/link.gif" width=28 height=24 border=0></a></td>
<td align=left><a href="javascript:openFolder()"><qtssstring name="PLOpenFolderButton" /></a></td>
</tr>
</table>
</div>
<div id="openFolderButtonDisabled">
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=left><img src="images/link_disabled.gif" width=28 height=24 border=0></td>
<td align=left><qtssstring name="PLOpenFolderButton" /></td>
</tr>
</table>
</div>
<div id="removeItemButton">
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=left><a href="javascript:removeFromPlaylist()"><img src="images/link.gif" width=28 height=24 border=0></a></td>
<td align=left><a href="javascript:removeFromPlaylist()"><qtssstring name="PLRemoveItemButton" /></a></td>
</tr>
</table>
</div>
<div id="removeItemButtonDisabled">
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=left><img src="images/link_disabled.gif" width=28 height=24 border=0></td>
<td align=left><qtssstring name="PLRemoveItemButton" /></td>
</tr>
</table>
</div>
<div id="tooltip">
<!--placeholder ~~ will be populated dynamically-->
</div>
<div id="libsinglehighlight">
<img src="images/highlight.gif" width=218 height=20>
</div>
<div id="libfiles">
<!--placeholder ~~ will be populated dynamically-->
</div>
<div id="plfileorders">
<!--placeholder ~~ will be populated dynamically-->
</div>
<div id="plfiles">
<!--placeholder ~~ will be populated dynamically-->
</div>
<div id="plfileweights">
<!--placeholder ~~ will be populated dynamically-->
</div>
<div id="plfileweightadjs">
<!--placeholder ~~ will be populated dynamically-->
</div>
<div id="libhighlight">
<img src="images/highlight.gif" width=218 height=20>
</div>
<div id="draglayer">
<!--placeholder ~~ will be populated dynamically-->
</div>
</qtssobject>
</body>
</html>