window.onload = initVid;

var VID_BGCOLOR  = '#79766A';
var FLASH_WIDTH  = 435;
var FLASH_HEIGHT = 374;
var FLASH_VER    = 8;
var FLASH_ID     = 'lxtvSwf';

var XML_VID_ITEMS;

function initVid () {
	var firstVidId,vidID;
	var xml = openXML(VID_FEED);
	
	XML_VID_ITEMS = xml.getElementsByTagName('item');
	
	buildVidList(XML_VID_ITEMS);

	firstVidId = (XML_VID_ITEMS[0].getElementsByTagName('titleid').length > 0) ?
		vidID = XML_VID_ITEMS[0].getElementsByTagName('titleid')[0].firstChild.nodeValue :
		vidID = XML_VID_ITEMS[0].getElementsByTagName('bc:titleid')[0].firstChild.nodeValue;
	
	updateVidLists(firstVidId);
	
	var theatre   = document.getElementById('theatre');
	var availVids = document.getElementById('browseVids');
	var vidLists  = availVids.getElementsByTagName('ul');
	
	initSubNav();
	initTheatre(theatre,XML_VID_ITEMS);
	initPopularVids(XML_VID_ITEMS);
	initAlphaNav();
	initAvailVids(vidLists);
	initNewVids(XML_VID_ITEMS);
}

function buildVidList (vidItems,initLetter) {			
	var title, pubDate, vidID, listItem, zgtVid, zgtR, estLink, estName, listItem, playVideo, vidName;
	var now = new Date();
	
	var vidLists   = Array(document.createElement('ul'),document.createElement('ul'),document.createElement('ul'));
	var browseVids = document.getElementById('browseVids');

	// create an array so we can sort it alphabetically
	var vidItemsArray = new Array();

	for (var i=0,j=0; i<vidItems.length; i++) {		
		var vidItemsTempArray = new Array();
		
		title = vidItems[i].getElementsByTagName('title')[0].firstChild.nodeValue;
		pubDate = vidItems[i].getElementsByTagName('pubDate')[0].firstChild.nodeValue;
		
		vidItemsTempArray[0] = title;
		
		(vidItems[i].getElementsByTagName('titleid').length > 0) ?
			vidID = vidItems[i].getElementsByTagName('titleid')[0].firstChild.nodeValue :
			vidID = vidItems[i].getElementsByTagName('bc:titleid')[0].firstChild.nodeValue;

		zgtVid = (vidItems[i].getElementsByTagName('zgtV')) ? vidItems[i].getElementsByTagName('zgtV')[0].firstChild.nodeValue : null;
		zgtR   = (vidItems[i].getElementsByTagName('zgtR')) ? vidItems[i].getElementsByTagName('zgtR')[0].firstChild.nodeValue : null;
		
		vidItemsTempArray[1] = vidID;
		vidItemsTempArray[2] = zgtVid;
		vidItemsTempArray[3] = zgtR;
		vidItemsTempArray[4] = pubDate;
		
		// populate the sortable array with temp value arrays, maybe refining by initial letter
		if(initLetter) {
			if(title.substr(0,1).toLowerCase() == initLetter) {
				vidItemsArray[j] = vidItemsTempArray;
				j++;
			}
		}
		else {
			vidItemsArray[j] = vidItemsTempArray;
			j++;
		}
	}
	
	// sort the array alphabetically
	vidItemsArray.sort(sort_vidTitle);
	
	// traverse the array to to build the list out
	for (var i=0; i<vidItemsArray.length; i++) {		
		title   = vidItemsArray[i][0];
		vidID   = vidItemsArray[i][1];
		zgtVid  = vidItemsArray[i][2];
		zgtR    = vidItemsArray[i][3];
		pubDate = vidItemsArray[i][4];
				
		estLink = '/Verticals/PropertyDetails.aspx?VID=' + zgtVid + '&R=' + zgtR;
		estName = getEstName(title);		
		
		listItem = document.createElement('li');
		vidName  = document.createElement('span');
		playVideo = document.createElement('a');
		playVideo.appendChild(document.createTextNode('play video'));	
		playVideo.setAttribute('title',estLink);
		
		vidName.appendChild(document.createTextNode(estName));
		vidName.className = 'vidName';
		
		listItem.appendChild(playVideo);
		listItem.appendChild(vidName);
		listItem.setAttribute('name',vidID);

		if(  $('li',vidLists[Math.floor(i/(vidItemsArray.length/3))]).length==0  ) {
			listItem.className = 'first';
		}

		// two weeks: 1209600
		// 28 days: 2419200
		// 56 days: 4838400
		if((now.getTime() - Date.parse(pubDate))/1000 < 4838400)
			$(listItem).addClass('new');
			
		vidLists[Math.floor(i/(vidItemsArray.length/3))].appendChild(listItem);
	}
	
	browseVids.appendChild(vidLists[0]);
	browseVids.appendChild(vidLists[1]);
	browseVids.appendChild(vidLists[2]);
	
	vidLists[0].className='first';
}

