// Narrowstep Player v 1.3 JS include
// (c) www.narrowstep.com

var gMsg_DETECT_ERROR				= 'Error detecting browser capabilities, please refresh the page';
var gMsg_DETECT_BROWSER_ERROR		= 'Sorry, browser not compatible';
var gMsg_DETECT_BROWSER_ERROR_2		= 'Only Microsoft Internet Explorer supported currently<br>Please go to <a href=\"http://microsoft.com/downloads\">microsoft.com/downloads</a>';
var gMsg_DETECT_BROWSER_DIALOG_1	= 'There seems to be a problem with your system.';
var gMsg_DETECT_BROWSER_DIALOG_2	= 'Do you want to go ahead and try to test your bandwidth anyway?';
var gMsg_DETECT_TIMEOUT_DIALOG_1	= 'The time out (';
var gMsg_DETECT_TIMEOUT_DIALOG_2	= ' seconds) has elapsed while loading this file (';
var gMsg_DETECT_TIMEOUT_DIALOG_3	= ')\nDo you wish to restart the same test?';
var gMsg_DETECT_STARTING			= 'Starting bandwidth detection';
var gMsg_DETECT_ESTIMATE			= 'Estimated next chunk download time:';
var gMsg_DETECT_COMPLETE_1			= 'Bandwidth detection: Complete';
var gMsg_DETECT_COMPLETE_2			= 'Kb per second';
var gMsg_DETECT_COMPLETE_3			= 'Redirecting to settings page...';
var gMsg_DETECT_COOKIES_ERROR		= 'This channel REQUIRES COOKIES.\nPlease enable cookies and re-launch the player';
var gMsg_DETECT_UPDATING			= 'Updating bandwidth detection';
var KbpsDetectedCookieName		= "nsp1_Kbps_detected";
var KbpsDesiredCookieName			= "nsp1_Kbps_desired";
var KbpsDetectedChangedCookieName	= "nsp1_Kbps_detected_changed";
var vidStretchCookieName			= "nsp1_vidStretch";
var vidIndexCookieName			= "nsp1_vidIndex";
var pListCookieName				= "nsp1_plist";
var cookieCurrentURLName			= "nsp1_CurrentURL";
var cookieViewerIDName			= "nsp1_ViewerID";
var gImageURL						= "/assets/players/0208/images/";
var gPidQueryString				= "player=hightv";
var gDefaultVideoPostamble		= "&br=0&tid=2&brid=3";


// bandwidth test routines for nsp-detect.aspx
var btestfiles = new Array();
var redTestImages = false;
// hideous hack - i'm so very sorry....
// SHIVAJI 
//if (gPidQueryString == "player=hightv" || parent.gPidQueryString == "player=fieldhockey")
redTestImages = true;

if (redTestImages) {
	btestfiles[0] = new Array("tester-icon-seven.gif",       24287);
	btestfiles[1] = new Array("tester-icon-seven.gif",       24287);
	btestfiles[2] = new Array("tester-icon-sixteen.gif",     58686);
	btestfiles[3] = new Array("tester-icon-sixteen.gif",     58686);
	btestfiles[4] = new Array("tester-icon-thirtytwo.gif",  116336);
	btestfiles[5] = new Array("tester-icon-thirtytwo.gif",  116336);
	btestfiles[6] = new Array("tester-icon-fortyeight.gif", 173893);
	btestfiles[7] = new Array("tester-icon-fortyeight.gif", 173893);
	btestfiles[8] = new Array("tester-icon-sixtyfour.gif",  231726);
	btestfiles[9] = new Array("tester-icon-sixtyfour.gif",  231726);
} else {
	btestfiles[0] = new Array("tester-icon-grey-seven.gif",       41561);
	btestfiles[1] = new Array("tester-icon-grey-seven.gif",       41561);
	btestfiles[2] = new Array("tester-icon-grey-sixteen.gif",     74944);
	btestfiles[3] = new Array("tester-icon-grey-sixteen.gif",     74944);
	btestfiles[4] = new Array("tester-icon-grey-thirtytwo.gif",  148882);
	btestfiles[5] = new Array("tester-icon-grey-thirtytwo.gif",  148882);
	btestfiles[6] = new Array("tester-icon-grey-fortyeight.gif", 222820);
	btestfiles[7] = new Array("tester-icon-grey-fortyeight.gif", 222820);
	btestfiles[8] = new Array("tester-icon-grey-sixtyfour.gif",  296758);
	btestfiles[9] = new Array("tester-icon-grey-sixtyfour.gif",  296758);
}

