var g_bJavascript = false;
var g_bPopupBlocker = false;
var g_bBrowser = false;
var g_bCookie = false;
var g_bFlash = false;
var g_bCompleted = false;
var g_iFlashVersionFound = 0;

var g_iRequiredMajorFlashVersion = 10;
var g_iRequiredMinorFlashVersion = 0;
var g_iRequiredFlashRevision = 0;
var g_bProductInstall;

var g_iPopupBlockerTimeout;
var g_iIssueCount = 0;
var g_iTotalChecks = 5;
var g_iChecks = 0;

var g_cRefreshLink;

var g_iTimerID;
var g_oPopUpWin;

function window_onLoad()
{
  g_cRefreshLink = g_cShowFloorServerAddress + "/scripts/Server.nxp?LASCmd=AI:4;F:APIUTILS!10";
  
  if (g_cShowKey != "NULL" && g_cShowKey.substr(0,2) != "::")
    g_cRefreshLink += "&ShowKey=" + g_cShowKey;
    
  if (g_cShowKey == "NULL" || g_cShowKey.substr(0,2) == "::" || g_cShowTitle == "" || g_cShowTitle == "NULL")
    document.getElementById("ShowTitleSpan").style.display = "none";
  else
    document.getElementById("ShowTitleSpan").style.display = "";
  
  if (g_cSystemCheckHelpText == "NULL")
    g_cSystemCheckHelpText = "  ";
  g_cSystemCheckHelpText = escape(g_cSystemCheckHelpText);

  if (g_cFlashVersionRequired != "NULL" && g_cFlashVersionRequired.substr(0,2) != "::")
    g_iRequiredMajorFlashVersion = parseInt(g_cFlashVersionRequired);

  if (g_iRequiredMajorFlashVersion == null || isNaN(g_iRequiredMajorFlashVersion))
    g_iRequiredMajorFlashVersion = 10;
  else
    g_cRefreshLink += "&FlashVersionRequired=" + g_iRequiredMajorFlashVersion;

  if (g_cSuppressLoginLink == "1")
    document.getElementById("ShowLoginLink").style.display = "none";
    
  if (g_cSuppressLoginLink != "NULL" && g_cSuppressLoginLink.substr(0,2) != "::")
    g_cRefreshLink += "&SuppressLoginLink=" + g_cSuppressLoginLink;    
    
  if (g_cSuppressPoweredBy == "1")
    document.getElementById("PoweredByRow").style.display = "none";

  if (g_cSuppressPoweredBy != "NULL" && g_cSuppressPoweredBy.substr(0,2) != "::")
    g_cRefreshLink += "&SuppressPoweredBy=" + g_cSuppressPoweredBy;        

  if (g_cDisplayItem != "NULL" && g_cDisplayItem.substr(0,2) != "::")
    g_cRefreshLink += "&DisplayItem=" + g_cDisplayItem;
        
  if (g_cHelpLink != "NULL" && g_cHelpLink.substr(0,2) != "::" && g_cHelpLink.length>0)
  {
    document.getElementById("HelpLinkRow").style.display = "";
    g_cRefreshLink += "&HelpLink=" + encodeURIComponent(g_cHelpLink);
  }
 
  if (g_cLangLocaleID != "NULL" && g_cLangLocaleID.substr(0,2) != "::" && g_cLangLocaleID.length > 0)
    g_cRefreshLink += "&LangLocaleID=" + g_cLangLocaleID;
     
  
  if (g_cAPILL != "" && g_cAPILL != "NULL")
  {
    g_cShowLoginLink = g_cShowFloorServerAddress + g_cAPILL;
    g_cRefreshLink += "&APILoginLink=" + encodeURIComponent(g_cAPILL);
  }
    
  startSytemCheck();
}

function startSytemCheck()
{
  var oElem = document.getElementById("RunSystemCheck");
  oElem.value = g_cMessages[0];
  oElem.disabled = true;
  
  resetResults();
  runJavascriptCheck();
}

function restartSytemCheck()
{
  NavigateWindow(null,g_cRefreshLink,false);
}