function sort_vidTitle(a,b) {
	var aTitle = a[0].toLowerCase();
	var bTitle = b[0].toLowerCase();
	
	if(aTitle > bTitle) return 1;
	else if (aTitle < bTitle) return -1;
	else return 0;
}

function initSubNav () {
	var listItem,listItemLink;
	var pageNav    = document.getElementById('pageNav');
	var pageSubNav = document.createElement('ul');
	
	pageSubNav.id = 'pageSubNav';

	listItemLink = document.createElement('a');
	listItemLink.setAttribute('href','/promo.aspx?pn=71');
	listItemLink.appendChild(document.createTextNode('New York City'));
													 
	listItem = document.createElement('li');
	
	if(PLAYER_ID == 1365202951)
		listItem.className = 'curr';
	
	listItem.appendChild(listItemLink);
	
	pageSubNav.appendChild(listItem);
	
	listItemLink = document.createElement('a');
	listItemLink.setAttribute('href','/promo.aspx?pn=83');
	listItemLink.appendChild(document.createTextNode('Los Angeles'));
													 
	listItem = document.createElement('li');
	
	if(PLAYER_ID == 1435509667)
		listItem.className = 'curr';
		
	listItem.appendChild(listItemLink);
	
	pageSubNav.appendChild(listItem);
	
	pageNav.appendChild(pageSubNav);
}

function initTheatre(theatre,vidItems) {
	var zgtVid = (vidItems[0].getElementsByTagName('zgtV')) ? vidItems[0].getElementsByTagName('zgtV')[0].firstChild.nodeValue : null;
	var zgtR   = (vidItems[0].getElementsByTagName('zgtR')) ? vidItems[0].getElementsByTagName('zgtR')[0].firstChild.nodeValue : null;

	var config         = new Array();
	var defaultVidId   = (vidItems[0].getElementsByTagName('titleid').length > 0) ?
							vidID = vidItems[0].getElementsByTagName('titleid')[0].firstChild.nodeValue :
							vidID = vidItems[0].getElementsByTagName('bc:titleid')[0].firstChild.nodeValue;//vidLists[0].getElementsByTagName('li')[0].getAttribute('name');
	var defaultVidLink = estLink = '/Verticals/PropertyDetails.aspx?VID=' + zgtVid + '&R=' + zgtR;//vidLists[0].getElementsByTagName('li')[0].getElementsByTagName('a')[0].getAttribute('title');
	var vidTitle       = document.getElementById('vidTitle');
	var propPgLink     = document.getElementById('propPgLink');

	/* Update Title and Property Page Link */
	vidTitle.firstChild.nodeValue = vidItems[0].getElementsByTagName('title')[0].firstChild.nodeValue;//
	propPgLink.setAttribute('href',defaultVidLink);

	config["videoId"]          = defaultVidId; //the default video loaded into the player
	config["videoRef"]         = null; //the default video loaded into the player by ref id specified in console
	config["lineupId"]         = null; //the default lineup loaded into the player
	config["playerTag"]        = null; //player tag used for identifying this page in brightcove reporting
	config["autoStart"]        = true; //tells the player to start playing video on load
	config["preloadBackColor"] = VID_BGCOLOR; //background color while loading the player
	config["autoStart"]        = false;
	config["flashId"]          = FLASH_ID;
	config["playerId"] = PLAYER_ID;
	config["width"]    = FLASH_WIDTH;
	config["height"]   = FLASH_HEIGHT;
							
	lxtv_placeVid(config,FLASH_VER,theatre);
}

