home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / WindowsServerTrial / server.iso / sources / install.wim / 2 / Windows / System32 / ieframe.dll / HTML / ORGFAV.JS < prev    next >
Text File  |  2008-01-19  |  10KB  |  332 lines

  1. ∩╗┐window.onerror = HandleError;
  2.  
  3. var g_strUrl;        //the currently selected url
  4. var g_rgUrlsToSynch = new Array(0); //list of urls to synch on close, urls are used as indices
  5. var g_fSubscriptionsEnabled;
  6. var g_dxEllipses = 0;
  7. var g_dxEllipsesBold = 0;
  8.  
  9. function callHelp(elm)
  10. {
  11.     if (null != elm.helpid)
  12.     {
  13.         window.showHelp(elm.helpfile, "" + parseInt(elm.helpid), "popup");
  14.     }
  15.     else
  16.     {
  17.         if ("BODY" != elm.tagName)
  18.         {
  19.             callHelp(elm.parentElement);
  20.         }
  21.     }
  22. }
  23. document.onhelp = new Function("callHelp(window.event.srcElement)");
  24.  
  25.  
  26. function documentMouseUp()
  27. {
  28.     // displays popup help when right mouse button clicked
  29.     
  30.     if (window.event.button == 2)
  31.     {
  32.         callHelp(window.event.srcElement);
  33.     }
  34. }   
  35.  
  36. //document.onmouseup = new Function("documentMouseUp()");
  37.  
  38. //+-------------------------------------------------------------------
  39. //
  40. //  Synopsis:   Turns off error messages in dialogs
  41. //
  42. //  Arguments:  none
  43. //
  44. //  returns:    true (tells browser not to handle message)
  45. //
  46. //--------------------------------------------------------------------
  47. function HandleError(message, url, line)
  48. {
  49. //#ifdef IE5_40989
  50.     var str = L_Dialog_ErrorMessage + "\n\n" 
  51.         + L_ErrorNumber_Text + line + "\n"
  52.         + message;
  53.  
  54.     alert(str);
  55.     window.close();
  56. //#endif
  57.     return true;
  58. }
  59.  
  60. function BodyOnKeyPress(nCode)
  61. {
  62.     if (nCode == 27)    //ESC
  63.     {
  64.         window.close();
  65.         return;
  66.     }
  67. }
  68.  
  69. function MeasureText(strText, fBold, widthMaximum)
  70. {
  71.     // if text is not clipped, do nothing
  72.     // get the width of the ellipses
  73.     // get the ratio of width of div to length of text to determine initial cutoff point
  74.     // from cutoff point, cut off up to 30 additional chars one char at a time
  75.  
  76.     var oSpanToUse = (fBold ? spanMeasureBold : spanMeasure);
  77.     
  78.     if (oSpanToUse.offsetWidth < widthMaximum)
  79.         return strText;
  80.     
  81.     var dxEllipses = (fBold ? g_dxEllipsesBold : g_dxEllipses);
  82.     var iCutoff = strText.length * (widthMaximum / (oSpanToUse.offsetWidth + dxEllipses));
  83.  
  84.     oSpanToUse.innerText = strText.substring(0, iCutoff - 1) + L_Ellipses_Text;
  85.  
  86.     if (fBold)
  87.     {    
  88.         iCutoff += 3;
  89.     }
  90.     // else iCutoff... ?
  91.     
  92.     for (cExtraCutoff = 1; (oSpanToUse.offsetWidth > widthMaximum) && (cExtraCutoff < 30); cExtraCutoff++)
  93.     {
  94.         oSpanToUse.innerText = spanMeasure.innerText.substring(0, iCutoff-cExtraCutoff) + L_Ellipses_Text;
  95.     }
  96.     
  97.     return oSpanToUse.innerText;
  98. }
  99.  
  100. function OnSelectionChange(cItems, hItem, strName, strUrl, cVisits, strDate, fAvailableOffline)
  101. {
  102.     //hack to get escape from nsc
  103.     if (cItems == -1)
  104.     {
  105.         BodyOnKeyPress(27);
  106.         return;
  107.     }
  108.  
  109.     //nothing selected
  110.     if (cItems == 0)
  111.     {
  112.         textProperties.innerHTML = "";
  113.         return;
  114.     }
  115.  
  116.     g_strUrl = strUrl;
  117.  
  118.     if (g_dxEllipses == 0)
  119.     {
  120.         spanMeasure.innerText = L_Ellipses_Text;
  121.         g_dxEllipses = spanMeasure.offsetWidth;
  122.         spanMeasureBold.innerText = L_Ellipses_Text;
  123.         g_dxEllipsesBold = spanMeasureBold.offsetWidth;
  124.     }
  125.  
  126.     spanMeasureBold.innerText = strName;
  127.     strNameShort = MeasureText(spanMeasureBold.innerText, true, textProperties.offsetWidth - 4);
  128.  
  129.     spanMeasure.innerText = strUrl;
  130.     strUrlShort = MeasureText(spanMeasure.innerText, false, textProperties.offsetWidth - 4);
  131.  
  132.     //so the span doesn't take up space and make the dialog scrollable
  133.     spanMeasure.innerText = "";
  134.  
  135.     //if it is not a folder
  136.     if (cVisits != -1)
  137.     {
  138.         var strOffline = "";
  139.         
  140.         if (g_fSubscriptionsEnabled && (strUrl.substring(0,4) == "http") )
  141.         {
  142.             strOffline = "<br><input type=checkbox align=";
  143.                         if(document.dir == "rtl")
  144.                         {
  145.                             strOffline +="right";
  146.                         }
  147.                         else
  148.                         {
  149.                             strOffline +="left";
  150.                         }
  151.                         strOffline +=" TABINDEX=2 ACCESSKEY=" + L_MakeAvailableOfflineAccesskey_Text + " id=chkOffline "
  152.             if (fAvailableOffline != 0)
  153.                 strOffline += "CHECKED"
  154.             strOffline += " onclick='ToggleOffline(this)' helpid=50486 helpfile='iexplore.hlp'><LABEL FOR=chkOffline TABINDEX=-1>" + L_MakeAvailableOffline_Text + "</LABEL>";
  155.             strOffline += "<SPAN>   </SPAN><BUTTON id=btnProperties TABINDEX=3 style='width: 7.5em; height: 2.3em; visibility: "
  156.             if (fAvailableOffline != 0)
  157.                 strOffline += "visible"
  158.             else
  159.                 strOffline += "hidden"
  160.  
  161.             strOffline += "' class=button ACCESSKEY=" + L_PropertiesAccesskey_Text + " onclick='Properties()' helpid=50489 helpfile='iexplore.hlp'>" + L_Properties_Text + "</BUTTON><BR>";
  162.         }
  163.  
  164.         //hack so that single quotes don't confuse innerHTML
  165.         var strTemp = strName + "\n" + strUrl;
  166.         var re = /'/g;
  167.         strTemp = strTemp.replace(re, "┬┤");
  168.  
  169.         var oA    = document.createElement("A");
  170.         var oName = document.createElement("B");
  171.         var oBR1  = document.createElement("BR");
  172.         var oUrl  = document.createElement("SPAN");
  173.         var oBR2  = document.createElement("BR");
  174.         var oTV   = document.createElement("SPAN");
  175.         var oLV   = document.createElement("SPAN");
  176.         var oBR3  = document.createElement("BR");
  177.         var oBR4  = document.createElement("BR");
  178.         var oSP   = document.createElement("SPAN");
  179.        
  180.         if (oA && oName && oUrl && oBR1 && oBR2 && oBR3 && oBR4 && oTV && oLV && oSP)
  181.         {
  182.             textProperties.innerHTML = "";
  183.             
  184.             oA.Title = strTemp;
  185.             
  186.             oName.innerText = strNameShort;
  187.             oA.appendChild(oName);
  188.             oA.appendChild(oBR1);
  189.             
  190.             oUrl.innerText = strUrlShort;
  191.             oA.appendChild(oUrl);
  192.             
  193.             textProperties.appendChild(oA);
  194.             textProperties.appendChild(oBR2);
  195.             
  196.             oTV.innerText = L_TimesVisited_Text + cVisits;
  197.             textProperties.appendChild(oTV);
  198.  
  199.             oSP.innerHTML="   ";
  200.             textProperties.appendChild(oSP);
  201.                         
  202.             if (L_LastVisitedNeedsLineBreak_Text == "")
  203.             {
  204.                 oLV.innerText = L_LastVisited_Text + strDate;
  205.                 textProperties.appendChild(oLV);
  206.                 textProperties.appendChild(oBR4);
  207.             }
  208.             else
  209.             {
  210.                 var oBR5 = document.createElement("BR");
  211.                 var oLV2 = document.createElement("SPAN");
  212.  
  213.                 if (oBR5 && oLV2)
  214.                 {                
  215.                     oLV.innerText = L_LastVisited_Text;
  216.                     oLV2.innerText = strDate;
  217.                     textProperties.appendChild(oLV);
  218.                     textProperties.appendChild(oBR5);
  219.                     textProperties.appendChild(oLV2);
  220.                     textProperties.appendChild(oBR4);
  221.                 }
  222.             }
  223.             
  224.             // strOffline is all constant stuff.  putting in untrusted input is a security badness
  225.             // here, unless you switch it to be innerText stuff like above.
  226.             textProperties.innerHTML += strOffline;
  227.         }
  228.     }
  229.     else
  230.     {
  231.         var oName = document.createElement("B");
  232.         var oBR1  = document.createElement("BR");
  233.         var oFldr = document.createElement("SPAN");
  234.         var oBR2  = document.createElement("BR");
  235.         var oBR3  = document.createElement("BR");
  236.         var oMod  = document.createElement("B");
  237.         var oBR4  = document.createElement("BR");
  238.         var oDate = document.createElement("SPAN");        
  239.         
  240.         if (oName && oBR1 && oFldr && oBR2 && oBR3 && oMod && oBR4 && oDate)
  241.         {
  242.             textProperties.innerHTML = "";
  243.             
  244.             oName.innerText = strNameShort;
  245.             textProperties.appendChild(oName);
  246.             textProperties.appendChild(oBR1);
  247.             
  248.             oFldr.innerText = L_FavoritesFolder_Text;
  249.             textProperties.appendChild(oFldr);
  250.             textProperties.appendChild(oBR2);
  251.             textProperties.appendChild(oBR3);
  252.             
  253.             oMod.innerText = L_ModifiedColon_Text;
  254.             textProperties.appendChild(oMod);
  255.             textProperties.appendChild(oBR4);
  256.             
  257.             oDate.innerText = strDate;
  258.             textProperties.appendChild(oDate);
  259.         }
  260.     }
  261.  
  262.     //do this here so the default size is correct
  263.     tdProperties.noWrap=true;
  264.     textProperties.noWrap=true;
  265. }    
  266.  
  267. function ToggleOffline(chkOffline)
  268. {
  269.     if (chkOffline.checked)
  270.     {
  271.         //if it fails to create a subscription, clear the check box
  272.         if (!nsc.CreateSubscriptionForSelection())
  273.             chkOffline.checked = false;
  274.         else 
  275.         {
  276.             g_rgUrlsToSynch[g_strUrl] = true;
  277.         }
  278.     }
  279.     else
  280.     {
  281.         if (!nsc.DeleteSubscriptionForSelection())
  282.             chkOffline.checked = true;
  283.         else 
  284.             delete g_rgUrlsToSynch[g_strUrl];
  285.     }
  286.     btnProperties.style.visibility = (chkOffline.checked ? "visible" : "hidden");
  287. }
  288.  
  289. function Properties()
  290. {
  291.     nsc.InvokeContextMenuCommand("properties");
  292. }
  293.  
  294. function OnResize()
  295. {
  296.     //HACK until trident fixes dynamic properties
  297.     document.recalc(true);
  298. }
  299.  
  300. function TdNscHeight()
  301. {
  302.     return Math.max(100, document.body.offsetHeight - tdNsc.offsetTop - rowProperties.offsetHeight - rowButtons.offsetHeight
  303.         - rowHR.offsetHeight - rowDone.offsetHeight - tableMain.border - 24); // 24 is for two 12 pixel space rows below
  304.     
  305. }
  306.  
  307. function EnableButtons()
  308. {
  309.     g_fSubscriptionsEnabled = false; // = nsc.SubscriptionsEnabled;
  310.  
  311.     var pszInitialDir = window.dialogArguments;
  312.  
  313.     if (pszInitialDir && (pszInitialDir.length > 0))
  314.     {
  315.         nsc.SetRoot(pszInitialDir);
  316.     }
  317.  
  318.     tdNsc.blur();
  319.     tdNewFolder.focus();
  320. }
  321.  
  322. function BuildSynchList()
  323. {
  324.     window.returnValue = "";
  325.  
  326.     for (strUrl in g_rgUrlsToSynch)
  327.     {
  328.         window.returnValue += strUrl + "\0";
  329.     }
  330. }
  331.  
  332.