var STATE_TRACKER_DRAG    = false;
var STATE_PANEBORDER_DRAG = false;
var STATE_VOLUME_DRAG     = false;
var STATE_USER_EMAIL      = "";
var STATE_USER_MD5PW      = "";
var STATE_LIBRARY_ARTMODE = true;
var STATE_LIBRARY_COUNT   = 0;
var STATE_LIBRARY_KEY     = new Object;
var STATE_LIBRARY_TITLES  = new Object;
var STATE_LIBRARY_IMAGES  = new Object;
var STATE_TAG_FILENAME = "";
var STATE_VJB_FILENAME = "";
var STATE_VJB_MUTE     = false;
var STATE_VJB_VOLUME   = -1;
var STATE_VJB_NEWSTART = false;
var STATE_VJB_STARTPOS = 0;
var STATE_SKIN = "";
var STATE_ADV_DISPLAY_INFO = true;
var STATE_ADV_SEARCH_HL    = true;
var STATE_ADV_DEFAULT_FS   = false;
var STATE_ADV_FONTSIZE_INC = 0;
var STATE_ADV_DISPLAY_ART  = true;
var STATE_ADV_ART_SIZE     = "Half";
var STATE_ADV_TEXT_BELOW   = false;
var STATE_TAB_L = "";
var STATE_TAB_S = "";
var FORCE_PAUSE = false;
var MASHUP_FLAG = false;
var MASHUP = new Mashup();
var preloadedImages = new Array();
var positionBarStart = 0;
var positionBarDelta = 0;
var positionTimedWidth = 0;
var dragBarStart = 0;
var dragBarDelta = 0;
var dragBarSlide = 0;
var volumeBarStart = 0;
var volumeBarDelta = 0;
var volumeWidth = 0;
var totalWidth;
var paneLeftWidth;
var paneRightWidth;
var vjbArtImage = new Image();
var newWindow;
function pageInit() {
STATE_USER_EMAIL = get_cookie("USNM");
STATE_USER_MD5PW = get_cookie("AUTH");
if (window.opener && window.opener.location) window.opener.location.reload();
var preferences = get_cookie("PREF")
if (preferences != undefined) {
if (preferences.split("|")[0] != "") STATE_VJB_VOLUME = parseInt(preferences.split("|")[0]);
if (preferences.split("|")[1] != "") STATE_LIBRARY_ARTMODE = ((preferences.split("|")[1] == 1) ? true : false);
if (preferences.split("|")[2] != "") STATE_SKIN = preferences.split("|")[2];
if (preferences.split("|")[3] != "") STATE_ADV_DISPLAY_INFO = ((preferences.split("|")[3] == 1) ? true : false);
if (preferences.split("|")[4] != "") STATE_ADV_SEARCH_HL = ((preferences.split("|")[4] == 1) ? true : false);
if (preferences.split("|")[5] != "") STATE_ADV_DEFAULT_FS = ((preferences.split("|")[5] == 1) ? true : false);
if (preferences.split("|")[6] != "") STATE_ADV_FONTSIZE_INC = parseInt(preferences.split("|")[6]);
if (preferences.split("|")[7] != "") STATE_ADV_DISPLAY_ART = ((preferences.split("|")[7] == 1) ? true : false);
if (preferences.split("|")[8] != "") STATE_ADV_ART_SIZE = preferences.split("|")[8];
if (preferences.split("|")[9] != "") STATE_ADV_TEXT_BELOW = ((preferences.split("|")[9] == 1) ? true : false);
}
if (!/^\d+$/.test(STATE_VJB_VOLUME)) STATE_VJB_VOLUME = 50;
if (STATE_VJB_VOLUME < 0 || STATE_VJB_VOLUME > 100) STATE_VJB_VOLUME = 50;
if (!/^\d+$/.test(STATE_ADV_FONTSIZE_INC)) STATE_ADV_FONTSIZE_INC = 0;
if (STATE_ADV_FONTSIZE_INC < -2 || STATE_ADV_FONTSIZE_INC > 4) STATE_ADV_FONTSIZE_INC = 0;
if (executeJavascript(STATE_SKIN + ".js") == false) {
STATE_SKIN = "DEFAULT";
executeJavascript(STATE_SKIN + ".js");
}
skinInit();
document.getElementById("menuCommandButton_" + STATE_SKIN).src = "/img/check.gif";
switch (STATE_ADV_FONTSIZE_INC) {
case -2: document.getElementById("menuCommandButton_SMALLER").src = "/img/check.gif"; break;
case 0: document.getElementById("menuCommandButton_NORMAL").src = "/img/check.gif"; break;
case 2: document.getElementById("menuCommandButton_LARGER").src = "/img/check.gif"; break;
case 4: document.getElementById("menuCommandButton_LARGEST").src = "/img/check.gif"; break;
}
menuCommandDisable(document.getElementById("menuCommand_CLOSE"));
menuCommandDisable(document.getElementById("menuCommand_PLAY"));
menuCommandDisable(document.getElementById("menuCommand_PAUSE"));
menuCommandDisable(document.getElementById("menuCommand_STOP"));
menuCommandDisable(document.getElementById("menuCommand_MODIFY_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_MATCH_VIDEO"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
menuCommandDisable(document.getElementById("menuCommand_FULLSCREEN"));
menuCommandDisable(document.getElementById("menuCommand_CHANGE_PASSWORD"));
menuCommandDisable(document.getElementById("menuCommand_LOGOUT"));
totalWidth     = pageWidth();
paneLeftWidth  = parseInt( (totalWidth - SKIN_PANEBORDER_WIDTH) / 2)
paneRightWidth = totalWidth - paneLeftWidth - SKIN_PANEBORDER_WIDTH;
wmpEmbedPlayer(0);
updateSize();
document.getElementById("positionMark").onmousedown = posMarkMD;
document.getElementById("positionFull").onmousedown = posBarMD;
document.getElementById("positionPast").onmousedown = posBarMD;
document.getElementById("dragBar").onmousedown = dragBarMD;
document.getElementById("dragBar").ondblclick = dragBarDC;
document.onmouseup = MU;
document.onmousemove = MM;
if (typeof document.onselectstart != "undefined") {
document.onselectstart = function() {
var thisTag = event.srcElement.tagName.toLowerCase();
if ("input textarea select ".indexOf(thisTag) == -1) return false;
}
} else {
document.onmousedown   = function(e) {
if(e==null) e=window.event;
var thisTag = e.target.tagName.toLowerCase() + " ";
if ("input textarea select ".indexOf(thisTag) == -1) return false;
}
}
wmpTrackPosition();
wmpTrackOther();
if (STATE_USER_EMAIL && STATE_USER_MD5PW) {
menuCommandEnable(document.getElementById("menuCommand_CHANGE_PASSWORD"));
menuCommandEnable(document.getElementById("menuCommand_LOGOUT"));
loadLibrary("initialize");
generateLibraryHTML();
generateSearchHTML();
generateShareHTML();
}
document.getElementById("menuCommandButton_LIBRARY_AS_COVER_ART").src = (STATE_LIBRARY_ARTMODE ? "/img/check.gif" : "/img/null.gif");
varc1DisplayCurrent();
}
function pageResize() {
STATE_TRACKER_DRAG = false;
positionBarStart = 0;
positionBarDelta = 0;
STATE_PANEBORDER_DRAG = false;
dragBarStart = 0;
dragBarDelta = 0;
dragBarSlide = 0;
if (paneRightWidth == 0) dragBarDelta=9999;
totalWidth = pageWidth();
updateSize();
}
function wmpTrackPosition() {
var player = document.getElementById("wmpPlayer");
if (!player || !player.settings || !player.controls) {
setTimeout("wmpTrackPosition()", 500);
return;
}
var percentComplete = 0;
var infoLine = document.getElementById("infoLine");
if (player.Controls && player.Controls.currentPositionString != 'undefined' && player.Controls.currentPosition != 'undefined' && player.currentMedia && player.currentMedia.durationString != 'undefined') {
if (MASHUP_FLAG) {
if (MASHUP.currentIndex == 0 && player.Controls.currentPosition == 0) {
MASHUP.currentPosition = 0;
} else {
MASHUP.currentPosition = MASHUP.indexTransition[MASHUP.currentIndex] + (player.Controls.currentPosition - MASHUP.indexStart[MASHUP.currentIndex]);
}
if (MASHUP.currentPosition < 0) {
wmpGoto(0);
} else if (player.playState == 3 && MASHUP.currentPosition >= MASHUP.totalDuration) {
wmpStop();
} else if (player.playState == 3 && MASHUP.currentPosition >= MASHUP.indexTransition[MASHUP.currentIndex] + MASHUP.indexDuration[MASHUP.currentIndex]) {
wmpGoto(MASHUP.currentPosition);
}
infoLine.innerHTML = "[" + secondsToString(MASHUP.currentPosition)  + " | " + secondsToString(MASHUP.totalDuration) + "]";
if (MASHUP.totalDuration) percentComplete = MASHUP.currentPosition / MASHUP.totalDuration;
} else {
infoLine.innerHTML = "[" + (player.Controls.currentPositionString ? player.Controls.currentPositionString : "00:00")  + " | " + player.currentMedia.durationString + "]";
if (player.currentMedia.duration) percentComplete = player.Controls.currentPosition / player.currentMedia.duration;
}
if (!STATE_TRACKER_DRAG) positionBarUpdate(parseInt(0.5 + percentComplete * (totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET)));
} else {
infoLine.innerHTML = "[00:00]";
}
if (MASHUP_FLAG) {
setTimeout("wmpTrackPosition()", 10);
} else {
setTimeout("wmpTrackPosition()", 500);
}
}
function wmpTrackOther() {
var player = document.getElementById("wmpPlayer");
if (!player || !player.settings || !player.controls) {
setTimeout("wmpTrackOther()", 500);
return;
}
if (player.settings.mute) {
STATE_VJB_MUTE = true;
document.getElementById("menuCommandButton_MUTE").src = "/img/check.gif";
} else {
STATE_VJB_MUTE = false;
document.getElementById("menuCommandButton_MUTE").src = "/img/null.gif";
}
if (player.settings.volume) {
STATE_VJB_VOLUME = player.settings.volume;
savePreferences()
}
setTimeout("wmpTrackOther()", 500);
}
function posMarkMD(e) {
if(e==null) e=window.event;
positionBarStart = parseInt(e.clientX);
positionBarDelta = 0;
totalWidth = pageWidth();
positionTimedWidth = document.getElementById("positionPast").offsetWidth;
STATE_TRACKER_DRAG = true;
}
function posBarMD(e) {
if(e==null) e=window.event;
var posBar = document.getElementById("positionFull");
if (typeof e.offsetX != 'undefined') {
var selectPos = e.offsetX;
} else {
var selectPos = e.clientX - posBar.offsetLeft;
}
var player = document.getElementById("wmpPlayer");
if (player.currentMedia && player.currentMedia.duration) {
newPos = (MASHUP_FLAG ? MASHUP.totalDuration : player.currentMedia.duration) *
(selectPos - SKIN_TRACKER_MARKER_WIDTH/2 + SKIN_TRACKER_MARKER_LR_PADDING_OFFSET) /
(totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET);
wmpGoto(newPos);
}
}
function dragBarMD(e) {
if(e==null) e=window.event;
dragBarStart = parseInt(e.clientX);
dragBarDelta = 0;
totalWidth = pageWidth();
paneLeftWidth = document.getElementById("vjbAppLeft").offsetWidth;
paneRightWidth = document.getElementById("vjbAppRight").offsetWidth;
if (paneLeftWidth < paneRightWidth) {
dragBarSlide = 1;
} else {
dragBarSlide = -1;
}
STATE_PANEBORDER_DRAG = true;
}
function dragBarDC(e) {
totalWidth = pageWidth();
paneLeftWidth  = parseInt( (totalWidth - SKIN_PANEBORDER_WIDTH) / 2);
paneRightWidth = totalWidth - paneLeftWidth - SKIN_PANEBORDER_WIDTH;
updateSize();
}
function volumeBarMD(e) {
var v1 = document.getElementById("volumeSlider");
var v2 = document.getElementById("volumeBar");
var player = document.getElementById("wmpPlayer");
if(e==null) e=window.event;
if (typeof e.offsetX != 'undefined') {
var selectPos = e.offsetX;
} else {
var selectPos = e.clientX - v2.offsetLeft - document.getElementById("menuNotice").offsetLeft - document.getElementById("menuBar").offsetLeft;
}
v1.style.width = selectPos + "px";
STATE_VJB_VOLUME = parseInt( 0.5 + 100 * selectPos / document.getElementById("volumeBar").offsetWidth );
if (player && player.settings) player.settings.volume = STATE_VJB_VOLUME;
if (document.getElementById("currentVolume")) document.getElementById("currentVolume").innerHTML = STATE_VJB_VOLUME + "%";
savePreferences()
volumeBarStart = parseInt(e.clientX);
volumeBarDelta = 0;
volumeWidth = v1.offsetWidth;
STATE_VOLUME_DRAG = true;
}
function MU(e) {
STATE_TRACKER_DRAG = false;
if (STATE_VOLUME_DRAG) {
STATE_VOLUME_DRAG = false;
menuBarExit();
}
positionBarStart = 0;
positionBarDelta = 0;
dragBarStart = 0;
dragBarDelta = 0;
dragBarSlide = 0;
volumeBarStart = 0;
volumeBarDelta = 0;
totalWidth = pageWidth();
paneLeftWidth = document.getElementById("vjbAppLeft").offsetWidth;
paneRightWidth = document.getElementById("vjbAppRight").offsetWidth;
updateSize();
STATE_PANEBORDER_DRAG = false;
}
function MM(e) {
if (!STATE_PANEBORDER_DRAG && !STATE_TRACKER_DRAG && !STATE_VOLUME_DRAG) {
paneLeftWidth = document.getElementById("vjbAppLeft").offsetWidth;
paneRightWidth = document.getElementById("vjbAppRight").offsetWidth;
return;
}
if(e==null) e=window.event;
if (STATE_TRACKER_DRAG) {
positionBarDelta = parseInt(e.clientX) - positionBarStart;
}
if (STATE_PANEBORDER_DRAG) {
deltaNew = parseInt(e.clientX) - dragBarStart;
if (deltaNew != dragBarDelta) dragBarSlide = deltaNew - dragBarDelta;
dragBarDelta = deltaNew;
}
if (STATE_VOLUME_DRAG) {
volumeBarDelta = parseInt(e.clientX) - volumeBarStart;
}
updateSize();
}
function updateSize() {
var leftPane = document.getElementById("vjbAppLeft");
var dragPane = document.getElementById("dragBar");
var rightPane = document.getElementById("vjbAppRight");
var playPane = document.getElementById("vjbPlayer");
var artPane  = document.getElementById("vjbInfoArt");
var infoPane = document.getElementById("vjbInfoText");
var player = document.getElementById("wmpPlayer");
if (STATE_TRACKER_DRAG) {
positionBarUpdate(positionTimedWidth + positionBarDelta - SKIN_TRACKER_MARKER_WIDTH/2 + SKIN_TRACKER_MARKER_LR_PADDING_OFFSET);
if (player && player.currentMedia && player.currentMedia.duration) {
var newPos = (MASHUP_FLAG ? MASHUP.totalDuration : player.currentMedia.duration) *
(positionTimedWidth + positionBarDelta - SKIN_TRACKER_MARKER_WIDTH/2 + SKIN_TRACKER_MARKER_LR_PADDING_OFFSET) /
(totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET);
wmpGoto(newPos);
}
} else {
var percentComplete = 0;
if (MASHUP_FLAG) {
if (MASHUP.totalDuration) percentComplete = MASHUP.currentPosition / MASHUP.totalDuration;
} else if (player && player.currentMedia && player.Controls && player.currentMedia.duration > 0 && player.Controls.currentPosition > 0) {
percentComplete = player.Controls.currentPosition/player.currentMedia.duration;
}
positionBarUpdate(parseInt(0.5 + percentComplete *
(totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET)));
}
if (STATE_VOLUME_DRAG) {
var v1 = document.getElementById("volumeSlider");
var v2 = document.getElementById("volumeBar");
var newVol = volumeWidth + volumeBarDelta;
if (newVol < 0) newVol = 0;
if (newVol > v2.offsetWidth) newVol = v2.offsetWidth
v1.style.width = newVol + "px";
STATE_VJB_VOLUME = parseInt( 0.5 + 100 * newVol / v2.offsetWidth );
if (player && player.settings) player.settings.volume = STATE_VJB_VOLUME;
if (document.getElementById("currentVolume")) document.getElementById("currentVolume").innerHTML = STATE_VJB_VOLUME + "%";
}
if ( paneLeftWidth + dragBarDelta < 0 ) {
paneSlideTo(0);
document.getElementById("menuCommandButton_HIDE_LEFT_PANE").src = "/img/check.gif";
document.getElementById("menuCommandButton_HIDE_RIGHT_PANE").src = "/img/null.gif";
} else if ( totalWidth - paneLeftWidth - dragBarDelta - SKIN_PANEBORDER_WIDTH < 0 ) {
paneSlideTo(totalWidth - SKIN_PANEBORDER_WIDTH);
document.getElementById("menuCommandButton_HIDE_LEFT_PANE").src = "/img/null.gif";
document.getElementById("menuCommandButton_HIDE_RIGHT_PANE").src = "/img/check.gif";
} else if (  paneLeftWidth + dragBarDelta <=100 && dragBarSlide <= 0 ) {
paneSlideTo(0);
STATE_PANEBORDER_DRAG = false;
document.getElementById("menuCommandButton_HIDE_LEFT_PANE").src = "/img/check.gif";
document.getElementById("menuCommandButton_HIDE_RIGHT_PANE").src = "/img/null.gif";
} else if ( totalWidth - paneLeftWidth - dragBarDelta - SKIN_PANEBORDER_WIDTH <= 100 && dragBarSlide >= 0 ) {
paneSlideTo(totalWidth - SKIN_PANEBORDER_WIDTH);
STATE_PANEBORDER_DRAG = false;
document.getElementById("menuCommandButton_HIDE_LEFT_PANE").src = "/img/null.gif";
document.getElementById("menuCommandButton_HIDE_RIGHT_PANE").src = "/img/check.gif";
} else {
paneSlideTo(paneLeftWidth + dragBarDelta);
document.getElementById("menuCommandButton_HIDE_LEFT_PANE").src = "/img/null.gif";
document.getElementById("menuCommandButton_HIDE_RIGHT_PANE").src = "/img/null.gif";
}
leftPane.style.height = pageHeight() - SKIN_CONTROL_AREA_HEIGHT + "px";
rightPane.style.height = pageHeight() - SKIN_CONTROL_AREA_HEIGHT + "px";
if (player && player.currentMedia && player.currentMedia.imageSourceHeight > 0) {
var aspectRatio = player.currentMedia.imageSourceWidth / player.currentMedia.imageSourceHeight;
var newHeight = parseInt(0.5 + leftPane.offsetWidth / aspectRatio);
var maxHeight = pageHeight() - SKIN_CONTROL_AREA_HEIGHT;
if (newHeight < maxHeight) {
if (newHeight <= 0) {
player.height = 1;
} else {
player.height = newHeight;
}
} else {
if (maxHeight <= 0) {
player.height = 1;
} else {
player.height = maxHeight;
}
}
var newWidth = leftPane.offsetWidth;
if (newWidth <= 0) {
player.width = 1;
} else {
player.width = newWidth;
}
if (maxHeight - player.height < 100 || !STATE_ADV_DISPLAY_INFO) {
artPane.style.width = "0px";
artPane.style.height = "0px";
infoPane.style.width = "0px";
infoPane.style.height = "0px";
return;
}
} else {
if (player) player.height = 1;
}
var artRightPadding = 0;
if (artPane.innerHTML && vjbArtImage.width > 0 && vjbArtImage.height > 0) {
var aspectRatio = vjbArtImage.width / vjbArtImage.height;
var maxHeight = pageHeight() - SKIN_CONTROL_AREA_HEIGHT - playPane.offsetHeight - 2 * SKIN_INFO_ART_PADDING;
var maxWidth = leftPane.offsetWidth - 2 * SKIN_INFO_ART_PADDING;
var newHeight = parseInt(0.5 +  maxWidth / aspectRatio);
if (newHeight < maxHeight) {
artPane.style.top = playPane.offsetHeight + SKIN_INFO_ART_PADDING + parseInt(0.5 + (maxHeight - newHeight) / 2)+ "px";
artPane.style.left = SKIN_INFO_ART_PADDING + "px";
artPane.style.width = maxWidth + "px";
artPane.style.height = newHeight + "px";
} else {
artPane.style.top = playPane.offsetHeight + SKIN_INFO_ART_PADDING + "px";
artPane.style.left = SKIN_INFO_ART_PADDING + "px";
artPane.style.width = parseInt(0.5 + aspectRatio * maxHeight) + "px";
artPane.style.height = maxHeight + "px";
}
var artRightPadding = 2 * SKIN_INFO_ART_PADDING;
} else {
artPane.style.top = playPane.offsetHeight + SKIN_INFO_ART_PADDING + "px";
artPane.style.left = SKIN_INFO_ART_PADDING + "px";
artPane.style.width = "0px";
artPane.style.height = "0px";
var artRightPadding = SKIN_INFO_ART_PADDING;
}
infoPane.style.top = playPane.offsetHeight + SKIN_INFO_TEXT_TOP_PADDING + "px";
infoPane.style.left = artPane.offsetWidth + artRightPadding + "px";
infoPane.style.width = (leftPane.offsetWidth - artPane.offsetWidth - artRightPadding < 200) ? "0px" : leftPane.offsetWidth - artPane.offsetWidth - artRightPadding + "px";
infoPane.style.height = pageHeight() - SKIN_CONTROL_AREA_HEIGHT - playPane.offsetHeight - SKIN_INFO_TEXT_TOP_PADDING + "px";
}
function paneSlideTo(position) {
var leftPane = document.getElementById("vjbAppLeft");
var dragPane = document.getElementById("dragBar");
var rightPane = document.getElementById("vjbAppRight");
leftPane.style.left  = "0px";
leftPane.style.width = position + "px";
dragPane.style.left  = position + "px";
dragPane.style.width = SKIN_PANEBORDER_WIDTH + "px";
rightPane.style.left  = position + SKIN_PANEBORDER_WIDTH + "px";
rightPane.style.width = totalWidth - position - SKIN_PANEBORDER_WIDTH + "px";
if ( totalWidth - position - SKIN_PANEBORDER_WIDTH < document.getElementById("tabBar").offsetWidth) {
document.getElementById("tabBar").style.left  = position + SKIN_PANEBORDER_WIDTH + "px";
document.getElementById("tabBar").style.right = "";
} else {
document.getElementById("tabBar").style.left  = "";
document.getElementById("tabBar").style.right = "0px";
}
}
function positionBarUpdate(trackerPosition) {
if (trackerPosition <= 0)
trackerPosition = 0;
if ( trackerPosition > totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET)
trackerPosition = totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET;
var posFull = document.getElementById("positionFull");
var posPast = document.getElementById("positionPast");
var posMark = document.getElementById("positionMark");
posFull.style.left  = SKIN_TRACKER_LEFT_PADDING + "px";
posFull.style.width = totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING + "px";
posPast.style.left  = SKIN_TRACKER_LEFT_PADDING + "px";
if (trackerPosition > totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING) {
posPast.style.width = totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING + "px";
} else {
posPast.style.width = trackerPosition - SKIN_TRACKER_MARKER_LR_PADDING_OFFSET + parseInt(0.5 + SKIN_TRACKER_MARKER_WIDTH / 2) + "px";
}
if (trackerPosition < SKIN_TRACKER_MARKER_LR_PADDING_OFFSET) {
posMark.style.left  = SKIN_TRACKER_LEFT_PADDING + "px";
posMark.style.width = SKIN_TRACKER_MARKER_WIDTH + trackerPosition - SKIN_TRACKER_MARKER_LR_PADDING_OFFSET + "px";
posMark.style.backgroundPosition  = trackerPosition - SKIN_TRACKER_MARKER_LR_PADDING_OFFSET + "px 0px";
} else if ( totalWidth - trackerPosition - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - SKIN_TRACKER_MARKER_WIDTH + 2*SKIN_TRACKER_MARKER_LR_PADDING_OFFSET < SKIN_TRACKER_MARKER_LR_PADDING_OFFSET) {
posMark.style.left  = SKIN_TRACKER_LEFT_PADDING + trackerPosition - SKIN_TRACKER_MARKER_LR_PADDING_OFFSET + "px";
posMark.style.width = SKIN_TRACKER_MARKER_LR_PADDING_OFFSET + (totalWidth - SKIN_TRACKER_LEFT_PADDING - SKIN_TRACKER_RIGHT_PADDING - trackerPosition) + "px";
posMark.style.backgroundPosition  = "0px 0px";
} else {
posMark.style.left  = SKIN_TRACKER_LEFT_PADDING + trackerPosition - SKIN_TRACKER_MARKER_LR_PADDING_OFFSET + "px";
posMark.style.width = SKIN_TRACKER_MARKER_WIDTH + "px";
posMark.style.backgroundPosition  = "0px 0px";
}
}
function loadLibrary(flag) {
var playMash = false;
var playFile = false;
var playKey  = "";
var playTime = 0;
if (flag == "initialize") {
var query = this.location.search.substring(1);
if (query.length > 0){
var params = query.split("&");
for (var i=0; i<params.length; i++){
var pos = params[i].indexOf("=");
if (pos > 0) {
var key = params[i].substring(0, pos);
var val = params[i].substring(pos + 1);
if (key == "playmashup") playMash = val;
if (key == "playkey") playKey = val;
if (key == "playtime") playTime = val;
}
}
}
}
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
var response = xmlreq.responseXML.documentElement;
if (response.getAttribute("auth") == "yes") {
var x = response.getElementsByTagName("id");
STATE_LIBRARY_COUNT   = 0;
STATE_LIBRARY_KEY     = new Object;
STATE_LIBRARY_TITLES  = new Object;
STATE_LIBRARY_IMAGES  = new Object;
for (var i=0; i<x.length; i++) {
var primary_key = x[i].firstChild.data;
var filename = x[i].getElementsByTagName("file")[0].firstChild.data;
if (STATE_LIBRARY_KEY[filename] == undefined) STATE_LIBRARY_COUNT++;
STATE_LIBRARY_KEY[filename] = primary_key;
if (x[i].getElementsByTagName("image")[0].firstChild != undefined) {
STATE_LIBRARY_IMAGES[filename] = x[i].getElementsByTagName("image")[0].firstChild.data;
}
if (x[i].getElementsByTagName("title")[0].firstChild != undefined) {
var title = x[i].getElementsByTagName("title")[0].firstChild.data;
STATE_LIBRARY_TITLES[filename] = title;
}
if (primary_key == playKey) playFile = filename;
}
if (flag == "initialize") {
if (STATE_LIBRARY_COUNT == 0) {
rightLoadHTML('/player/intro-library.html');
} else if (STATE_USER_EMAIL == "demo") {
rightLoadHTML('/player/intro-demo.html');
} else {
tabsClick(1);
}
if (playMash) {
playVBV(playMash);
} else if (playFile) {
wmpLoadFile(playFile, playTime);
} else if (playKey != "") {
document.getElementById("wmpError").innerHTML = "<div style='text-align: center; margin: 80px auto;'>The file you are attempting to play is not currently in your library.</div>";
}
}
} else {
}
} else {
}
};
xmlreq.open("GET", "/api/LibraryRead.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW, true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function generateLibraryHTML() {
generateLibraryCovers('');
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (/^<!--AUTHFAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--AUTHFAIL-->/mg, ""));
promptForLogin();
} else if (/^<!--FAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--FAIL-->/mg, ""));
} else if (/^<!--SUCCESS-->/.test(x.responseText)) {
var clickStyle = "<span style='color: "+SKIN_RIGHT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_RIGHT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_RIGHT_PANE_LINK_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_LINK_DECORATION + "\";' ";
var group2Style = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center right; background-repeat: no-repeat; background-image: url(\''+SKIN_EXPAND_BUTTON_IMG_OFF+'\');" ';
var playStyle = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center left; background-repeat: no-repeat; background-image: url(\''+SKIN_ICON_PLAY+'\');" '+
'onmouseover="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY_HOVER+'\\\')\';" onmouseout="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY+'\\\')\';" ';
var outputHTML = x.responseText.replace(/^<!--SUCCESS-->/, "");
outputHTML = outputHTML.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = outputHTML.replace(/<div GROUP2STYLE /g, group2Style);
outputHTML = outputHTML.replace(/<div PLAYSTYLE /g, playStyle);
outputHTML = outputHTML.replace(/<div style='font-size: 110%;/g, '<div style=\'font-size: 120%;');
document.getElementById("varc1List").innerHTML = outputHTML;
} else {
alert('An unexpected error occurred.\nC1');
}
} else {
}
};
x.open('GET', '/api/searchMatch.cgi?'+encodeURIComponent(STATE_USER_EMAIL)+'&'+STATE_USER_MD5PW+'&LIB&luvo', true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
function generateLibraryCovers(scope) {
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (/^<!--AUTHFAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--AUTHFAIL-->/mg, ""));
promptForLogin();
} else if (/^<!--FAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--FAIL-->/mg, ""));
} else if (/^<!--SUCCESS-->/.test(x.responseText)) {
var tileWidth = 160 + 7*STATE_ADV_FONTSIZE_INC;
var tileHeight = 160 + 3*STATE_ADV_FONTSIZE_INC;
var tileStyle = '<div style="float: left; width: '+tileWidth+'px; height: '+tileHeight+'px; overflow: hidden; margin: 0em 0.5em 0.5em 0em; '+
'border-color: '+SKIN_RIGHT_PANE_COLOR+'; border-style: solid; border-width: 0px; padding: 1px;" '+
'onmouseover="this.style.borderWidth = \'1px\'; this.style.padding = \'0px\'; this.style.backgroundColor = \''+SKIN_RIGHT_PANE_COVER_HIGHLIGHT_COLOR+'\'; '+
'this.childNodes[1].childNodes[0].style.opacity = \'0.50\'; this.childNodes[1].childNodes[0].style.filter = \' alpha(opacity=50) \'; '+
'this.childNodes[0].style.display = \'block\';" '+
'onmouseout="this.style.borderWidth = \'0px\'; this.style.padding = \'1px\'; this.style.backgroundColor = \'\'; '+
'this.childNodes[1].childNodes[0].style.opacity = \'\'; this.childNodes[1].childNodes[0].style.filter = \'\'; '+
'this.childNodes[0].style.display = \'none\';" ';
var playStyle = '<img src="'+SKIN_ICON_TILEPLAY+'" onmouseover="this.src=SKIN_ICON_TILEPLAY_HOVER;" onmouseout="this.src=SKIN_ICON_TILEPLAY;">';
var outputHTML = x.responseText.replace(/^<!--SUCCESS-->/, "");
outputHTML = outputHTML.replace(/<div TILESTYLE /g, tileStyle);
outputHTML = outputHTML.replace(/<img PLAYSTYLE>/g, playStyle);
if (scope == '') {
document.getElementById("varc1Art").innerHTML = outputHTML;
} else {
var header = '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Return to full library', 'varc1DisplayCurrent();') + '</div><hr>';
document.getElementById("varc1Detail").innerHTML = header + outputHTML;
STATE_TAB_L = 'generateLibraryCovers(\''+scope+'\')';
document.getElementById("varc1Art").style.display   = "none";
document.getElementById("varc1List").style.display  = "none";
document.getElementById("varc1Detail").style.display = "block";
}
} else {
alert('An unexpected error occurred.\nC2');
}
} else {
}
};
x.open("GET", "/api/libraryCovers.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + encodeURIComponent(scope), true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
function matchLibrary(titleString, searchString) {
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (/^<!--AUTHFAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--AUTHFAIL-->/mg, ""));
promptForLogin();
} else if (/^<!--FAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--FAIL-->/mg, ""));
} else if (/^<!--SUCCESS-->/.test(x.responseText)) {
var clickStyle = "<span style='color: "+SKIN_RIGHT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_RIGHT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_RIGHT_PANE_LINK_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_LINK_DECORATION + "\";' ";
var group2Style = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center right; background-repeat: no-repeat; background-image: url(\''+SKIN_EXPAND_BUTTON_IMG_OFF+'\');" ';
var playStyle = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center left; background-repeat: no-repeat; background-image: url(\''+SKIN_ICON_PLAY+'\');" '+
'onmouseover="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY_HOVER+'\\\')\';" onmouseout="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY+'\\\')\';" ';
var outputHTML = x.responseText.replace(/^<!--SUCCESS-->/, "");
outputHTML = outputHTML.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = outputHTML.replace(/<div GROUP2STYLE /g, group2Style);
outputHTML = outputHTML.replace(/<div PLAYSTYLE /g, playStyle);
var header = '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Return to full library', 'varc1DisplayCurrent();') + '</div>';
if (searchString != "unknown_videos" && searchString != "vibiv") {
var action = 'matchSearch(\'' + titleString + '\', \'' + searchString + '\');';
action = action.replace(/\\/g,"\\\\");
header += '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Find matches outside library', action) + '</div>';
}
header += '<hr>';
if (titleString) header += rightHeaderText(titleString);
document.getElementById("varc1Detail").innerHTML = header + outputHTML;
STATE_TAB_L = '';
document.getElementById("varc1Art").style.display   = "none";
document.getElementById("varc1List").style.display  = "none";
document.getElementById("varc1Detail").style.display = "block";
tabsClick(1);
} else {
alert('An unexpected error occurred.\nC3');
}
} else {
}
};
x.open("GET", "/api/searchMatch.cgi?"+encodeURIComponent(STATE_USER_EMAIL)+"&"+STATE_USER_MD5PW+"&LIB&lvo&"+encodeURI(searchString), true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
function matchSearch(titleString, searchString) {
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (/^<!--AUTHFAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--AUTHFAIL-->/mg, ""));
promptForLogin();
} else if (/^<!--FAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--FAIL-->/mg, ""));
} else if (/^<!--SUCCESS-->/.test(x.responseText)) {
var clickStyle = "<span style='color: "+SKIN_RIGHT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_RIGHT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_RIGHT_PANE_LINK_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_LINK_DECORATION + "\";' ";
var group2Style = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center right; background-repeat: no-repeat; background-image: url(\''+SKIN_EXPAND_BUTTON_IMG_OFF+'\');" ';
var playStyle = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center left; background-repeat: no-repeat; background-image: url(\''+SKIN_ICON_PLAY+'\');" '+
'onmouseover="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY_HOVER+'\\\')\';" onmouseout="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY+'\\\')\';" ';
var outputHTML = x.responseText.replace(/^<!--SUCCESS-->/, "");
outputHTML = outputHTML.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = outputHTML.replace(/<div GROUP2STYLE /g, group2Style);
outputHTML = outputHTML.replace(/<div PLAYSTYLE /g, playStyle);
document.searchForm['Video'].value = "";
document.searchForm['Dialog'].value = "";
document.searchForm['fullSearch'].checked = 1;
document.getElementById("varc2List").innerHTML = '<hr>' + rightHeaderText(titleString) + outputHTML;
varc2DisplayList(1);
tabsClick(2);
STATE_TAB_S = '';
} else {
alert('An unexpected error occurred.\nC4');
}
} else {
}
};
x.open("GET", "/api/searchMatch.cgi?"+encodeURIComponent(STATE_USER_EMAIL)+"&"+STATE_USER_MD5PW+"&SRC&aw&"+encodeURI(searchString), true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
function toggleGrouping(id, t) {
var img;
switch (t) {
case 0: img='EXPAND'; break;
case 1: img='MORE'; break;
}
var el = document.getElementById('group'+id);
var il = document.getElementById('button_group'+id);
if (el.style.display=='none') {
el.style.display='block';
il.style.backgroundImage='url("'+eval('SKIN_'+img+'_BUTTON_IMG_ON_HOVER')+'")';
} else {
el.style.display='none';
il.style.backgroundImage='url("'+eval('SKIN_'+img+'_BUTTON_IMG_OFF_HOVER')+'")';
}
}
function hoverGrouping(id, t) {
var img;
switch (t) {
case 0: img='EXPAND'; break;
case 1: img='MORE'; break;
}
var el = document.getElementById('group'+id);
var il = document.getElementById('button_group'+id);
if (el.style.display=='none') {
il.style.backgroundImage='url("'+eval('SKIN_'+img+'_BUTTON_IMG_OFF_HOVER')+'")';
} else {
il.style.backgroundImage='url("'+eval('SKIN_'+img+'_BUTTON_IMG_ON_HOVER')+'")';
}
}
function restoreGrouping(id, t) {
var img;
switch (t) {
case 0: img='EXPAND'; break;
case 1: img='MORE'; break;
}
var el = document.getElementById('group'+id);
var il = document.getElementById('button_group'+id);
if (el.style.display=='none') {
il.style.backgroundImage='url("'+eval('SKIN_'+img+'_BUTTON_IMG_OFF')+'")';
} else {
il.style.backgroundImage='url("'+eval('SKIN_'+img+'_BUTTON_IMG_ON')+'")';
}
}
function wmpEmbedPlayer(startTime) {
var player = document.getElementById("wmpPlayer");
var current_FS = (player && player.fullScreen && MASHUP_FLAG) ? 1 : 0;
document.getElementById("wmpDiv").innerHTML = "<object id='wmpPlayer' classid='clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6' width='100%'> \
<param name='playcount' value='1' /> \
<param name='autostart' value='0' /> \
<param name='autosize' value='0' /> \
<param name='stretchtofit' value='1' /> \
<param name='uimode' value='none' /> \
<param name='url' value='" + STATE_VJB_FILENAME + "' /> \
<param name='volume' value='" + STATE_VJB_VOLUME + "' /> \
<param name='mute' value='" + STATE_VJB_MUTE + "' /> \
<param name='fullScreen' value='" + current_FS + "' /> \
<param name='currentPosition' value='" + startTime + "' /> \
<div style='padding: 5px;'>The Windows Media Player Active X Control (version 7.0 or greater) could not be found on your system. \
Compatability with Firefox requires the installation of the <a href='http://kb.mozillazine.org/Windows_Media_Player#ActiveX_plugin' target='_new'>Mozilla ActiveX Plug-in</a>.</div> \
</object>";
var player = document.getElementById("wmpPlayer");
if (player && player.network) player.network.bufferingTime = 500;
STATE_VJB_NEWSTART = true;
STATE_VJB_STARTPOS = (startTime) ? startTime : 0;
}
function wmpClose() {
wmpStop();
STATE_VJB_FILENAME = "";
MASHUP_FLAG= false;
MASHUP = new Mashup();
wmpEmbedPlayer(0);
clearInfoAreas();
document.getElementById("titleLine").innerHTML = "";
menuCommandDisable(document.getElementById("menuCommand_CLOSE"));
menuCommandDisable(document.getElementById("menuCommand_MODIFY_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
document.getElementById("control_PLAY_Active").style.zIndex = "0";
document.getElementById("control_PAUSE_Active").style.zIndex = "0";
document.getElementById("control_STOP_Active").style.zIndex = "0";
}
function wmpPlay() {
var player = document.getElementById("wmpPlayer");
if (player == undefined || player.Controls == undefined) {
alert('Windows Media Player video playback could not be initialized.');
return;
}
document.getElementById("wmpPlayer").Controls.play();
}
function wmpStop() {
document.getElementById("wmpPlayer").Controls.stop();
if (MASHUP_FLAG) wmpGoto(0);
}
function wmpPause() {
document.getElementById("wmpPlayer").Controls.pause();
}
function wmpGoto(startPosition) {
var player = document.getElementById("wmpPlayer");
if (MASHUP_FLAG) {
if (startPosition > MASHUP.totalDuration) {
startPosition = MASHUP.totalDuration;
} else if (startPosition < 0) {
startPosition = 0;
}
MASHUP.currentPosition = startPosition;
var timeLeft = startPosition;
for (var i=0; i < MASHUP.indexLength; i++) {
if (startPosition >= MASHUP.indexTransition[i] && startPosition <= MASHUP.indexTransition[i] + MASHUP.indexDuration[i]) {
MASHUP.currentIndex = i;
if (MASHUP.indexFilename[i] == STATE_VJB_FILENAME) {
player.Controls.currentPosition = MASHUP.indexStart[MASHUP.currentIndex] + timeLeft
} else {
FORCE_PAUSE = (player.playState != 3);
wmpLF(MASHUP.indexFilename[i], MASHUP.indexStart[MASHUP.currentIndex] + timeLeft);
}
}
timeLeft -= MASHUP.indexDuration[i];
}
} else {
player.Controls.currentPosition = startPosition;
}
}
function wmpForward(incrementPosition) {
if (MASHUP_FLAG) {
wmpGoto(MASHUP.currentPosition + incrementPosition);
} else {
document.getElementById("wmpPlayer").Controls.currentPosition += incrementPosition;
}
}
function wmpFullscreen() {
document.getElementById("wmpPlayer").fullscreen = true;
parent.window.focus();
}
function wmpMute() {
document.getElementById("wmpPlayer").settings.mute = STATE_VJB_MUTE;
}
function wmpLoadFile(videoURL, startTime) {
MASHUP_FLAG = false;
menuCommandEnable(document.getElementById("menuCommand_MODIFY_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
menuCommandDisable(document.getElementById("menuCommand_MATCH_VIDEO"));
wmpLF(videoURL, startTime);
totalWidth = pageWidth();
if (document.getElementById("vjbAppLeft").offsetWidth == 0) dragBarDelta = parseInt( (totalWidth-SKIN_PANEBORDER_WIDTH) / 2);
clearInfoAreas();
document.getElementById("titleLine").innerHTML = "";
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] == "UNKNOWN") {
menuCommandEnable(document.getElementById("menuCommand_MATCH_VIDEO"));
menuCommandEnable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
document.getElementById("titleLine").innerHTML = STATE_VJB_FILENAME;
return;
}
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] != undefined && STATE_LIBRARY_KEY[STATE_VJB_FILENAME] != "UNKNOWN") {
displayInfo('VIDEO',STATE_LIBRARY_KEY[STATE_VJB_FILENAME],'PLAY','');
menuCommandEnable(document.getElementById("menuCommand_REMOVE_VIDEO_TAGS"));
menuCommandEnable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME].match(/^UK/)) menuCommandEnable(document.getElementById("menuCommand_MATCH_VIDEO"));
return;
}
if (STATE_USER_EMAIL != "demo") identifyVideo("UNKNOWN");
matchFile();
}
function wmpLoadVBV(mash) {
MASHUP_FLAG = true;
MASHUP_PLAY_FS = STATE_ADV_DEFAULT_FS;
MASHUP = mash;
if (MASHUP && MASHUP.indexLength > 0) {
menuCommandDisable(document.getElementById("menuCommand_MODIFY_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_VIDEO_TAGS"));
menuCommandDisable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
menuCommandDisable(document.getElementById("menuCommand_MATCH_VIDEO"));
wmpLF(MASHUP.indexFilename[0], MASHUP.indexStart[0]);
totalWidth = pageWidth();
if (document.getElementById("vjbAppLeft").offsetWidth == 0) dragBarDelta = parseInt( (totalWidth-SKIN_PANEBORDER_WIDTH) / 2);
clearInfoAreas();
document.getElementById("titleLine").innerHTML = "";
} else {
alert("An unexpected error occured when loading a file for playback.\n"+MASHUP.indexLength);
}
}
function wmpLF(videoURL, startTime) {
var player = document.getElementById("wmpPlayer");
if (videoURL == STATE_VJB_FILENAME && player != undefined && player.Controls != undefined) {
player.Controls.currentPosition = startTime;
wmpPlay();
} else {
STATE_VJB_FILENAME = videoURL;
wmpEmbedPlayer(startTime);
wmpPlay();
}
}
function wmpLoadKey(primary_key) {
var filename = '';
for (var f in STATE_LIBRARY_KEY) {
if (STATE_LIBRARY_KEY[f] == primary_key) filename = f;
}
if (filename != '') {
wmpLoadFile(filename, 0);
} else {
alert("An unexpected error occured when loading a file for playback.\n"+primary_key);
}
}
function matchFile() {
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
var response = xmlreq.responseXML.documentElement;
if (response.getAttribute("count") > 0) {
var x = response.getElementsByTagName("id");
if (x[0].getElementsByTagName("image")[0].firstChild != undefined) displayCoverArt(x[0].getElementsByTagName("image")[0].firstChild.data);
for (var i=0; i<x.length; i++) {
var primary_key = x[i].firstChild.data;
var title = x[i].getElementsByTagName("title")[0].firstChild.data.replace(/\t/g," ");
if (i == 0) {
document.getElementById("vjbInfoText").innerHTML = "VIBIV believes that the video you are now playing is:" +
"<div style='padding: 2px 0px 2px 15px;'>" + leftLinkText(title, 'identifyVideo(\"' + primary_key + '\");') + " (click if correct)</div>" +
"&nbsp;<br>If the match suggested above is not correct, you may " + leftLinkText('tag the video', 'clearInfoAreas(); modifyTags();') +
" yourself or " + leftLinkText('search', 'clearInfoAreas(); searchVideo();') + " for further matches.";
} else if (i == 1) {
document.getElementById("vjbInfoText").innerHTML += " Some potential alternative matches are:<br>&nbsp;" +
"<div style='padding: 2px 0px 2px 15px;'>" + leftLinkText(title, 'identifyVideo(\"' + primary_key + '\");') + "</div>";
} else {
document.getElementById("vjbInfoText").innerHTML +=
"<div style='padding: 2px 0px 2px 15px;'>" + leftLinkText(title, 'identifyVideo(\"' + primary_key + '\");') + "</div>";
}
}
} else {
document.getElementById("vjbInfoText").innerHTML = "VIBIV was unable to find a likely match to the video you are now playing.  You may " +
leftLinkText('tag the video', 'clearInfoAreas(); modifyTags();') + " yourself or " +
leftLinkText('search', 'clearInfoAreas(); searchVideo();') + " for further matches.";
}
if (STATE_ADV_DISPLAY_INFO) {
menuCommandDisable(document.getElementById("menuCommand_MATCH_VIDEO"));
} else {
menuCommandEnable(document.getElementById("menuCommand_MATCH_VIDEO"));
}
} else {
}
};
var queryString = STATE_VJB_FILENAME;
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] && STATE_LIBRARY_KEY[STATE_VJB_FILENAME].match(/^UK/) && STATE_LIBRARY_TITLES[STATE_VJB_FILENAME] != "") {
queryString = STATE_LIBRARY_TITLES[STATE_VJB_FILENAME];
}
xmlreq.open("GET", "/api/MatchFile.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + encodeURIComponent(queryString), true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function searchVideo() {
document.searchForm['Video'].value = "";
document.searchForm['Dialog'].value = "";
document.searchForm['fullSearch'].checked = 1;
document.getElementById("varc2List").innerHTML = "";
varc2DisplayList(1);
tabsClick(2);
if (document.getElementById("vjbAppRight").offsetWidth == 0) dragBarDC();
document.getElementById("vjbInfoText").innerHTML = "Search for the video you are trying to identify by entering keywords from the title in the "+
"search for to the right.<p>By clicking '<b>Advanced search options</b>' you may also learn how to search for videos staring a specific actor or "+
"actress, videos in which a particularly named character is played, or even those in which remembered dialog is spoken.  After you have found a "+
"title that is a possible match, select the video to see the full description and verify that it is the correct match before saving."
}
function identifyVideo(primary_key) {
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (xmlreq.responseText == 'DemoFail' || STATE_USER_EMAIL == "demo") {
alert("You are viewing a demo account, you may not add videos to the demo library.");
} else if (xmlreq.responseText == "AuthSuccess") {
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] == undefined) STATE_LIBRARY_COUNT++;
STATE_LIBRARY_KEY[STATE_VJB_FILENAME] = primary_key;
if (primary_key != "UNKNOWN") {
loadLibrary();
displayInfo('VIDEO',primary_key,'PLAY','');
}
generateLibraryHTML();
varc2DisplayList(1);
varc1DisplayCurrent();
menuCommandEnable(document.getElementById("menuCommand_REMOVE_FROM_LIBRARY"));
} else {
promptForLogin();
}
} else {
}
};
xmlreq.open("GET", "/api/LibraryAdd.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + encodeURIComponent(STATE_VJB_FILENAME) + "&" + primary_key, true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function removeVideo() {
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (xmlreq.responseText == 'DemoFail') {
alert("You are viewing a demo account, you may not remove videos from the demo library.");
} else if (xmlreq.responseText == "AuthSuccess") {
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] != undefined) {
delete STATE_LIBRARY_KEY[STATE_VJB_FILENAME];
STATE_LIBRARY_COUNT--;
}
if (STATE_LIBRARY_TITLES[STATE_VJB_FILENAME] != undefined) delete STATE_LIBRARY_TITLES[STATE_VJB_FILENAME];
if (STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME] != undefined) delete STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME];
wmpClose();
generateLibraryHTML();
varc1DisplayCurrent();
generateShareHTML();
} else {
promptForLogin();
}
} else {
}
};
xmlreq.open("GET", "/api/LibraryAdd.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + encodeURIComponent(STATE_VJB_FILENAME) + "&DELETE", true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function addVBV(vibiv_key, action) {
if (action == undefined || action != 'DELETE') action = 'VIBIV';
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (xmlreq.responseText == 'DemoFail') {
alert("You are viewing a demo account, you may not add or remove vibivs from the demo library.");
} else if (xmlreq.responseText == "AuthSuccess") {
generateLibraryHTML();
varc1DisplayCurrent();
matchVBV('vo');
} else {
promptForLogin();
}
} else {
}
};
xmlreq.open("GET", "/api/LibraryAdd.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + vibiv_key + "&" + action, true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function displayCoverArt(imgsrc) {
vjbArtImage.src = imgsrc;
document.getElementById("vjbInfoArt").innerHTML = "<img src='" + vjbArtImage.src + "' style='width:100%; height:100%;'>";
vjbArtImage.onload = function() {
updateSize();
}
}
function displayInfo(vv_flag, vv_key, tab, links) {
if (tab == "PLAY" && (vv_key == undefined || vv_key == "UNKNOWN")) {
clearInfoAreas();
document.getElementById("titleLine").innerHTML = STATE_VJB_FILENAME;
return;
}
var coverArtLoaded = 0;
if (tab == "PLAY" && vv_flag == "VIDEO") {
if (STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME] != undefined && STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME] != "") {
displayCoverArt(STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME]);
coverArtLoaded = 1;
} else {
document.getElementById("vjbInfoText").innerArt = "";
}
}
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (x.responseText != "AuthFail") {
if (tab == "PLAY") {
var tableStyle = '<table class="details" cellpadding="0" cellspacing="0" border="0" style="color: '+SKIN_LEFT_PANE_COLOR+';">';
var clickStyle = "<span style='color: "+SKIN_LEFT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_LEFT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_LEFT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_LEFT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_LEFT_PANE_LINK_COLOR + "\"; this.style.textDecoration = \"" + SKIN_LEFT_PANE_LINK_DECORATION + "\";' ";
var clck2Style = "<span onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_LEFT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_LEFT_PANE_HIGHLIGHT_DECORATION + "\";' onmouseout='this.style.color=\"\"; this.style.textDecoration = \"\";' ";
var outputHTML = x.responseText.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = tableStyle + outputHTML.replace(/<span CLCK2STYLE /g, clck2Style) + '</table>';
document.getElementById("vjbInfoText").innerHTML = outputHTML;
document.getElementById("titleLine").innerHTML = document.getElementById("vjbiPLAYtitle").innerHTML.replace(/<br>/gi, " ");
if (coverArtLoaded == 0 && document.getElementById("vjbi_PLAY_art") != undefined) {
STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME] = document.getElementById("vjbiPLAYart").value;
displayCoverArt(STATE_LIBRARY_IMAGES[STATE_VJB_FILENAME]);
}
} else {
var tableStyle = '<table class="details" cellpadding="0" cellspacing="0" border="0" style="color: '+SKIN_RIGHT_PANE_COLOR+';">';
var clickStyle = "<span style='color: "+SKIN_RIGHT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_RIGHT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_RIGHT_PANE_LINK_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_LINK_DECORATION + "\";' ";
var clck2Style = "<span onmouseover='this.style.cursor = \"pointer\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' onmouseout='this.style.color=\"\"; this.style.textDecoration = \"\";' ";
var clck2Style = "<span onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' onmouseout='this.style.color=\"\"; this.style.textDecoration = \"\";' ";
var outputHTML = x.responseText.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = tableStyle + outputHTML.replace(/<span CLCK2STYLE /g, clck2Style) + '</table>';
var headerDiv = '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">';
var header = '';
if (/b/.test(links) && tab == 2) header += headerDiv + rightLinkText('Return to search results', 'varc2DisplayList(1);') + '</div>'
if (/b/.test(links) && tab == 1) header += headerDiv + rightLinkText('Return to full library', 'varc1DisplayCurrent();') + '</div>'
if (/p/.test(links) && vv_flag == "VIDEO") header += headerDiv + rightLinkText('Play this video', 'wmpLoadKey(\''+vv_key+'\');') + '</div>'
if (/m/.test(links) && vv_flag == "VIDEO") header += headerDiv + rightLinkText('Modify video tags', 'modifyTags(\''+vv_key+'\');') + '</div>'
if (/p/.test(links) && vv_flag == "VIBIV") header += headerDiv + rightLinkText('Play this vibiv', 'playVBV(\''+vv_key+'\');') + '</div>'
if (/m/.test(links) && vv_flag == "VIBIV") header += headerDiv + rightLinkText('Modify this vibiv', 'modifyVBV(\''+vv_key+'\');') + '</div>'
if (/a/.test(links) && vv_flag == "VIBIV") header += headerDiv + rightLinkText('Add this vibiv to your library', 'addVBV(\''+vv_key+'\');') + '</div>'
if (/r/.test(links) && vv_flag == "VIBIV") header += headerDiv + rightLinkText('Remove this vibiv from your library', 'addVBV(\''+vv_key+'\',\'DELETE\');') + '</div>'
if (vv_flag == "VIDEO" && tab == 2 && !MASHUP_FLAG && STATE_VJB_FILENAME && (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] == undefined || STATE_LIBRARY_KEY[STATE_VJB_FILENAME] == "UNKNOWN")) {
header += '<div style="margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('<b>Identify current video</b> - The video now playing has not yet been identified, if the description below is correct then click here to save this information in your library.', 'identifyVideo(\''+vv_key+'\');') + '</div>';
}
if (header != '') header += '<hr>';
document.getElementById('varc'+tab+'Detail').innerHTML = header + '<table border="0" cellpadding="0" cellspacing="0"><tr><td id="vjb'+tab+'art" valign="top" style="vertical-align: top;"></td>' + (STATE_ADV_TEXT_BELOW ? '</tr><tr>' : '') + '<td style="vertical-align: top;">' + outputHTML + '</td></tr></table>';
if (document.getElementById('vjbi'+tab+'art') != undefined && STATE_ADV_DISPLAY_ART) {
if (STATE_ADV_ART_SIZE == "Thumb") {
var thumbImage = document.getElementById('vjbi'+tab+'art').value.replace(/\/covers\//, "/thumbs/");
document.getElementById('vjb'+tab+'art').innerHTML = '<img style="margin: 0.25em;" src="'+thumbImage+'">';
} else if (STATE_ADV_ART_SIZE == "Full") {
document.getElementById('vjb'+tab+'art').innerHTML = '<img style="margin: 0.25em;" src="'+document.getElementById('vjbi'+tab+'art').value+'">';
} else {
document.getElementById('vjb'+tab+'art').innerHTML = '<img style="height: 300px; margin: 0.25em;" src="'+document.getElementById('vjbi'+tab+'art').value+'">';
}
}
switch (tab) {
case 1:
document.getElementById("varc1Art").style.display   = "none";
document.getElementById("varc1List").style.display  = "none";
document.getElementById("varc1Detail").style.display = "block";
tabsClick(1)
STATE_TAB_L = 'displayInfo(\''+vv_flag+'\', \''+vv_key+'\', \''+tab+'\', \''+links+'\')';
break;
case 2:
varc2DisplayList(0);
STATE_TAB_S = 'displayInfo(\''+vv_flag+'\', \''+vv_key+'\', \''+tab+'\', \''+links+'\')';
break;
}
updateSize();
}
} else {
promptForLogin();
}
} else {
}
};
var cgi = (vv_flag == 'VIBIV') ? 'DisplayVibivInfo.cgi' : 'DisplayVideoInfo.cgi'
x.open('GET', '/api/'+cgi+'?'+encodeURIComponent(STATE_USER_EMAIL)+'&'+STATE_USER_MD5PW+'&'+tab+'&'+vv_key, true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
function modifyTags(primary_key) {
if (primary_key == undefined || primary_key == '') {
primary_key = (STATE_USER_EMAIL == 'demo') ? 'UNKNOWN' : STATE_LIBRARY_KEY[STATE_VJB_FILENAME];
}
var filename = '';
if (primary_key == 'UNKNOWN') {
filename = STATE_VJB_FILENAME;
} else if (/^UNKNOWN/.test(primary_key)) {
filename = primary_key.replace(/^UNKNOWN/, '');
primary_key = 'UNKNOWN';
} else {
for (var f in STATE_LIBRARY_KEY) {
if (STATE_LIBRARY_KEY[f] == primary_key) filename = f;
}
if (filename == '') {
alert("An unexpected error occured.\nJ1");
return;
}
}
STATE_TAG_FILENAME = filename;
if (primary_key == "UNKNOWN") {
var header = '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">'+rightLinkText('Return to full library', 'varc1DisplayCurrent();')+'</div>'+
'<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">'+rightLinkText('Play this video', 'wmpLoadFile(\''+ filename.replace(/\\/g,'\\\\') +'\');')+'</div><hr>';
document.getElementById("varc1Detail").innerHTML = rightHeaderText('<b>Create New Video Tags</b>') + header + modifyTagsHTML(primary_key, new Array());
document.getElementById("metaInputSerial").style.display = "none";
document.metaForm.Category[0].checked = true;
STATE_TAB_L = "";
document.getElementById("varc1Art").style.display   = "none";
document.getElementById("varc1List").style.display  = "none";
document.getElementById("varc1Detail").style.display = "block";
tabsClick(1);
if (document.getElementById("vjbAppRight").offsetWidth == 0) dragBarDC();
} else {
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (/^<!--AUTHFAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--AUTHFAIL-->/mg, ""));
promptForLogin();
} else if (/^<!--FAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--FAIL-->/mg, ""));
} else if (/^<!--SUCCESS-->/.test(x.responseText)) {
var m = x.responseText.match(/^<!--SUCCESS-->([^\t]+)\t/)
var tagData = x.responseText.replace(/^<!--SUCCESS-->[^\t]+\t/, "");
var metaKV = createHash(tagData);
var metakvCategory = metaKV['Category'];
var header = '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Return to full library', 'varc1DisplayCurrent();') + '</div>'+
'<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Display video detail page', 'displayInfo(\'VIDEO\',\''+primary_key+'\',1,\'bpm\');') + '</div>';
if (!/^UK/.test(primary_key) && m[1] == "CUSTOM") header += '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Restore original tags', 'writeCustomTag();') + '</div>';
document.getElementById("varc1Detail").innerHTML = rightHeaderText("<b>Modify Video Tag Information</b>") + header + '<hr>' +  modifyTagsHTML(primary_key, metaKV);
if (metakvCategory == "Feature") {
document.getElementById("metaInputFeature").style.display = "block";
document.getElementById("metaInputSerial").style.display  = "none";
document.metaForm.Category[0].checked = true;
} else {
document.getElementById("metaInputFeature").style.display = "none";
document.getElementById("metaInputSerial").style.display  = "block";
document.metaForm.Category[1].checked = true;
}
STATE_TAB_L = "";
document.getElementById("varc1Art").style.display   = "none";
document.getElementById("varc1List").style.display  = "none";
document.getElementById("varc1Detail").style.display = "block";
tabsClick(1);
if (document.getElementById("vjbAppRight").offsetWidth == 0) dragBarDC();
} else {
alert('An unexpected error occurred.\nC5');
}
} else {
}
};
x.open("GET", "/api/pullVideoTags.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + primary_key, true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
}
function verifyNewTags(metaForm) {
var formErrors = "";
var newLine = metaForm['Image'].value + "\t";
if (metaForm['Category'][0].checked) {
newLine += " Category\tFeature";
var val1 = metaForm['Feature Title'].value;
var val2 = metaForm['Secondary Title'].value;
formErrors += characterTagCheck(val1, "Feature Title");
formErrors += characterTagCheck(val2, "Secondary Title");
if (val1 != "") {
newLine += "\t Feature Title\t" + val1;
if (val2 != "") newLine += "\t Secondary Title\t" + val2;
} else {
formErrors += 'A Feature Title must be specified.\n';
}
} else if (metaForm.Category[1].checked) {
newLine += " Category\tSerial";
var val1 = metaForm['Series Title'].value;
var val2 = metaForm['Season Number'].value;
var val3 = metaForm['Episode Number'].value;
var val4 = metaForm['Episode Title'].value;
formErrors += characterTagCheck(val1, "Series Title");
(val2.match(/^\d+$/)) ? newLine += "\t Season Number\t" + val2 : formErrors += 'A numeric Season Number must be specified.\n';
(val3.match(/^\d+$/)) ? newLine += "\t Episode Number\t" + val3 : formErrors += 'A numeric Episode Number must be specified.\n';
formErrors += characterTagCheck(val4, "Episode Title");
if (val1 != "") {
newLine += "\t Series Title\t" + val1;
if (val4 != "") newLine += "\t Episode Title\t" + val4;
} else {
formErrors += 'A Series Title must be specified.\n';
}
} else {
formErrors += 'A Category must be selected.\n';
}
for (i=0; i<metaForm['GenreCount'].value; i++) {
var val = metaForm['Genre'+i].value;
formErrors += characterTagCheck(val, "Genre\: " + val);
if (val != "" & val != "Enter Genre") newLine += "\t Genre\t" + val;
}
var val = metaForm['Synopsis'].value;
formErrors += characterTagCheck(val, "Synopsis");
if (val != "" & val != "Enter Synopsis") newLine += "\t Synopsis\t" + val;
var val = metaForm['Date'].value;
var m = val.match(/^(\d+)\/(\d+)\/(\d+)$/)
if (m) {
var fDay  = parseInt(m[2]);
var fMon  = parseInt(m[1]);
var fYear = parseInt(m[3]);
if (fYear < 1900 || fYear > 2100) formErrors += 'Dates must be in the mm/dd/yyyy format with a valid four-digit year.\n';
if (fMon < 1 || fMon > 12) formErrors += 'Dates must be in the mm/dd/yyyy format with a valid month.\n';
if (fDay < 1 || fDay > daysInMonthYear(fMon,fYear)) formErrors += 'Dates must be in the mm/dd/yyyy format with a valid day.\n';
newLine += "\t " + metaForm['DateType'].options[metaForm['DateType'].selectedIndex].value + "\t" + fMon + "/" + fDay + "/" + fYear;
} else if (val == "") {
} else {
formErrors += 'Dates must be in the numeric mm/dd/yyyy format.\n';
}
for (i=0; i<metaForm['DirectorCount'].value; i++) {
var val = metaForm['Director'+i].value;
formErrors += characterTagCheck(val, "Director\: " + val);
if (val != "") newLine += "\t Director\t" + val;
}
for (i=0; i<metaForm['CastCount'].value; i++) {
var val1 = metaForm['Cast'+i].value;
var val2 = metaForm['Char'+i].value;
formErrors += characterTagCheck(val1, "Actor/Actress\: " + val1);
formErrors += characterTagCheck(val2, "Character\: " + val2);
if (val1 != "" || val2 != "") newLine += "\t Cast\t" + val1 + "|" + val2;
}
for (i=0; i<metaForm['WriterCount'].value; i++) {
var val = metaForm['Writer'+i].value;
formErrors += characterTagCheck(val, "Writer\: " + val);
if (val != "") newLine += "\t Writer\t" + val;
}
for (i=0; i<metaForm['CustomCount'].value; i++) {
var val1 = metaForm['CustomKey'+i].value;
var val2 = metaForm['CustomVal'+i].value;
if (reservedTagCheck(val1)) formErrors += 'The tag name "' + val1 + '" is reserved and cannot be used as a Custom Tag.\n';
formErrors += characterTagCheck(val1, "Custom Tag Name\:\: " + val1);
formErrors += characterTagCheck(val2, "Custom Tag Value\: " + val2);
if (val1 != "") newLine += "\t " + val1 + "\t" + val2;
}
if (formErrors != "") {
alert(formErrors);
} else {
writeCustomTag(newLine, metaForm['Image'].value);
}
return false;
}
function writeCustomTag(newLine, newImage) {
if (newLine == undefined) newLine = "";
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (xmlreq.responseText == 'DemoFail') {
alert("You are viewing a demo account, you may not save video tag modifications.");
} else if (xmlreq.responseText != 'AuthFail') {
STATE_LIBRARY_KEY[STATE_TAG_FILENAME] = xmlreq.responseText;
STATE_LIBRARY_IMAGES[STATE_TAG_FILENAME] = newImage;
generateLibraryHTML();
if (STATE_LIBRARY_KEY[STATE_VJB_FILENAME] != undefined && STATE_LIBRARY_KEY[STATE_VJB_FILENAME] != "UNKNOWN") displayInfo('VIDEO',STATE_LIBRARY_KEY[STATE_VJB_FILENAME],'PLAY','');
if (newLine) {
alert("Video tag information saved.");
displayInfo('VIDEO',STATE_LIBRARY_KEY[STATE_TAG_FILENAME],1,'bpm');
} else {
alert("Original video tags restored.");
modifyTags(STATE_LIBRARY_KEY[STATE_TAG_FILENAME]);
}
} else {
promptForLogin();
}
} else {
}
};
xmlreq.open("POST", "/api/TagModify.cgi", true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlreq.send(encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + encodeURIComponent(STATE_TAG_FILENAME) + "&" + encodeURIComponent(newLine));
}
function modifyTagsHTML(primary_key, metaKV) {
if (document.getElementById("newVibivFlag") != undefined) generateShareHTML();
if (metaKV['Feature Title'] == undefined) metaKV['Feature Title'] = "";
if (metaKV['Secondary Title'] == undefined) metaKV['Secondary Title'] = "";
if (metaKV['Series Title'] == undefined) metaKV['Series Title'] = "";
if (metaKV['Episode Title'] == undefined) metaKV['Episode Title'] = "";
if (metaKV['Season Number'] == undefined) metaKV['Season Number'] = "";
if (metaKV['Episode Number'] == undefined) metaKV['Episode Number'] = "";
if (metaKV['Genre'] == undefined || metaKV['Genre'] == "") metaKV['Genre'] = new Array("Enter Genre")
if (metaKV['Synopsis'] == undefined || metaKV['Synopsis'] == "") metaKV['Synopsis'] = "Enter Synopsis";
if (metaKV['Release Date'] == undefined) metaKV['Release Date'] = "";
if (metaKV['Broadcast Date'] == undefined) metaKV['Broadcast Date'] = "";
if (metaKV['Director'] == undefined) metaKV['Director'] = new Array("");
if (metaKV['Cast'] == undefined) metaKV['Cast'] = new Array(new Array("", ""));
if (metaKV['Writer'] == undefined) metaKV['Writer'] = new Array("");
if (metaKV['Image'] == undefined) metaKV['Image'] = "";
outputHTML = '<form name="metaForm" style="margin: 0px;" target="fuplIF" action="/api/uploadImage.cgi?' + encodeURIComponent(STATE_USER_EMAIL) + '&' + STATE_USER_MD5PW + '&custom&' + primary_key + '" enctype="multipart/form-data" method="post">';
outputHTML += rightFieldSet("Classify and name the file") +
'<div style="margin-bottom: 1em; width: 32.1em;">' +
'<input type="radio" name="Category" value="Feature" style="cursor: default;" onmousedown="toggleMICategory(0);"><span onmousedown="toggleMICategory(0);">Feature Film</span>' +
'<input type="radio" name="Category" value="Serial" style="margin-left: 2em; cursor: default;" onmousedown="toggleMICategory(1);"><span onmousedown="toggleMICategory(1);">Television Series</span>' +
'</div>';
outputHTML += '<div id="metaInputFeature" style="width: 32.1em;">' +
'<div style="float: left; width: 20em;">Feature Title</div>' +
'<div style="float: left; width: 12em;" title="For example: Director\'s Cut">Secondary Title</div>' +
'<br>' +
'<input type="text" name="Feature Title"  value="' + quotable(metaKV['Feature Title']) + '" style="width: 20em; border-width: 1px;">' +
'<input type="text" name="Secondary Title" title="For example: Director\'s Cut" value="' + quotable(metaKV['Secondary Title']) + '" style="width: 12em; border-width: 1px;">' +
'</div>';
outputHTML += '<div id="metaInputSerial" style="width: 32.1em;">' +
'<div style="float: left; width: 12em;">Series Title</div>' +
'<div style="float: left; width: 2em;" title="Season Number">S#</div>' +
'<div style="float: left; width: 2em;" title="Episode Number">E#</div>' +
'<div style="float: left; width: 16em;">Episode Title</div>' +
'<br>' +
'<input type="text" name="Series Title" value="' + quotable(metaKV['Series Title']) + '" style="width: 12em; border-width: 1px;">' +
'<input type="text" name="Season Number"  title="Season Number" value="' + quotable(metaKV['Season Number']) + '" style="width: 2em; border-width: 1px;">' +
'<input type="text" name="Episode Number" title="Episode Number" value="' + quotable(metaKV['Episode Number']) + '" style="width: 2em; border-width: 1px;">' +
'<input type="text" name="Episode Title" value="' + quotable(metaKV['Episode Title']) + '" style="width: 16em; border-width: 1px;">' +
'</div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += rightFieldSet("Describe the video content") +
'<div id="metaInputGenres" style="width: 32.1em;">';
var count = 0;
for (var i=0; i<metaKV['Genre'].length; i++) {
outputHTML += '<input type="text" name="Genre'+count+'" value="' + quotable(metaKV['Genre'][i]) + '" style="width: 10.66em; border-width: 1px;" onclick="if (this.value==\'Enter Genre\') this.value=\'\';" onblur="if (this.value==\'\') this.value=\'Enter Genre\';">';
count++;
}
outputHTML += '</div><input type="hidden" name="GenreCount" value="'+count+'">';
outputHTML += '<div style="text-align: right; margin-bottom: 1em; width: 32.1em;">' +
rightLinkText("Add another genre", "insertGenreInput();") +  '<span id="metaRemoveGenre">';
if (count > 1) outputHTML += ' &nbsp; &nbsp; ' + rightLinkText("Remove last genre tag", "removeGenreInput();");
outputHTML += '</span></div>';
outputHTML += '<div style="width: 32.1em;"><textarea name="Synopsis" style="width: 32em; height: 5em; border-width: 1px; font-family: ' + SKIN_FONTFAMILY +
';" onclick="if (this.value==\'Enter Synopsis\') this.value=\'\';" onblur="if (this.value==\'\') this.value=\'Enter Synopsis\';">' +
quotable(metaKV['Synopsis']) + '</textarea></div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += rightFieldSet("Specify production and cast information") +
'<div style="margin-bottom: 1em; width: 32.1em;">' +
'<div style="float: left; width: 6em; padding-top: 3px;">Date</div>';
if (metaKV['Release Date'] != '' || (metaKV['Broadcast Date'] == '' && metaKV['Category'] == 'Feature') ) {
outputHTML += '<input type="text" name="Date" value="' + quotable(metaKV['Release Date']) + '" style="width: 13em; border-width: 1px;">' +
'<select name="DateType" style="border-width: 1px;">' +
'<option value="Broadcast Date">Broadcast Date</option><option selected value="Release Date">Release Date</option></select>';
} else {
outputHTML += '<input type="text" name="Date" value="' + quotable(metaKV['Broadcast Date']) + '" style="width: 13em; border-width: 1px;">' +
'<select name="DateType" style="border-width: 1px;">' +
'<option selected value="Broadcast Date">Broadcast Date</option><option value="Release Date">Release Date</option></select>';
}
outputHTML += '</div><div style="width: 32.1em;">';
outputHTML += '<div style="float: left; width: 6em; padding-top: 3px;">Directors</div>' +
'<div style="float: left; width: 26em;" id="metaInputDirectors">';
var count=0;
for (var i=0; i<metaKV['Director'].length; i++) {
outputHTML += '<input type="text" name="Director'+count+'" value="' + quotable(metaKV['Director'][i]) + '" style="width: 13em; border-width: 1px;">';
count++;
}
outputHTML += '</div><input type="hidden" name="DirectorCount" value="'+count+'"><div style="text-align: right; margin-bottom: 1em; width: 32.1em;">' +
rightLinkText("Add another director", "insertDirectorInput();") +  '<span id="metaRemoveDirector">';
if (count > 1) outputHTML += ' &nbsp; &nbsp; ' + rightLinkText("Remove last director", "removeDirectorInput();");
outputHTML += '</span></div>' +
'</div><div style="width: 32.1em;">';
outputHTML += '<div style="float: left; width: 16em;">Actor/Actress</div><div style="float: left; width: 16em;">Character Played</div>' +
'<div id="metaInputCast" style="display: block; width: 32.1em;">';
var count=0;
for (var i=0; i<metaKV['Cast'].length; i++) {
outputHTML += '<input type="text" name="Cast'+count+'" value="' + quotable(metaKV['Cast'][i][0]) + '" style="width: 16em; border-width: 1px;">' +
'<input type="text" name="Char'+count+'" value="' + quotable(metaKV['Cast'][i][1]) + '" style="width: 16em; border-width: 1px;">';
count++;
}
outputHTML += '</div><input type="hidden" name="CastCount" value="'+count+'"><div style="text-align: right; margin-bottom: 1em; width: 32.1em;">' +
rightLinkText("Add another cast member", "insertCastInput();") +  '<span id="metaRemoveCast">';
if (count > 1) outputHTML += ' &nbsp; &nbsp; ' + rightLinkText("Remove last cast member", "removeCastInput();");
outputHTML += '</span></div>' +
'</div><div style="width: 32.1em;">';
outputHTML += '<div style="float: left; width: 6em;">Writers</div>' +
'<div style="float: left; width: 26em" id="metaInputWriters">';
var count=0;
for (var i=0; i<metaKV['Writer'].length; i++) {
outputHTML += '<input type="text" name="Writer'+count+'" value="' + quotable(metaKV['Writer'][i]) + '" style="width: 13em; border-width: 1px;">';
count++;
}
outputHTML += '</div><input type="hidden" name="WriterCount" value="'+count+'"><div style="text-align: right; width: 32.1em;">' +
rightLinkText("Add another writer", "insertWriterInput();") +  '<span id="metaRemoveWriter">';
if (count > 1) outputHTML += ' &nbsp; &nbsp; ' + rightLinkText("Remove last writer", "removeWriterInput();");
outputHTML += '</span></div>' +
'</div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += rightFieldSet("Upload new cover art") +
'<div style="width: 32.1em; white-space: nowrap;">' +
'<input type="hidden" name="Image"  value="' + quotable(metaKV['Image']) + '">' +
'<input type="file" name="file_upload" style="cursor: default;" size="30" onKeyDown="this.blur();" onSelect="this.blur();"  onChange="metaUpload();">';
outputHTML += '<span id="metaUploadStatus" style="text-align: left; float: left; display: none;"></span>'+
'<div id="metaUploadView" style="text-align: right; white-space: nowrap; display: ' + (metaKV['Image'] == "" ? 'none' : 'block') + ';">'+
rightLinkText('Remove Image','document.metaForm[\'Image\'].value = \'\'; document.getElementById(\'metaUploadView\').style.display = \'none\'; document.getElementById(\'metaUploadStatus\').style.display = \'none\';')+'&nbsp;&nbsp;&nbsp;'+
'<span onclick="window.open(document.metaForm[\'Image\'].value,\'\',\'menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes,resizable=yes,width=620,height=620\');">'+rightLinkText('View image', '')+'</span>'+
'</div>';
outputHTML += '</div>';
outputHTML += '</fieldset>&nbsp;<br>';
delete metaKV['Category'];
delete metaKV['Feature Title'];
delete metaKV['Secondary Title'];
delete metaKV['Series Title'];
delete metaKV['Episode Title'];
delete metaKV['Season Number'];
delete metaKV['Episode Number'];
delete metaKV['Genre'];
delete metaKV['Synopsis'];
delete metaKV['Release Date'];
delete metaKV['Broadcast Date'];
delete metaKV['Director'];
delete metaKV['Cast'];
delete metaKV['Writer'];
delete metaKV['Image'];
outputHTML += rightFieldSet("Create custom tags and descriptions") +
'<div style="width: 32.1em;">' +
"<div style='float: left; width: 12em;' title='Hint: tag names \"X Title\" or \"X Date\" will be queried when you search by title or date.'>Tag Name</div><div style='float: left; width: 20em;' title='Hint: tag names \"X Title\" or \"X Date\" will be queried when you search by title or date.'>Tag Value</div>" +
'<div id="metaInputCustom" style="display: block; width: 32.1em;">';
var count = 0;
for (var i in metaKV) {
outputHTML += "<input type='text' name='CustomKey"+count+"' value='" + quotable(i) + "' style='width: 12em; border-width: 1px;'>" +
"<input type='text' name='CustomVal"+count+"' value='" + quotable(metaKV[i]) + "' style='width: 20em; border-width: 1px;'>";
count++;
}
if (count == 0) {
outputHTML += '<input type="text" name="CustomKey'+count+'" value="" style="width: 12em; border-width: 1px;">' +
'<input type="text" name="CustomVal'+count+'" value="" style="width: 20em; border-width: 1px;">';
count++;
}
outputHTML += '</div><input type="hidden" name="CustomCount" value="'+count+'"><div style="text-align: right; width: 32.1em; white-space: nowrap;">' +
rightLinkText("Add another tag", "insertCustomInput();") +  '<span id="metaRemoveCustom">';
if (count > 1) outputHTML += ' &nbsp; &nbsp; ' + rightLinkText("Remove last tag", "removeCustomInput();");
outputHTML += '</span></div>' +
'</div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += '<div style="display: block; width: 33em; text-align:right;">' +
'<input type="button" id="metaReset" value="Reset Information" onmousedown="modifyTags(\''+primary_key+'\');" style="cursor: default; margin: 0em 1em 0.5em 0em;">' +
'<input type="button" id="metaSubmit" value="Save New Tags" onmousedown="verifyNewTags(this.form);" style="cursor: default; margin-bottom: 0.5em;">' +
'</div></form>';
return outputHTML;
}
function createTextInput(n, w) {
var newInput = createNamedElement('input', n);
newInput.type = "text";
newInput.style.borderWidth = "1px";
newInput.style.width       = w;
return newInput;
}
function insertGenreInput() {
var i = document.metaForm['GenreCount'].value;
document.getElementById("metaInputGenres").appendChild(createTextInput("Genre"+i, "10.66em"));
document.getElementById("metaRemoveGenre").innerHTML = ' &nbsp; &nbsp; ' + rightLinkText('Remove last genre tag', 'removeGenreInput();');
document.metaForm['GenreCount'].value++;
}
function removeGenreInput() {
var i = document.metaForm['GenreCount'].value;
if (i > 1) {
if (i == 2) document.getElementById("metaRemoveGenre").innerHTML = "";
var obj = document.getElementById("metaInputGenres");
throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['GenreCount'].value--;
}
}
function insertKeywordInput() {
var i = document.metaForm['KeywordCount'].value;
document.getElementById("metaInputKeywords").appendChild(createTextInput("Keyword"+i, "10.66em"));
document.getElementById("metaRemoveKeyword").innerHTML = ' &nbsp; &nbsp; ' + rightLinkText('Remove last keyword', 'removeKeywordInput();');
document.metaForm['KeywordCount'].value++;
}
function removeKeywordInput() {
var i = document.metaForm['KeywordCount'].value;
if (i > 1) {
if (i == 2) document.getElementById("metaRemoveKeyword").innerHTML = "";
var obj = document.getElementById("metaInputKeywords");
throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['KeywordCount'].value--;
}
}
function insertDirectorInput() {
var i = document.metaForm['DirectorCount'].value;
document.getElementById("metaInputDirectors").appendChild(createTextInput("Director"+i, "13em"));
document.getElementById("metaRemoveDirector").innerHTML = ' &nbsp; &nbsp; ' + rightLinkText('Remove last director', 'removeDirectorInput();');
document.metaForm['DirectorCount'].value++;
}
function removeDirectorInput() {
var i = document.metaForm['DirectorCount'].value;
if (i > 1) {
if (i == 2) document.getElementById("metaRemoveDirector").innerHTML = "";
var obj = document.getElementById("metaInputDirectors");
throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['DirectorCount'].value--;
}
}
function insertWriterInput() {
var i = document.metaForm['WriterCount'].value;
document.getElementById("metaInputWriters").appendChild(createTextInput("Writer"+i, "13em"));
document.getElementById("metaRemoveWriter").innerHTML = ' &nbsp; &nbsp; ' + rightLinkText('Remove last writer', 'removeWriterInput();');
document.metaForm['WriterCount'].value++;
}
function removeWriterInput() {
var i = document.metaForm['WriterCount'].value;
if (i > 1) {
if (i == 2) document.getElementById("metaRemoveWriter").innerHTML = "";
var obj = document.getElementById("metaInputWriters");
throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['WriterCount'].value--;
}
}
function insertCastInput() {
var i = document.metaForm['CastCount'].value;
document.getElementById("metaInputCast").appendChild(createTextInput("Cast"+i, "16em"));
document.getElementById("metaInputCast").appendChild(createTextInput("Char"+i, "16em"));
document.getElementById("metaRemoveCast").innerHTML = ' &nbsp; &nbsp; ' + rightLinkText('Remove last cast member', 'removeCastInput();');
document.metaForm['CastCount'].value++;
}
function removeCastInput() {
var i = document.metaForm['CastCount'].value;
if (i > 1) {
if (i == 2) document.getElementById("metaRemoveCast").innerHTML = "";
var obj = document.getElementById("metaInputCast");
throwawayNode = obj.removeChild(obj.lastChild);
throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['CastCount'].value--;
}
}
function insertCustomInput() {
var i = document.metaForm['CustomCount'].value;
document.getElementById("metaInputCustom").appendChild(createTextInput("CustomKey"+i, "12em"));
document.getElementById("metaInputCustom").appendChild(createTextInput("CustomVal"+i, "20em"));
document.getElementById("metaRemoveCustom").innerHTML = ' &nbsp; &nbsp; ' + rightLinkText('Remove last tag', 'removeCustomInput();');
document.metaForm['CustomCount'].value++;
}
function removeCustomInput() {
var i = document.metaForm['CustomCount'].value;
if (i > 1) {
if (i == 2) document.getElementById("metaRemoveCustom").innerHTML = "";
var obj = document.getElementById("metaInputCustom");
throwawayNode = obj.removeChild(obj.lastChild);
throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['CustomCount'].value--;
}
}
function metaUpload() {
document.getElementById('metaUploadView').style.display = 'none';
document.getElementById('metaUploadStatus').style.display = 'block';
document.getElementById('metaUploadStatus').innerHTML = 'File uploading';
setTimeout('muProgress()', 200);
document.getElementById('metaReset').disabled = true;
document.getElementById('metaSubmit').disabled = true;
document.metaForm.submit();
}
function muProgress() {
var element = document.getElementById('metaUploadStatus')
if (element.innerHTML.match(/^File uploading/)) {
element.innerHTML = (element.innerHTML.match(/^File uploading\.{20}/)) ? 'File uploading' : element.innerHTML + '.';
setTimeout('muProgress()', 200);
}
}
function generateSearchHTML() {
document.getElementById("varc2Src").innerHTML = rightHeaderText('<b>Find Videos and Vibivs</b>')+
'<div style="margin-left: 1em; width: 30.1em;">' +
'<form name="searchForm" style="margin: 0px" onsubmit="runSearch();" onkeypress="var keynum; if (window.event) { keynum = event.keyCode; } else { keynum = event.which; } if (keynum == 13) { runSearch(); } else { return true; }">'+
'<div style="float: left; width: 5em; padding-top: 3px;">Video</div><input type="text" name="Video" style="border-width: 1px; width: 25em;"><br>'+
'<div style="float: left; width: 5em; padding-top: 3px;">Dialog</div><input type="text" name="Dialog" style="border-width: 1px; width: 25em;"><br>'+
'<input type="checkbox" CHECKED name="fullSearch" style="cursor: default; clear: both; margin: 0.5em 0.5em 0em 0em;"><span onmousedown="document.searchForm[\'fullSearch\'].checked = !document.searchForm[\'fullSearch\'].checked;">Also search for files not yet in my library.</span><br>'+
'<div style="width: 30em; text-align: right;">'+rightLinkText('Advanced searching', 'rightLoadHTML(\'/player/intro-search.html\');')+
'<input type="button" style="cursor: default; margin-left: 1em;" value="Search" onmousedown="runSearch();"></div>'+
'</form></div>';
document.getElementById("varc2Src").style.display = 'block';
document.getElementById("varc2List").innerHTML = "";
document.getElementById("varc2Detail").innerHTML = "";
varc2DisplayList(1);
}
function generateVibivSearchHTML() {
document.getElementById("varc2Src").innerHTML = rightHeaderText('<b>Find Vibivs</b>')+
'<div style="margin-left: 1em; width: 30.1em;">' +
'<form name="searchForm" style="margin: 0px" onsubmit="runSearch();" onkeypress="var keynum; if (window.event) { keynum = event.keyCode; } else { keynum = event.which; } if (keynum == 13) { runSearch(); } else { return true; }">'+
'<div style="float: left; width: 5em; padding-top: 3px;">Video</div><input type="text" name="Video" style="border-width: 1px; width: 25em;"><br>'+
'<div style="float: left; width: 30em; padding-top: 3px;">'+rightLinkText('Advanced searching', 'generateSearchHTML();')+'</div><br>'+
'<div style="width: 30em; text-align: right;"><input type="button" style="cursor: default; margin-left: 1em;" value="Search" onmousedown="runSearch();"></div>'+
'</form></div>';
document.getElementById("varc2Src").style.display = 'block';
document.getElementById("varc2List").innerHTML = "";
document.getElementById("varc2Detail").innerHTML = "";
varc2DisplayList(1);
}
function runSearch() {
if (document.searchForm['fullSearch'].checked) {
document.getElementById("varc2List").innerHTML = 'Searching';
varc2DisplayList(1);
setTimeout('searchProgress()', 200);
}
var searchString = (document.searchForm['fullSearch'].checked ? 1 : 0);
searchString += '&' + encodeURIComponent(document.searchForm['Video'].value);
searchString += '&' + encodeURIComponent(document.searchForm['Dialog'].value);
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (xmlreq.responseText != "AuthFail") {
var clickStyle = "<span style='color: "+SKIN_RIGHT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_RIGHT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; " +
"this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; " +
"this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_RIGHT_PANE_LINK_COLOR + "\"; " +
"this.style.textDecoration = \"" + SKIN_RIGHT_PANE_LINK_DECORATION + "\";' ";
var group1Style = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center right; background-repeat: no-repeat; background-image: url(\''+SKIN_MORE_BUTTON_IMG_OFF+'\');" ';
var group2Style = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center right; background-repeat: no-repeat; background-image: url(\''+SKIN_EXPAND_BUTTON_IMG_OFF+'\');" ';
var playStyle = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center left; background-repeat: no-repeat; background-image: url(\''+SKIN_ICON_PLAY+'\');" '+
'onmouseover="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY_HOVER+'\\\')\';" onmouseout="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY+'\\\')\';" ';
var outputHTML = xmlreq.responseText.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = outputHTML.replace(/<div GROUP1STYLE /g, group1Style);
outputHTML = outputHTML.replace(/<div GROUP2STYLE /g, group2Style);
outputHTML = outputHTML.replace(/<div PLAYSTYLE /g, playStyle);
if (STATE_ADV_SEARCH_HL) {
outputHTML = outputHTML.replace(/\|/g, "<span style='background-color: "+SKIN_RIGHT_PANE_MATCH_BACKGROUNDCOLOR+";'>");
outputHTML = outputHTML.replace(/\t/g, "</span>");
} else {
outputHTML = outputHTML.replace(/\|/g, "");
outputHTML = outputHTML.replace(/\t/g, "");
}
document.getElementById("varc2List").innerHTML = '<hr>' + outputHTML;
varc2DisplayList(1);
} else {
promptForLogin();
}
} else {
}
};
xmlreq.open("GET", "/api/Search.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + searchString, true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
return false;
}
function searchUpdate(formKey, formVal) {
document.searchForm[formKey].value = formVal;
runSearch();
}
function searchProgress() {
var element = document.getElementById('varc2List')
if (element.innerHTML.match(/^Searching/)) {
element.innerHTML = (element.innerHTML.match(/^Searching\.{25}/)) ? 'Searching' : element.innerHTML + '.';
setTimeout('searchProgress()', 200);
}
}
function generateShareHTML() {
document.getElementById("vjbAppRightContent3").innerHTML = rightHeaderText('<b>Create, Publish, and Share</b>')+
'<div style="white-space: nowrap; margin: 0em 0em 1em 1em;">'+rightLinkText('Create a new vibiv.', 'modifyVBV();')+'</div>'+
'<div style="white-space: nowrap; margin: 0em 0em 1em 1em;">'+rightLinkText('Manage and modify vibivs that you\'ve created.', 'matchVBV(\'v\');')+'</div>'+
'<div style="white-space: nowrap; margin: 0em 0em 3em 1em;">'+rightLinkText('View your collection of vibivs.', 'matchVBV(\'vo\');')+'</div>'+
'<div style="margin: 1em; padding: 1.5em; border: 1px solid; font-size: 90%; background-color: '+SKIN_RIGHT_PANE_COVER_HIGHLIGHT_COLOR+';"><b>What are vibivs?</b> Your own creative films derived from the videos in your library.'+
'<p style="margin-top: 1.5em;">Mix together scenes from multiple movies, condense a season of your favorite series down to 2 hours, or remove an annoying character from an otherwise entertaining film. We call these creations vibivs and classify them into four groups:'+
'<p style="margin-top: 1.5em;"><table class="details" cellpadding="0" cellspacing="0" border="0" style="color: '+SKIN_RIGHT_PANE_COLOR+';">'+
'<tr><td valign="top">&#149;</td><td><b>Abridgements</b> are digests that condense one or more videos into a summary film that attempts to tell the same or a similar story.</td></tr>'+
'<tr><td valign="top">&#149;</td><td><b>Family Friendly</b> videos contain almost the full content of the parent source, but have had violent or sexually explicit scenes removed.</td></tr>'+
'<tr><td valign="top">&#149;</td><td><b>Highlights</b> contain key scenes but don\'t attempt a retelling of the story; for example, the greatest James Bond car chases.</td></tr>'+
'<tr><td valign="top">&#149;</td><td><b>Mashups</b> are open ended outlets where your creativity can flow: turn that scary movie into a comedy, remix scenes to alter a film\'s ending, or create your own story from the pieces of a dozen other films.</td></tr>'+
'</table>';
}
function matchVBV(scope) {
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
if (/^<!--AUTHFAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--AUTHFAIL-->/mg, ""));
promptForLogin();
} else if (/^<!--FAIL-->/.test(x.responseText)) {
alert(x.responseText.replace(/^<!--FAIL-->/mg, ""));
} else if (/^<!--SUCCESS-->/.test(x.responseText)) {
var clickStyle = "<span style='color: "+SKIN_RIGHT_PANE_LINK_COLOR+"; text-decoration: "+SKIN_RIGHT_PANE_LINK_DECORATION+"; white-space: nowrap;' " +
"onmouseover='this.style.cursor = \"pointer\"; this.style.color = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_RIGHT_PANE_LINK_COLOR + "\"; this.style.textDecoration = \"" + SKIN_RIGHT_PANE_LINK_DECORATION + "\";' ";
var group2Style = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center right; background-repeat: no-repeat; background-image: url(\''+SKIN_EXPAND_BUTTON_IMG_OFF+'\');" ';
var playStyle = '<div style="cursor: pointer; position: absolute; width: 2.5em; background-position: center left; background-repeat: no-repeat; background-image: url(\''+SKIN_ICON_PLAY+'\');" '+
'onmouseover="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY_HOVER+'\\\')\';" onmouseout="this.style.backgroundImage=\'url(\\\''+SKIN_ICON_PLAY+'\\\')\';" ';
var outputHTML = x.responseText.replace(/^<!--SUCCESS-->/, "");
outputHTML = outputHTML.replace(/<span CLICKSTYLE /g, clickStyle);
outputHTML = outputHTML.replace(/<div GROUP2STYLE /g, group2Style);
outputHTML = outputHTML.replace(/<div PLAYSTYLE /g, playStyle);
switch(scope) {
case 'v': document.getElementById("vjbAppRightContent3").innerHTML = rightHeaderText('<b>Edit Your Published Vibivs</b>')+
'<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">'+rightLinkText('Return to share menu', 'generateShareHTML();')+'</div>'+'<hr>'+outputHTML; break;
case 'vo': document.getElementById("vjbAppRightContent3").innerHTML = rightHeaderText('<b>Play Vibivs in Your Library</b>')+
'<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">'+rightLinkText('Return to share menu', 'generateShareHTML();')+'</div>'+'<hr>'+outputHTML; break;
}
tabsClick(3);
} else {
alert('An unexpected error occurred.\nC6');
}
} else {
}
};
x.open("GET", "/api/searchMatch.cgi?"+encodeURIComponent(STATE_USER_EMAIL)+"&"+STATE_USER_MD5PW+"&VBV&"+scope, true);
x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
x.send(null);
}
function modifyVBV(key) {
if (key) {
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (/^<!--SUCCESS-->/.test(xmlreq.responseText)) {
if (document.getElementById("newVibivFlag") != undefined) generateShareHTML();
var metaKV = createHash(xmlreq.responseText.replace(/^<!--SUCCESS-->/, ""));
var header = '<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Return to full library', 'varc1DisplayCurrent();') + '</div>'+
'<div style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Display vibiv detail page', 'displayInfo(\'VIBIV\',\''+key+'\',1,\'bpm\');') + '</div><hr>';
document.getElementById("varc1Detail").innerHTML = rightHeaderText("<b>Modify an Existing Vibiv</b>") + header + modifyVBVHTML(metaKV);
STATE_TAB_L = "";
document.getElementById("varc1Art").style.display   = "none";
document.getElementById("varc1List").style.display  = "none";
document.getElementById("varc1Detail").style.display = "block";
tabsClick(1);
if (document.getElementById("vjbAppRight").offsetWidth == 0) dragBarDC();
} else if (/^<!--FAIL-->/.test(xmlreq.responseText)) {
alert(xmlreq.responseText.replace(/^<!--FAIL-->/mg, ""));
} else {
alert("An unexpected error occurred.\nC7");
}
} else {
}
};
xmlreq.open("GET", "/api/GetMashup.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + key, true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
} else {
if (document.getElementById("metaSubmit") != undefined) varc1DisplayCurrent();
var header = '<div id="newVibivFlag" style="white-space: nowrap; margin: 0em 0em 0.5em 0.25em;">' + rightLinkText('Return to share menu', 'generateShareHTML();') + '</div><hr>';
document.getElementById("vjbAppRightContent3").innerHTML = rightHeaderText("<b>Create a New Vibiv</b>") + header + modifyVBVHTML(new Array());
tabsClick(3);
if (document.getElementById("varc1Detail").offsetWidth == 0) dragBarDC();
}
}
function verifyNewVBV(metaForm) {
var formErrors = "";
if (STATE_USER_EMAIL == "demo") formErrors += "You are viewing a demo account, you may not save files.";
formSubmit = 'ID='+encodeURIComponent(document.metaForm['ID'].value);
formSubmit += '&Category='+encodeURIComponent(document.metaForm['Category'].options[document.metaForm['Category'].selectedIndex].value);
val = metaForm['Title'].value;
formErrors += characterTagCheck(val, "Title");
if (val == "") formErrors += 'A Title must be specified.\n';
formSubmit += '&Title='+encodeURIComponent(val)
var keywordString ="";
for (i=0; i<metaForm['KeywordCount'].value; i++) {
var val = metaForm['Keyword'+i].value;
formErrors += characterTagCheck(val, "Keyword\: " + val);
if (val != "" & val != "Enter a Keyword") keywordString += val + "\t" ;
}
formSubmit += '&Keyword='+encodeURIComponent(keywordString);
val = metaForm['Description'].value;
formErrors += characterTagCheck(metaForm['Description'].value, "Description");
if (val == "Enter Description") val = "";
formSubmit += '&Description='+encodeURIComponent(val)
var clipString = "";
var startString = "";
var endString = "";
for (i=0; i<metaForm['ClipCount'].value; i++) {
formErrors += verifyVBVClip(i);
var el = document.metaForm['Clip'+i];
clipString += el.options[el.selectedIndex].value + "\t";
startString += document.metaForm['Start'+i].value + "\t"
endString += document.metaForm['End'+i].value + "\t"
}
formSubmit += '&Clip='+encodeURIComponent(clipString)+'&Start='+encodeURIComponent(startString)+'&End='+encodeURIComponent(endString)+
'&Image='+encodeURIComponent(metaForm['Image'].value);
if (formErrors != "") {
alert(formErrors);
} else {
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (/^<!--SUCCESS-->/.test(xmlreq.responseText)) {
document.metaForm['ID'].value = xmlreq.responseText.replace(/^<!--SUCCESS-->/, "");
generateLibraryHTML();
generateShareHTML();
alert("Vibiv saved.");
displayInfo('VIBIV',xmlreq.responseText.replace(/^<!--SUCCESS-->/, ""),1,'bpm');
} else if (/^<!--FAIL-->/.test(xmlreq.responseText)) {
alert(xmlreq.responseText.replace(/^<!--FAIL-->/mg, ""));
} else {
alert("An unexpected error occurred.\nC8");
}
} else {
}
};
xmlreq.open("POST", "/api/CreateMashup.cgi", true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlreq.send(encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + formSubmit);
}
return false;
}
function verifyVBVClip(i) {
var formErrors = "";
var val1 = document.metaForm['Start'+i].value;
var start = -1;
var m = val1.match(/^(\d\d):(\d\d):(\d\d)\.(\d\d\d)$/);
if (m && m[2] < 60 && m[3] < 60) start = (m[1]*3600 + m[2]*60 + m[3]*1 + m[4]/1000);
var val2 = document.metaForm['End'+i].value;
var end = -1;
var m = val2.match(/^(\d\d):(\d\d):(\d\d)\.(\d\d\d)$/);
if (m && m[2] < 60 && m[3] < 60) end = (m[1]*3600 + m[2]*60 + m[3]*1 + m[4]/1000);
if (val1 == "") {
formErrors += 'A Starting Time must be specified.\n';
} else if (start < 0) {
formErrors += 'Starting Timecode "'+val1+'" is not in the correct hh:mm:ss.### format.\n';
}
if (val2 == "") {
formErrors += 'An Ending Time must be specified.\n';
} else if (end < 0) {
formErrors += 'Ending Timecode "'+val2+'" is not in the correct hh:mm:ss.### format.\n';
} else if (start >= 0) {
if (end < start) formErrors += 'Starting Timecode "'+val1+'" follows Ending Timecode "'+val2+'".\n';
if (end == start) formErrors += 'Starting Timecode "'+val1+'" is identical to Ending Timecode "'+val2+'".\n';
}
return formErrors;
}
function modifyVBVHTML(metaKV) {
if (metaKV['ID'] == undefined) metaKV['ID'] = "";
if (metaKV['Category'] == undefined) metaKV['Category'] = "Mashup";
if (metaKV['Title'] == undefined) metaKV['Title'] = "";
if (metaKV['Keyword'] == undefined || metaKV['Keyword'] == "") metaKV['Keyword'] = new Array("Enter a Keyword");
if (metaKV['Description'] == undefined || metaKV['Description'] == "") metaKV['Description'] = "Enter Description";
if (metaKV['Clip'] == undefined) metaKV['Clip'] = new Array("");
if (metaKV['Start'] == undefined) metaKV['Start'] = new Array("00:00:00.000");
if (metaKV['End'] == undefined) metaKV['End'] = new Array("00:00:00.000");
if (metaKV['Image'] == undefined) metaKV['Image'] = "";
outputHTML = '<form name="metaForm" style="margin: 0px;" target="fuplIF" action="/api/uploadImage.cgi?' + encodeURIComponent(STATE_USER_EMAIL) + '&' + STATE_USER_MD5PW + '&vbv&' + metaKV['ID'] + '" enctype="multipart/form-data" method="post">';
outputHTML += '<fieldset style="position: absolute; left: 34.5em; padding: 0.5em; margin: 0em; border-width: 0px; white-space: nowrap;"><legend>&nbsp;</legend>'+rightLinkText("Get Current Time","vbvTimestamp();")+
'<br><input readonly type="text" name="currentTime" maxlength="12" value="" style="width: 7em; margin: 0.25em 0em; border-width: 1px;" onclick="this.focus(); this.select();"></fieldset>';
outputHTML += rightFieldSet("Add clips from matched files in your library") +
"<div style='width: 32.1em;'>";
var validLibrary = 0;
for (var key in STATE_LIBRARY_KEY) {
if (STATE_LIBRARY_KEY[key] != "UNKNOWN" && !STATE_LIBRARY_KEY[key].match(/^UK/) && STATE_LIBRARY_TITLES[key] != "") validLibrary++;
}
if (validLibrary > 0) {
outputHTML += '<table border="0" cellpadding="0" cellspacing="0" style="width: 32em;">' +
'<thead><tr><td style="width: 1em;"></td><td style="width: 14.9em;">Video</td><td style="width: 7em;">Starting Time</td><td style="width: 7em;">Ending Time</td><td style="width: 0.7em;"></td><td style="width: 0.7em;"></td><td style="width: 0.7em;"></td></tr></thead>' +
'<tbody id="metaInputClips">';
var count = 0;
for (var i in metaKV['Clip']) {
outputHTML += '<tr id="mic'+count+'">';
outputHTML += '<td title="Play Clip" style="cursor: pointer; width: 1em; padding: 0.25em 0em; background-position: center left; background-image: url(\''+SKIN_ICON_PLAY+'\'); background-repeat: no-repeat;" onmouseover="this.style.backgroundImage=\'url('+SKIN_ICON_PLAY_HOVER+')\';" onmouseout="this.style.backgroundImage=\'url('+SKIN_ICON_PLAY+')\';" onmousedown="previewClip('+i+');"></td>' +
'<td style="width: 14.9em; padding: 0.25em 0em;"><select id="Clip'+count+'" name="Clip'+count+'" style="width: 100%; border-width: 1px;">';
var sourceMissing = true;
for (var key in STATE_LIBRARY_KEY) {
if (STATE_LIBRARY_KEY[key] != "UNKNOWN" && !STATE_LIBRARY_KEY[key].match(/^UK/) && STATE_LIBRARY_TITLES[key] != "") {
var select = "";
if (metaKV['Clip'][i] == STATE_LIBRARY_KEY[key]) {
var select = "selected";
sourceMissing = false;
}
outputHTML += '<option ' + select + ' value="' + STATE_LIBRARY_KEY[key] + '">' + STATE_LIBRARY_TITLES[key];
}
}
if (sourceMissing && metaKV['Clip'][i]) {
outputHTML += '<option selected value="' + metaKV['Clip'][i] + '">' + '[Missing from your library] ' + metaKV['Clip'][i];
}
outputHTML += '</select></td>' +
'<td style="width: 7em; padding: 0.25em 0em;"><input type="text" id="Start'+count+'" name="Start'+count+'" maxlength="12" value="' + quotable(metaKV['Start'][i]) + '" style="width: 100%; border-width: 1px;"></td>' +
'<td style="width: 7em; padding: 0.25em 0em;"><input type="text" id="End'+count+'" name="End'+count+'" maxlength="12" value="' + quotable(metaKV['End'][i]) + '" style="width: 100%; border-width: 1px;"></td>';
if (i == 0) {
outputHTML += '<td style="width: 0.7em; padding: 0.25em 0em;"></td>';
} else {
outputHTML += '<td title="Move Up" style="cursor: pointer; width: 0.6em; padding: 0.25em 0em; background-position: center center; background-image: url(\''+SKIN_ICON_MOVEUP+'\'); background-repeat: no-repeat;" onmouseover="micOVR('+i+');" onmouseout="micOUT('+i+');" onmousedown="moveClip('+i+',-1);"></td>';
}
if (i == metaKV['Clip'].length-1) {
outputHTML += '<td style="width: 0.7em; padding: 0.25em 0em;"></td>';
} else {
outputHTML += '<td title="Move Down" style="cursor: pointer; width: 0.6em; padding: 0.25em 0em; background-position: center center; background-image: url(\''+SKIN_ICON_MOVEDOWN+'\'); background-repeat: no-repeat;" onmouseover="micOVR('+i+');" onmouseout="micOUT('+i+');" onmousedown="moveClip('+i+',1);"></td>';
}
if (metaKV['Clip'].length == 1) {
outputHTML+= '<td style="width: 0.7em; padding: 0.25em 0em;"></td>';
} else {
outputHTML+= '<td title="Remove Clip" style="cursor: pointer; width: 0.8em; padding: 0.25em 0em; background-position: center center; background-image: url(\''+SKIN_ICON_CLOSE+'\'); background-repeat: no-repeat;" onmouseover="micOVR('+i+');" onmouseout="micOUT('+i+');" onmousedown="removeClip('+i+');"></td>';
}
outputHTML += '</tr>';
count++;
}
outputHTML += '</tbody></table><input type="hidden" name="ClipCount" value="'+count+'"><div style="text-align: right; width: 32.1em; white-space: nowrap;">' +
rightLinkText("Add another clip", "insertClip();") +  '<span id="metaRemoveClips">';
outputHTML += '</span></div>';
} else {
if (STATE_LIBRARY_COUNT == 0) {
outputHTML += 'Your library is currently empty.  You will need to add videos to your library before you can create and share mashups.  Adding files is easy. simply click on the Open command in the <u style="cursor: pointer" onclick="menuBarClick(1);">File</u> menu and let the VIBIV player try to automatically identify and match the video.';
} else {
outputHTML += 'Your library does not currently have any matched files in it.  Matched files are those that have been synced with the VIBIV meta-data server.  Files in your library that are not matched will have incomplete tagging information and the Match Video command in the <u style="cursor: pointer" onclick="menuBarClick(2);">Edit</u> menu will be enabled during playback.';
}
}
outputHTML += '</div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += rightFieldSet("Classify and name your creation");
outputHTML += '<div style="margin-bottom: 1em; width: 32.1em;"><input type="hidden" name="ID"  value="' + quotable(metaKV['ID']) + '">' +
'<div style="float: left; width: 10.66em;">Category</div><div style="float: left; width: 21.32em;">Title</div>' +
'<br><select name="Category" style="width: 10.66em; border-width: 1px;">';
var category = new Array("Abridgement", "Family Friendly", "Highlight", "Mashup");
for (var i in category) {
var select = (metaKV['Category'] == category[i]) ? "selected" : "";
outputHTML += '<option ' + select + ' value="' + category[i] + '">' + category[i];
}
outputHTML += '</select><input type="text" name="Title"  value="' + quotable(metaKV['Title']) + '" maxlength="64" style="width: 21.32em; border-width: 1px;">' +
'</div>';
outputHTML += '<div id="metaInputKeywords" style="width: 32.1em;">';
var count = 0;
for (var i=0; i<metaKV['Keyword'].length; i++) {
outputHTML += '<input type="text" name="Keyword'+count+'" value="' + quotable(metaKV['Keyword'][i]) + '" style="width: 10.66em; border-width: 1px;" onclick="if (this.value==\'Enter a Keyword\') this.value=\'\';" onblur="if (this.value==\'\') this.value=\'Enter a Keyword\';">';
count++;
}
outputHTML += '</div><input type="hidden" name="KeywordCount" value="'+count+'">';
outputHTML += '<div style="text-align: right; margin-bottom: 1em; width: 32.1em;">' +
rightLinkText("Add another keyword", "insertKeywordInput();") +  '<span id="metaRemoveKeyword">';
if (metaKV['Keyword'].length > 1) outputHTML += ' &nbsp; &nbsp; ' + rightLinkText("Remove last keyword tag", "removeKeywordInput();");
outputHTML += '</span></div>';
outputHTML += '<div style="width: 32.1em;"><textarea name="Description" style="width: 32em; height: 4em; border-width: 1px; font-family: ' + SKIN_FONTFAMILY +
';" onclick="if (this.value==\'Enter Description\') this.value=\'\';" onblur="if (this.value==\'\') this.value=\'Enter Description\';">' +
quotable(metaKV['Description']) + '</textarea></div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += rightFieldSet("Upload new cover art") +
'<div style="width: 32.1em; white-space: nowrap;">' +
'<input type="hidden" name="Image"  value="' + quotable(metaKV['Image']) + '">' +
'<input type="file" name="file_upload" style="cursor: default;" size="30" onKeyDown="this.blur();" onSelect="this.blur();"  onChange="metaUpload();">';
outputHTML += '<span id="metaUploadStatus" style="text-align: left; float: left; display: none;"></span>' +
'<div id="metaUploadView" style="text-align: right; white-space: nowrap; display: ' + (metaKV['Image'] == "" ? 'none' : 'block') + ';">'+
rightLinkText('Remove Image','document.metaForm[\'Image\'].value = \'\'; document.getElementById(\'metaUploadView\').style.display = \'none\'; document.getElementById(\'metaUploadStatus\').style.display = \'none\';')+'&nbsp;&nbsp;&nbsp;'+
'<span onclick="window.open(document.metaForm[\'Image\'].value,\'\',\'menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes,resizable=yes,width=620,height=620\');">'+rightLinkText('View image', '')+'</span>'+
'</div>';
outputHTML += '</div>';
outputHTML += '</fieldset>&nbsp;<br>';
outputHTML += '<div style="display: block; width: 33em; text-align:right;">' +
'<input type="button" value="Play" onmousedown="previewAllClips();" style="cursor: default; margin: 0em 1em 0.5em 0em;">' +
'<input type="button" id="metaReset" value="Reset Information" onmousedown="modifyVBVHTML();" style="cursor: default; margin: 0em 1em 0.5em 0em;">' +
'<input type="button" id="metaSubmit" value="Save Vibiv" onmousedown="verifyNewVBV(this.form);" style="cursor: default; margin-bottom: 0.5em;">' +
'</div></form>';
return outputHTML;
}
function vbvTimestamp() {
var el = document.getElementById("wmpPlayer");
if (el.Controls && el.Controls.currentPosition) {
var time = el.Controls.currentPosition;
var myHours = parseInt(time / 3600);
time -= myHours * 3600;
var myMins = parseInt(time / 60);
time -= myMins * 60;
var mySecs = parseInt(time);
time -= mySecs;
document.metaForm['currentTime'].value = padNumber(myHours, 2) + ":" + padNumber(myMins, 2) + ":" + padNumber(mySecs, 2) + "." + padNumber(parseInt(1000*time), 3)
} else {
document.metaForm['currentTime'].value = "Not Playing";
}
}
function insertClip() {
var i = document.metaForm['ClipCount'].value;
var j = parseInt(i) - 1;
var newClip = document.createElement('tr');
newClip.id = 'mic'+i;
var newTd = document.createElement('td');
newTd.title = "Play Clip";
newTd.style.cursor = "pointer";
newTd.style.width = "1em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
newTd.style.backgroundPosition = "center left";
newTd.style.backgroundImage = "url('"+SKIN_ICON_PLAY+"')";
newTd.style.backgroundRepeat = "no-repeat";
newTd.onmouseover = function () {this.style.backgroundImage="url('"+SKIN_ICON_PLAY_HOVER+"')";};
newTd.onmouseout  = function () {this.style.backgroundImage="url('"+SKIN_ICON_PLAY+"')";};
newTd.onmousedown = function () {previewClip(i);};
newClip.appendChild(newTd);
var newTd = document.createElement('td');
newTd.style.width = "14.9em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
var newSelect = createNamedElement('select','Clip'+i);
newSelect.id = 'Clip'+i;
for (var k in STATE_LIBRARY_KEY) {
var key = STATE_LIBRARY_KEY[k];
if (key != "UNKNOWN" && !key.match(/^UK/) && STATE_LIBRARY_TITLES[k] != "") {
newSelect.options[newSelect.options.length] = new Option(STATE_LIBRARY_TITLES[k], key);
}
}
newSelect.style.width       = "100%";
newSelect.style.borderWidth = "1px";
var lasti = document.getElementById('Clip'+(i-1)).selectedIndex;
newSelect.selectedIndex = (lasti < newSelect.options.length) ? lasti : 0;
newTd.appendChild(newSelect);
newClip.appendChild(newTd);
var newTd = document.createElement('td');
newTd.style.width = "7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
var newInput = createTextInput("Start"+i, "100%");
newInput.id = 'Start'+i;
newInput.maxLength = "12";
newInput.value = document.getElementById('End'+(i-1)).value;
newTd.appendChild(newInput);
newClip.appendChild(newTd);
var newTd = document.createElement('td');
newTd.style.width = "7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
var newInput = createTextInput("End"+i, "100%");
newInput.id = 'End'+i;
newInput.maxLength = "12";
newInput.value = document.getElementById('End'+(i-1)).value;
newTd.appendChild(newInput);
newClip.appendChild(newTd);
var newTd = document.createElement('td');
newTd.title = "Move Up";
newTd.style.cursor = "pointer";
newTd.style.width = "0.7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
newTd.style.backgroundPosition = "center center";
newTd.style.backgroundImage = "url('"+SKIN_ICON_MOVEUP+"')";
newTd.style.backgroundRepeat = "no-repeat";
newTd.onmouseover = function () {micOVR(i);};
newTd.onmouseout  = function () {micOUT(i);};
newTd.onmousedown = function () {moveClip(i,-1);};
newClip.appendChild(newTd);
var newTd = document.createElement('td');
newTd.style.width = "0.7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
newClip.appendChild(newTd);
newTd = document.getElementById("metaInputClips").lastChild.lastChild.previousSibling;
newTd.title = "Move Down";
newTd.style.cursor = "pointer";
newTd.style.width = "0.7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
newTd.style.backgroundPosition = "center center";
newTd.style.backgroundImage = "url('"+SKIN_ICON_MOVEDOWN+"')";
newTd.style.backgroundRepeat = "no-repeat";
newTd.onmouseover = function () {micOVR(j);};
newTd.onmouseout  = function () {micOUT(j);};
newTd.onmousedown = function () {moveClip(j,1);};
var newTd = document.createElement('td');
newTd.title = "Remove Clip";
newTd.style.cursor = "pointer";
newTd.style.width = "0.7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
newTd.style.backgroundPosition = "center center";
newTd.style.backgroundImage = "url('"+SKIN_ICON_CLOSE+"')";
newTd.style.backgroundRepeat = "no-repeat";
newTd.onmouseover = function () {micOVR(i);};
newTd.onmouseout  = function () {micOUT(i);};
newTd.onmousedown = function () {removeClip(i);};
newClip.appendChild(newTd);
if (i == 1) {
var newTd = document.getElementById("metaInputClips").lastChild.lastChild;
newTd.title = "Remove Clip";
newTd.style.cursor = "pointer";
newTd.style.width = "0.7em";
newTd.style.paddingTop = "0.25em";
newTd.style.paddingBottom = "0.25em";
newTd.style.backgroundPosition = "center center";
newTd.style.backgroundImage = "url('"+SKIN_ICON_CLOSE+"')";
newTd.style.backgroundRepeat = "no-repeat";
newTd.onmouseover = function () {micOVR(j);};
newTd.onmouseout  = function () {micOUT(j);};
newTd.onmousedown = function () {removeClip(j);};
}
document.getElementById("metaInputClips").appendChild(newClip);
document.metaForm['ClipCount'].value++;
}
function moveClip(i,incr) {
var j = parseInt(i) + parseInt(incr);
if (document.getElementById('Clip'+i) && document.getElementById('Clip'+j)) {
var t1 = document.getElementById('Clip'+i).selectedIndex;
var t2 = document.getElementById('Clip'+j).selectedIndex;
document.getElementById('Clip'+i).selectedIndex = t2;
document.getElementById('Clip'+j).selectedIndex = t1;
var t1 = document.getElementById('Start'+i).value;
var t2 = document.getElementById('Start'+j).value;
document.getElementById('Start'+i).value = t2;
document.getElementById('Start'+j).value = t1;
var t1 = document.getElementById('End'+i).value;
var t2 = document.getElementById('End'+j).value;
document.getElementById('End'+i).value = t2;
document.getElementById('End'+j).value = t1;
}
}
function removeClip(i) {
var lasti = document.metaForm['ClipCount'].value;
for (var j = i; j < lasti; j++) {
moveClip(j,1);
}
var obj = document.getElementById("metaInputClips");
var throwawayNode = obj.removeChild(obj.lastChild);
document.metaForm['ClipCount'].value--;
var newTd = document.getElementById("metaInputClips").lastChild.lastChild.previousSibling;
newTd.title = "";
newTd.style.cursor = "";
newTd.style.backgroundImage = "";
newTd.onmouseover = "";
newTd.onmouseout  = "";
newTd.onmousedown = "";
if (document.metaForm['ClipCount'].value == 1) {
micOUT(0);
var newTd = document.getElementById("metaInputClips").lastChild.lastChild;
newTd.title = "";
newTd.style.cursor = "";
newTd.style.backgroundImage = "";
newTd.onmouseover = "";
newTd.onmouseout  = "";
newTd.onmousedown = "";
}
}
function micOVR(i) {
document.getElementById('mic'+i).style.backgroundColor = SKIN_RIGHT_PANE_COVER_HIGHLIGHT_COLOR;
}
function micOUT(i) {
document.getElementById('mic'+i).style.backgroundColor = "";
}
function previewClip(i) {
var newMASHUP = new Mashup();
var filename = "";
var el = document.metaForm['Clip'+i];
var key = el.options[el.selectedIndex].value;
for (f in STATE_LIBRARY_KEY) {
if (STATE_LIBRARY_KEY[f] == key) filename = f;
}
if (filename == "") {
alert("The file for clip "+(i+1)+" could not be located in your library.");
return;
}
var clipErrors = verifyVBVClip(i)
if (clipErrors) {
alert(clipErrors);
return;
}
var m = document.metaForm['Start'+i].value.match(/^(\d\d):(\d\d):(\d\d)\.(\d\d\d)$/);
var start = (m[1]*3600 + m[2]*60 + m[3]*1 + m[4]/1000);
var m = document.metaForm['End'+i].value.match(/^(\d\d):(\d\d):(\d\d)\.(\d\d\d)$/);
var end = (m[1]*3600 + m[2]*60 + m[3]*1 + m[4]/1000);
newMASHUP.addEntry(filename, start, end);
wmpLoadVBV(newMASHUP);
}
function previewAllClips() {
var newMASHUP = new Mashup();
for (var i=0; i<document.metaForm['ClipCount'].value; i++) {
var filename = "";
var el = document.metaForm['Clip'+i];
var key = el.options[el.selectedIndex].value;
for (f in STATE_LIBRARY_KEY) {
if (STATE_LIBRARY_KEY[f] == key) filename = f;
}
if (filename == "") {
alert("The file for clip "+(i+1)+" could not be located in your library.");
return;
}
var clipErrors = verifyVBVClip(i)
if (clipErrors) {
alert(clipErrors);
return;
}
var m = document.metaForm['Start'+i].value.match(/^(\d\d):(\d\d):(\d\d)\.(\d\d\d)$/);
var start = (m[1]*3600 + m[2]*60 + m[3]*1 + m[4]/1000);
var m = document.metaForm['End'+i].value.match(/^(\d\d):(\d\d):(\d\d)\.(\d\d\d)$/);
var end = (m[1]*3600 + m[2]*60 + m[3]*1 + m[4]/1000);
newMASHUP.addEntry(filename, start, end);
}
wmpLoadVBV(newMASHUP);
}
function playVBV(vid) {
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (/^<!--SUCCESS-->/.test(xmlreq.responseText)) {
eval(xmlreq.responseText.replace(/^<!--SUCCESS-->/mg, ""));
} else if (/^<!--FAIL-->/.test(xmlreq.responseText)) {
alert(xmlreq.responseText.replace(/^<!--FAIL-->/mg, ""));
} else {
alert("An unexpected error occurred.\nC9");
}
} else {
}
};
xmlreq.open("GET", "/api/PlayMashup.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + STATE_USER_MD5PW + "&" + vid, true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function wmpPlayStateChange(state) {
var Play = document.getElementById("control_PLAY_Active");
var Pause = document.getElementById("control_PAUSE_Active");
var Stop = document.getElementById("control_STOP_Active");
var mOpen = document.getElementById("menuCommand_OPEN");
var mClose = document.getElementById("menuCommand_CLOSE");
var mPlay = document.getElementById("menuCommand_PLAY");
var mPause = document.getElementById("menuCommand_PAUSE");
var mStop = document.getElementById("menuCommand_STOP");
var mFullscreen = document.getElementById("menuCommand_FULLSCREEN");
if (document.getElementById("wmpError")) document.getElementById("wmpError").style.display = "none";
if (document.getElementById("wmpPlayer")) document.getElementById("wmpPlayer").style.height = "";
switch (state) {
case 1:
Play.style.zIndex = "0";
Pause.style.zIndex = "0";
Stop.style.zIndex = "3";
menuCommandEnable(mOpen);
menuCommandEnable(mClose);
menuCommandEnable(mPlay);
menuCommandDisable(mPause);
menuCommandDisable(mStop);
menuCommandDisable(mFullscreen);
break;
case 2:
Play.style.zIndex = "0";
Pause.style.zIndex = "3";
Stop.style.zIndex = "0";
menuCommandEnable(mOpen);
menuCommandEnable(mClose);
menuCommandEnable(mPlay);
menuCommandDisable(mPause);
menuCommandEnable(mStop);
menuCommandEnable(mFullscreen);
break;
case 3:
if (STATE_VJB_NEWSTART) {
STATE_VJB_NEWSTART = false;
var player = document.getElementById("wmpPlayer");
if (player && player.Controls) player.Controls.currentPosition = STATE_VJB_STARTPOS;
}
if (FORCE_PAUSE) {
FORCE_PAUSE = false;
wmpPause();
break;
}
if (!MASHUP_FLAG && STATE_ADV_DEFAULT_FS) wmpFullscreen();
Play.style.zIndex = "3";
Pause.style.zIndex = "0";
Stop.style.zIndex = "0";
menuCommandEnable(mOpen);
menuCommandEnable(mClose);
menuCommandDisable(mPlay);
menuCommandEnable(mPause);
menuCommandEnable(mStop);
menuCommandEnable(mFullscreen);
document.getElementById("vjbPlayer").style.height = "";
document.getElementById("vjbInfoArt").style.display = "block";
document.getElementById("vjbInfoText").style.display = "block";
break;
case 7:
STATE_VJB_NEWSTART = true;
break;
case 10:
Play.style.zIndex = "0";
Pause.style.zIndex = "0";
Stop.style.zIndex = "0";
menuCommandEnable(mOpen);
if (STATE_VJB_FILENAME == "") {
menuCommandDisable(mClose);
document.getElementById("vjbPlayer").style.height = "";
} else {
menuCommandEnable(mClose);
document.getElementById("vjbPlayer").style.height = "175px";
if (STATE_USER_EMAIL == "demo")  {
document.getElementById("wmpError").innerHTML = "<div style='text-align: center; margin: 80px auto;'>You are viewing a demo account, only videos on your computer will actually play.</div>";
} else {
setTimeout('wmpErrorState()', 1000);
}
document.getElementById("wmpError").style.display = "block";
}
menuCommandDisable(mPlay);
menuCommandDisable(mPause);
menuCommandDisable(mStop);
menuCommandDisable(mFullscreen);
document.getElementById("vjbInfoArt").style.display = "block";
document.getElementById("vjbInfoText").style.display = "block";
break;
default:
}
updateSize();
}
function wmpErrorState() {
var player = document.getElementById("wmpPlayer");
if (player && player.playState == 10) document.getElementById("wmpError").innerHTML = "<div style='text-align: center; margin: 80px auto;'>The file <b>" + STATE_VJB_FILENAME + "</b> could not be loaded.</div>";
}
function Mashup() {
this.currentPosition = 0;
this.totalDuration = 0;
this.currentIndex = 0;
this.indexLength = 0;
this.indexFilename = new Array();
this.indexTransition = new Array();
this.indexStart = new Array();
this.indexDuration = new Array();
}
Mashup.prototype.addEntry = function (videoURL, start, end) {
var duration = end - start;
this.indexLength++;
this.indexFilename.push(videoURL);
this.indexTransition.push(this.totalDuration);
this.indexStart.push(start);
this.indexDuration.push(duration);
this.totalDuration += duration;
};
function leftLinkText(textString, action) {
return "<span style='color: " + SKIN_LEFT_PANE_LINK_COLOR + "; " +
"text-decoration: " + SKIN_LEFT_PANE_LINK_DECORATION + ";' " +
"onmouseover='this.style.cursor = \"pointer\"; " +
"this.style.color = \"" + SKIN_LEFT_PANE_HIGHLIGHT_COLOR + "\"; " +
"this.style.textDecoration = \"" + SKIN_LEFT_PANE_HIGHLIGHT_DECORATION + "\";' " +
"onmouseout='this.style.color = \"" + SKIN_LEFT_PANE_LINK_COLOR + "\"; " +
"this.style.textDecoration = \"" + SKIN_LEFT_PANE_LINK_DECORATION + "\";' " +
"onmousedown='" + action + "'>" +
textString + "</span>";
}
function rightLinkText(textString, action) {
return '<span style="color: '+SKIN_RIGHT_PANE_LINK_COLOR+'; text-decoration: '+SKIN_RIGHT_PANE_LINK_DECORATION+';" '+
'onmouseover="this.style.cursor = \'pointer\'; this.style.color = \''+SKIN_RIGHT_PANE_HIGHLIGHT_COLOR+'\'; this.style.textDecoration = \''+SKIN_RIGHT_PANE_HIGHLIGHT_DECORATION+'\';" '+
'onmouseout="this.style.color = \''+SKIN_RIGHT_PANE_LINK_COLOR+'\'; this.style.textDecoration = \''+SKIN_RIGHT_PANE_LINK_DECORATION+'\';" '+
'onmousedown="'+action+'">'+textString+'</span>';
}
function rightHeaderText(textString) {
return '<div style="white-space: nowrap; font-size: 120%; margin-bottom: 0.5em;">'+textString+'</div>';
}
function rightFieldSet(textString) {
return '<fieldset style="width: 32.1em; display: block; padding: 0.5em; margin: 0.5em;"><legend style="color: ' + SKIN_RIGHT_PANE_COLOR2 + ';">' + textString + '</legend>';
}
function rightLoadHTML(f) {
var x = new getXHReq();
x.onreadystatechange = function () {
if (x.readyState == 4 && x.status == 200) {
document.getElementById("vjbAppRightContent0").innerHTML = x.responseText;
tabsClick(0);
}
};
x.open("GET", f, true);
x.send(null);
}
function toggleMICategory (displayFlag) {
if (displayFlag == 0) {
document.metaForm.Category[0].checked = true;
document.getElementById("metaInputFeature").style.display = "block";
document.getElementById("metaInputSerial").style.display = "none";
} else {
document.metaForm.Category[1].checked = true;
document.getElementById("metaInputFeature").style.display = "none";
document.getElementById("metaInputSerial").style.display = "block";
}
}
function extractKeywords(textString) {
textString = textString.replace(/([^\w\s])/g, '\\$1');
textString = textString.replace(/\\\\\\\"/g, '%22');
textString = textString.replace(/\s+/g, ' ').replace(/^\s+/, '').replace(/\s+$/, '');
var myArray = new Array;
var tempArray = textString.split('\\\"');
for (var i=0; i < tempArray.length; i++) {
tempArray[i] = tempArray[i].replace(/%22/g, '"');
if (tempArray[i] == "") continue;
if (i % 2 == 0) {
myArray = myArray.concat(tempArray[i].split(' '));
} else {
myArray.push(tempArray[i]);
}
}
return myArray;
}
function createHash(metaLine) {
var metaKV    = new Object();
var metaEntry = metaLine.split("\t ");
for (var i=0; i<metaEntry.length; i++) {
var metaTmp = metaEntry[i].split("\t",2);
if (metaKV[metaTmp[0]] == undefined) metaKV[metaTmp[0]] = new Array();
metaKV[metaTmp[0]].push(metaTmp[1].split("|"));
}
return metaKV;
}
function characterTagCheck(tagText, tagTitle) {
var formErrors = "";
if (tagText.match(/^\s/)) formErrors += 'Tags cannot begin with a space, please correct the ' + tagTitle + '.\n';
if (tagText.match(/\|/)) formErrors += 'Tags cannot contain the character "\|", please correct the ' + tagTitle + '.\n';
if (tagText.match(/\t/)) formErrors += 'Tags cannot contain the tab character, please correct the ' + tagTitle + '.\n';
return formErrors;
}
function reservedTagCheck(tagText) {
var reservedTags = new Array('Category','Feature Title','Secondary Title','Series Title','Season Number','Episode Number','Episode Title','Genre','Synopsis','Release Date','Broadcast Date','Director', 'Cast','Writer',
'Character', 'Role', 'Actor', 'Actress', 'Image', 'Date', 'Source');
for (var i=0; i<reservedTags.length; i++) {
if (tagText.toLowerCase() == reservedTags[i].toLowerCase()) return true;
}
return false;
}
function varc1DisplayCurrent() {
document.getElementById("varc1Art").style.display    = (STATE_LIBRARY_ARTMODE ? "block" : "none");
document.getElementById("varc1List").style.display   = (STATE_LIBRARY_ARTMODE ? "none" : "block");
document.getElementById("varc1Detail").style.display = "none";
document.getElementById("varc1Detail").innerHTML     = "";
STATE_TAB_L = "";
}
function varc2DisplayList(flag) {
document.getElementById("varc2List").style.display  = (flag == 1 ? "block" : "none");
document.getElementById("varc2Detail").style.display = (flag == 1 ? "none" : "block");
if (flag == 1) STATE_TAB_S = "";
}
function clearInfoAreas() {
vjbArtImage.src = "";
document.getElementById("vjbInfoArt").innerHTML = "";
document.getElementById("vjbInfoText").innerHTML = "";
}
function artPopUp(imagefile) {
}
function promptForLogin() {
var element = document.getElementById("menuItem5");
element.style.background  = SKIN_MENUBAR_ACTIVE_BACKGROUNDCOLOR;
element.style.borderColor = SKIN_MENUBAR_ACTIVE_BORDERCOLOR;
element.style.borderStyle = SKIN_MENUBAR_ACTIVE_BORDERSTYLE;
element.style.borderWidth = "1px 1px 0px 1px";
element.style.margin      = "0px 0px 1px 0px";
var element = document.getElementById("menuNotice");
element.style.visibility = "visible";
element.style.visibility = "visible";
document.getElementById("menuNotice").innerHTML = "<table  border='0' cellspacing='0' cellpadding='5'><tr><td> \
<fieldset style='width: 265px; border: 1px solid #000; margin: 0px; padding: 0px;'> \
<legend style='color: #000; margin: 0px 10px 0px 5px;'>You must login to proceed.</legend> \
<table border='0' cellspacing='0' cellpadding='0'> \
<tr><td style='padding: 0px 5px;'>Email</td><td><input id='loginUser' type='text' tabindex='1' style='width: 135px;'></td> \
<td rowspan='2'><input type='button' tabindex='3' style='cursor: default; margin: 5px;' value='Log In' \
onmousedown='verifyLogin(document.getElementById(\"loginUser\").value, document.getElementById(\"loginPass\").value, document.getElementById(\"loginRemember\").value);'></td></tr> \
<tr><td style='padding: 0px 5px;'>Password</td><td><input id='loginPass' type='password' tabindex='2' style='width: 135px;'></td></tr> \
<tr><td align='right'><input id='loginRemember' type='checkbox' style='cursor: default;' CHECKED></td><td colspan=2>Remember me on this computer.</td></tr> \
</table></fieldset></td></tr></table>";
}
function verifyLogin(loginUser, loginPass, loginRemember) {
var formErrors = "";
if (loginUser == "") {
formErrors += "Please enter your email to login.\n";
}
if (loginPass == "") {
formErrors += "Please enter your password to login.\n";
}
if (formErrors) {
alert(formErrors);
return;
}
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (xmlreq.responseText != 0) {
STATE_USER_EMAIL = loginUser;
STATE_USER_MD5PW = xmlreq.responseText;
if (loginRemember) {
saveLogin();
}
menuBarExit();
menuCommandEnable(document.getElementById("menuCommand_CHANGE_PASSWORD"));
menuCommandEnable(document.getElementById("menuCommand_LOGOUT"));
loadLibrary();
} else {
alert("The email address or password supplied was incorrect.");
}
} else {
}
};
xmlreq.open("GET", "/api/VerifyLogin.cgi?" + encodeURIComponent(loginUser) + "&" + encodeURIComponent(loginPass), true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function changeLogin(oldPass, newPass1, newPass2) {
var formErrors = "";
if (oldPass == "") {
formErrors += "Please enter your old password.\n";
}
if (newPass1 == "") {
formErrors += "Please create a new password.\n";
}
if (newPass2 == "") {
formErrors += "Please verify your new password by entering it twice.\n";
} else if (newPass1 != newPass2) {
formErrors += "You did not enter the same new password twice.\n";
}
if (formErrors) {
alert(formErrors);
return;
}
var xmlreq = new getXHReq();
xmlreq.onreadystatechange = function () {
if (xmlreq.readyState == 4 && xmlreq.status == 200) {
if (/^<!--SUCCESS-->/.test(xmlreq.responseText)) {
STATE_USER_MD5PW = xmlreq.responseText.replace(/^<!--SUCCESS-->/, "");
saveLogin();
menuBarExit();
alert("Your password was successfully changed.");
} else if (/^<!--FAIL-->/.test(xmlreq.responseText)) {
alert(xmlreq.responseText.replace(/^<!--FAIL-->/mg, ""));
} else {
alert("An unexpected error occurred.\nC10");
}
} else {
}
};
xmlreq.open("GET", "/api/ChangeLogin.cgi?" + encodeURIComponent(STATE_USER_EMAIL) + "&" + encodeURIComponent(oldPass) + "&" + encodeURIComponent(newPass1) + "&" + encodeURIComponent(newPass2), true);
xmlreq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
xmlreq.send(null);
}
function processOptions(optionsForm) {
menuBarExit();
var old_search_hl    = STATE_ADV_SEARCH_HL;
STATE_ADV_DISPLAY_INFO = (optionsForm['displayInfoPane'].checked);
STATE_ADV_DEFAULT_FS   = (optionsForm['defaultFullscreen'].checked);
STATE_ADV_DISPLAY_ART  = (optionsForm['browseArtDisplay'].checked);
STATE_ADV_ART_SIZE     = optionsForm['browseArtSize'].options[optionsForm['browseArtSize'].selectedIndex].value;
STATE_ADV_TEXT_BELOW   = (optionsForm['browseTextBelow'].checked);
STATE_ADV_SEARCH_HL    = (optionsForm['searchHighlight'].checked);
savePreferences();
if (old_search_hl != STATE_ADV_SEARCH_HL) runSearch();
updateSize();
if (STATE_TAB_L) eval(STATE_TAB_L);
if (STATE_TAB_S) eval(STATE_TAB_S);
}
function savePreferences() {
var date = new Date();
date.setTime(date.getTime()+(365*24*60*60*1000));
document.cookie = "PREF=" + STATE_VJB_VOLUME + "|" + (STATE_LIBRARY_ARTMODE ? 1 : 0) + "|" + STATE_SKIN + "|" +
(STATE_ADV_DISPLAY_INFO ? 1 : 0) + "|" + (STATE_ADV_SEARCH_HL ? 1 : 0) + "|" + (STATE_ADV_DEFAULT_FS ? 1 : 0) + "|" + STATE_ADV_FONTSIZE_INC + "|" +
(STATE_ADV_DISPLAY_ART ? 1 : 0) + "|" + STATE_ADV_ART_SIZE + "|" + (STATE_ADV_TEXT_BELOW ? 1 : 0) +
"; expires=" + date.toGMTString() + "; path=/";
}
function saveLogin() {
var date = new Date();
date.setTime(date.getTime()+(365*24*60*60*1000));
document.cookie = "USNM=" + escape(STATE_USER_EMAIL) + "; expires=" + date.toGMTString() + "; path=/";
document.cookie = "AUTH=" + STATE_USER_MD5PW + "; expires=" + date.toGMTString() + "; path=/";
}
