// resize flash object
function flashController_resizeMovie (id_string,
                                      height_number) {
   var menuTree_div = document.getElementById(id_string);
   menuTree_div.style.height = height_number + "px";
};



// get xhtml required to embed flash movie in web page
function flashController_getMovieXhtml(flashVersion_number,
                                       flashMajorRevision_number,
                                       flashMinorRevision_number,
                                       movie_string,
                                       id_string,
                                       width_string,
                                       height_string,
                                       flashvars_string) {
   var html_string  = "";

   html_string += "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"";
   html_string += "\n";
   html_string += "        codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=" + flashVersion_number + "," + flashMajorRevision_number + "," + flashMinorRevision_number + ",0\"";
   html_string += "\n";
   html_string += "        id=\"" + id_string + "\"";
   html_string += "\n";
   html_string += "        height=\"" + height_string + "\"";
   html_string += "\n";
   html_string += "        width=\"" + width_string + "\">";
   html_string += "\n";
   html_string += "   <param name=\"flashvars\"";
   html_string += "\n";
   html_string += "          value=\"" + flashvars_string + "\">";
   html_string += "\n";
   html_string += "   <param name=\"movie\"";
   html_string += "\n";
   html_string += "          value=\"" + movie_string + "\">";
   html_string += "\n";
   html_string += "   <param name=\"quality\"";
   html_string += "\n";
   html_string += "          value=\"high\">";
   html_string += "\n";
   html_string += "   <param name=\"seamlesstabbing\"";
   html_string += "\n";
   html_string += "          value=\"false\">";
   html_string += "\n";
   html_string += "   <embed flashvars=\"" + flashvars_string + "\"";
   html_string += "\n";
   html_string += "          height=\"" + height_string + "\"";
   html_string += "\n";
   html_string += "          name=\"" + id_string + "\"";
   html_string += "\n";
   html_string += "          pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\"";
   html_string += "\n";
   html_string += "          quality=\"high\"";
   html_string += "\n";
   html_string += "          seamlesstabbing=\"false\"";
   html_string += "\n";
   html_string += "          src=\"" + movie_string + "\"";
   html_string += "\n";
   html_string += "          swliveconnect=\"true\"";
   html_string += "\n";
   html_string += "          type=\"application/x-shockwave-flash\"";
   html_string += "\n";
   html_string += "          width=\"" + width_string + "\">";
   html_string += "\n";
   html_string += "</object>";

   return html_string;
};



// insert movie into container
function flashController_insertMovieIntoContainer(container_object,
                                                  flashVersion_number,
                                                  flashMajorRevision_number,
                                                  flashMinorRevision_number,
                                                  movie_string,
                                                  id_string,
                                                  width_string,
                                                  height_string,
                                                  flashvars_string) {
   container_object.innerHTML = flashController_getMovieXhtml(flashVersion_number,
                                                              flashMajorRevision_number,
                                                              flashMinorRevision_number,
                                                              movie_string,
                                                              id_string,
                                                              width_string,
                                                              height_string,
                                                              flashvars_string);
};



// insert flash movie
function flashController_insertMovie(flashVersion_number,
                                     flashMajorRevision_number,
                                     flashMinorRevision_number,
                                     movie_string,
                                     id_string,
                                     width_string,
                                     height_string,
                                     flashvars_string) {
   document.write(flashController_getMovieXhtml(flashVersion_number,
                                                flashMajorRevision_number,
                                                flashMinorRevision_number,
                                                movie_string,
                                                id_string,
                                                width_string,
                                                height_string,
                                                flashvars_string));
};



// insert flash button
function flashController_insertButton(flashVersion_number,
                                      flashMajorRevision_number,
                                      flashMinorRevision_number,
                                      appRoot_string,
                                      id_string,
                                      label_string,
                                      icon_string,
                                      uri_string,
                                      target_string) {
   // local variables
   var flashvars_string = "";

   // build flashvars string
   flashvars_string += "label_string=" + escape(label_string);
   if (icon_string != "") {
      flashvars_string += "&icon_string=" + escape(icon_string);
   };
   flashvars_string += "&uri_string=" + escape(uri_string);
   flashvars_string += "&target_string=" + escape(target_string);

   // insert button
   flashController_insertMovie(flashVersion_number,
                               flashMajorRevision_number,
                               flashMinorRevision_number,
                               appRoot_string + "images/button.swf",
                               id_string,
                               "100",
                               "22",
                               flashvars_string);
};