function resetResults()
{
  g_iChecks = 0;
  g_iIssueCount = 0;
  g_bJavascript = false;
  g_bPopupBlocker = false;
  g_bBrowser = false;
  g_bCompleted = false;
  
  var oResultsElem = document.getElementById("JavascriptResult");
  var oResultsImage = document.getElementById("JavascriptResultImage");
  var oHelpElem = document.getElementById("JavascriptHelp");

  resetResultDisplay(oResultsImage,oHelpElem);

  oResultsElem = document.getElementById("BrowserResult");
  oResultsImage = document.getElementById("BrowserResultImage");
  oHelpElem = document.getElementById("BrowserHelp");

  resetResultDisplay(oResultsImage,oHelpElem);	

  oResultsElem = document.getElementById("PopupBlockerResult");
  oResultsImage = document.getElementById("PopupBlockerResultImage");
  oHelpElem = document.getElementById("PopupBlockerHelp");

  resetResultDisplay(oResultsImage,oHelpElem);

  oResultsElem = document.getElementById("CookieResult");
  oResultsImage = document.getElementById("CookieResultImage");
  oHelpElem = document.getElementById("CookieHelp");

  resetResultDisplay(oResultsImage,oHelpElem);
  
  oResultsElem = document.getElementById("FlashResult");
  oResultsImage = document.getElementById("FlashResultImage");
  oHelpElem = document.getElementById("FlashHelp");
  document.getElementById("FlashExpressInstall").style.display = "none";
  
  resetResultDisplay(oResultsImage,oHelpElem);
}

function runJavascriptCheck()
{
  g_bJavascript = true;
  g_iChecks++;
  
  var oResultsElem = document.getElementById("JavascriptResult");
  var oResultsImage = document.getElementById("JavascriptResultImage");
  var oHelpElem = document.getElementById("JavascriptHelp");
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";F:APIUTILS!12&SystemCheckHelpText=%20&LangLocaleID=" + g_cLangLocaleID;
  updateResultDisplay(oResultsImage,oHelpElem,g_bJavascript,cURL);

  runBrowserCheck();
}

function runPopupBlockerCheck()
{
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";O:PopupBlockerTestPage.htm";
  var cFeatures = "toolbar=no,scrollbars=no,status=no,left=100,top=100,width=10,height=10,resizable=no,menubar=no,location=no";
  g_oPopUpWin = window.open(cURL,"PopupBlockerTestPage",cFeatures);
  if (g_oPopUpWin)
  {
    g_oPopUpWin.blur();
    window.focus();
    g_iPopupBlockerTimeout = setTimeout("PopupBlockerTimeout()", 4000);		
  }
  else
  {
    PopupBlockerCallback(false);
  }
}

function PopupBlockerTimeout()
{
  if (!g_bPopupBlocker)
    PopupBlockerCallback(false);
}

function PopupBlockerCallback(bPopupBlocker)
{
  if (g_oPopUpWin)
  {
    g_oPopUpWin.close();
    clearInterval(g_iPopupBlockerTimeout);
  }
  
  g_bPopupBlocker = bPopupBlocker;
  g_iChecks++;
 
  var oResultsElem = document.getElementById("PopupBlockerResult");
  var oResultsImage = document.getElementById("PopupBlockerResultImage");
  var oHelpElem = document.getElementById("PopupBlockerHelp");
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";F:APIUTILS!14&LangLocaleID=" + g_cLangLocaleID + "&SystemCheckHelpText=" + g_cSystemCheckHelpText;
  updateResultDisplay(oResultsImage,oHelpElem,g_bPopupBlocker,cURL);
}

