var img_bad = new Image(30,30);
var img_good = new Image(30,30);
var img_waiting = new Image(30,30);
var img_question = new Image(30,30);
var img_caution = new Image(30, 30);
img_bad.src  = "./images/redx.gif";
img_good.src = "./images/greencheck.gif";
img_question.src = "./images/questionmark.jpg";
img_caution.src = "images/Caution.png";
img_waiting.src = "./images/wait30.gif";

var is_ie=false;
var mac, win, old, lin; 
var myVer = 'Unknown';
var verAction='Upgrade Current Browser';
var mediaType;
var flashPlayer;
var files=["200k.html", "300k.html", "400k.html", "500k.html", "750k.html", "1MEG.html"];

var fileSizes=[200,300,400,500,750,1000];
var testRuns=0;

var detectableWithVB = false;


function testOSAndBrowser(){
	//addTableRow(3,img_bad,'Browser Version',myVer,verAction,link,'Upgrade Browser');
	var osName = undefined;
	var osAction = undefined;
	var browserAction = undefined;
	var browserName = undefined;
	var browserVersion = undefined;
	var version = 0;
	var downloadLink = undefined;
	
	try {
		version = parseFloat(ChorusCall.Browser.version);
	} catch(e) {
		//swallow exception
		browserVersion = 0;
	}
	
	var validBrowser = false;
	var validOS = false;

	if (ChorusCall.Browser.isWindows) {
		osName = "Windows";
		validOS = true;
	} else if (ChorusCall.Browser.isMacOSX) {
  		osName = "Mac OS X";
  		validOS = true;
	} else if (ChorusCall.Browser.isMacOS) {
		osName = "Mac OS";
		validOS = true;
	} else {
		osName = "Other";
	}

	if (ChorusCall.Browser.isInternetExplorer) {
		browserName = "Internet Explorer";
		browserVersion = version;
		
		if (version >= 6.0) {
			validBrowser = true;
		} else {
			downloadLink = "http://www.microsoft.com/windows/internet-explorer/default.aspx";
		}
	} else if (ChorusCall.Browser.isSafari) {
		browserName = "Safari";
		if (version >= 2) {
			browserVersion = "Greater than 2.0.0";
			validBrowser = true;
		} else {
			browserVersion = "Less than 2.0.0";
			downloadLink = "http://www.apple.com/safari/download/";
		}
	} else if (ChorusCall.Browser.isChrome) {
		browserName = "Chrome";
		browserVersion = version;
		
		if (version >= 3.0) {
			validBrowser = true;
		} else {
		
			downloadLink = "http://www.google.com/chrome";
		}
	} else if (ChorusCall.Browser.isFirefox) {
		browserName = "Firefox";
		browserVersion = version;
		if (version >= 2.0) {
			validBrowser = true;
		} else {
			downloadlink = "http://www.getfirefox.com";
		}
	} else {
		browserName = "Other";
		browserVersion = version;
		if (ChorusCall.Browser.isWindows) {
			downloadLink = "http://www.microsoft.com/windows/internet-explorer/default.aspx";
		} else {
			downloadLink = "http://www.getfirefox.com/";
		}
	}
	
	
	if (validOS) {
		addTableRow(5, img_good, 'Operating System', osName, '----------', '----------');		
	} else {
		addTableRow(5, img_bad, 'Operating System', osName, 'Please use a Windows PC or Mac', '----------');
	}
	
	if (validBrowser) {
		addTableRow(2, img_good, 'Browser Name', browserName, '----------', '----------');
		addTableRow(3, img_good, 'Browser Version', browserVersion, '----------', '----------');
	} else {
		if (browserName != "Other") {
			addTableRow(2, img_bad, 'Browser Name', browserName, 'Upgrade to the most recent version of '  + browserName, "<a href=\"" + link + "\"/>");
		} else {
			addTableRow(2, img_bad, 'Browser Name', browserName, 'Please use a Windows PC or Mac with Internet Explorer, Firefox, Google Chrome or Safari', '----------');
		}
	}
}

function testPopUp(){
  //popup test
  var popUpsBlocked = "----------";
  var reslt = "Not Blocked";
  var popUpPass = 1;
  try {
    var mine = window.open('','','width=0,height=0,left=0,top=0,scrollbars=no');
    mine.close()
  } catch(err){
    popUpsBlocked = "Enable Pop-Ups, however this item is not critical for your event.";
    reslt = "Blocked";
    popUpPass = 0;
  }
  if(popUpPass==0){
    addTableRow(1,img_caution,"Pop-Ups",reslt,popUpsBlocked,"javascript:gotoLink('popupnotice')","How To...");
  }
  else
    addTableRow(1,img_good,"Pop-Ups",reslt,popUpsBlocked,"----------");
}

//Attempt to detect Real Player plugin
function QTDetect() {
  var pluginFound = detectPlugins('QuickTime');
  // if not found, try to detect with VisualBasic
  if(!pluginFound && detectableWithVB) {
    pluginFound = detectQuickTimeActiveXControl();
  }
  return pluginFound;
}

