  function setupCustomRate()
  {
    var min = "";
    var max = "";
    var ele = findSelected(document.forms[0].preset);
    var json = eval('('+(Base64.decode(ele.attributes['value'].nodeValue))+')');
    var res = json.res;
    var size = json.size;
    var resolution = document.getElementById("res");
    var frameRate = document.getElementById("rate");
    
    min = json.minframerate;
    max = json.maxframerate;

    var msg = "Frame rate";
    var val = 24;
    if ((min != undefined) && (max != undefined))
    {
      msg += " ("+min+"-"+max+"fps)";
      val = min;
    }
    
    var fps = prompt(msg, val);
    while( (!parseFloat(fps)) || (fps > max) || (fps < min) )
    {
      fps = prompt(msg, val);
    }
    
    var myNewOption = new Option(fps,fps);
    frameRate.appendChild(myNewOption);
    myNewOption.selected = true;
  }
  
  function presetChangeDigital()
  {
    var ele = findSelected(document.forms[0].preset);
    
    var json = eval('('+(Base64.decode(ele.attributes['value'].nodeValue))+')');
    var res = json.res;
    var size = json.size;
    var resolution = document.getElementById("res");
    var frameRate = document.getElementById("rate");

    if (resolution.hasChildNodes())
      while (resolution.childNodes.length >= 1)
          resolution.removeChild(resolution.firstChild); 
          
    for (i = 0; i< res.length; i++)
    {
        var lab = res[i]["width"]+"x"+res[i]["height"];
        var myNewOption = new Option(lab, lab);
        resolution.appendChild(myNewOption);
    }
  }
  
  function rateChangeDigital()
  {
    var opts = document.getElementById("rate");
    if (findSelected(opts).value == "Custom")
     {
        setupCustomRate();
     }
  }  