function runBrowserCheck()
{
  g_iChecks++;
  
  var bIE = false;
  var bFirefox = false;
  var bNetscape = false;
  var bSafari = false;
  var bChrome = false;
  var iBrowserType = -1;
  var iBogusBrowserVariant = 0;

  var cUserAgent = window.navigator.userAgent;
  var cAppName = window.navigator.appName;

  bIE = (cUserAgent.indexOf("MSIE") >= 1);
  bFirefox = (cUserAgent.indexOf("Firefox") > 0);
  bNetscape = (cUserAgent.indexOf("Netscape") > 0);
  bSafari = (cUserAgent.indexOf("Safari") >= 0 && (cUserAgent.indexOf("3.") > 0 || cUserAgent.indexOf("4.") > 0));
  bChrome = (cUserAgent.indexOf("Chrome/") > 0);

  if (bIE)
  {
    // IE4
    if (cUserAgent.indexOf("MSIE 4.0")>=1)
      iBrowserType = 0;

    // IE5
     if (cUserAgent.indexOf("MSIE 5.0")>=1)
       iBrowserType = 1;

    // IE5.5
    if (cUserAgent.indexOf("MSIE 5.5")>=1)
      iBrowserType = 2;

    //IE6
    if (cUserAgent.indexOf("MSIE 6.0")>=1)
      iBrowserType = 3;

    //IE7
    if (cUserAgent.indexOf("MSIE 7.0")>=1)
      iBrowserType = 4;

    //IE8
    if (cUserAgent.indexOf("MSIE 8.0")>=1)
      iBrowserType = 5;
  }
  else if (bFirefox)
  {
/* no longer supported...
    if (cUserAgent.indexOf("Firefox/1.0") > 0)
      iBrowserType = 7;

    if (cUserAgent.indexOf("Firefox/1.5") > 0)
      iBrowserType = 8;

    if (cUserAgent.indexOf("Firefox/2.0") > 0)
      iBrowserType = 9;
*/

    if (cUserAgent.indexOf("Firefox/3") > 0)
      iBrowserType = 9;

    if (cUserAgent.indexOf("Firefox/3.5") > 0)
      iBrowserType = 10;

    if (cUserAgent.indexOf("Firefox/3.6") > 0)
      iBrowserType = 9;
  }
  else if (bNetscape)
  {
    var appVer = parseInt(navigator.appVersion);
    if (appVer >= 6)
      iBrowserType = 13;
    else if (appVer >= 4)
      iBrowserType = 12;
    else if (appVer >= 3)
      iBrowserType = 11;
    else
      iBrowserType = 10;
  }

  if (cUserAgent.indexOf("MSN 2.5") >= 0)
    iBogusBrowserVariant = 1;

  if (cUserAgent.indexOf("MSN 2.6") >= 0)
    iBogusBrowserVariant = 2;

  if (cUserAgent.indexOf("AOL 6.0") >= 0)
    iBogusBrowserVariant = 3;

  if (cUserAgent.indexOf("AOL 7.0") >= 0)
    iBogusBrowserVariant = 4;

  if (cUserAgent.indexOf("AOL 8.0") >= 0)
    iBogusBrowserVariant = 5;

  if (cUserAgent.indexOf("AOL 8.0") >= 0)
    iBogusBrowserVariant = 6;

  if (cUserAgent.indexOf("AOL 9.0") >= 0)
    iBogusBrowserVariant = 7;

  if (cUserAgent.indexOf("MSN 6") >= 0)
    iBogusBrowserVariant = 8;

  if (((iBrowserType >= 3) && (iBrowserType < 10) && (iBogusBrowserVariant == 0)) || (bSafari && !bChrome))
    g_bBrowser = true;
  else
    g_bBrowser = false;

  var oResultsElem = document.getElementById("BrowserResult");
  var oResultsImage = document.getElementById("BrowserResultImage");
  var oHelpElem = document.getElementById("BrowserHelp");
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";F:APIUTILS!13&LangLocaleID=" + g_cLangLocaleID + "&SystemCheckHelpText=" + g_cSystemCheckHelpText;
  updateResultDisplay(oResultsImage,oHelpElem,g_bBrowser,cURL);
  
  if (g_bBrowser)
    {
      if (g_cSuppressPopupBlockerCheck == "1")
        {
          g_bPopupBlocker = true;
          g_iChecks++;
          document.getElementById("PopupBlockerResult").style.display = "none";
        }
      else
        {
          runPopupBlockerCheck();
        }
        
       runCookieCheck();
       runFlashCheck();
    }
  else
    TrackActivity();
}