function FlashDetect() {
  var pluginFound = detectPlugins('Shockwave Flash');
  // if not found, try to detect with VisualBasic
  if(!pluginFound && detectableWithVB) {
    pluginFound = detectActiveXControl("ShockwaveFlash.ShockwaveFlash");
  }
  return pluginFound;
}

function WMDetect() {
  var pluginFound = detectPlugins('Windows Media');
    // if not found, try to detect with VisualBasic
  if(!pluginFound && detectableWithVB) {
    pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
  }
  return pluginFound;
}

function detectPlugins() {
  // allow for multiple checks in a single pass
  // consider pluginFound to be false until proven true
  var allFound = false,numFound=0,i=0,j=0,
      requestCt=arguments.length,pluginsArrayLength=0,
      currentPlugin=null,currentName='';
  // if plugins array is there and not fake
  if (navigator.plugins && navigator.plugins.length > 0) {
    pluginsArrayLength = navigator.plugins.length;
  }
  // for each plugin...
  for (i=0; (i < pluginsArrayLength)&&!allFound; i++) {
    currentPlugin=navigator.plugins[i];
    // loop through all desired names and check each against the current plugin name
    for(j=0; j < arguments.length; j++) {
      currentName=arguments[j];
      // if desired plugin name is found in either plugin name or description
      if((currentPlugin.name.indexOf(currentName) >= 0) ||
         (currentPlugin.description.indexOf(currentName) >= 0)) {
        // this name was found
        numFound++;
      }
    }
    // now that we have checked all the required names against this one plugin,
    // if the number we found matches the total number provided then we were successful
    allFound = (numFound == requestCt);
    numFound=0;
  }
  return allFound;
} // detectPlugins

function testPlayers(){
  var playerReport="";
  var playerPass=false;
  var wmp=null;
  var flash=null;
  if(canDetectPlugins()){
    wmp = WMDetect();
    flash = FlashDetect();
    if(!ChorusCall.Browser.isInternetExplorer && !flash){
      playerReport="Must have Adobe's Flash Player installed with Non-IE Browser";
    }else if(flash){
      playerReport="Adobe's Flash Player";
      playerPass = true;
    }else if(wmp){
      playerReport="Windows Media Player";
      playerPass = true;
      var player;
      try
      {
        if(window.ActiveXObject){
          player = new ActiveXObject("WMPlayer.OCX.7");
        }
      }
      catch(e){
        playerReport=playerReport+" Version-6.4";
        playerPass = false;
      }
      if (player){
        var versionString = player.versionInfo;
        playerReport=playerReport+" Version-"+versionString;
      }
    }else if(flash && !wmp){
      playerReport="Adobe Flash Player";
      playerPass = true;
    }else{
      playerReport = "No Compatible Player/Browser Combination Found."
    }
  }
  if(playerPass){
    addTableRow(8,img_good,"Media Player(s)",playerReport,"----------","----------");
  }else{
    var playerURL = "http://get.adobe.com/flashplayer/";
    var playerName = "Flash Player";
    if(is_ie){
     playerName = "Windows Media Player";
     playerURL = "http://download.microsoft.com/download/0/9/5/0953E553-3BB6-44B1-8973-106F1B7E5049/wmp11-windowsxp-x86-enu.exe";
    }
    addTableRow(8,img_bad,"Media Player(s)",playerReport,playerName,playerURL,"Download "+playerName);
  }
}

function canDetectPlugins() {
  return ( detectableWithVB || (navigator.plugins && navigator.plugins.length > 0) );
}
//speed test

function gotoLink(link){
  document.getElementById(link).style.display='block';
  document.location.href='#'+link;
}

function writeSpeed(dt){
  var spd_kbits;                // Kb/sec rounded
  var spd_kbytes;                // KB/sec rounded
  var kbps;                  // Kb/sec rounded
  var linespeed;                // raw Kb/sec
  var dataSize = 50;               // data file size
  var dt = dt/1000;
  if(dt < .15 && testRuns<6){
    dataSize = fileSizes[testRuns];
    frames['speed'].location.href=files[testRuns]+"?rand="+Math.random();
    testRuns++;
  }else{
    linespeed = dataSize/dt;              // raw Kb/sec
    kbps = (Math.round((linespeed*8)*10))/10;      //round.KbPS
    spd_kbytes = (Math.round((dataSize*10)/dt))/10;    //round.KBPS
    spd_kbits = (Math.round(((dataSize*8)*10)/dt))/10;  //round.KbPS
    if(kbps<45){
      addTableRow(7,img_bad,"Download Speed",spd_kbits+" kbps : "+spd_kbytes+" KB/s","Increase Bandwidth","----------");
    }else{
      addTableRow(7,img_good,"Download Speed",spd_kbits+" kbps : "+spd_kbytes+" KB/s","----------","----------");
    }
  }
}

function testDownloadSpeed(){
  frames['speed'].location.href="50k.html?rand="+Math.random();
}