function initPopularVids (vidItems) {
	var i,tmpArr,thumbnail,titleNode;
	var vidItemsArr = new Array();
	var NUM_POPULAR = 10;

	for(i=0;i<vidItems.length;i++) {
		tmpArr = new Array();
		
		tmpArr[0] = $('views',vidItems[i]).text();
		tmpArr[1] = $('title',vidItems[i]).text();
		tmpArr[2] = $('zgtV',vidItems[i]).text();
		tmpArr[3] = $('zgtR',vidItems[i]).text();
		
		(vidItems[i].getElementsByTagName('titleid').length > 0) ?
			titleNode = vidItems[i].getElementsByTagName('titleid')[0] :
			titleNode = vidItems[i].getElementsByTagName('bc:titleid')[0];
			
		tmpArr[4] = titleNode.firstChild.nodeValue;
									
		(vidItems[i].getElementsByTagName('thumbnail').length > 0) ?
			thumbnail = vidItems[i].getElementsByTagName('thumbnail')[0] :
			thumbnail = vidItems[i].getElementsByTagName('media:thumbnail')[0];
			
		tmpArr[5] = thumbnail.getAttribute('url')
			
		vidItemsArr[i] = tmpArr;
	}
	
	vidItemsArr.sort(compVidItems);

	for(i=0;i<NUM_POPULAR;i++) {
		$('#popularVids .scrollWrap ul').append($('<li name="'+vidItemsArr[i][4]+'"><a title="/Verticals/PropertyDetails.aspx?VID='+vidItemsArr[i][2]+'&R='+vidItemsArr[i][3]+'"></a><div class="vidTmb" style="background:url('+vidItemsArr[i][5]+') no-repeat left center;"><div class="hoverTmb"></div></div><h3><a href="#">'+vidItemsArr[i][1]+'</a></h3></li>'));
	}
	
	for(i=0;i<$('#popularVids .scrollWrap li').length;i++) {
		$('#popularVids .scrollWrap li').eq(i).data('pos',i);
	}
	
	$('#popularVids .scrollWrap li .hoverTmb').css('opacity',0.0);
	$('#popularVids .scrollWrap li .vidTmb').hover(
		function(){
			var scrollCt = $('#popularVids').data('scrollCt');
			var lowerLim = (scrollCt==0)?0:scrollCt*5;
			var upperLim = (scrollCt+1)*5;
			var curPos   = $(this).parent('li').data('pos');
			
			if(curPos>=lowerLim && curPos<upperLim)
		  		$('.hoverTmb',this).fadeTo(300,0.5);
		},
		function(){
			$('.hoverTmb',this).fadeTo(300,0.0);
		}
	);
	
	$('#popularVids .scrollWrap li').click(function(){
		updateTheatre($('h3',this).text(),this.getAttribute('name'),$('a',this).attr('title'));
		updateVidLists($(this).attr('name')); 
	});
							 
	/* Initialize Scrolling */
	$('#popularVids').data('scrollCt',0);
	$('#popularVids .scrollLeft').click(function(){ scrollPopularVids(1); });
	$('#popularVids .scrollRight').click(function(){ scrollPopularVids(-1); });
	
	$('#popularVids .scrollWrap ul').width(
		($('#popularVids .scrollWrap ul li').length)*134
	);
	
	$('#popularVids .scrollWrap ul').css('display','block');
	
	popVid_fadeInactive();
	
	$('#popularVids .scrollWrap ul').change();
}

function popVid_fadeInactive () {	
	$('#popularVids .scrollWrap ul li').fadeTo(0,1.0);
	
	/* Wait for scroll animation to complete before fading out (scroll animation fires change() event) */
	$('#popularVids .scrollWrap ul').unbind();
	$('#popularVids .scrollWrap ul').change(function(){
		var scrollCt = $('#popularVids').data('scrollCt');

		if(scrollCt%2==0)
			$('#popularVids .scrollWrap ul li').eq(scrollCt*5+5).fadeTo(10,0.5);
		else
			$('#popularVids .scrollWrap ul li').eq(scrollCt*5-1).fadeTo(10,0.5);
	});
}

function compVidItems (a,b) {
	if(a[0] == b[0])
		return 0;
	else if(parseInt(a[0]) > parseInt(b[0]))
		return -1;
	else
		return 1;
}

