var vidinfo = new Object;

  function initPage()
  {
    checkCapabilities();
    setTimeout('showMovie(urlList);', delayInSecs * 1000);

  } // initPage();


  function showMovie()
  {
    var url = selectURL(urlList);
   // alert("Selected " + url);
    //frames[0].location.href = url;
    top.location.href = url;

  } //showMovie()

    function selectURL(urlList)
    {
      var line;
  
      var i;
      for( i = 0; i < urlList.length; i++)
      {
        var url =  urlList[i][0];
        var reqs = urlList[i][1];
  
        if(reqsMatch(reqs))
        { 
          return url;	
        }
      }
  
      return null;
  
    } // selectURL;



  function reqsMatch(reqs)
  {
    var key; 
    for(key in reqs)
    {
      //alert("comparing " + vidinfo[key] + " to " + reqs[key]);
      if(vidinfo[key])
      {
        if(   reqs[key] != 'any'  
           && compareVersion(vidinfo[key], reqs[key]) < 0 
          )
        {
          return false;
        }
      }
      else
      {
        return false;
      }
    }     
    return true;
 
  } // reqsMatch()


  //
  // Compare versions of the format 8.5.6.4
  // Returns 1 if ver1 is bigger, -1 if req is bigger or 0 if equal.
  //
  function compareVersion(ver1, req)
  {
    //alert("comparing " + ver1 + " (" + typeof ver1 + ") to " + req + " (" + typeof req + ")");
    if(ver1 == req)
    {
      return 0;
    }

    ver1 = ver1.split(/[,.]/);
    req = req.split(/[,.]/);

    for(var i = 0; (i < ver1.length && i < req.length); i++)
    {
      if( isInteger(ver1[i]) && isInteger(req[i]) )
      {
        // Numeric comparison
        ver1[i] = parseInt(ver1[i]);      
        req[i] = parseInt(req[i]);      
        
        if(ver1[i] > req[i])
        {
          return 1;
        }
        else if(ver1[i] < req[i])
        {
          return -1;
        }
      }
      else
      {
        // Substring comparison
        if(req[i] != (ver1[i].substring(0, req[i].length)) )
        {
          // always return less than if not equal
          return -1;
        }
      }

    } 

    //
    // If one array is larger, and all elements
    // in the other array are equal, the larger
    // is "greater".
    //
    if(ver1.length > req.length)
    {
      return 1;
    }
    else if(ver1.length < req.length)
    {
      return -1;
    }
    else
    {
      return 0;
    }

  } // compareVersion()

  
  function isInteger(str)
  {
    for(var i = 0; i < str.length; i++)
    {
      var ch = str.charAt(i);
      if(ch < '0' || ch > '9') 
      {
        return false;
      } 
    }
    
    return true;
    
  } // isInteger()
  
  
  function checkCapabilities()
  {
   // 
   // Check for video info
   //

   var newVidinfo;

   if( newVidinfo = checkURLSearch() )
   {
     // alert("url: " + obj2string(newVidinfo));
     setVideo(newVidinfo, true); // Sets cookie for future reference
   }
   else if( newVidinfo = checkVidCookie() )
   {
     // alert("cookie: " + obj2string(newVidinfo));
     setVideo(newVidinfo, false);
   }
   else
   {
     //
     // Call BrowserHawk to check video capabilities using
     // a hidden frame so the user can read the intro while
     // the test runs.
     //
     frames[1].location.href = "/browsercheck/dispvideo.jsp";
   }

 } // checkCapabilities()


 //
 // Set video information. Can be used as a callback 
 // from children frame (i.e. BrowserHawk frame).
 //
 function setVideo(newVidinfo, setCookie)
 {
   vidinfo = newVidinfo;

   //
   // Set the video info cookie
   //
   if(setCookie)
   {
     setVidCookie(vidinfo);
   }

   return "video set";

 } // setVideo()


var DELIM = " | ";

function obj2string(obj)
{
  var text = "";
  var key;

  for( key in obj )
  {
    if(text)
    {
      text = text + DELIM + key + "=" + obj[key];
    }
    else
    {
      text = key + "=" + obj[key];
    }
  }

  return text;

} // obj2string()


function string2obj(text)
{
  var obj = new Object;

  if(text)
  {
    var item;
    var items = text.split(DELIM);

    for(var i = 0; i < items.length; i++)
    {
      item = items[i].split('=');
      obj[item[0]] = item[1];
    }
  }

  return obj;

} // string2info()


function checkURLSearch()
{
   var reVar = /vidinfo=(.+)/;
   if(reVar.exec(location.search))
   {
     var text = unescape(RegExp.$1);

     return string2obj(text);
   }

   return null;

} // checkURLSearch()


//
// Cookie functions based on code from cookie.js
// by Bill Dortch, hIdaho Design <bdortch@hidaho.com>
//

function setVidCookie(vidinfo)
{
   document.cookie = "vidinfo=" + escape(obj2string(vidinfo)) + ";path=/";
} // setVidCookie()


function checkVidCookie()
{
   var arg = "vidinfo=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen) 
   {
     var j = i + alen;
     if (document.cookie.substring(i, j) == arg)
     {
       return string2obj(getCookieVal(j));
     }
     i = document.cookie.indexOf(" ", i) + 1;
     if (i == 0) break; 
   }

   return null; // or {}

} // checkVidCookie()


function getCookieVal (offset) 
{
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1)
     endstr = document.cookie.length;

   return unescape(document.cookie.substring(offset, endstr));

} // getCookieVal()


//
// This returns a blank page to fill
// the hidden frame. Don't change it.
//
function blank()
{ 
  return "<HTML></HTML>"; 
}