function testCookie(){
	document.cookie = "testCookie=testValue";

	if(document.cookie.indexOf('testCookie') == -1){
		addTableRow(6,img_bad,"Session Cookies","Blocked","Enable Cookies","javascript:gotoLink('cookienotice')","How To...");
	}else{
		addTableRow(6,img_good,"Session Cookies","Not Blocked","----------","----------");
	}
}

//Test Passed or Test Does not require link
function addTableRow(){
  var tbl = document.getElementById('rt');
  var args = addTableRow.arguments;
  var tdOne,tdThree,tdFour,tdFive, image, nextImage;
  image = document.getElementById("image"+args[0]);
  if(image)
    image.src = args[1].src;
  if (args[0]<10)
    nextImage = document.getElementById("image"+(args[0]+1));
  tdThree = document.getElementById("r"+args[0]+"c3");
  tdFour = document.getElementById("r"+args[0]+"c4");
  tdFive = document.getElementById("r"+args[0]+"c5");
  tdThree.innerHTML=args[3];
  tdFour.innerHTML = args[4];
  if(args[5].indexOf("---")!=-1){
    // updates cell without link
    tdFive.innerHTML += args[5];
  }else{//Link
    // updates cell with link
    var nodeLink= document.createElement("a");
    nodeLink.href=args[5];
    nodeLink.appendChild(document.createTextNode(args[6]));
    tdFive.appendChild(nodeLink);
  }
}

function testStreaming(){
  var image1 = document.getElementById("image1");
  image1.src = img_waiting.src;
  image1.style.visibility = 'visible';

  //by even getting here we know JavaScript works :)
  addTableRow(4, img_good, 'JavaScript Enabled', "Yes", '----------', '----------');
  
  testPopUp();
  testCookie();
  testOSAndBrowser();
  testPlayers();
  testDownloadSpeed();
  document.getElementById("buttons").style.display = "block";
  document.getElementById("recomendedActions").style.display = "block";
  document.getElementById("optionalActions").style.display = "block";  
}

function testPresenter(){
    var image1 = document.getElementById("image1");
    image1.src = img_waiting.src;
    image1.style.visibility = 'visible';

    //Run Browser Stuff
    setCookie("testCookie", "testCookie", null, false, false, false);
    testPopUp();
    testCookie();
    testBrowser();
    testApplet();  
    testDownloadSpeed();
  }

function changeToYes(imageID){
  document.getElementById(imageID).src = img_good.src;
  try{
    if(is_ie){
      if(document.MediaPlayer1)document.MediaPlayer1.Play();
      if(document.MediaPlayer2)document.MediaPlayer2.Play();
    }
  }
  catch(err)
  {  }
}
function didNotCannot(imageID,link){
  document.getElementById(imageID).src = img_bad.src;
  document.getElementById(link).style.display='block';
  document.location.href='#'+link;
}

var myVer = 'Unknown';
var link='http://browser.netscape.com/ns8/';
var appAction='----------';
var verAction='Upgrade Current Browser';

var version = null;
var vendor = null;

function setJVMVals(){
    var args = setJVMVals.arguments;
    version = args[0];
    vendor = args[1];
}

function testApplet(){


    var agt=navigator.userAgent.toLowerCase();
    var isTestable = false;


    if (agt.indexOf("msie") != -1 ||
	    agt.indexOf("netscape") != -1 ||
	    agt.indexOf("firefox") != -1 ||
	    agt.indexOf("safari")) {
	isTestable = true;
    }

    var verLink = "----------";
    var venLink = verLink;
    var sug1="----------";
    var sug2="----------";

    	if(version==null && vendor==null && isTestable){
    		try{

    		version = document.applets.sniff.getVersion();
    		vendor = document.applets.sniff.getVendor();
    		document.applets.sniff.stop();
    	
    		}catch(e){			
    			version = null;
    			vendor = null;
    		}
    	}

     if((vendor==null && version==null) ||(vendor.indexOf("null")!=-1 && version.indexOf("null")!=-1) ){
    	vendor = "JVM Not Found";
    	version = vendor;
    	sug1="Enable or Install JVM";
    	sug2="Not Detected";
    	verLink="http://jdl.sun.com/webapps/download/AutoDL?BundleId=10342";
    	venLink = verLink;
    	
    	addTableRow(11,img_bad,"JVM Vendor",vendor,sug1,verLink,"Download JVM");	
    	

    	
    	}else if((vendor.indexOf("Sun")!=-1 || vendor.indexOf("Apple") != -1) && version.indexOf("1.3")!=-1){		
    		
    		//Not Sun 1.3_? so it passes		
    		//Vendor Good		
    		//Version Bad
    		verLink="http://jdl.sun.com/webapps/download/AutoDL?BundleId=10342";
    		sug1="Sun JVM Good";
    		sug2="Version 1.3 Needs Upgraded.";		
    		venLink = verLink;				
    		
    		addTableRow(11,img_good,"JVM Vendor",vendor+" Version: "+version,venLink,venLink);		
    		
    		}else{
    			addTableRow(11,img_good,"JVM Vendor",vendor+" Version: "+version,venLink,venLink);
    			
    			}
    			
    	
    	
    	document.getElementById("buttons").style.display = "block";	
    }