function initAlphaNav () {
	var i,initLetter,letterPos;
	var alphabet = '#abcdefghijklmnopqrstuvwxyz';

	/* Show All Vids */
	$('#alphaNav li').eq(0).click(function(){
		var availVids    = document.getElementById('browseVids');
		var vidLists     = availVids.getElementsByTagName('ul');
		
		// Update alpha nav
		$('#alphaNav li').removeClass('curr');
		$(this).addClass('curr');
		
		// Rebuild videos list
		$('#browseVids').empty();
		buildVidList(XML_VID_ITEMS);
		initAvailVids(vidLists);
	});
	
	/* Show Vids of a Letter */	
	for(i=0;i<$('#browseVids li').length;i++) {
		if($('#browseVids li span').eq(i).text() != 'now playing: ')
			initLetter = $('#browseVids li span').eq(i).text().substr(0,1).toLowerCase();
			
		letterPos  = (alphabet.indexOf(initLetter)>0) ? alphabet.indexOf(initLetter) + 1 : 1;
		
		$('#alphaNav li').eq(letterPos).data('letter',initLetter);
		$('#alphaNav li').eq(letterPos).addClass('act');
		$('#alphaNav li').eq(letterPos).unbind();
		$('#alphaNav li').eq(letterPos).click(function(){
			var availVids = document.getElementById('browseVids');
			var vidLists  = availVids.getElementsByTagName('ul');
			
			// Update alpha nav
			$('#alphaNav li').removeClass('curr');
			$(this).addClass('curr');
			
			// Rebuild videos list
			$('#browseVids').empty();
			buildVidList(XML_VID_ITEMS,$(this).data('letter'));
			initAvailVids(vidLists);
		});
	}
}

function scrollPopularVids (dir) {
	var scrollDur = 1500;
	var tmbW      = 134;
	var scrollInc = tmbW*4.5;
	var scrollCt  = $('#popularVids').data('scrollCt');
	var tmbListW  = $('#popularVids .scrollWrap ul').width();
	var curPosX   = $('#popularVids .scrollWrap ul').css('marginLeft');
	var newPosX   = parseInt(curPosX.substr(0,curPosX.length-2)) + scrollInc*dir;

	//if ((newPosX <= 0)&&(newPosX >= (-1)*tmbListW)) {
	if(((scrollCt-dir)>=0) && ((scrollCt-dir)<(($('#popularVids .scrollWrap ul li').length)/5))) {
		$('#popularVids').data('scrollCt',scrollCt-dir);
		
		popVid_fadeInactive();
			
		$('#popularVids .scrollWrap ul').animate({marginLeft:newPosX+'px'},scrollDur,function(){
			$('#popularVids .scrollWrap ul').change();
			
			curPosX = parseInt($('#popularVids .scrollWrap ul').css('marginLeft'));

			if(curPosX >= 0)
				$('#popularVids .scrollNav li.scrollLeft a').removeClass('act');
			else
				$('#popularVids .scrollNav li.scrollLeft a').addClass('act');
				
			if((scrollCt-dir+1)>=(($('#popularVids .scrollWrap ul li').length)/5))
				$('#popularVids .scrollNav li.scrollRight a').removeClass('act');
			else
				$('#popularVids .scrollNav li.scrollRight a').addClass('act');
		});
	}
}
	

function initAvailVids (vidLists) {
	var listItems,i,j;
	
	for (i=0; i<vidLists.length; i++) {
		listItems = vidLists[i].getElementsByTagName('li');
		
		for (j=0; j<listItems.length; j++) {
			listItems[j].onclick     = function () { changeVid(this); return false; }
			listItems[j].onmouseover = function () { hoverVid(this); }
			listItems[j].onmouseout  = function () { exitVid(this); }
		}
	}
}

