<HTML> <OBJECT ID="MMCCtrl" < CLASSID="CLSID:545AE700-50BF-11D1-9FE9-00600832DB4A"> > </OBJECT> <STYLE TYPE="text/css"> </STYLE> <SCRIPT LANGUAGE="JavaScript"> function CheckForDuplicate (taskArray, j) { var i; var task = taskArray[j]; for (i=0; i<j; i++) { var display = taskArray[i].DisplayObject; if (display.DisplayObjectType == 1) if (display.FontFamilyName == task.DisplayObject.FontFamilyName) if (display.URLtoEOT == task.DisplayObject.URLtoEOT) return true; } return false; } function AddClickStuff (str, task) { var myStr = ""; var clsid = task.Clsid; switch (task.ActionType) { case 0: // task.MMC_TASK_ACTION_ID: myStr += "onclick=\"MMCCtrl.TaskNotify ('" + clsid + "', " + task.CommandID +", '" + "0" + "')\""; break; case 1: //task.MMC_TASK_ACTION_LINK: myStr += "onclick=\"window.location=" + task.ActionURL + "\""; break; case 2: //task.MMC_TASK_ACTION_SCRIPT: myStr += "onclick=\"" + task.Script + "\""; break; default: alert ("unrecognized task"); break; } return myStr; } function myLoad() { var taskArray = new Array(); // get title and ignore it for now var title = MMCCtrl.GetTitle (hash); var background = MMCCtrl.GetBackground (hash); // TODO: get descriptive text var str; var display; // display object var hash = location.hash; if (hash != "") hash = hash.substr(1); var task = MMCCtrl.GetFirstTask (hash); var numTasks = 0; while (task != null) { taskArray[numTasks++] = task; task = MMCCtrl.GetNextTask(); } window.name = "don't reload"; // alert (window.name); document.open(); document.writeln ("<HTML>"); document.writeln ("<OBJECT ID=\"MMCCtrl\" <"); document.writeln (" CLASSID=\"CLSID:545AE700-50BF-11D1-9FE9-00600832DB4A\">"); document.writeln (">"); document.writeln ("</OBJECT>"); document.writeln ("<STYLE>"); // TODO: these may cause duplicates, too if (background != null) if (background.DisplayObjectType == 1) { str = "@font-face {"; str += " font-family: " + background.FontFamilyName + ";"; str += " src: url(" + background.URLtoEOT +");"; str += "}"; document.writeln (str); } var i; for (i=0; i<numTasks; i++) { display = taskArray[i].DisplayObject; if (display.DisplayObjectType == 1) { // MMC_TASK_DISPLAY_TYPE_SYMBOL if (CheckForDuplicate (taskArray, i) == false) { str = ""; str += "@font-face {"; str += " font-family: " + display.FontFamilyName + ";"; str += " src: url(" + display.URLtoEOT +");"; str += "}"; // alert (str); document.writeln (str); } } } document.writeln ("</STYLE>"); document.writeln ("<SCRIPT>"); document.writeln ("if (window.name == \"do reload\") {"); // document.writeln (" alert (\"about to reload\");"); document.writeln (" window.name = \"don't reload\";"); // document.writeln (" location.reload (true);"); // document.writeln (" alert (\"default.htm#" + hash + "\");"); document.writeln (" location.replace (\"default.htm#" + hash + "\");"); document.writeln ("}"); // document.writeln (" alert (location + \"#\" + \"" + hash + "\");"); // document.writeln (" alert (this.outerHTML);"); document.writeln ("</" + "SCRIPT>"); // TODO: this doesn't work! // TODO: load a generic loader page that just reloads this one? document.writeln ("<BODY>"); document.writeln ("</BODY>"); document.writeln ("</HTML>"); document.close(); window.name = "do reload"; // background if (background != null) { // use z-index = -2 switch (background.DisplayObjectType) { default: alert ("skipping due to background.DisplayObjectType == " + background.DisplayObjectType); break; // skip case 1: // MMC_TASK_DISPLAY_TYPE_SYMBOL str = ""; str += "<SPAN STYLE=\"position:absolute; top:0; left:0; z-index:-1; font-family:"; str += background.FontFamilyName; str += "; font-size:45pt; \">"; str += background.SymbolString; str += "</SPAN>"; document.body.insertAdjacentHTML ("BeforeEnd", str); break; case 2: // MMC_TASK_DISPLAY_TYPE_VANILLA_GIF, // (GIF) index 0 is transparent case 3: // MMC_TASK_DISPLAY_TYPE_CHOCOLATE_GIF, // (GIF) index 1 is transparent case 4: // MMC_TASK_DISPLAY_TYPE_BITMAP // non-transparent raster document.body.insertAdjacentHTML ("BeforeEnd", "<IMG SRC=\"" + background.MouseOverBitmap + "\" STYLE=\"position:absolute; top:0; left:0; z-index:-2\">"); break; } } // for all tasks for (i=0; i<numTasks; i++) { task = taskArray[i]; var text = task.Text; var help = task.Help; var type = task.ActionType; var clsid = task.Clsid; str = ""; display = task.DisplayObject; switch (display.DisplayObjectType) { default: alert ("bad DisplayObjectType! skipping..."); break; case 1: // MMC_TASK_DISPLAY_TYPE_SYMBOL str += "<P ALIGN=center "; str += "STYLE= \""; str += "font-family:" + display.FontFamilyName + ";"; str += "font-size:45pt"; str += "\" "; str += AddClickStuff (str, task); str += ">"; str += display.SymbolString; str += "</P>"; // alert (str); break; case 2: // MMC_TASK_DISPLAY_TYPE_VANILLA_GIF, // (GIF) index 0 is transparent case 3: // MMC_TASK_DISPLAY_TYPE_CHOCOLATE_GIF, // (GIF) index 1 is transparent case 4: // MMC_TASK_DISPLAY_TYPE_BITMAP // non-transparent raster // 3 possibilities for action: "ID:", "LINK:" and "SCRIPT:" // default is "ID:", I guess switch (type) { case 0: //task.MMC_TASK_ACTION_ID: str += "<P ALIGN=center>"; str += "<IMG SRC=" + display.MouseOffBitmap; str += " style=\"filter: gray(enabled=true) invert(enabled=0)\""; str += " onmouseover=\"filters.invert.enabled = true;\""; str += " onmouseout =\"filters.invert.enabled = false;\""; // str += " onclick=\"myClick('" + clsid + "', " + task.CommandID +", '" + "0" + "')\">"; str += " onclick=\"MMCCtrl.TaskNotify ('" + clsid + "', " + task.CommandID +", '" + "0" + "')\">"; str += text + "</P>"; break; case 1: //task.MMC_TASK_ACTION_LINK: str = "<P ALIGN=center>"; str += "<A HREF=" + task.ActionURL + ">"; str += "<IMG SRC=" + display.MouseOffBitmap + ">"; str += text + "</A>"; break; case 2: //task.MMC_TASK_ACTION_SCRIPT: str += "<P ALIGN=center>"; str += "<IMG SRC=" + display.MouseOffBitmap; str += " LANGUAGE=" + task.ScriptLanguage; str += " onclick=\"" + task.Script; str += "\">"; str += text + "</P>"; break; default: alert ("unrecognized task"); break; } break; } if (str != "") document.body.insertAdjacentHTML ("BeforeEnd", str); } alert ("document.body.innerHTML:\n" + document.body.innerHTML); } window.onload = myLoad; </SCRIPT> <HEAD> <TITLE>Default TaskPad</TITLE> </HEAD> <BODY BGCOLOR="white" TOPMARGIN=0 LEFTMARGIN=0> </BODY> </HTML>