function TV2Player(index,progId,autoplay,layout) {	var webtvUrl = TV2Player.webtvUrl;	var webtvPath = '/webtv/';	var jsonPath = 'dido/meta.dox?';	var bannerPath = 'http://webtv.tv2.no/multimedia/webtv/images/dido/banner/';	var defaultAdCategory = 'tv2/forside';	var defaultStartBannerLink = 'http://webtv.tv2.no/webtv/';	var defaultStartBanner = bannerPath + 'sumo_banner.jpg';	var defaultBandwidth = 600;	var maxBandwidth = 1500;	var bwCookieName = 'webtv.bandwidth2';	var tipVisible = false;	var fromAddress = '';	var fromName = '';	var embedVisible = false;	var effectDuration = 0.5;	var expandTimeout;		var minimizing = false;	var restoring = false;	var minimizeTimeout;	var sliderTop;	var isDragging = false;	var isInSlider = false;	var relatedCount = 3;	var relatedGalleryCount = 5;	var relatedTreeId;	var programTitle = '';	var programText = '';	var txTime;	var live = false;		var shareable = false;	var adCategory = defaultAdCategory;	var dartAdUrl = 'http://ad.doubleclick.net/adi/{adCategory};sz=450x60;tile=2;dc_seed=';	var homeUrl = webtvUrl;	var design = 'tv2no';	var plElm = $('tv2VideoPlayer' + index);	var sizeElm = plElm.getElementsByTagName('div')[0];	var modeElm = sizeElm.getElementsByTagName('div')[0];	var designElm = modeElm.getElementsByTagName('div')[0];	var isBadIe = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) &&	navigator.platform == "Win32");	var isInVideoCenter = (document.body.id == 'videoCenter');	var isSelfContained = (document.body.className && document.body.className.indexOf('selfContained')>=0);	var rotatorOnly = (location.href.indexOf('rotatorOnly=true')>0);	var rotator = new TV2Rotator(index,progId);	var player;		// DART (DoubleClick) video ads	var dartPlayer;	if (rotatorOnly) {		rotator.load();	} else {		var onPlayerHide = function(){				rotator.load(true,startNewVideo);			};		if (!layout.relatedGallery) {			onPlayerHide = rotator.load;		}		if (layout.relatedHardcoded) {			onPlayerHide = loadHardcodedEnd;		}		if (layout.gallery != null && layout.gallery == false) {			onPlayerHide = function () {					$('prePanel' + index).style.visibility = 'visible';				}		}		player = new VideoPlayer(index,false,false,{onHide: onPlayerHide, onPlayerClick: playerClicked, onProgramError: showMessage});		rotator.setPlayer(player);			}		// Message resource surrogate	if (!window.$MR) {		var messages = new Object();			function addMessage(key,message) {			messages[key] = message;		}				function getMessage(key) {			if (messages[key]==null) {				return '!?!' + key + '!?!';			}			return messages[key];		}		messages['sumo.web.video.nonIE.missingPlugin']='<p>Du trenger Windows Media Player for å se video. Denne er ikke installert eller ikke riktig satt opp. <a href="http://windowsmedia.com/download">Last ned Windows Media Player her</a>.</p>';		messages['sumo.web.video.status.quality1']='Videokvalitet (båndbredde): ';		messages['sumo.web.video.status.quality2']=' kbit/s. Klikk her for å endre kvalitet.';		messages['sumo.web.video.status.wmperror1']='Det oppstod en feil i Windows Media Player.';		messages['sumo.web.video.status.wmperror2']=' Klikk her for mer info.';		messages['sumo.web.video.wmperrordialog1']='<p><br>Windows Media Player klarte ikke å spille av videoen og rapporterte feilmeldingen over.</p>  <p>I vårt hjelpesenter kan du få mer informasjon og hjelp til å løse problemet.</p>';		messages['sumo.general.video.status.startingvideo']='Starter video: ';		messages['sumo.general.video.status.checkstarted']='Kontrollerer om programmet er startet.';		messages['sumo.general.video.status.notstarted']='Ikke startet - prøver igjen om litt.';		messages['sumo.general.video.status.buffering']='Bufrer';		messages['sumo.general.video.control.skipback']='Hopp bakover';		messages['sumo.general.video.control.skipforward']='Hopp fremover';		messages['sumo.general.video.control.skipto']='Gå til';		messages['sumo.web.video.upgrademessage'] = 'For bedre videoavspilling, last ned <a href="http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx" target="_blank">Windows Media Player plugin for Firefox</a>.';				window.$MR = getMessage;	}		if (rotatorOnly) {		Event.observe('startButton' + index,'click',function(e){ Event.stop(e)},false);		Event.observe('startImage' + index,'click',function(e){ Event.stop(e)},false);		Event.observe('restoreVideo' + index,'click',function(e){ Event.stop(e)},false);		//Event.observe('shareButton' + index,'click',function(e){ Event.stop(e)},false);		//Event.observe('sharePreButton' + index,'click',function(e){ Event.stop(e)},false);	} else {		Event.observe('startButton' + index,'click',startVideo,false);		Event.observe('startImage' + index,'click',startVideo,false);		Event.observe('restoreVideo' + index,'click',restoreVideo,false);		Event.observe('shareButton' + index,'click',showEmbed,false);		Event.observe('shareButton2' + index,'click',showEmbed,false);		Event.observe('sharePreButton' + index,'click',showEmbed,false);	}		// Prepare parameters	var queryParams = location.search.toQueryParams();	var treeId;	treeId = queryParams.treeId;		//programTitle = rotator.getBanner(treeId);	if (queryParams.autoplay=='true') autoplay=true;	//if (queryParams.live) live = queryParams.live;	// get metadata on program, related programs and trees	getMetadata(DidoJSON.getInstance(webtvUrl));	if ($('sliderButton' + index).currentStyle) {		Event.observe('slider' + index,'mouseover',onEnterSlider,false);		Event.observe('slider' + index,'mouseout',onExitSlider,false);		//Event.observe('sliderButton' + index,'mousedown',onStartDragging,false);		//Event.observe('sliderButton' + index,'mouseup',onEndDragging,false);		hideSliderButton();	}	// show player	plElm.style.visibility = 'visible';	var muted = false;	if (layout.className1=='sumoSmall2' && autoplay) {		muted = true;	}		if (autoplay && !rotatorOnly) startVideo();// Initialization (constructor) end// -----------------------// Member methods	function startNewVideo(newProgId,isLive,newProgramTitle,pMuted) {		if (pMuted!=null) muted = pMuted;		startVideo(null,newProgId,isLive,newProgramTitle);	}		function stopVideo() {		player.hide();	}	this.startNewVideo = startNewVideo;	this.stopVideo = stopVideo;					function startVideo(e,newProgId,isLive,newProgramTitle) {		var oldProgId = progId;		if (newProgId) {			progId = newProgId;		}		if (newProgramTitle) {			programTitle = newProgramTitle;		}		if (isLive!=null) live = isLive;		var localStartTime;		var didoJSON = DidoJSON.getInstance(webtvUrl);		didoJSON.getCurrentTime(function(element) {				if (element.time && txTime) {					var serverTime = new Date();					serverTime.setTime(element.time);					var startOffset = txTime.getTime() - serverTime.getTime();					if (!live) startOffset += 15000;					if (startOffset > 0) { // program not started						if (!$('overlay' + index)) {							var localTime = new Date();							localStartTime = new Date(localTime.getTime() + startOffset);							var offsetTime = new Date(startOffset);							var countdownElm = document.createElement('div');							countdownElm.className = 'posterOverlay';							countdownElm.id = 'overlay' + index;							var cdi = '<div class="overlayBg"></div>';							//cdi += '<div class="countdown" id="countdown' + index + '">';							cdi += '<p class="countdown" id="countdown' + index + '"></p>';							if (live)								cdi += '<p class="countdownText">til sendingen starter</p>';							else								cdi += '<p class="countdownText">til videoen starter</p>';							countdownElm.innerHTML = cdi;							$('startImage' + index).parentNode.appendChild(countdownElm);							$('startImage' + index).addClassName('noStartBanner');																					countdown();						}					} else { // program started						prepareVideo();					}				} else prepareVideo();			});		function countdown() {			var currentOffset = localStartTime.getTime() - (new Date()).getTime();			if (currentOffset >1000) {				$('countdown' + index).innerHTML = formatUtcTime(new Date(currentOffset));				window.setTimeout(countdown,200);			} else {				prepareVideo();			}		}		function formatUtcTime(t) {			var h = Math.floor(t.getTime() / 3600000);			var m = t.getUTCMinutes();			var s = t.getUTCSeconds();						var str = '';						if (h>0) {				if (h<10) str += '0';				str += h + ':';			} 			if (m<10) str += '0';			str += m + ':';			if (s<10) str += '0';			str += s;			return str;		}					if (e) Event.stop(e);	}	function prepareVideo() {		if (Element.hasClassName(modeElm,'sumoMini') && layout.related) {			modeElm.className = 'sumoMedium';		}		track();		// override if testing ads		if (location.href.indexOf('adtest=true')>0)			adCategory = 'tv2underholdning.no/serier/hotel_caesar'; 		else			adCategory = '';		var bw;		if (layout && layout.useDefaultBW) {			bw = defaultBandwidth;		}	else { 			bw = getBandwidth();			logDebug('Bandwidth from cookie: ' + bw);		}					if (!bw) {			var bwTester = new BandwidthTester([],[],null,8000,false,logError,logDebug);			bwTester.run({				onStart: function() {					Element.addClassName('prePanel' + index,'testingBw');				},				onComplete: function(bw) {					storeBandwidth(bw);					doStartVideo(bw);					Element.removeClassName('prePanel' + index,'testingBw');					logDebug('Bandwidth: ' + bw);									},				onTimeout: function() {					storeBandwidth(defaultBandwidth);					doStartVideo(defaultBandwidth);					Element.removeClassName('prePanel' + index,'testingBw');					logDebug('Bandwidth test timed out');				},				onError: function(code,message) {					storeBandwidth(defaultBandwidth);					Element.removeClassName('prePanel' + index,'testingBw');					logDebug('Bandwidth test failed');				}				});		} else 			doStartVideo(bw);	}	function prepareVideoAds(bw) {			if (location.href.indexOf('adtest=true')>0) {		// hent ASX, parse					var adUrl = '/pfadx/' + adCategory + ';sz=680x383;ord=' + Math.floor(Math.random()*100000000) + ';bw=600'				var loader = new Ajax.Request(adUrl, {						'method': 'get', 						'onFailure': function() {doStartVideo(bw)},						'onError': function() {doStartVideo(bw)},						'evalScripts': false,						'onSuccess': function(transport) {								//try {								var responseText = transport.responseText.toLowerCase();								var adParamLead = '<param name="dartadid" value="';								var adIdPos = responseText.indexOf(adParamLead) + adParamLead.length;								if (adIdPos>0) {									var remainder = responseText.substring(adIdPos,responseText.length);									var adId = responseText.substring(adIdPos,adIdPos + remainder.indexOf('"'));									doStartVideo(bw,adId);								} else {									doStartVideo(bw);								}								//} catch(e) {}							}					});		} else		 	doStartVideo(bw);			}	function doStartVideo(bw) {		try {			if (bw>maxBandwidth) bw = maxBandwidth;			player.show();			resetVideoSize();			var metaUrl = webtvUrl + 'metafile.asx?p=' + progId + '&bw=' + bw;			if (adCategory && adCategory.length>0)				metaUrl = metaUrl + '&ac=' + adCategory;						$('prePanel' + index).style.visibility = 'hidden';			player.start({					'metaUrl': metaUrl,				'progId': progId, 				'hostProgId': null, 				'programTitle': programTitle,				'live': live, 				'timeBegin': 0, 				'startPos': 0, 				'muted': muted,				'adCategory': adCategory, 				'startAdPos': 'Video_Stor_F', 				'endAdPos': 'Video_Stor_E', 				'bannerAdPos': '450x60_no1',				'onShowExternalAd': showBannerAd,				'bufferFlash': null			});			// Dart ad integration			if (window.DartPlayer) {				DARTReady = function() {					dartPlayer.attachOnAdStart(showDartBannerAd);					dartPlayer.attachOnAdComplete(function(){ logDebug('dartPlayer','Ad completed')});							}				dartPlayer = new DartPlayer('video' + index, DARTReady);			}		} catch(ex) {			logError(ex);		}	}	function showMessage(message,details,progId) {		$('rotator' + index).style.visibility = 'hidden';		var cdi = '<div class="overlayBg"></div><p class="posterMessage">{message}</p>';		if ($('overlay' + index)) {			$('overlay' + index).innerHTML = cdi.replace(/{message}/ig,message);		} else {			var overlayElm = document.createElement('div');			overlayElm.className = 'posterOverlay';			overlayElm.id = 'overlay' + index;			overlayElm.innerHTML = cdi.replace(/{message}/ig,message);;			$('startImage' + index).parentNode.appendChild(overlayElm);			$('startImage' + index).addClassName('noStartBanner');			Event.observe(overlayElm,'click',function(e) {					if (e.ctrlKey && e.shiftKey) {						$('overlay' + index).innerHTML = cdi.replace(/{message}/ig,details + '<br>progId: ' + progId);					} else {						$('overlay' + index).remove();						$('startImage' + index).removeClassName('noStartBanner');					}									});		}		player.hide();	}	function getMetadata(didoJSON) {		didoJSON.get('prog',progId,function(element) {				programTitle = element.title;				programText = element.text;				shareable = element.sharable;				live = element.live;				txTime = new Date();				txTime.setTime(element.txtime);								// Get tree				didoJSON.get('tree',element.treeId,function(tree) {						//if (tree.dido_player_adCategory)							adCategory = tree.dido_player_adCategory;						//else						//	adCategory = defaultAdCategory;						logDebug('Ad category: ' + tree.dido_player_adCategory);												if (designElm.className.length < 15) { // sumoPlayerBox							if (location.href.indexOf('design=')>0) {									if (location.href.indexOf('design=sporten')>0)										design = 'sporten';									else if (location.href.indexOf('design=nyhetene')>0)										design = 'nyhetene';									else if (location.href.indexOf('design=tv2no')>0)										design = 'tv2no';									else if (location.href.indexOf('design=veret')>0)										design = 'veret';									else if (location.href.indexOf('design=tabloid')>0)										design = 'tabloid';									else if (location.href.indexOf('design=underholdning')>0)										design = 'underholdning';									else if (location.href.indexOf('design=tv2hjelperdeg')>0)										design = 'tv2hjelperdeg';									else if (location.href.indexOf('design=kjendisnorge')>0)										design = 'kjendisnorge';									else if (location.href.indexOf('design=humor')>0)										design = 'humor';									else if (location.href.indexOf('design=stabak')>0)										design = 'stabak';							} else if (tree.dido_player_design) {								logDebug('Setting player design: ' + tree.dido_player_design);								design = tree.dido_player_design;							}							Element.addClassName(designElm,design);						}												if (tree.dido_player_relatedTreeId)							relatedTreeId = tree.dido_player_relatedTreeId;												var sumoUrl = webtvUrl;						var logoUrl = 'http://tv2.no';												if (tree.dido_player_sumoUrl)							sumoUrl = tree.dido_player_sumoUrl						else 							if (design=='nyhetene') {								sumoUrl = 'http://tv2.no/webtv/?treeId=1';								logoUrl = 'http://tv2nyhetene.no';							} else if (design=='underholdning') {								sumoUrl = 'http://tv2.no/webtv/?treeId=3';								logoUrl = 'http://tv2underholdning.no';							} else if (design=='sporten') {								sumoUrl = 'http://tv2.no/webtv/?treeId=2';								logoUrl = 'http://tv2sporten.no';							} else if (design=='veret') {								sumoUrl = 'http://tv2.no/webtv/?treeId=5';								logoUrl = 'http://tv2.no/ver';							} else if (design=='kjendisnorge') {								sumoUrl = 'http://webtv.tv2.no/webtv/?treeId=15';								logoUrl = 'http://www.tv2underholdning.no/gkn/kjendis/';							} else if (design=='tv2hjelperdeg') {								sumoUrl = 'http://webtv.tv2.no/webtv/sumo/?treeId=38001';								logoUrl = 'http://www.tv2underholdning.no/hjelperdeg/testbasen/';							} else if (design=='brann') {																logoUrl = 'http://brann.no/';							}													if (design=='brann') {																logoUrl = 'http://brann.no/';						}													$('sumoButton' + index).href = sumoUrl;						$('logoButton' + index).href = logoUrl;						$('logoPreButton' + index).href = logoUrl;												if (tree.dido_player_homeUrl) {							homeUrl = tree.dido_player_homeUrl && tree.dido_player_homeUrl;						} 						logDebug('Home url: ' + homeUrl);												var startBannerLink = defaultStartBannerLink;						if (tree.dido_player_bannerLink)							startBannerLink = tree.dido_player_bannerLink;						var startBanner = defaultStartBanner;						if (tree.dido_player_banner)							startBanner = bannerPath + tree.dido_player_banner;						logDebug('Start banner: ' + startBanner);						$('sumoBannerAd'+index).innerHTML = '<a href="' + startBannerLink + '" target="_blank"><img src="' + startBanner + '"></a>'										if (layout.relatedGallery) {							if (element.related && element.related.programs && element.related.programs.length > 0) {								// Current program is also listed in the gallery. Or, no.								var itemCode = ''; //'<li class="relatedItemExposed" id="relatedItem'  + index  + '-' + progId + '"></li>';;								for (var i=0;i<relatedGalleryCount && i<element.related.programs.length; i++) {									var item = element.related.programs[i];										itemCode += '<li class="relatedItemExposed" id="relatedItem'  + index  + '-' + item.id + '"></li>';								}																$('relatedList' + index).innerHTML = itemCode;										/*								var firstItemContent = '';																firstItemContent += '<a title="' + programTitle + '" progId="' + progId + '" href="' + homeUrl + '?progId='+ progId +'">';								firstItemContent += '<img onerror="this.style.visibility = \'hidden\'" src="http://www.tv2.no/tvid/VMan-P' + Math.floor(parseInt(progId)/1000) + '/VMan-P' + progId + '_122x90.jpg">';								firstItemContent += '<span class="sumoRelatedText">' + programText + '</span>';								firstItemContent += '<span class="sumoRelatedTitle">' + programTitle + '</span></a>';																						$('relatedItem' + index  + '-' + progId).innerHTML = firstItemContent;										Event.observe($('relatedItem' + index  + '-' + progId).getElementsByTagName('a')[0],'click',function(e){										Event.stop(e);										var elm = Event.element(e);										if (elm.nodeName.toLowerCase() != 'a') {											elm = elm.parentNode;										} 										startNewVideo(elm.progId,false,elm.title); 																		},false);								*/										for (var i=0;i<relatedGalleryCount && i<element.related.programs.length; i++) {									var item = element.related.programs[i];									logDebug('adding related program ' + item);																	var relatedHomeUrl = webtvUrl;									if (item.tree.dido_player_homeUrl)										relatedHomeUrl = item.tree.dido_player_homeUrl;																		var relationTitle = (item.relationTitle ? item.relationTitle : item.title);									var relationText = (item.relationText ? item.relationText : item.text);																											var itemContent = '';									itemContent += '<a title="' + relationTitle + '" progId="' + item.id + '" href="' + relatedHomeUrl + '?progId='+ item.id +'">';									itemContent += '<img onerror="this.style.visibility = \'hidden\'" src="http://www.tv2.no/tvid/VMan-P' + Math.floor(parseInt(item.id)/1000) + '/VMan-P' + item.id + '_122x90.jpg">';									itemContent += '<span class="sumoRelatedText">' + relationText + '</span>';									itemContent += '<span class="sumoRelatedTitle">' + relationTitle + '</span></a>';																								$('relatedItem' + index  + '-' + item.id).innerHTML = itemContent;									Event.observe($('relatedItem' + index  + '-' + item.id).getElementsByTagName('a')[0],'click',function(e){											Event.stop(e);											var elm = Event.element(e);											if (elm.nodeName.toLowerCase() != 'a') {												elm = elm.parentNode;											} 											startNewVideo(elm.getAttribute('progId'),false,elm.title); 																				},false);														}							}																		} else if (layout.related) {													if (element.related && element.related.programs && element.related.programs.length > 0) {								var itemCode = '';								for (var i=0;i<relatedCount && i<element.related.programs.length; i++) {									var item = element.related.programs[i];										itemCode += '<li id="relatedItem'  + index  + '-' + item.id + '"></li>';								}								$('relatedList' + index).innerHTML = itemCode;																	// Looping twice, letting the DOM finish updating itself								for (var i=0;i<relatedCount && i<element.related.programs.length; i++) {									var item = element.related.programs[i];												logDebug('adding related program ' + item);																		var relatedHomeUrl = webtvUrl;									if (item.tree.dido_player_homeUrl)										relatedHomeUrl = item.tree.dido_player_homeUrl;																		var relationTitle = (item.relationTitle ? item.relationTitle : item.title);																		var itemContent = '';									itemContent += '<a target="_blank" href="' + relatedHomeUrl + '?progId='+ item.id +'">';									itemContent += '<img onerror="if (this.parentNode && this.parentNode.parentNode) {this.parentNode.parentNode.style.display = \'none\'}" src="http://www.tv2.no/tvid/VMan-P' + Math.floor(parseInt(item.id)/1000) + '/VMan-P' + item.id + '_122x90.jpg">';									itemContent += '<span>' + relationTitle + '</span></a>';																								$('relatedItem' + index  + '-' + item.id).innerHTML = itemContent;									var theLink = $('relatedItem' + index  + '-' + item.id).getElementsByTagName('a')[0];									var theBlind = $('relatedItem' + index  + '-' + item.id).getElementsByTagName('span')[0];									if (theLink && theBlind) {										regGalleryEffect(theLink,theBlind);									}																											/*																		didoJSON.get('prog',item,function(element2) {																								},function() {logDebug('Related program metadata not found');});									*/								}							} else if (relatedTreeId){								didoJSON.get('programsByTree',relatedTreeId,function(programsByTree) {										var i=0;										programsByTree.programList.each(function(program){												if (i<relatedCount && program.id!=progId) {													var itemCode = '<li id="relatedItem' + index + '-' + program.id + '">';													itemCode += '<a target="_blank" desc="' + program.title + '" href="' + homeUrl + '?progId='+ program.id +'">';													itemCode += '<img onerror="if (this.parentNode && this.parentNode.parentNode) {this.parentNode.parentNode.style.display = \'none\'}" src="http://www.tv2.no/tvid/VMan-P' + Math.floor(parseInt(program.id)/1000) + '/VMan-P' + program.id + '_122x90.jpg">';																										itemCode += '<span>' + program.title + '</span></a></li>';													$('relatedList' + index).innerHTML = $('relatedList' + index).innerHTML + itemCode; 													i++;												}											});																					// Looping twice, letting the DOM finish updating itself										i=0;										programsByTree.programList.each(function(program){												if (i<relatedCount && program.id!=progId) {													var theLink = $('relatedItem' + index + '-' + program.id).getElementsByTagName('a')[0];													var theBlind = $('relatedItem' + index + '-' + program.id).getElementsByTagName('span')[0];													if (theLink && theBlind) {														regGalleryEffect(theLink,theBlind);													}													i++;												}											});									},function() {logDebug('Related tree programs not found');});							} else {								didoJSON.get('treeByProg',progId,function(treeByProg) {										var i=0;										treeByProg.programList.each(function(program){												if (i<relatedCount && program.id!=progId) {													var itemCode = '<li id="relatedItem' + index + '-' + program.id + '">';													itemCode += '<a target="_blank" desc="' + program.title + '" href="' + homeUrl + '?progId='+ program.id +'">';													itemCode += '<img onerror="if (this.parentNode && this.parentNode.parentNode) {this.parentNode.parentNode.style.display = \'none\'}" src="http://www.tv2.no/tvid/VMan-P' + Math.floor(parseInt(program.id)/1000) + '/VMan-P' + program.id + '_122x90.jpg">';																										itemCode += '<span>' + program.title + '</span></a></li>';													$('relatedList' + index).innerHTML = $('relatedList' + index).innerHTML + itemCode; 													i++;												}											});																					// Looping twice, letting the DOM finish updating itself										i=0;										treeByProg.programList.each(function(program){												if (i<relatedCount && program.id!=progId) {													var theLink = $('relatedItem' + index + '-' + program.id).getElementsByTagName('a')[0];													var theBlind = $('relatedItem' + index + '-' + program.id).getElementsByTagName('span')[0];													if (theLink && theBlind) {														regGalleryEffect(theLink,theBlind);													}													i++;												}											});															},function() {logDebug('More programs from tree not found');});							}						}					},function() {logDebug('Tree metadata not found');});			},function() {logDebug('Program metadata not found');});	}		function showRelatedTitle(title) {		//$('programTitle' + index).innerHTML = title;		Element.addClassName('programTitle' + index,'relatedTitle');	}	function hideRelatedTitle() {		//$('programTitle' + index).innerHTML = programTitle;		Element.removeClassName('programTitle' + index,'relatedTitle');	}	function hideBrokenImg(elm) {		}	function showSliderButton() {	  if (sliderTop) $('sliderButton' + index).style.top = sliderTop;	}	function hideSliderButton() {		logDebug('Hide slider: isInSlider: ' + isInSlider);		if (!isDragging) {			if (sliderTop==null) sliderTop = $('sliderButton' + index).currentStyle.top;			$('sliderButton' + index).style.top = '1000px';		}	}		function onEnterSlider() {		isInSlider = true;		showSliderButton();			}		function onExitSlider() {		isInSlider = false;		hideSliderButton();	}		function onStartDragging () {		isDragging=true;		logDebug('Start dragging: isInSlider: ' + isInSlider);	}		function onEndDragging () {		isDragging=false;		if (!isInSlider) {			hideSliderButton();		}		logDebug('End dragging: isInSlider: ' + isInSlider);	}	function showBannerAd(bannerCode) {		if (!layout || (layout && layout.bannerAd)) {			$('sumoBannerAd' + index).innerHTML = '<div>' + bannerCode + '</div>';			Element.addClassName('sumoBannerAd' + index,'adShowing');						if (layout.related || layout.relatedGallery)				modeElm.className = 'sumoNormal'			else				modeElm.className = 'sumoMedium';			//if (Element.hasClassName(plElm,'mini') && ($('sumoBannerAd' + index).currentStyle.display=='none' || !Element.hasClassName(plElm,'medium'))) {				//Element.removeClassName(plElm,'mini');				//Element.addClassName(plElm,'medium');			//}		}	}	function showDartBannerAd() {		logDebug('ShowDartBannerAd',adCategory);		if (!layout || (layout && layout.bannerAd)) {			var ord = Math.random() * 10000000000000000;			var compString = dartAdUrl.replace(/{adCategory}/ig,adCategory);  // + dartPlayer.getAd().getDartId() + ';ord=' + ord;			var compTag = dartPlayer.getRoadblockURL(compString);	   	$('sumoBannerAd' + index).innerHTML = '< src="' + compTag + ' scrolling="no" frameborder="0" allowtransparency="true">' + '</iframe>';			Element.addClassName('sumoBannerAd' + index,'adShowing');						if (layout.related || layout.relatedGallery)				modeElm.className = 'sumoNormal'			else				modeElm.className = 'sumoMedium';		}	}	function loadHardcodedEnd() {		// Yes, I know. Hard coding is very, very bad.		$('prePanel' + index).style.visibility = 'visible';		if ($('overlay' + index))			return;		if (design=='sporten' || window.location.hostname.indexOf('tv2sporten')>=0) {			arg1 = 'treeByProg';			arg2 = progId;			if (relatedTreeId) {				arg1 = 'programsByTree';				arg2 = relatedTreeId;			}						DidoJSON.getInstance(webtvUrl).get(arg1,arg2,function(treeList) {					var u = '<p style="margin: 10px; margin-bottom: 2px; font-weight: bold; font-size: 12px">Flere videoer fra TV2Sporten.no:</p>'										u += '<ul style="margin: 10px; margin-top: 0px; font-size: 12px;">';					var i=0;					treeList.programList.each(function(program){							if (program.id != progId && i<6) {								u += '<li style="list-style-type: none; margin: 0px; padding: 0px">';								u += '<a style="color: white; text-decoration: underline" href="' + homeUrl + '?progId=' + program.id + '">';								if (program.txtime) {									var txTime = new Date();									txTime.setTime(program.txtime);									u += txTime.getDate() + '.' + (txTime.getMonth() + 1) + '. ';								}								u += program.title + '</a></li>';								i++;							}						});					u += '</ul>';					u += '<p style="margin: 10px; margin-bottom: 2px; font-weight: bold; font-size: 12px">';					u += '<a style="text-decoration: underline; color: white" href="http://webtv.tv2.no/webtv/?treeId=250">';					u += 'Livesenteret: Se fotball og håndball direkte!</a></p>';										$('rotator'+index).innerHTML = u;					$('rotator'+index).style.display = 'block';					$('prePanel' + index).style.visibility = 'visible';				});		}	}	function minimizeVideo() {		var interval = 50;		if (minimizing) return;		if (restoring) clearTimeout(minimizeTimeout);		resetVideoSize();		$('features' + index).style.display = 'block';		$('rotator' + index).style.visibility = 'hidden';		//loadDock();		minimizing = true;		Element.addClassName('videoPanel' + index,'minimize1');		minimizeTimeout = setTimeout(			function() {				Element.removeClassName('videoPanel' + index,'minimize1');				Element.addClassName('videoPanel' + index,'minimize2');				minimizeTimeout = setTimeout(					function() {						Element.removeClassName('videoPanel' + index,'minimize2');						Element.addClassName('videoPanel' + index,'minimize3');						minimizeTimeout = setTimeout(							function() {								Element.removeClassName('videoPanel' + index,'minimize3');								Element.addClassName('videoPanel' + index,'minimized');								minimizing = false;							},interval);					},interval);			},interval);			}	function restoreVideo(ev) {		var interval = 50;		if (restoring) return;		if (minimizing) clearTimeout(minimizeTimeout);		resetVideoSize();		restoring = true;		$('features' + index).style.display = 'block';		Element.addClassName('videoPanel' + index,'minimize3');		minimizeTimeout = setTimeout(			function() {				Element.removeClassName('videoPanel' + index,'minimize3');				Element.addClassName('videoPanel' + index,'minimize2');				minimizeTimeout = setTimeout(					function() {						Element.removeClassName('videoPanel' + index,'minimize2');						Element.addClassName('videoPanel' + index,'minimize1');						minimizeTimeout = setTimeout(							function() {								Element.removeClassName('videoPanel' + index,'minimize1');								$('features' + index).style.display = 'none';								restoring = false;							},interval);					},interval);							},interval);		if(ev) Event.stop(ev);		}	function resetVideoSize() {		Element.removeClassName('videoPanel' + index,'minimized');		Element.removeClassName('videoPanel' + index,'minimize1');		Element.removeClassName('videoPanel' + index,'minimize2');		Element.removeClassName('videoPanel' + index,'minimize3');		$('rotator' + index).style.visibility = 'visible';		$('features' + index).style.display = 'none';		tipVisible = false;		embedVisible = false;	}		function playerClicked() {		if (tipVisible || embedVisible) {			restoreVideo();		} else {			player.gotoFullscreen();		}	}		function showTipAFriend(e) {		clearTimeout(expandTimeout);		try {			if (!tipVisible) {				createTipForm();			}			if (embedVisible) {				embedVisible = false;				tipVisible = true;				if (e) Event.stop(e);					return;			}			if (tipVisible) {				restoreVideo();				tipVisible = false;					} else {				minimizeVideo();				$('sumoToAddress'+index).focus();				tipVisible = true;			}		} catch(ex) {			logError(ex);		}		if(e) Event.stop(e);			}	function createTipForm() {		var tipHtml = '';		tipHtml += '<form action="/webtv/sumo/ajax/external/tipAFriend.dox" class="sumoTipForm" id="sumoTipForm' + index + '">';		tipHtml += '<input type="hidden" name="action" value="send">';		tipHtml += '<input type="hidden" name="progId" value="' + progId + '">';		tipHtml += '<h5 class="sumoFeatureTitle">Tips en venn</h5>';		tipHtml += '<p><label for="toAddress">E-postadressen til mottakeren:</label><input type="text" id="sumoToAddress' + index + '" name="toAddress" value=""></p>';		tipHtml += '<p><label for="fromAddress">Din e-postadresse:</label><input type="text" id="sumoFromAddress' + index + '" name="fromAddress" value="' + fromAddress + '"></p>';		tipHtml += '<p><label for="name">Ditt navn:</label><input type="text" name="name" id="sumoFromName' + index + '" value="' + fromName + '"></p>';		tipHtml += '<p class="sumoSubmit"><input type="submit" value="Send tips" id="sumoTipButton' + index + '"></p>';		tipHtml += '</form>';						$('featuresContent' + index).innerHTML = tipHtml;				/*Event.observe('sumoTipButton' + index,'click',function(e){				$('sumoTipForm'+index).onsubmit();				Event.stop(e);				return false;			},false);		*/						Event.observe('sumoTipForm' + index,'submit',function(e){				try {					$('sumoTipButton' + index).disabled = true;					var parameters = 'action=send&progId=' + progId + '&fromName=' + escape($F('sumoFromName' + index)) + '&fromAddress=' + escape($F('sumoFromAddress' + index)) + '&toAddress=' + escape($F('sumoToAddress' + index));					// Storing for subsequent tipping					fromName = $F('sumoFromName' + index);					fromAddress = $F('sumoFromAddress' + index);					getFromWebTV('sumo/ajax/external/tipAFriend.dox',parameters,null,						function(){							$('featuresContent' + index).innerHTML = '<p style="margin-top: 18px; text-align: center">Tipset er nå sendt.</p><p style="margin-top: 18px; text-align: center"><a id="tipMore'+ index + '" href="" style="color: black; text-decoration: underline">Send til flere</a></p>';							Event.observe('tipMore' + index,'click',function(ev){									clearTimeout(expandTimeout);									createTipForm();									Event.stop(ev);								},false);							expandTimeout = setTimeout(showTipAFriend,4000);						},						function(){							$('featuresContent' + index).innerHTML = '<p style="margin-top: 18px; text-align: center">Tipset kunne dessverre ikke sendes på grunn av en feil.</p>';							expandTimeout = setTimeout(showTipAFriend,4000);						});				} catch(ex) {					logError(ex);				}				Event.stop(e);				return false;			},false);	}	function showEmbed(e) {	  clearTimeout(expandTimeout);		try {			createEmbedForm();			if (tipVisible) {				tipVisible = false;				embedVisible = true;				Event.stop(e);					return;				}			if (embedVisible) {				restoreVideo();				embedVisible = false;					} else {				minimizeVideo();				embedVisible = true;			}		} catch(ex) {			logError(ex);		}		Event.stop(e);	}	function createEmbedForm() {		var isIe = navigator.userAgent.indexOf("MSIE")>=0 && navigator.userAgent.indexOf("Opera")<0 && navigator.userAgent.indexOf("Mac")<0;		var embedCode = '&lt;iframe scrolling=&quot;no&quot; style=&quot;width: 468px; height: 452px; border: 0px&quot; allowtransparency=&quot;true&quot; frameborder=&quot;0&quot;';		embedCode += ' src=&quot;' + webtvUrl + 'dido/embed.dox?progId=' + progId;		if (treeId) embedCode+= '&amp;amp;treeId=' + treeId;		embedCode += '&quot;&gt;&lt;/iframe&gt;';				var programLink = webtvUrl + '?progId=' + progId + '&amp;treeId=777';			var featuresHeader = '<h5 class="sumoFeatureTitle">Del med andre</h5>';		featuresHeader += '<h6 class="sumoFeatureProgramTitle">' + programTitle + '</h5>';		$('featuresHeader'+index).innerHTML = featuresHeader;			var embedHtml = '<div class="tv2border"></div>';		embedHtml += '<form class="sumoEmbedForm" id="sumoEmbedForm' + index + '">';				if (shareable) {			embedHtml += '<p><label for="embedCode">Sett inn på nettsider eller blogg:</label>';			embedHtml += '<input type="text" id="embedCode' + index + '" name="embedCode" value="' + embedCode + '">';			if (isIe) embedHtml += '<a href="" class="sumoCopyButton" id="copyEmbedButton' + index + '" title="Kopier"><span>Kopier</span></a>';		}		embedHtml += '</p><p><label for="programLink">Lenke til video:</label>';		embedHtml += '<input type="text" id="programLink' + index + '" name="programLink" value="' + programLink + '">';		if (isIe) embedHtml += '<a href="" class="sumoCopyButton" id="copyLinkButton' + index + '" title="Kopier"><span>Kopier</span></a>';		embedHtml += '</p><p class="facebookLink"><a id="addToFaceBook' + index + '"  target="_blank" href="http://www.facebook.com/share.php?u=' + webtvUrl + '%3FprogId=' + progId + '&t=Video+fra+TV+2">Legg til på Facebook</a></p>';		embedHtml += '</form>';		var tipHtml = '<div class="tv2border"></div>';		tipHtml += '<form action="/webtv/sumo/ajax/external/tipAFriend.dox" class="sumoTipForm" id="sumoTipForm' + index + '">';		tipHtml += '<input type="hidden" name="action" value="send">';		tipHtml += '<input type="hidden" name="progId" value="' + progId + '">';		tipHtml += '<p><label for="sumoToAddress' + index + '">Tips en venn på e-post:</label><input type="text" id="sumoToAddress' + index + '" name="toAddress" value=""></p>';		tipHtml += '<p><label for="sumoFromAddress' + index + '">Din e-postadresse:</label><input type="text" id="sumoFromAddress' + index + '" name="fromAddress" value="' + fromAddress + '"></p>';		tipHtml += '<p><label for="sumoFromName' + index + '">Ditt navn:</label><input type="text" name="name" id="sumoFromName' + index + '" value="' + fromName + '"></p>';		tipHtml += '<p class="sumoSubmit"><input type="submit" value="Send tips" id="sumoTipButton' + index + '"></p>';		tipHtml += '</form>';						$('featuresContent' + index).innerHTML = embedHtml + tipHtml;		if (shareable) {			Event.observe('embedCode' + index,'click',function(ev){					Event.element(ev).focus();					Event.element(ev).select();								},false);		}		Event.observe('programLink' + index,'click',function(ev){				Event.element(ev).focus();				Event.element(ev).select();						},false);			if (isIe) {			if (shareable) Element.addClassName('embedCode' + index,'narrow');			Element.addClassName('programLink' + index,'narrow');			if (shareable) Event.observe('copyEmbedButton' + index,'click',function(ev) {					try {						var textRange = $('embedCode' + index).createTextRange();						textRange.execCommand("RemoveFormat");						textRange.execCommand("Copy");					} catch(ex) {}					Event.stop(ev);				},false);			Event.observe('copyLinkButton' + index,'click',function(ev) {					try {						var textRange = $('programLink' + index).createTextRange();						textRange.execCommand("RemoveFormat");						textRange.execCommand("Copy");					} catch(ex) {}					Event.stop(ev);				},false);		}				Event.observe('sumoTipForm' + index,'submit',function(e){				try {					$('sumoTipButton' + index).disabled = true;					var parameters = 'action=send&progId=' + progId + '&fromName=' + escape($F('sumoFromName' + index)) + '&fromAddress=' + escape($F('sumoFromAddress' + index)) + '&toAddress=' + escape($F('sumoToAddress' + index));					// Storing for subsequent tipping					fromName = $F('sumoFromName' + index);					fromAddress = $F('sumoFromAddress' + index);					if (!$F('sumoToAddress' + index)) {						alert('Du må fylle ut navnet ditt.');						$('sumoTipButton' + index).disabled = false;						Event.stop(e);						return false;					}					if (!fromAddress) {						alert('Du må fylle ut e-postadressen din.');						$('sumoTipButton' + index).disabled = false;						Event.stop(e);						return false;					}					if (!fromName) {						alert('Du må fylle ut navnet ditt.');						$('sumoTipButton' + index).disabled = false;						Event.stop(e);						return false;					}					getFromWebTV('sumo/ajax/external/tipAFriend.dox',parameters,null,						function(){							$('featuresContent' + index).innerHTML = '<p style="margin-top: 18px; text-align: center">Tipset er nå sendt.</p><p style="margin-top: 18px; text-align: center"><a id="tipMore'+ index + '" href="" style="text-decoration: underline">Send til flere</a></p>';							Event.observe('tipMore' + index,'click',function(ev){									clearTimeout(expandTimeout);									createEmbedForm();									Event.stop(ev);								},false);							expandTimeout = setTimeout(showEmbed,4000);						},						function(){							$('featuresContent' + index).innerHTML = '<p style="margin-top: 18px; text-align: center">Tipset kunne dessverre ikke sendes på grunn av en feil.</p>';							expandTimeout = setTimeout(showEmbed,4000);						});				} catch(ex) {					logError(ex);				}				Event.stop(e);				return false;			},false);			}		function regGalleryEffect(elm,target,dy) {		var blindingUp = false;		var blindingDown = false;		var up = false;		var currentEffect;		try {			Event.observe(elm, 'mouseover', onGalleryMouseOver, false);			Event.observe(elm, 'mouseout', onGalleryMouseOut, false);			if (!dy) {				dy = parseInt($(target).offsetTop);			}		} catch(e) {			logError(e);		}		function onGalleryMouseOver(e) {			if (!dy) {				dy = parseInt($(target).offsetTop);			}			if (currentEffect) currentEffect.cancel();			currentEffect = new Effect.Move(target, {y: 0, duration: 0.3, mode: 'absolute', afterFinish: function(){}} );		}		function onGalleryMouseOut(e) {			if (currentEffect) currentEffect.cancel();			currentEffect = new Effect.Move(target, {y: dy, duration: 0.3, mode: 'absolute', afterFinish: function(){}} );		}		}	function track() {		function doGoogleLog() {			window._uacct = 'UA-2964717-1';			var url = 'dido/play?progId=' + progId;			if (treeId) url += '&treeId=' + treeId;			var ref;			if (isSelfContained) {				ref = document.referrer;				//ref = ref.substring(ref.indexOf('//') + 2,ref.length);				//ref = ref.substring(0,ref.indexOf('/'));				//if (ref.indexOf(':')>0) ref = ref.substring(0,ref.indexOf(':'));			} else {				ref = document.location.href; //hostname;			}			if (ref) {					__utmSetVar(ref);			}			urchinTracker(url);			logDebug('Tracking completed: ' + url + ' &bull; ' + ref);		}		try {			if (urchinTracker)				doGoogleLog();			else				loadAndTrack('http://www.google-analytics.com/urchin.js',doGoogleLog);		} catch(errr) {			loadAndTrack('http://www.google-analytics.com/urchin.js',doGoogleLog);		}		function loadAndTrack(url,onScriptLoad) {					var head = document.getElementsByTagName("head")[0];         			var newScript = document.createElement('script');			newScript.type = 'text/javascript';			newScript.onreadystatechange=function(){if(newScript.readyState=='loaded' || newScript.readyState=='complete'){onScriptLoad()}};			newScript.src = url;			newScript.onload = onScriptLoad;			head.appendChild(newScript);		}	}	function prepareStreamTracking() {		try {			if (bmsCaptureState) {				logDebug('Initalizing StreamMetrix logging');				window.smac = 'tv2i_st_no';				window.smcc = 'no';				window.smenc= 'ISO-8859-1';/*				document.write('<script for="video' + index + '" event="playStateChange(NewState)" language="JavaScript">');				document.write('bmsCaptureState(smac, smcc, smenc, NewState, document.getElementById("video' + index + '"))');				document.write('</script>');*/				var head = document.getElementsByTagName('head')[0];         				var newScript = document.createElement('script');				newScript.type = 'text/javascript';				newScript.setAttribute('for','video' + index);				newScript.setAttribute('event','playStateChange(NewState)');				newScript.setAttribute('language','text/javascript');								newScript.innerHTML = ' bmsCaptureState(smac, smcc, smenc,	NewState,	document.getElementById("video' + index + '"));'; 				head.appendChild(newScript);						}		} catch (e) {}	}		function getJSON(path,parameters,onComplete,onFailure) {		if (true || window.location.href.indexOf('webtv.tv2.no/')>=0) {			// Feel like home			getFromWebTV(path,parameters,null,onComplete,onFailure);					} else {			// Foreign domain			var head = document.getElementsByTagName("head")[0];			if (!head) {				head = document.getElementsByTagName("body")[0];			}         			var newScript = document.createElement('script');			newScript.type = 'text/javascript';			newScript.onerror = onFailure;			newScript.onload = onComplete;			newScript.onreadystatechange=function(){if(newScript.readyState=='loaded' || newScript.readyState=='complete'){onComplete();}};			newScript.src = webtvUrl + buildAjaxUrl(path,parameters);						head.appendChild(newScript);		}	}	function getFromWebTV(action,params,target,onComplete,onFailure) {		var webtvPath = '/webtv/';		var url;		url = webtvPath + action;				url = buildAjaxUrl(url,params);				if (target) {			var loader = new Ajax.Updater(			target, 			url, {					'method': 'get', 					'onComplete': onComplete,					'onFailure': onFailure,					'evalScripts': true				});		} else {			var loader = new Ajax.Request(			url, {					'method': 'get', 					'onSuccess': onComplete,					'onFailure': onFailure,					'evalScripts': true				});		}			}	function writeCookie(name, value, expires, path, domain, secure) {	  logDebug('writeCookie: ' + name + '/' + value + '/' + expires + '/' + domain + '/' + secure);	  var curCookie = name + "=" + escape(value) +	      ((expires) ? "; expires=" + expires.toGMTString() : "") +	      ((path) ? "; path=" + path : "") +	      ((domain) ? "; domain=" + domain : "") +	      ((secure) ? "; secure" : "");	  document.cookie = curCookie;	}	function readCookie(name) {	  var dc = document.cookie;	  var prefix = name + "=";	  var begin = dc.indexOf("; " + prefix);	  if (begin == -1) {	    begin = dc.indexOf(prefix);	    if (begin != 0) return null;	  } else	    begin += 2;	  var end = document.cookie.indexOf(";", begin);	  if (end == -1)	    end = dc.length;	  return unescape(dc.substring(begin + prefix.length, end));	}	function storeBandwidth(bw) {		var expiryDate = new Date();		expiryDate.setMonth(expiryDate.getMonth() + 1);		if (location.href.indexOf('dontstore=true')>0) {			expiryDate = null;		}		writeCookie(bwCookieName, bw, expiryDate, '/');	}	function getBandwidth() {		return readCookie(bwCookieName);	}	function buildAjaxUrl(path, params) {		var date = new Date();		if (params)			return path + '?' + params + '&serial='+date.getTime();		else			return path + '?' + 'serial='+date.getTime();		return '&serial='+date.getTime();	}	function loadDock() {		function isInFamily(elm1,elm2,elmId) {			try {				return ((elm1.id == elmId || (elm1.nodeName.toLowerCase() == 'img' && elm1.parentNode.parentNode.parentNode.id == elmId) || (elm1.nodeName.toLowerCase() == 'li' && elm1.parentNode.id == elmId)) && 					(elm2.id == elmId || (elm2.nodeName.toLowerCase() == 'img' && elm2.parentNode.parentNode.parentNode.id == elmId) || (elm2.nodeName.toLowerCase() == 'li' && elm2.parentNode.id == elmId)));			} catch(e) {				//alert('elm1: ' + elm1 + ' elm2: ' + elm2 + ' elmId: ' + elmId);							}		}		var currentEffect;		var dockActive = false;		var dockTitle;		if (!$('dock' + progId)) {			getFromWebTV('dido/listContent.dox','treeByProgId='+progId,'dockContainer'+index,function() {					var dock = new OsXDock();					var dockElements = $('dock'+progId).getElementsByTagName('img');					for (var j=0; j<dockElements.length; j++) {						Event.observe(dockElements[j],'mouseover',function(ev) {								var elm = Event.element(ev);								dock.enlarge(elm);								if (currentEffect) currentEffect.cancel();								currentEffect = new Effect.Appear('dockDetails'+progId,{ duration: 0.5, from: 0, to: 1});								if (!dockTitle)									dockTitle = $('dockDetails' + progId).innerHTML;								$('dockDetails' + progId).innerHTML = elm.parentNode.previousSibling.innerHTML;								//logDebug(elm.parentNode.previousSibling.innerText);							}, false);						Event.observe(dockElements[j],'mouseout',function(ev) {								var elm = Event.element(ev);								dock.reduce(elm);								if (currentEffect) currentEffect.cancel();								currentEffect = new Effect.Fade('dockDetails'+progId,{ duration: 0.5, from: 1, to: 0, afterFinish: function(e) {$('dockDetails' + progId).innerHTML = '';}});								//elm.parentNode.previousSibling.style.display  = 'none';							}, false);										}				});		}	}	function OsXDock() {		this.enlarge = enlarge;		this.reduce = reduce;				/*******************************************************************************			'Dock' style enlarging and reducing of DOM elements.					Copyright (C) Nick Jarman 2005. All rights reserved.		*******************************************************************************/				// Parameters which affect the display.		var	interval		= 10;	// How often the sizes of the items are adjusted									// (msec? - a setting of 10 seems to work OK, 									// though it seems quite fast)		var enlargeSteps	= 20;	// Number of steps used to enlarge an element		var enlargeStepSize	= 2;	// How many pixels are added to the width of an									// element in each enlargement step.		var reduceStepSize	= 1;	// How many pixels are subtracted from the width									// of an element in each reduction step. Take									// care to ensure that this is divisible by 									// enlargeSteps * enlargeStepSize.				// A few globals.		var	timeout			= null;		var enlargeElement	= -1;		var	dockElements	= new Array();									/*******************************************************************************			enlarge - call this function in your element's OnMouseOver event.		*******************************************************************************/		function enlarge(element)		{			// Check to see if this element is already known to us. If it is, it's 			// currently being reduced. Setting enlargeElement (see below) will stop			// this happening, and cause it to be enlarged.			elementIndex = findDockElement(element);			// It's not known to us, so we must note a few details, wrap them in an 			// instance of DockElement.			if (-1 == elementIndex)			{				dockElements[dockElements.length] = new DockElement(element, element.width, element.width + (enlargeStepSize * enlargeSteps));				elementIndex = dockElements.length - 1;			}			// Now we know which item in the dockElements array is the one to be			// enlarged. Note that only one item at a time can be enlarged (the one 			// under the user's pointer), but many can be reduced.			enlargeElement = elementIndex					// If there's no timeout set up, do so now.			if (null == timeout)			{				timeout = setTimeout(doResize, interval);			}		}						/*******************************************************************************			enlarge - call this function in your element's OnMouseOut event.		*******************************************************************************/		function reduce(element)		{			// Ensure that the element which is asking to be reduced is the one which			// is currently being enlarged...			if (enlargeElement == findDockElement(element))			{				// ...it is, so we indicate that no elements are being enlarged.				enlargeElement = -1;			}					// If there's no timeout set up, do so now.			if (null == timeout)			{				timeout = setTimeout(doResize, interval);			}		}						/*******************************************************************************			doResize - called when the timeout expires. Simply enlarges the element			registered for enlarging by one step, reduces all other elements by one 			step and checks whether	more enlarging or reducing is needed. If it is, 			another timeout is set.		*******************************************************************************/		function doResize()		{			keepEnlarging	= doEnlarge();			keepReducing	= doReduce();					if (keepEnlarging || keepReducing)			{				timeout = setTimeout(doResize, interval);			}			else			{				timeout = null;			}		}						/*******************************************************************************			doEnlarge - checks if there is an element to be enlarged, and if so, calls			the enlarge method of the relevant item in the dockElements array. Returns			a flag to indicate whether further enlargements are necessary.		*******************************************************************************/		function doEnlarge()		{			keepGoing = false;					if (-1 != enlargeElement)			{				keepGoing = dockElements[enlargeElement].enlarge();			}					return keepGoing;		}						/*******************************************************************************			doReduce - iterates through all items in the dockElements array. For each			element, providing it is not the one being enlarged, the reduce method is			called. Returns a flag to indicate whether further reductions are			necessary.		*******************************************************************************/		function doReduce()		{			keepGoing		= false;			tidyupNeeded	= false;					for (thisItem = 0; thisItem < dockElements.length; thisItem ++)			{				// Don't reduce the item which is being enlarged!				if (enlargeElement != thisItem)				{					if (dockElements[thisItem].reduce())					{						keepGoing = true;					}					else					{						// This element has been reduced back to its original size, so						// it is no longer necessary to keep it in the dockElements						// array. Set a flag to indicate it should be removed.						dockElements[thisItem].remove = true;						tidyupNeeded = true;					}				}			}					// If we have marked some items in the dockElements array for removal, now			// is the time to remove them.			if (tidyupNeeded)			{				tidyDockElements();			}						return keepGoing;		}						/*******************************************************************************			findDockElement - returns the index of the supplied element in the			dockElements array, or -1 if it does not exist.		*******************************************************************************/		function findDockElement(element)		{			thisItem	= 0;			found		= false;						while ((thisItem < dockElements.length) && !found)			{				if (dockElements[thisItem].element == element)				{					found = true;				}				else				{					thisItem ++;				}			}					return found ? thisItem : -1;		}						/*******************************************************************************			tidyDockElements - removes all items from the dockElements array whose			remove flag is set. This is done by copying all items without the flag set			to a temporary array, then asigning that array back to dockElements. Care 			must be taken to adjust the value of enlargeElement, since it is an index			into the array. Use of the splice method is avoided for compatibility with			browsers earlier than IE5.5.		*******************************************************************************/		function tidyDockElements()		{			var tempArray	= new Array();			var	tempEnlarge	= -1;					for (thisItem = 0; thisItem < dockElements.length; thisItem ++)			{				if (!dockElements[thisItem].remove)				{					tempArray[tempArray.length] = dockElements[thisItem];										if (thisItem == enlargeElement)					{						tempEnlarge = tempArray.length - 1;					}				}			}					dockElements = tempArray;			enlargeElement = tempEnlarge;		}						/*******************************************************************************			DockElement class, encapsulating a single element in the dock. This stores			the HTML element and its original and maximum sizes. There are methods for			enlarging and reducing the element's size by one step. An instance of this			class is added to the dockElements array for each element that the user's			pointer hovers over, so there's also a flag which is set when this instance			should be removed from the array.		*******************************************************************************/		function DockElement(element, originalSize, maxSize)		{			this.element		= element;			this.originalSize	= originalSize;			this.maxSize		= maxSize;			this.remove			= false;			this.enlarge		= dockElementEnlarge;			this.reduce			= dockElementReduce;		}						// Enlarge the element by one step, and return a flag indicating whether further 		// enlargement steps are possible.		function dockElementEnlarge()		{			if (this.element.width < this.maxSize)			{				this.element.width += enlargeStepSize;			}					return (this.element.width < this.maxSize);		}						// Reduce the element by one step, and return a flag indicating whether further		// reduction steps are possible.		function dockElementReduce()		{			if (this.element.width > this.originalSize)			{				this.element.width -= reduceStepSize;			}					return (this.element.width > this.originalSize);		}	}}if (typeof(DidoJSON)=='undefined') {	var DidoJSON = (function (webtvUrl) {		// Singleton		var instance = null;				return new function() {			this.getInstance = function(webtvUrl) {				if (instance == null) {					instance = new JsonDido(webtvUrl);		      instance.constructor = null;	      }	      return instance;			}		}					function JsonDido(webtvUrl) {			var jsonPath = 'dido/meta.dox?';			var timeJsonPath = 'dido/time.dox?';					var callbacks = new Object();			var data = new Object();			var isLoading = new Object();						var id=0;						var me = this;						this.getCurrentTime = function(onComplete,onFailure) {					id++;					me.get('timeNow',id,onComplete,onFailure,timeJsonPath,true);				}						this.get = function(datatype,id,onComplete,onFailure,path,forceFresh) {				try {					if (!forceFresh && data[datatype] && data[datatype][id]) {						onComplete(data[datatype][id]);					} else {						if (callbacks[datatype]==null)							callbacks[datatype] = new Object();						if (callbacks[datatype][id]==null)							callbacks[datatype][id] = new Array();						callbacks[datatype][id][callbacks[datatype][id].length] = onComplete;						if (!(isLoading[datatype] && isLoading[datatype][id]==true)) {							var paramName;							if (!path) path = jsonPath;							var completePath = webtvUrl + path + datatype + 'Id=' + id + '&callback=DidoJSON.getInstance().add';														var head = document.getElementsByTagName("head")[0];									if (!head) {								head = document.getElementsByTagName("body")[0];							}							var newScript = document.createElement('script');							newScript.type = 'text/javascript';							if (onFailure)								newScript.onerror = onFailure;													if (!isLoading[datatype])								isLoading[datatype] = new Object();							isLoading[datatype][id] = true;									newScript.src = completePath; //webtvUrl + buildAjaxUrl(path,parameters);							head.appendChild(newScript);						}					}				} catch(ex) {					logError(ex);					//onFailure(ex);				}			}					this.add = function(result) {				for (var datatype in result) {					if (datatype != 'success') {						id = result[datatype].id;						if (data[datatype]==null)							data[datatype] = new Object();						data[datatype][id] = result[datatype];						if (callbacks[datatype] && callbacks[datatype][id]) {							for (var i=0; i<callbacks[datatype][id].length;i++) {								try {									callbacks[datatype][id][i](result[datatype]);								} catch(e) { if(location.href.indexOf('debug=true')>0) {alert(e.message)}}							}							callbacks[datatype][id]=null; 						}						if (isLoading[datatype])							isLoading[datatype][id] = false;					}				}			}		}	})();}function TV2Rotator(index,progId) {	var rotatorPE;	var rotatorId = 0;	var rotatorTimeout = 5;	var delayId;	var rotatorPaused = false;	var rotatorDelayed = false;	var rotatorHasList = false;	var rotatorListLength = 5;	var player;	var selectedClassName = 'sSelected';	var separatedClassName = 'sSeparated';			this.load = function(loadRelated,onStartVideoClick) {				$('prePanel' + index).style.visibility = 'visible';		if ($('overlay' + index))			return;		$('rotator'+index).style.display = 'block';		var rotatorUrl = '../../site/TV/html/blank.html';		/*var rotatorUrl = '/webtv/dido/listOtherContent.dox?progId='+progId;		if (loadRelated) {			var rotatorUrl = '/webtv/dido/listRelatedContent.dox?progId='+progId;		}*/		var plElm = $('tv2VideoPlayer' + index);		var sizeElm = plElm.getElementsByTagName('div')[0];		//if (Element.hasClassName(sizeElm,'sumoBig')) rotatorUrl = rotatorUrl + '&layout=big';		var loader = new Ajax.Updater(			'rotator'+index, 			rotatorUrl, {					'method': 'get', 					'evalScripts': true,					'onComplete': function() {							try {								// fix all pngs if ie6								if (/MSIE ((5\.5)|6)/.test(navigator.userAgent) &&	navigator.platform == "Win32") {									var rotatorImages = $('rotator'+index).getElementsByTagName('img');									for (var k=0; k<rotatorImages.length;k++) {										var rotImg = rotatorImages[k];										if (/\.png$/i.test(rotImg.src) && (rotImg.className.indexOf('pngImg') || rotImg.className.indexOf('pngTextImg'))) {											var pngUrl = rotImg.src;											rotImg.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + pngUrl + "',sizingMethod='scale')";											rotImg.src = 'http://webtv.tv2.no/webtv/images/pixel.gif';										}														}															} 								var i=0;								while ($('rotatorButton' + progId + '-' + i)) {									Event.observe('rotatorButton' + progId + '-' + i,'click', function(e) {												var thisId = Event.element(e).id;												if (thisId.length==0)													thisId = Event.element(e).parentNode.id;												rotateTo(thisId.substring(thisId.length-1));												Event.stop(e);													}										,false);									i++;								}																								if (loadRelated) {									var j=0;									while ($('rotatorItem' + progId + j)) {										Event.observe('rotatorItem' + progId + j,'click', function(e) {													var elm = Event.element(e);													Event.stop(e);													while (elm.nodeName.toLowerCase()!='a') {														elm = elm.parentNode;													}																				onStartVideoClick(elm.getAttribute('progId'),false,elm.title);												}											,false);										j++;									}									/*									Event.observe('rotatorStartButton' + progId,'click', function(e) {												var elm = $('rotatorItem' + progId + getRotatorId());												onStartVideoClick(elm.getAttribute('progId'),false,elm.title);												Event.stop(e);											}										,false);									*/								} else {									/*									Event.observe('rotatorStartButton' + progId,'click', function(e) {												window.open($('rotatorItem' + progId + getRotatorId()).href,'_blank');												Event.stop(e);											}										,false);									*/								}								startRotator();							} catch(ex) {								logError(ex);							}						}});	}	function getBanner(treeId) {		var programTitle = 'TV 2 Sumo';		if (treeId) {			treeId = treeId + '';			switch(treeId) {				case '3312':					$('sumoBannerAd'+index).innerHTML = '<a href="http://pub.tv2.no/TV2/zebra/magasiner/manshow/" target="_blank"><img src="/webtv/dido/images/manshow_banner.jpg"></a>';						break;				case '2':					$('sumoBannerAd'+index).innerHTML = '<a href="http://webtv.tv2.no/sumo/?treeId=2" target="_blank"><img src="/webtv/dido/images/tv2sport_banner.jpg"></a>';						break;				case '2021':					$('sumoBannerAd'+index).innerHTML = '<a href="http://www.fredrikstadfk.no/" target="_top"><img src="/webtv/dido/images/FFK_banner.jpg"></a>';						break;				case '888':					$('sumoBannerAd'+index).innerHTML = '<a href="http://www.sonen.no" target="_blank"><img src="/webtv/dido/images/sonen_banner.jpg"></a>';						programTitle = 'Sonen direkte';						break;				case '333060':					$('sumoBannerAd'+index).innerHTML = '<a href="http://waschera.no" target="_blank"><img src="/webtv/dido/images/waschera_banner.jpg"></a>';					programTitle = 'Waschera direkte';						break;				default:					$('sumoBannerAd'+index).innerHTML = '<a href="http://tv2.no/sumo/" target="_blank"><img src="/webtv/dido/images/sumo_banner.jpg"></a>';						}		}	else {			$('sumoBannerAd'+index).innerHTML = '<a href="http://tv2.no/sumo/" target="_blank"><img src="/webtv/dido/images/sumo_banner.jpg"></a>';					}		return programTitle;	}			function setPlayer(pl) {		player = pl;	}		this.getBanner = getBanner;	this.setPlayer = setPlayer;			function startRotator() {		stopRotator();		rotatorId = 0;		if($('rotatorItem'+progId+rotatorId)!=null && $('rotatorItem'+progId+(rotatorId+1))) {			rotatorPE = new PeriodicalExecuter(rotate, rotatorTimeout);		}	}		function stopRotator() {		if (rotatorPE && rotatorPE.stop)			rotatorPE.stop();		rotatorPE = null;		rotatorId = 0;	}	function pauseRotator(delay) {			if (delay) {				window.clearTimeout(delayId);				delayId = window.setTimeout(function(){resumeRotator(true)},delay*1000);				rotatorDelayed = true;			}			rotatorPaused = true;	}	function getRotatorId() {		return rotatorId;	}	function resumeRotator(delayFinished) {		if (!rotatorDelayed || delayFinished) {			rotatorDelayed = false;			rotatorPaused = false;					}	}	function rotateTo(newId) {		newId = newId * 1;		pauseRotator();		var oldId = rotatorId;		rotatorId = newId;		if (newId == oldId) {			pauseRotator(20);			return;		}		// clean up last selected button		Element.removeClassName('rotatorButton' + progId + '-' + oldId,'sSelected');		if ($('rotatorButton'+progId + '-'+(oldId-1))) {			Element.addClassName('rotatorButton' + progId + '-' + (oldId-1),'sSeparated');		}		if ($('rotatorButton' + progId + '-' +oldId).className.indexOf('sLastButton')<0) {			Element.addClassName('rotatorButton' + progId + '-' + (oldId),'sSeparated');		}		// switch item text, if any		if ($('rotatorText' + progId + rotatorId)) {			Element.hide('rotatorText' + progId + (oldId));			Element.show('rotatorText' + progId + rotatorId);		}				// show new button		Element.removeClassName('rotatorButton' + progId + '-' + rotatorId,'sSeparated');		if ($('rotatorButton'+progId + '-' +(rotatorId-1))) {			Element.removeClassName('rotatorButton' + progId + '-' + (rotatorId-1),'sSeparated');		}		Element.addClassName('rotatorButton' + progId + '-' + rotatorId,'sSelected');		// show item image		if (oldId < newId) {			Effect.Appear('rotatorItem' + progId +(rotatorId), { 					duration: 0.5,					from: 0.0,					to: 1.0,					afterFinish: function(e) {						Element.hide('rotatorItem'+progId+(oldId));					}				});		} else {			Effect.Appear('rotatorItem'+progId+(rotatorId), { 					duration: 0.1,					from: 0.0,					to: 1.0				});			Effect.Appear('rotatorItem'+progId+(oldId), { 					duration: 0.5,					from: 1.0,					to: 0.0,					afterFinish: function(e) {						Element.hide('rotatorItem'+progId+(oldId));					}				});		}		pauseRotator(20);	}	function rotate() {		if (!(rotatorPaused || (player &&player.isPlaying()))) {			if($('rotatorItem'+progId+rotatorId)==null) {				stopRotator();			} else {				try {					rotatorId = rotatorId + 1;					if($('rotatorItem'+progId+rotatorId)==null) {						//debug('Last rotator item ' + rotatorId + ', starts over again');						Element.hide('rotatorItem'+progId+(rotatorId-1));						Element.removeClassName('rotatorButton'+progId + '-' + (rotatorId-1),'sSelected');						if ($('rotatorButton' + progId + '-' + (rotatorId-2))) {							Element.addClassName('rotatorButton'+progId + '-' + (rotatorId-2),'sSeparated');						}						rotatorId = 0;					}					//debug('Rotating to item ' + rotatorId);					if (rotatorId>0) {						if ($('rotatorText'+progId + (rotatorId-1)))							Element.hide('rotatorText'+progId + (rotatorId-1));						Element.removeClassName('rotatorButton'+progId + '-' + (rotatorId-1),'sSelected');						Element.removeClassName('rotatorButton'+progId + '-' + (rotatorId-1),'sSeparated');					}					if (rotatorId>1) {						Element.addClassName('rotatorButton'+progId + '-' + (rotatorId-2),'sSeparated');					}					if ($('rotatorText'+progId + rotatorId))						Element.show('rotatorText'+progId + rotatorId);					Element.removeClassName('rotatorButton' + progId + '-' + rotatorId,'sSeparated');					Element.addClassName('rotatorButton' + progId + '-' + rotatorId,'sSelected');					Effect.Appear('rotatorItem'+progId+(rotatorId), { 							duration: 0.5,							from: 0.0,							to: 1.0,							afterFinish: function(e) {								if (rotatorId>0) Element.hide('rotatorItem'+progId+(rotatorId-1));							}						});				} catch(e) {					logError(e);				}			}		}	}}function logError(ex,ex2) {	var e = ex;	if (ex2) e = ex2;	if (location.href.indexOf('debug=true')>0) {		alert((ex2?e + ':':'') + ex.name + '\n' + ex.message);					}}function logDebug(msg,msg2) {	if (location.href.indexOf('debug=true')>0) {		if ($('debugList'))			$('debugList').innerHTML = $('debugList').innerHTML + '<li>' + msg + (msg2?': ' + msg2:'') + '</li>';		else			window.status = msg;		}}	if (location.href.indexOf('local=true')>0) {		TV2Player.webtvUrl = '/webtv/';	} else {		TV2Player.webtvUrl = 'http://webtv.tv2.no/webtv/';	}TV2Player.insertPlayer = function (progId, isMainPlayer, injectElementId, autoplay, layoutId, design, clubname) {	// DEFINITIONS	var layouts = new Array();	layouts[0] = {className1: 'sumoSmall', className2: 'sumoNormal', bannerAd: true, related: true, useDefaultBW: true};	layouts[1] = {className1: 'sumoSmall', className2: 'sumoMini', bannerAd: true, related: true, useDefaultBW: true};	layouts[2] = {className1: 'sumoBig', className2: 'sumoMini', bannerAd: true, related: false};	layouts[3] = {className1: 'sumoBig', className2: 'sumoNormal', bannerAd: true, related: true};	layouts[4] = {className1: 'sumoBig', className2: 'sumoMedium2', bannerAd: true, relatedGallery: true};	layouts[5] = {className1: 'sumoSmall', className2: 'sumoMini', bannerAd: false, related: false, useDefaultBW: true};	layouts[6] = {className1: 'sumoSmall2', className2: 'sumoMini', bannerAd: false, related: false, useDefaultBW: true};	layouts[7] = {className1: 'sumoBig2', className2: 'sumoMini', bannerAd: false, related: false, useDefaultBW: true, gallery: false};	var webtvUrl = TV2Player.webtvUrl;		var logoname = 'sumologo';	if(clubname!=null){		logoname=clubname;	}		var scriptList;		if (location.href.indexOf("local=true")>0) {		scriptList = [webtvUrl + 'sumo/static-script/dido-player.js?debug=true&reload=true'];	} else {		scriptList = [webtvUrl + 'sumo/static-script/dido-player.js'];//,'http://ad.doubleclick.net/879366/DartPlayer_03_24.js'];	}		if (layoutId==null) layoutId = 0;	var layoutParamName = 'layout=';	var paramLoc = location.href.indexOf(layoutParamName);	if (paramLoc>0) {		layoutId = location.href.substring(paramLoc + layoutParamName.length,paramLoc + layoutParamName.length+1);	}		var layout = layouts[layoutId];			var isSafari = (navigator.userAgent.toLowerCase().indexOf('safari')>=0);	var cssLoaded = false;	function showInjectElement() {		if (injectElementId && document.getElementById(injectElementId))			document.getElementById(injectElementId).style.display = 'block';		cssLoaded = true;	}	function loadScripts(scripts,onComplete) {		var i=-1;		var finished = false;		loadNextScript();						function loadNextScript() {			i++;			if (i<scripts.length) {				var head = document.getElementsByTagName("head")[0];         				var newScript = document.createElement('script');				newScript.onload = loadNextScript;				newScript.type = 'text/javascript';				newScript.onreadystatechange=function(){if(newScript.readyState=='loaded' || newScript.readyState=='complete'){loadNextScript()}};				newScript.src =  scripts[i];				head.appendChild(newScript);				if (isSafari) {					loadNextScript();				}			} else if (onComplete && !finished) {				if (isSafari) {					finished = true;					tryOnComplete();				} else {					finished = true;					onComplete();				}			}		}				function tryOnComplete() {			try {				onComplete();			} catch(e) {				window.setTimeout(tryOnComplete,500);			}		}	}	if (location.href.indexOf('debug=true')>0 && (!injectElementId || !document.getElementById(injectElementId))) {		alert('Placeholder element not supplied.');		return;	}	var index;	if (isMainPlayer)		index = 0;	else		index = progId;	var imageDir = Math.floor(parseInt(progId)/1000);		// putting the css in the head part, complying to the HTML standard	var cssNode = document.createElement('link');	cssNode.type = 'text/css';	cssNode.rel = 'stylesheet';	if (cssNode.readyState == null) {		showInjectElement();	}	cssNode.onreadystatechange=function(){if(cssNode.readyState=='loaded' || cssNode.readyState=='complete'){showInjectElement()}};	//cssNode.href = 'http://webtv.tv2.no/multimedia/webtv/dido/player/miniplayer-3.1.css';	if (location.href.indexOf("local=true")>0) {		cssNode.href = webtvUrl + 'sumo/static-css/dido-player.css?debug=true&reload=true';	} else { 		cssNode.href = webtvUrl + 'sumo/static-css/dido-player.css';	}	cssNode.media = 'screen';	cssNode.title = 'TV2Player';	var h = document.getElementsByTagName("head")[0];	if (h)		h.appendChild(cssNode);	else		document.getElementsByTagName("body")[0].appendChild(cssNode);		if (injectElementId) {		loadScripts(scriptList,function() {			  /*			  if (location.href.indexOf('rotatorOnly=true')>0) {			    var rotator = new TV2Rotator(index,progId);	    		rotator.load();	    		var queryParams = location.search.toQueryParams();	    		rotator.getBanner(queryParams.treeId);	    			    			    	} else {*/					var player = new TV2Player(index,progId,autoplay,layout);					if (isMainPlayer) window.tv2video0 = player;					window.lastTV2Player = player;				//}			});	} else {		var sc = '';		for (var i=0; i<scriptList.length; i++) {			sc += '<script type="text/javascript" src="' + webtvUrl + scriptList[i] + '"></script>';		}		document.write(sc);	}		var c = '';		// multiple divs due to IE6 bug on CSS selectors with a combination of more than one class name for same element		c += '<div class="tv2Player" id="tv2VideoPlayer{index}" style="visibility: hidden">';	c += '<div class="' + (layout.className1?layout.className1:'') + '">'; // [small|big]	c += '<div class="' + (layout.className2?layout.className2:'') + '">'; // [<empty>|mini|medium]	c += '<div class="sumoPlayerBox ' + (design?design:'') + '">'; // [tv2no|nyhetene|sporten|(...)]	c+='  <a href="http://tv2.no/" ><div class="developedby">Utviklet av <b>TV 2 Sumo</b></div> </a> ';		c+='  <div class="prePanel" id="prePanel{index}">';	c+='    <div class="videoControls">';	if(design=='clubplayer'){			c+=' <img class="clublogo" src="http://webtv.tv2.no/webtv/dido/images/player/clubplayer/clublogo/'+logoname+'.png" >';	}else{	c+='      <a class="logoButton videoButton" href="http://tv2.no/" id="logoPreButton{index}"></a>';	}	c+='      <a class="playButton videoButton" title="Spill av" href="" id="startButton{index}"><span>Spill av</span></a>';	c+='      <a class="shareButton videoButton" title="Del med andre" href="" id="sharePreButton{index}"><span>Del med andre</span></a>';		if (layout.className1 == 'sumoSmall2') {	c+='			<span class="stopButton videoButton"></span>';	c+='			<span class="volDownButton videoButton"></span>';	c+='			<span class="soundButton videoButton"></span>';	c+='			<span class="volUpButton videoButton"></span>';	c+='			<span class="fullscreenButton videoButton"></span>';	}	c+='    </div>';	c+='    <div class="sumoPoster">';	c+='      <a href="" id="startImage{index}"><img class="posterImage" src="http://www.tv2.no/tvid/VMan-P{imageDir}/VMan-P{progId}.jpg">';	c+='        <span class="bwTestMessage"></span><span class="startBanner"></span></a>';	c+='    </div>';	c+='  </div>';	c+='  <div class="videoPanel" id="videoPanel{index}">';	c+='    <div class="ad" id="videoAdStart{index}"></div>';	c+='    <div class="ad" id="videoAdEnd{index}"></div>';	c+='    <div class="bg" id="bg{index}"></div>';	c+='    <div class="videoObject" id="video{index}"></div>';	c+='    <div class="videoControls" id="videoControls{index}">';	c+='      <a class="logoButton videoButton" href="http://tv2.no/" id="logoButton{index}"></a>';	c+='      <a class="playButton videoButton" title="Spill av/pause" href="" id="playButton{index}"><span>Spill av</span></a>';	c+='      <a class="stopButton videoButton" title="Stopp" href="" id="stopButton{index}"><span>Stopp</span></a>';	c+='      <a class="prevButton videoButton" title="G&aring; bakover" href="" id="prevButton{index}"><span>Bakover</span></a>';	c+='      <a class="nextButton videoButton" title="G&aring; forover" href="" id="nextButton{index}"><span>Forover</span></a>';		c+='      <div class="playerTime" id="playerTime{index}">';	c+='        <span class="timeElapsed" id="timeElapsed{index}"></span>';	c+='        <span class="timeSeparator" id="timeSeparator{index}">/</span>';	c+='        <span class="duration" id="duration{index}"></span>';	c+='      </div>';	c+='      <div title="Klikk for &aring; skifte posisjon i videoen" class="slider" id="slider{index}">';	c+='        <div class="progressBar" title="Klikk for &aring; skifte posisjon i videoen" id="progressBar{index}"></div>';	c+='        <div class="sliderButton" title="Klikk og dra for &aring; skifte posisjon i videoen" id="sliderButton{index}"></div>';	c+='      </div>';	c+='      <div class="playerStatus" id="playerStatus{index}"></div>';	c+='      <a class="volDownButton videoButton" title="Svakere lyd" href="" id="volDownButton{index}"><span>Lyd &divide;</span></a>';	c+='      <a class="soundButton videoButton" title="Demp" href="" id="muteButton{index}"><span>Demp</span></a>';	c+='      <a class="volUpButton videoButton" title="Sterkere lyd" href="" id="volUpButton{index}"><span>Lyd +</span></a>';	c+='      <a class="fullscreenButton videoButton" href="" title="Fullskjermsvideo" id="fullscreenButton{index}"><span>Full</span></a>';	c+='      <a class="toolsButton videoButton" title="Oppsett" href="" id="toolsButton{index}"><span>Endre...</span></a>';	c+='      <a class="shareButton videoButton" title="Del med andre" href="" id="shareButton{index}"><span>Del med andre</span></a>';	c+='    </div>';	c+='  </div>';	c+='  <div class="sRotator" id="rotator{index}"></div>';	c+='  <div class="sumoFeatures" id="features{index}">';	c+='  	<a href="" id="restoreVideo{index}" class="sumoRestoreVideo" title="Forstørr"><img class="sumoPreviewImage" src="http://www.tv2.no/tvid/VMan-P{imageDir}/VMan-P{progId}_162x92.jpg"></a>';	c+='  	<div class="sumoFeaturesHeader" id="featuresHeader{index}"/></div>';	c+='  	<div class="sumoFeaturesContent" id="featuresContent{index}"></div>';	c+='  </div>';	c+='  <div class="sumoBottom" id="sumoBottom{index}">';	c+='    <ul class="sumoRelatedList" id="relatedList{index}"></ul>';	c+='    <a class="shareButton2" href="" id="shareButton2{index}"></a>';	c+='    <a class="sumoButton" href="" target="_blank" id="sumoButton{index}"></a>';	c+='  </div>';	c+='  <div class="bannerAd" id="sumoBannerAd{index}"></div>';	c += '</div></div></div></div>';	if (!injectElementId) {			// NOT SUPPORTED YET		c += '<sc' + 'ript type="text/javascript">';  	c += 'try {';  	c += 'var mainPlayer = new TV2Player(';  	if (isMainPlayer)   		c += '{index}'  	else  		c += '{progId}';  	c += ',{progId}); } catch(e) { if(location.href.indexOf(\'debug=true\')>0) {alert(e.message)}}';  	c += '</sc' + 'ript>';	}	c = c.replace(/{index}/ig,index);	c = c.replace(/{progId}/ig,progId);	c = c.replace(/{imageDir}/ig,imageDir);		if (injectElementId) {		var elm = document.getElementById(injectElementId);		// TODO: Bedre metode for å sjekke om CSS-en er lastet.		if (!cssLoaded)			elm.style.display = 'none';		try {					elm.innerHTML = c; 				} catch(e) { if(location.href.indexOf('debug=true')>0) {alert(e.message)}};	} else {		document.write(c);	}}