function initNewVids (vidItems) {
	var thumbnail, tmbItems, curTitle, i;
	
	var numVideos   = 4;
	var newVidItems = new Array, estName = new Array, vidId = new Array, vidLink = new Array;
	
	var newVids = document.getElementById('newVids');
	
	/* Create New Vids gallery list */
	var tmbGlry = new Array;
	
	for(i=0;i<Math.ceil(numVideos/2);i++) {
		tmbGlry[i] = document.createElement('ul');
		tmbGlry[i].className = 'tmbGlry';
	}
	
	/*var tmbGlry = document.createElement('ul');
	tmbGlry.className = 'tmbGlry';*/
	
	for (i=0;i<numVideos;i++) {
		curTitle   = vidItems[i].getElementsByTagName('title')[0].firstChild.nodeValue;
		estName[i] = getEstName(curTitle);
		vidLink[i] = '/Verticals/PropertyDetails.aspx?VID=' + vidItems[i].getElementsByTagName('zgtV')[0].firstChild.nodeValue + '&R=' + vidItems[i].getElementsByTagName('zgtR')[0].firstChild.nodeValue;

		(vidItems[i].getElementsByTagName('thumbnail').length > 0) ?
			thumbnail = vidItems[i].getElementsByTagName('thumbnail')[0] :
			thumbnail = vidItems[i].getElementsByTagName('media:thumbnail')[0];
			
		(vidItems[i].getElementsByTagName('titleid').length > 0) ?
			vidId[i] = vidItems[i].getElementsByTagName('titleid')[0].firstChild.nodeValue :
			vidId[i] = vidItems[i].getElementsByTagName('bc:titleid')[0].firstChild.nodeValue;
			
		/* This is not the size we expected! */
		if (thumbnail.getAttribute('height')!=90)
			return false;
			
		var listItem = document.createElement('li');
		var vidTitle     = document.createElement('h3');
		var titleLink    = document.createElement('a');
		var titleLinkTxt = document.createTextNode(estName[i]);
		
		// Set thumbnail as a background image so that we may crop the image
		var vidTmb              = document.createElement('div');
		vidTmb.className        = 'vidTmb';
		vidTmb.style.width      = '120px';
		vidTmb.style.height     = '78px';
		vidTmb.style.border     = '1px solid #b7b5a9';
		vidTmb.style.background = 'url('+thumbnail.getAttribute('url')+') no-repeat left center';
		vidTmb.style.cursor     = 'pointer';
		
		$(vidTmb).append($('<div class="hoverTmb"></div>'));
		
		listItem.appendChild(vidTmb);
		titleLink.appendChild(titleLinkTxt);
		titleLink.setAttribute('href','#');
		vidTitle.appendChild(titleLink);
		listItem.appendChild(vidTitle);
		
		if (i%2==0)
			listItem.className = 'first';
		
		tmbGlry[(Math.floor(i/2))].appendChild(listItem);
	}

	/* Attach events */
	tmbItems = tmbGlry[0].getElementsByTagName('li');
	
	tmbItems[0].onclick = function () { updateTheatre (estName[0],vidId[0],vidLink[0]); updateVidLists(vidId[0]); return false; }	// Can this be implemented with a loop? Would be nice to have this respond to numVideos
	tmbItems[1].onclick = function () { updateTheatre (estName[1],vidId[1],vidLink[1]); updateVidLists(vidId[1]); return false; }
	
	tmbItems = tmbGlry[1].getElementsByTagName('li');
	
	tmbItems[0].onclick = function () { updateTheatre (estName[2],vidId[2],vidLink[2]); updateVidLists(vidId[2]); return false; }
	tmbItems[1].onclick = function () { updateTheatre (estName[3],vidId[3],vidLink[3]); updateVidLists(vidId[3]); return false; }

	/* Add to DOM */
	for(i=0;i<tmbGlry.length;i++) {
		newVids.appendChild(tmbGlry[i]);
	}

	$('.tmbGlry li .vidTmb').hover(
		function(){$('.hoverTmb',this).fadeTo(300,0.5);},
		function(){$('.hoverTmb',this).fadeTo(100,0.0);}
	);
		
	$('#newVids .hoverTmb').fadeTo(10,0.0);
}

function changeVid (clickedVid) {
	/* Do nothing if clicked vid is currently playing */
	if($(clickedVid).hasClass('nowPlaying'))
		return true;
		
	var clickedVidName,clickedVidId,clickedVidLink;

	/* Get name & id of the selected vid */
	clickedVidName = clickedVid.childNodes[1].firstChild.nodeValue;
	clickedVidId   = clickedVid.getAttribute('name');
	clickedVidLink = clickedVid.getElementsByTagName('a')[0].getAttribute('title');
	
	updateTheatre(clickedVidName,clickedVidId,clickedVidLink);
	updateVidLists(clickedVidId);
	
	scroll(0,220);
}