function runCookieCheck()
{
  var cCookieName = "BrowserCheck";

  deleteCookie(cCookieName);
  setCookie(cCookieName,"Test",365);

  g_bCookie = (getCookie(cCookieName)=="Test");
  g_iChecks++;
  
  deleteCookie(cCookieName);
    
  var oResultsElem = document.getElementById("CookieResult");
  var oResultsImage = document.getElementById("CookieResultImage");
  var oHelpElem = document.getElementById("CookieHelp");
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";F:APIUTILS!15&LangLocaleID=" + g_cLangLocaleID + "&SystemCheckHelpText=" + g_cSystemCheckHelpText;
  updateResultDisplay(oResultsImage,oHelpElem,g_bCookie,cURL);
}

function setCookie(cName, cValue, iExpires) 
{
  var dDate = new Date();
  dDate.setTime( dDate.getTime() );

  var iExpirationTime = 0;
  if (iExpires)
    iExpirationTime = iExpires * 1000 * 60 * 60 * 24;
    
  var dExpirationDate = new Date( dDate.getTime() + (iExpirationTime) );

  document.cookie = cName + "=" +escape( cValue ) + ( ( iExpires ) ? ";expires=" + dExpirationDate.toGMTString() : "" ) 
}

function getCookie(cName) 
{
  var aCookies = document.cookie.split( ';' );
  var aTempCookie = '';
  var cCookieName = '';
  var cCookieValue = '';
  var bCookieFound = false;

  var iLup = 0;
  for (iLup = 0; iLup < aCookies.length; iLup++ )
  {
    aTempCookie = aCookies[iLup].split( '=' );
    cCookieName = aTempCookie[0].replace(/^\s+|\s+$/g, '');
    if ( cCookieName == cName )
    {
	    bCookieFound = true;
	    if ( aTempCookie.length > 1 )
		    cCookieValue = unescape( aTempCookie[1].replace(/^\s+|\s+$/g, '') );

	    return cCookieValue;
	    break;
    }
    aTempCookie = null;
    cCookieName = '';
  }
  
  return bCookieFound;
}

function deleteCookie(cName) 
{
  var dDate = new Date(1970, 1, 1);
  if (getCookie(cName))
    document.cookie = cName + "=0; expires=" + dDate.toGMTString();
}

function runFlashCheck()
{
  g_bProductInstall = DetectFlashVer(6, 0, 65);
  g_bFlash = DetectFlashVer(g_iRequiredMajorFlashVersion, g_iRequiredMinorFlashVersion, g_iRequiredFlashRevision);
  g_iChecks++;
  g_iFlashVersionFound = GetFlashVer();
  
  var cMessage = g_cMessages[1].replace("{FlashVersion}",g_iFlashVersionFound);
  cMessage = cMessage.replace("{ReqVersion}",g_iRequiredMajorFlashVersion);
  if (!g_bFlash)
    document.getElementById("FlashVersionText").innerHTML = cMessage;

  if(!g_bFlash && g_bProductInstall)
    document.getElementById("FlashExpressInstall").style.display = "";
         
  var oResultsElem = document.getElementById("FlashResult");
  var oResultsImage = document.getElementById("FlashResultImage");
  var oHelpElem = document.getElementById("FlashHelp");
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";F:APIUTILS!16&LangLocaleID=" + g_cLangLocaleID + "&SystemCheckHelpText=" + g_cSystemCheckHelpText;
  updateResultDisplay(oResultsImage,oHelpElem,g_bFlash,cURL);
}