var btestTimeOut = 60;		// seconds to time out whole test
var btestFileTimeOut = 5;	// seconds to time out test per file
var btestSlowestBytes = (56 * 1024 / 8) * 0.50;		// 56K modem at 75% speed
var btestMaxSecondsPerChunk = 20;
var btestNextChunkSeconds = 0;


//-----------------------------------
var timerID = 0;
var today = new Date();
var pageLoadStartTime = today.getTime();
var pageLoadEndTime = 0;
var imagesLoadEndTime = 0;

var imageNum = 0;
var imageDownloading = false;
var kbpsSoFar = 0;

var cacheDefeat;
if (location.search.match(/cd=off/)) {
	cacheDefeat = false;
} else {
	cacheDefeat = true;
}
var debug;

	debug = true;

var btestTotalBytes = 0;

//-----------------------------------

function evalBrowser() {
alert("evalBrowser");
	var ready = false;
	var msg = "";
	var msg2 = "";
	
	if (!bd) {
		alert(gMsg_DETECT_ERROR);
		return false;
	}
	bd.js_ver = javascriptVersion;
	if (bd.browser_ok) {
		msg = "Browser compatible: (" + bd.browser + " " + bd.majorver + "." + bd.minorver + ")";
		msg2 = "";
		if (bd.plugin_ok) {
			msg += " Plugin installed:  (version " + bd.wmp_ver + (bd.activex ? "[activex]":"") + ")";
			ready = true;
			btestStart();
		} else {
				var pref = "";				
				if (location.href.indexOf("/skins/") < 0 && gImageURL.indexOf(gPathToSiteRoot) == 0) {
					pref = "";
				} else {
					pref = gPathToSiteRoot + "";
				}
			if (bd.wmp_ver) {	// too old?
				window.location.replace(pref + "nsp-nowmpupgd.aspx?" + gPidQueryString);
			} else {					// no WMP
				window.location.replace(pref + "nsp-nowmp.aspx?" + gPidQueryString);
			}
		}
	} else if (!bd.cookies && typeof gRequireCookies != "undefined" && gRequireCookies) {	// special cookie disabled message
		alert(gMsg_DETECT_COOKIES_ERROR);
		msg = '<span class="TabTitle">Cookies disabled</span>';
		msg2 = gMsg_DETECT_COOKIES_ERROR.replace("\n", "<br>");
		writeTabMsg(msg);
		return;
	} else {
		var errs = "";
		for (var i = 0; i < bd.errors.length; i++) {
			errs += "    " + bd.errors[i] + LineEnd;
		}
		msg = '<span class="TabTitle"> ' + gMsg_DETECT_BROWSER_ERROR + '</span>';
		msg2 = errs.replace(/\n/, "<br>") + gMsg_DETECT_BROWSER_ERROR_2;
		
//		if (kbps_detected < 1) {	// detected bitrate before so straight to player
			if (confirm( gMsg_DETECT_BROWSER_DIALOG_1 + '\n' + errs + gMsg_DETECT_BROWSER_DIALOG_2)) {
				ready = true;
				btestStart();
			}
		}
//	}
	setTextID("msg2", msg);
	setTextID("msg3", msg2);
	clearTimeout(timerID);
	timerID = 0;
	return ready;
}

function btestRestart() {
	btestStop();
	setTextID("msg2", "Restarting test");
	
	setCookie(KbpsDetectedCookieName, "");
	setCookie(KbpsDetectedChangedCookieName, "");
	
	var q = location.search;
	if (cacheDefeat) {
		if (q)
			q = "&cd=off";
		else
			q = "?cd=off";
	}
	location.replace(location + q);
}

function testFailed() {
	//alert("test failed");
	
	clearTimeout(timerID);
	timerID = 0;
	if (imageDownloading) {
		imageDownloading = false;
		
		var r = confirm(gMsg_DETECT_TIMEOUT_DIALOG_1 + btestFileTimeOut + gMsg_DETECT_TIMEOUT_DIALOG_2 + imageNum + gMsg_DETECT_TIMEOUT_DIALOG_3);
		if (r) {
			btestRestart();
		} else {
			r = confirm("");
			if (r) {
				cacheDefeat = true;
				btestRestart();
			} else {
				setCookie(KbpsDetectedCookieName, -1);
				setCookie(KbpsDetectedChangedCookieName, "");
				//goSettings();
			}
		}
	}
}