function hoverVid (listItem) {
	var playNow = listItem.getElementsByTagName('a')[0];
	
	listItem.style.background = '#e3eef2 url(/img/core/hdot.gif) repeat-x top';
	
	if ($(listItem).hasClass('nowPlaying'))
		listItem.style.cursor = 'default';
	else {
		playNow.style.display = 'block';
		listItem.style.cursor = 'pointer';
	}
}

function exitVid (listItem) {
	var playNow = listItem.getElementsByTagName('a')[0];
	
	listItem.style.background = 'url(/img/core/hdot.gif) repeat-x top';
	
	playNow.style.display = 'none';
}


function lxtv_placeVid (config,flashVersion,theatre) {
   // default version to 7 for backwards compatability
   if (flashVersion == undefined) var flashVersion = 7;
   
   // Config parameters to pass into the SWF file.
   var servicesURL            = "http://services.brightcove.com/services";
   var viewerSecureGatewayURL = "https://services.brightcove.com/services/amfgateway";
   var cdnURL                 = "http://admin.brightcove.com";

   var bgcolor = config["preloadBackColor"];
   var externalAds = (typeof(playAd) != "undefined");
   var sendReports = (typeof(reportEvent) != "undefined");
   
   var width  = config["width"];
   var height = config["height"];
   
   if (width == null) {
	width = "100%";    
   }
   if (height == null) {
    height = "100%";    
   }
  //specify version required Flash version
  if (config["requireFlash8"] || flashVersion == 8){
    requiredMajorVersion = 8;
  } else{
	//mac requires flash 8
	requiredMajorVersion = 7;
	var isMac = navigator.appVersion.toLowerCase().indexOf("mac") > 0;
	if (isMac) requiredMajorVersion = 8;
  }
  var requiredMinorVersion = 0;
  var requiredRevision = 0;
  
  var hasRightVersion = DetectFlashVer(requiredMajorVersion,requiredMinorVersion,requiredRevision);
  if(hasRightVersion) { 
  
	var pid = getParameter("bcpid");
	if(pid.length < 1  || (pid == config["playerId"]))  {
		var titleParam = getParameter("bctid");
		if (titleParam.length > 0) {
		  config["videoId"] = titleParam;
		  config["autoStart"] = true;
		  config["fromLink"] = true;
		}
		var lineupParam = getParameter("bclid");
		if (lineupParam.length > 0) {
		  config["lineupId"] = lineupParam;
		}
	}
  
    if (playerIndex == undefined){
		playerIndex = 0;
	}else{
		playerIndex++;
	}	

    /*
	WARNING: disabled only because there is only one swf object
	
	if (config["flashId"] == undefined) {
      flashId = "flashObj" + playerIndex;
    } else {
      flashId = escapeValue(config["flashId"]) + playerIndex;
    }*/flashId = config["flashId"];

    var configItems = "";
    for (var i in config) {
       if (i == "flashId") continue;
       if (typeof(config[i]) == "function" || typeof(config[i]) == "object") continue;
       
       configItems += "&" + i + "=" + escapeValue(config[i]);
    }

    // Hook for Internet Explorer.
/*    if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
	document.write('<script language=\"VBScript\"\>\n');
	document.write('On Error Resume Next\n');
	document.write('Sub ' + flashId + '_FSCommand(ByVal command, ByVal args)\n');
	document.write('	Call onFSCommand(command, args)\n');
	document.write('End Sub\n');
	document.write('</script\>\n');
    }*/

    var swfFile = "federated.swf";
    if (flashVersion == 8) {
      swfFile = "federated_f8.swf";
    }

    var file = cdnURL + "/viewer/" + swfFile + "?flashId="+flashId+
         "&servicesURL="+escapeValue(servicesURL)+
         "&viewerSecureGatewayURL="+escapeValue(viewerSecureGatewayURL)+
         "&cdnURL="+escapeValue(cdnURL)+
         configItems+
         "&externalAds="+escapeValue(externalAds)+
         "&sendReports="+escapeValue(sendReports)+
         "&buildNumber=" + 852 +
         "&ranNum=" + Math.floor(Math.random()*1000000);   

    if (!DetectFlashVer(8,0,0)) {
      file += "&domain=" + getDomain();
    }
    
    wmode = config["wmode"];
	if (wmode == null) wmode = "window";
	
    version = "7,0,0,0"; // why write 7 always??
    quality = "high";

	var so = new SWFObject(file,flashId,width,height,version,bgcolor);	
	so.addParam("wmode", "transparent");
	so.write('swfcontainer');
    
  } else {  // flash is too old or we can't detect the plugin 
  	/*alert('alert!');
    document.write("<table width='" + width + "' height='" + height + "' border='0' bgcolor='"+bgcolor+"'>");
    document.write("<tr><td align='center' valign='middle'>");
    document.write("<a href='http://www.macromedia.com/go/getflashplayer/' target='_blank'><img src='"+cdnURL+"/viewer/upgrade_flash_player.gif' alt='Get Flash Player' width='314' height='200' border='0'></a>");
    document.write("</td></tr></table>");*/      
    var theatre  = document.getElementById('theatre');
    var theatreLink  = getElementsByClassName(theatre, "h2", "nowPlaying")[0];
    var theatreMoreLink  = getElementsByClassName(theatre, "div", "moreLink")[0];
    var errorMessage = document.getElementById('errorMessage');
    errorMessage.style.display = 'block';
    if( theatreLink ) theatreLink.style.display = 'none';
    if( theatreMoreLink ) theatreMoreLink.style.display = 'none';
   }

   return flashId;
}

