home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 April / PCWorld_2008-04_cd.bin / multimedia / mediacoder / MediaCoder-0.6.0.3905.exe / extensions / _include / extension.js < prev    next >
Text File  |  2007-08-27  |  5KB  |  259 lines

  1. /******************************************************************
  2. * MediaCoder extension base scripts
  3. * Distributed under GPL license
  4. * Copyright (c) 2007 Stanley Huang <stanleyhuangyc@gmail.com>
  5. * All rights reserved.
  6. ******************************************************************/
  7.  
  8. var xmlhttp = CreateXMLHttp();
  9. var debug;
  10. if (GetToken(document.location.href, "debug")) {
  11.     debug = true;
  12. } else {
  13.     debug = false;
  14. }
  15.  
  16. function CreateXMLHttp()
  17. {
  18.     var newxmlhttp = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
  19.     if (!newxmlhttp) alert("XMLHttpRequest object cannot be created.");
  20.     return newxmlhttp;
  21. }
  22.  
  23. function NewXML(rootkey)
  24. {
  25.     var xmlDoc;
  26.     if (document.implementation && document.implementation.createDocument)
  27.     {
  28.         xmlDoc = document.implementation.createDocument("", rootkey, null);
  29.     }
  30.     else if (window.ActiveXObject)
  31.     {
  32.         xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  33.      }
  34.     else
  35.     {
  36.         return;
  37.     }
  38.     return xmlDoc;
  39. }
  40.  
  41. function LoadXMLFile(xmlfile)
  42. {
  43.     var xmlDoc;
  44.     if (document.implementation && document.implementation.createDocument)
  45.     {
  46.         xmlDoc = document.implementation.createDocument("", "", null);
  47.         //xmlDoc.onload = callback;
  48.     }
  49.     else if (window.ActiveXObject)
  50.     {
  51.         xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  52.         xmlDoc.onreadystatechange = function () {
  53.             //if (xmlDoc.readyState == 4) callback()
  54.         };
  55.      }
  56.     else
  57.     {
  58.         return;
  59.     }
  60.     xmlDoc.async = false;
  61.     try { 
  62.         if (!xmlDoc.load(xmlfile)) return null;
  63.     }
  64.     catch (ex)
  65.     {
  66.         return null;
  67.     }
  68.     return xmlDoc;
  69. }
  70.  
  71. function AddPrefNode(doc, path, value)
  72. {
  73.     var i;
  74.     var tokens = path.split('.');
  75.     var node = doc.firstChild;
  76.     var newnode;
  77.     for (i = 0; i < tokens.length; i++) {
  78.         newnode = doc.createElement("node");
  79.         newnode.setAttribute("key", tokens[i]);
  80.         node = node.appendChild(newnode);
  81.     }
  82.     node.setAttribute("value", value);
  83. }
  84.  
  85. function AddPrefElements(doc, arrayElements)
  86. {
  87.     var i;
  88.     for (i = 0; i < arrayValues.length; i+=2) {
  89.         AddPrefNode(doc, arrayValues[i], arrayValues[i+1]);
  90.     }
  91. }
  92.  
  93. function AddPrefValues(doc, arrayValues)
  94. {
  95.     var i;
  96.     for (i = 0; i < arrayValues.length; i+=2) {
  97.         AddPrefNode(doc, arrayValues[i], arrayValues[i+1]);
  98.     }
  99. }
  100.  
  101. function SetPrefValue(param, val)
  102. {
  103.     xmlhttp.open("GET", "/prefs/set?" + param + "=" + val, false);
  104.     xmlhttp.send(null);
  105.     if (xmlhttp.responseText == "0") {
  106.         alert("Preference key '"+param+"' can't be set to '"+val+"'.");
  107.         return false;
  108.     }
  109.     return true;
  110. }
  111.  
  112. function GetPrefValue(param)
  113. {
  114.     xmlhttp.open("GET", "/prefs/get?path=" + param, false);
  115.     xmlhttp.send(null);
  116.     return xmlhttp.responseText;
  117. }
  118.  
  119. function AlertConnError()
  120. {
  121.     if (debug) alert("Error connecting to MediaCoder.");
  122. }
  123.  
  124. function PostPrefXML(data)
  125. {
  126.     try { 
  127.         xmlhttp.open("POST", "/prefs/import", true);
  128.         xmlhttp.send(data);
  129.     }
  130.     catch (ex) {
  131.         AlertConnError();
  132.     }
  133. }
  134.  
  135. function SendCommand(cmd)
  136. {
  137.     try { 
  138.         xmlhttp.open("GET", "/ui?cmd=" + cmd, false);
  139.         xmlhttp.send(null);
  140.     }
  141.     catch (ex) {
  142.         AlertConnError();
  143.     }
  144. }
  145.  
  146. function PlayVideo(hwnd)
  147. {
  148.     try { 
  149.         xmlhttp.open("GET", "/ui?cmd=play " + hwnd, false);
  150.         xmlhttp.send(null);
  151.     }
  152.     catch (ex) {
  153.         AlertConnError();
  154.     }
  155. }
  156.  
  157. function StopPlay()
  158. {
  159.     try { 
  160.         xmlhttp.open("GET", "/ui?cmd=stop_play " + hwnd, false);
  161.         xmlhttp.send(null);
  162.     }
  163.     catch (ex) {
  164.         AlertConnError();
  165.     }
  166. }
  167.  
  168. function PlayConvertedVideo(hwnd)
  169. {
  170.     try { 
  171.         xmlhttp.open("GET", "/ui?cmd=preview " + hwnd, false);
  172.         xmlhttp.send(null);
  173.     }
  174.     catch (ex) {
  175.         AlertConnError();
  176.     }
  177. }
  178.  
  179. function QueryString(url, async)
  180. {
  181.     try { 
  182.         xmlhttp.open("GET", url, async);
  183.         xmlhttp.send(null);
  184.         return xmlhttp.responseText;
  185.     }
  186.     catch (ex) {
  187.         AlertConnError();
  188.         return null;
  189.     }
  190. }
  191.  
  192. function QueryInfo(info)
  193. {
  194.     return QueryString("/mc/get?query=" + info, false);
  195. }
  196.  
  197. function QueryPref(path, opts)
  198. {
  199.     var node;
  200.     var requrl = "/prefs/prefs.xml?type&";
  201.     if (opts)
  202.         requrl += opts + "&";
  203.     if (path)
  204.         requrl += "path=" + path;
  205.     xmlhttp.open("GET", requrl, false);
  206.     xmlhttp.send(null);
  207.     node = xmlhttp.responseXML.firstChild;
  208.     if (!node) {
  209.         alert("Failed to retrieve preference data from MediaCoder.");
  210.         return null;
  211.     }
  212.     return getChildNode(node);
  213. }
  214.  
  215. function AddFile(filename)
  216. {
  217.     if (filename) {
  218.         xmlhttp.open("GET", "/queue?action=addfile&file=" + filename, false);
  219.         xmlhttp.send(null);
  220.     }
  221. }
  222.  
  223. function SetWindowSize(width, height)
  224. {
  225.     window.innerWidth = width;
  226.     window.innerHeight = height;
  227. }
  228.  
  229. function OpenURL(urlstring) {
  230.     xmlhttp.open('GET', '/openurl?url=' + urlstring, false);
  231.     xmlhttp.send(null);
  232. }
  233.  
  234. function ShowItem(id)
  235. {
  236.     var e = document.getElementById(id);
  237.     if (e) e.style.display = "block";
  238. }
  239.  
  240. function HideItem(id)
  241. {
  242.     var e = document.getElementById(id);
  243.     if (e) e.style.display = "none";
  244. }
  245.  
  246. function ValueOf(id)
  247. {
  248.     return document.getElementById(id).value;
  249. }
  250.  
  251. function GetToken(str, token)
  252. {
  253.     var idx = str.indexOf(token + '=');
  254.     if (idx < 0) return null;
  255.     var argstr = str.substring(idx + token.length + 1);
  256.     idx = argstr.indexOf('&');
  257.     return idx > 0 ? argstr.substring(0, idx) : argstr;
  258. }
  259.