function updateResultDisplay(oResultsImage,oHelpElem,bStatus,cURL)
{
  var cImageURL = g_cImageDir + "/VTS/icon_pass.png";
  var cHelpDisplay = "none";

  if (!bStatus)
  {
    cImageURL = g_cImageDir + "/VTS/icon_fail.png"
    cHelpDisplay = "";
    g_iIssueCount++;
  }

  oResultsImage.src=cImageURL;
  oResultsImage.style.display="";
  oHelpElem.href=cURL;
  oHelpElem.style.display=cHelpDisplay;
 
  var cMessage = g_cMessages[(g_iIssueCount > 1 ? 3 : 2)].replace("{IssueCount}",g_iIssueCount);
  var oElem = document.getElementById("DisplayOverallResults");
       
  if (g_iIssueCount > 0)
  {
    oElem.innerHTML = cMessage;
    oElem.style.display = "";
    
    oElem = document.getElementById("DisplayTitleResults");
    oElem.innerHTML = g_cMessages[4];
    oElem.style.display = "";
    
    oElem = document.getElementById("DisplayImageResults");
    oElem.src = g_cImageDir + "/VTS/icon_failure.png";
    oElem.style.display = "";
    
    oElem = document.getElementById("RunSystemCheck");
    oElem.value = g_cMessages[5];
    oElem.disabled = false;
    
    if (g_cShowKey == "NULL" || g_cShowKey == "0")
      {
        document.getElementById("ShowLoginLink").style.display = "none";
        document.getElementById("CloseWindowInstructions").style.display = "";
      }
    else
      {
        document.getElementById("ShowLoginLink").href = g_cShowLoginLink;
        document.getElementById("ContinueToShowLink").style.display = "";
      }
  }
  
  if (g_iIssueCount == 0 && g_iTotalChecks == g_iChecks && !g_bCompleted)
  {
    oElem = document.getElementById("DisplayTitleResults");
    oElem.innerHTML = g_cMessages[6];
    oElem.style.display = "";
    
    oElem = document.getElementById("DisplayImageResults");
    oElem.style.display = "";
    
    document.getElementById("RunSystemCheck").style.display = "none";
    document.getElementById("ContinueToShowLink").style.display = "";

    if (g_cShowKey == "NULL" || g_cShowKey == "0")
      {
        document.getElementById("ShowLoginLink").style.display = "none";
        document.getElementById("CloseWindowInstructions").style.display = "";
      }
    else
      {
        document.getElementById("ShowLoginLink").href = g_cShowLoginLink;
        location.href = g_cShowLoginLink;
      }
    g_bCompleted = true;
  }
  
  if (g_iTotalChecks == g_iChecks)
    TrackActivity();
}

function TrackActivity()
{
  var iStatusFlags = (g_bJavascript ? 1 : 0) +
                     (g_bPopupBlocker ? 2 : 0) +
                     (g_bBrowser ? 4 : 0) +
                     (g_bCookie ? 8 : 0) +
                     (g_bFlash ? 16 : 0);
  var cURL = "Server.nxp?LASCmd=AI:" + g_cInstanceID + ";F:APIUTILS!11&ShowKey=" + g_cShowKey;
  cURL += "&FlashVersionFound=" + g_iFlashVersionFound;
  cURL += "&StatusFlags=" + iStatusFlags;
  cURL += "&APILoginLink=" + encodeURIComponent(g_cAPILL);
  try {
    cURL += "&ScreenWidth=" + window.screen.width;
    cURL += "&ScreenHeight=" + window.screen.height;}
  catch(e){}  
  var oImg = document.createElement("IMG");
  oImg.src = cURL;
  oImg.style.visibility = "hidden";
  document.body.appendChild(oImg);
}

function resetResultDisplay(oResultsImage,oHelpElem)
{
  oResultsImage.src = g_cImageDir + "/VTS/icon_fail.png";;
  oHelpElem.style.display = "none";

  var oElem = document.getElementById("DisplayOverallResults")
  oElem.innerHTML = "";
  oElem.style.display = "none";
}

function FlashLoad()
{
}

function LoadFinished()
{
  g_iFlashHeight = 50;
  g_iTimerID = window.setInterval(FlashWipe,15);
}

var g_iFlashHeight;
function FlashWipe()
{
  if (g_iFlashHeight > 5)
  {
    document.getElementById("FlashContent").style.height = g_iFlashHeight + "px";
    g_iFlashHeight = g_iFlashHeight - 5;
  }
  else
  {
    window.clearInterval(g_iTimerID);
    document.getElementById("FlashContent").style.display = "none";
  }
}

function LoadExpressInstall()
{
  if (g_bProductInstall == true && g_bFlash == false)
  {
    document.getElementById("FlashContent").style.height = "0px";
    document.getElementById("FlashContent").style.display = "none";
    document.getElementById("FlashExpress").style.display = "";
  }
}