// format url so that it may be passed into flash movie using flashvars
function flashController_formatUrl(url_string) {
   // formatted url returned to calling function
   var newUrl_string      = "";

   // length of url
   var url_number         = url_string.length;

   // query string variables
   var qsDelimiter_number = (url_string.indexOf("?"));
   var qs_string          = "";

   // query string array variables
   var qs_array           = [];

   // extract query string parameters and values
   if ((qsDelimiter_number > 0) &&
       (qsDelimiter_number < (url_number - 2))) {
      // page (without query string)
      newUrl_string += url_string.substr(0,
                                         qsDelimiter_number);
      // append formatted query string
      qs_string = url_string.substr((qsDelimiter_number + 1),
                                    url_number);
      var qs_array = qs_string.split("&");
      for (var index_number = 0;
           index_number < qs_array.length;
           index_number++) {
         var pDelimiter_number = qs_array[index_number].indexOf("=");
         if (pDelimiter_number > 0) {
            newUrl_string += escape(((index_number > 0) ? "&" : "?"));
            newUrl_string += qs_array[index_number].substr(0,
                                                           pDelimiter_number);
            newUrl_string += escape("=");
            if (pDelimiter_number < (qs_array[index_number].length - 1)) {
               newUrl_string += escape(qs_array[index_number].substr(pDelimiter_number + 1,
                                                                     qs_array[index_number].length));
            };
         }
         else {
            alert("The query string, " + qs_string + ", passed to \"webAddress_getQueryStringParameters()\" is corrupt.");
            return "";
         };
      };
   }
   else {
      newUrl_string = ((qsDelimiter_number < 0) ? url_string : url_string.substr(0, (url_number - 1)));
   };
   // return array containing query string parameter names and values
   return newUrl_string;
};



// insert movie used to test flash version
function flashController_testFlash(flashVersion_number,
                                   flashMajorRevision_number,
                                   flashMinorRevision_number,
                                   appRoot_string,
                                   flashContent_string,
                                   altContent_string) {
   // local variables
   var flashvars_string = "";
   var html_string     = "";

   // build flashvars string
   flashvars_string = "";
   // flashContentURL
   flashvars_string += "flashContentURL=" + flashController_formatUrl(flashContent_string);
   // altContentURL
   flashvars_string += "&altContentURL=" + flashController_formatUrl(altContent_string);
   // contentVersion
   flashvars_string += "&contentVersion=" + flashVersion_number;
   // contentMajorRevision
   flashvars_string += "&contentMajorRevision=" + flashMajorRevision_number;
   // contentMinorRevision
   flashvars_string += "&contentMinorRevision=" + flashMinorRevision_number;
   // allowFlashAutoInstall
   flashvars_string += "&allowFlashAutoInstall=false";

   // build test movie string
   html_string += "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"";
   html_string += "\n";
   html_string += "                              codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,0,0\"";
   html_string += "\n";
   html_string += "                              height=\"80\"";
   html_string += "\n";
   html_string += "                              width=\"80\">";
   html_string += "\n";
   html_string += "                         <param name=\"flashvars\"";
   html_string += "\n";
   html_string += "                                value=\"" + flashvars_string + "\">";
   html_string += "\n";
   html_string += "                         <param name=\"movie\"";
   html_string += "\n";
   html_string += "                                value=\"" + appRoot_string + "flash_detection.swf?" + flashvars_string + "\">";
   html_string += "\n";
   html_string += "                         <param name=\"quality\"";
   html_string += "\n";
   html_string += "                                value=\"low\">";
   html_string += "\n";
   html_string += "                         <embed flashvars=\"" + flashvars_string + "\"";
   html_string += "\n";
   html_string += "                                height=\"80\"";
   html_string += "\n";
   html_string += "                                pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\"";
   html_string += "\n";
   html_string += "                                quality=\"low\"";
   html_string += "\n";
   html_string += "                                src=\"" + appRoot_string + "flash_detection.swf?" + flashvars_string + "\"";
   html_string += "\n";
   html_string += "                                type=\"application/x-shockwave-flash\"";
   html_string += "\n";
   html_string += "                                width=\"80\"></object>";

   // insert test movie string
   document.writeln(html_string);
};