function updateTheatre (clickedVidName,clickedVidId,clickedVidLink) {
	var config = new Array();

	/* Grab theatre hooks */
	var theatre    = document.getElementById('theatre');
	var vidObj     = document.getElementById(FLASH_ID);
	var vidTitle   = document.getElementById('vidTitle');
	var propPgLink = document.getElementById('propPgLink');
	
	/* Update #theatre params/info */
	vidTitle.firstChild.nodeValue = clickedVidName;
	propPgLink.setAttribute('href',clickedVidLink);
	
	/* Remove previous vid object */
	vidObj.parentNode.removeChild(vidObj);
	
	/* Prepare configuration params for new vid object */
	config["videoId"]          = clickedVidId; //the default video loaded into the player
	config["videoRef"]         = null; //the default video loaded into the player by ref id specified in console
	config["lineupId"]         = null; //the default lineup loaded into the player
	config["playerTag"]        = null; //player tag used for identifying this page in brightcove reporting
	config["autoStart"]        = true; //tells the player to start playing video on load
	config["preloadBackColor"] = VID_BGCOLOR; //background color while loading the player
	config["autoStart"]        = false;
	config["flashId"]          = FLASH_ID;
	config["playerId"] = PLAYER_ID;
	config["width"]    = FLASH_WIDTH;
	config["height"]   = FLASH_HEIGHT;
	
	/* Drop in new vid */
	lxtv_placeVid(config,FLASH_VER,theatre,vidTitle);
}

function updateVidLists (clickedVidId) {
	var listItems,vidName, i, j;
	
	var availVids = document.getElementById('browseVids');
	var vidLists  = availVids.getElementsByTagName('ul');
	
	/* Update #availVids list items */
	for (i=0; i<vidLists.length; i++) {
		listItems = vidLists[i].getElementsByTagName('li');
		
		for (j=0; j<listItems.length; j++) {
			/* Remove "note" span if there is one */
			if ($(listItems[j].getElementsByTagName('span')[0]).hasClass('note'))
				$('span.note',listItems[j]).remove();
			
			/* Clear list item class name */
			$(listItems[j]).removeClass('nowPlaying');
			
			/* If clickedVid... */
			if (listItems[j].getAttribute('name')==clickedVidId) {
				$(listItems[j]).prepend(buildNowPlayingNote());
				$(listItems[j]).addClass('nowPlaying');
			}
		}
	}
}

function buildNowPlayingNote () {
	/* Ends up with the structure: <span class="note"><em>now playing</em>: </span> */
	var nowPlaying     = document.createElement('span');
	var nowPlayingEm   = document.createElement('em');
	var nowPlayingTxt1 = document.createTextNode('now playing');
	var nowPlayingTxt2 = document.createTextNode(': ');
	
	nowPlayingEm.appendChild(nowPlayingTxt1);
	nowPlaying.appendChild(nowPlayingEm);
	nowPlaying.appendChild(nowPlayingTxt2);
	
	nowPlaying.className = 'note';
	
	return nowPlaying;
}

function getEstName (title) {
	// return title.substring(12,title.length);
	return title;
}