function startFile( inImageNum ) {
	if (timerID) {
		clearTimeout(timerID);
		timerID = 0;
	}
	if (inImageNum < btestfiles.length-1) {
		var str = "";
		var pref = ""; //gPathToSiteRoot; //(gTabImageURL.indexOf("../../../") > -1) ? "../../../" : "";
		
		//if (location.href.indexOf("/skins/") < 0 && gImageURL.indexOf(gPathToSiteRoot) == 0) {
			pref = "images/";
		//} else {
		//	pref = gPathToSiteRoot + "images/";
		//}
		//str += "<img src=\"" + pref + "images/" + btestfiles[inImageNum][0];
		str += "<img src=\"" + pref + btestfiles[inImageNum][0];
		
		if (cacheDefeat) str += "?v=" + (pageLoadEndTime+inImageNum);
		
		str += "\" onload=\"btestNext();\" alt=\"\" width=\"0\" height=\"0\" border=\"0\">";
//		alert(str);
		//setTextID("img" + (inImageNum + 1), str);
		setTextID("img1", str);
		imageDownloading = true;
		
		btestFileTimeOut = Math.round(btestfiles[inImageNum][1] / btestSlowestBytes);
		timerID = setTimeout("testFailed();", btestFileTimeOut * 1000);
	} else {
		btestFinished();
	}
}

function btestStop() {
	if (timerID) clearTimeout(timerID);
	timerID = 0;
	imageNum = btestfiles.length;	
}



function btestStart() {
	setTextID("msg2", gMsg_DETECT_STARTING);
	
	imageNum = 0;
	startFile(imageNum);
	btestTotalBytes = 0;
}

function btestNext() {
	imageDownloading = false;
	if (imageNum < btestfiles.length-1) {
		btestTotalBytes += btestfiles[imageNum][1];
		var todo = "";
		btestUpdate();
		if (btestNextChunkSeconds < btestMaxSecondsPerChunk ) {
			imageNum++;
			todo = "startFile("+imageNum+");";		
		} else {
			todo = "btestFinished();";
		}
	} else {
		todo = "btestFinished();";
	}
	clearTimeout(timerID);
	timerID = setTimeout(todo, 100);	// quick one!
}

function btestUpdate() {

	var today = new Date();
	var currentTime = today.getTime();
	var e = (currentTime - pageLoadEndTime) / 1000; //time in seconds
	
	if (e < btestTimeOut) {
		kbpsSoFar = Math.round(btestTotalBytes * 800 / (e * 1024.0) / 100); // kbps
		var m = gMsg_DETECT_UPDATING + "(" + kbpsSoFar + "Kbs)";
		for (var i=0; i < imageNum; i++) {
			m += ".";
		}
		var m2 = "";
		if (imageNum < btestfiles.length-1) {
			btestNextChunkSeconds = Math.round(btestfiles[imageNum+1][1] * 8 / kbpsSoFar / 1024 * 1.5);
			m2 = '<span class="sm">' + gMsg_DETECT_ESTIMATE + ' ' + btestNextChunkSeconds +"</span>";
		} else {
			btestNextChunkSeconds = 0;
		}
		setTextID("msg2", m);
		setTextID("msg3", m2);
	} else {
		alert("Timed out");
		btestFinished();
	}
}

function btestFinished() {
	if (timerID) clearTimeout(timerID);
	timerID = 0;
	
	var today = new Date();
	imagesLoadEndTime = today.getTime();
	
	var e = (imagesLoadEndTime - pageLoadEndTime) / 1000; //time in seconds
	var c = Math.round(btestTotalBytes * 800 / (e * 1024.0) / 100); // KiloBytes per second
	var st;
	if(c<512)
	{
	    st="your connection speed " + c + "k is lower than recommended for viewing most channels";
	}
	else
	{
	    st="your connection speed, " + c + "k is ok for viewing most channels";
	} 
	setTextID("img1", "<img src='images/spacer.gif'>"); 
	//setTextID("msg2", gMsg_DETECT_COMPLETE_1 + ' ' + c + ' ' + gMsg_DETECT_COMPLETE_2);
	setTextID("msg2", st);
	//setTextID("msg3", '<span class="sm">' + gMsg_DETECT_COMPLETE_3 + '</span>');
	
	imageNum = btestfiles.length;
	
	setCookie(KbpsDetectedCookieName, c, 30);
	setCookie(KbpsDetectedChangedCookieName, 1);
	setCookie(vidStretchCookieName, 1, 30);
	kbps_detected = c;
	kbps_detected_changed = 1;
	var str = "goSettings();";
	//timerID = setTimeout(str, 1000);
}

var gDetectLoadTid = 0;	// interval to try again to allow top page to load properly
function init() {	// called by window.onLoad
	var t = new Date();
	pageLoadEndTime = t.getTime();
	btestStart();
}
