utils.js
上传用户:wenllgg125
上传日期:2020-04-09
资源大小:7277k
文件大小:7k
源码类别:

SCSI/ASPI

开发平台:

Others

  1. /******************************************************************************
  2.  * WPF/E UTILITY CODE
  3.  *****************************************************************************/
  4. /******************************************************************************
  5.  * Helper method for creating per-object callbacks
  6.  * @param target object to invoke the callback on
  7.  * @param callback method to be called on the object
  8.  *****************************************************************************/
  9. function delegate(target, callback) {
  10. var func = function() {
  11. callback.apply(target, arguments);
  12. }
  13. return func;
  14. }
  15. function createGlobalMethod(delegate) {
  16.       if (!window.methodID)
  17.             window.methodID = 0;
  18.       
  19.       var callbackName = "uniqueCallback" + (window.methodID++);
  20.       eval(callbackName + " = delegate;");
  21.       
  22.       return " " + callbackName;
  23. }
  24. function hookEvent(control, eventName, delegate)
  25. {
  26.     // no such control? ignore..
  27.     if (control==null)
  28.         return;
  29.     var callbackName = get_UniqueName("uniqueCallback");
  30.     eval(callbackName + " = delegate;");
  31.     control.addEventListener(eventName, "" + callbackName);
  32. }
  33. function get_UniqueName(strBase)
  34. {
  35.     if (!window.uniqueID)
  36.     window.uniqueID = 1;
  37.     return strBase + (++window.uniqueID);
  38. }
  39. /******************************************************************************
  40.  * Creates an XML Object checking for browser type
  41.  * @return the xml object if successful, false if not
  42.  *****************************************************************************/
  43. function createXmlObj(){
  44.     var httprequest = false;
  45.     if (window.XMLHttpRequest) { // if Mozilla, Safari etc
  46.         httprequest = new XMLHttpRequest();
  47.         if (httprequest.overrideMimeType)
  48.             httprequest.overrideMimeType('text/xml');
  49.     }
  50.     else if (window.ActiveXObject){ // if IE
  51.         try {
  52.             httprequest=new ActiveXObject("Msxml2.XMLHTTP");
  53.         } 
  54.         catch (e){
  55.             try{
  56.                 httprequest=new ActiveXObject("Microsoft.XMLHTTP");
  57.             }
  58.             catch (e){}
  59.         }
  60.     }
  61.     return httprequest;
  62. }
  63. /******************************************************************************
  64.  * Replaces all instances of the given substring
  65.  *
  66.  * @param strTarget The substring you want to replace
  67.  * @param strSubString The string you want to replace in.
  68.  * @return The updated string with replacements
  69.  *****************************************************************************/
  70. String.prototype.replaceAll = function( strTarget, strSubString ){
  71.     var strText = this;
  72.     var intIndexOfMatch = strText.indexOf( strTarget );
  73.      
  74.     // Keep looping while an instance of the target string
  75.     // still exists in the string.
  76.     while (intIndexOfMatch != -1){
  77.         // Relace out the current instance.
  78.         strText = strText.replace( strTarget, strSubString );
  79.          
  80.         // Get the index of any next matching substring.
  81.         intIndexOfMatch = strText.indexOf( strTarget );
  82.     }
  83.  
  84.     // Return the updated string with ALL the target strings
  85.     // replaced out with the new substring.
  86.     return( strText );
  87. }
  88. String.prototype.cleanAndKeepNames = function(list, id)
  89. {
  90.     var keepNames = list;
  91.     var strText = this;
  92.     var name = 'x:Name="';
  93.     var indexOfMatch = strText.indexOf( name );
  94.     
  95.     // Keep looping while an instance of the target string
  96.     // still exists in the string.
  97.     while (indexOfMatch != -1){
  98.         var indexNextQuote = strText.indexOf( '"', indexOfMatch+8 );
  99.         
  100.         var thisName = strText.substr(indexOfMatch+8, (indexNextQuote-indexOfMatch)-8);
  101.         var keep = false;
  102.         for (var i=0; i<keepNames.length; i++)
  103.         {
  104.             if (thisName == keepNames[i]) {
  105.                 keep = true;
  106.             }
  107.         }       
  108.         if (!keep)
  109.         {
  110.             var newText = strText.substr(0, indexOfMatch);
  111.             newText += strText.substr(indexNextQuote+1);
  112.             strText = newText;
  113.             indexOfMatch = strText.indexOf( name, indexOfMatch );
  114.         } else {
  115.             var newText = strText.substr(0, indexOfMatch);
  116.             newText += 'x:Name="'+thisName+id+'"';
  117.             newText += strText.substr(indexNextQuote+1);
  118.             strText = newText;
  119.             indexOfMatch = strText.indexOf( name, indexNextQuote );
  120.         }
  121.         
  122.     }
  123.     
  124.     return( strText );
  125. }
  126. String.prototype.cleanAndKeepSources = function()
  127. {
  128.     var strText = this;
  129.     var imagePath = new Array();
  130.     
  131.     var name = 'Source="';
  132.     var indexOfMatch = strText.indexOf( name );
  133.     
  134.     // Keep looping while an instance of the target string
  135.     // still exists in the string.
  136.     count = 1;
  137.     while (indexOfMatch != -1){
  138.         var indexNextQuote = strText.indexOf( '"', indexOfMatch+8 );
  139.         var indexName = strText.lastIndexOf( 'x:Name="', indexOfMatch );
  140.         var indexNextQuoteName = strText.indexOf( '"', indexName+8 );
  141.         var thisName = strText.substr(indexName+8, (indexNextQuoteName-indexName)-8);
  142.         var thisSource = strText.substr(indexOfMatch+8, (indexNextQuote-indexOfMatch)-8);
  143.         imagePath[count] = new Object();
  144.         imagePath[count].name = thisName;
  145.         imagePath[count].source = thisSource;
  146.         count++;
  147.         
  148.         var newText = strText.substr(0, indexOfMatch);
  149.         newText += 'Source=""';
  150.         newText += strText.substr(indexNextQuote+1);
  151.         strText = newText;
  152.         indexOfMatch = strText.indexOf( name, indexNextQuote );
  153.     }
  154.     imagePath[0] = strText;
  155.     return( imagePath );
  156. }
  157. String.prototype.cleanAndKeepTargets = function(list, id)
  158. {
  159.     var keepNames = list;
  160.     var strText = this;
  161.     var name = 'TargetName="';
  162.     var indexOfMatch = strText.indexOf( name );
  163.     
  164.     // Keep looping while an instance of the target string
  165.     // still exists in the string.
  166.     while (indexOfMatch != -1){
  167.         var indexNextQuote = strText.indexOf( '"', indexOfMatch+12 );
  168.         
  169.         var thisName = strText.substr(indexOfMatch+12, (indexNextQuote-indexOfMatch)-12);
  170.         var keep = false;
  171.         for (var i=0; i<keepNames.length; i++)
  172.         {
  173.             if (thisName == keepNames[i]) {
  174.                 keep = true;
  175.             }
  176.         }       
  177.         if (!keep)
  178.         {
  179.             var newText = strText.substr(0, indexOfMatch);
  180.             newText += strText.substr(indexNextQuote+1);
  181.             strText = newText;
  182.             indexOfMatch = strText.indexOf( name, indexOfMatch );
  183.         } else {
  184.             var newText = strText.substr(0, indexOfMatch);
  185.             newText += 'TargetName="'+thisName+id+'"';
  186.             newText += strText.substr(indexNextQuote+1);
  187.             strText = newText;
  188.             indexOfMatch = strText.indexOf( name, indexNextQuote );
  189.         }
  190.         
  191.     }
  192.     
  193.     return( strText );
  194. }
  195. function bringToFront(parent, element) {
  196. if (element == null) return;
  197. parent.Children.Remove(element);
  198. parent.Children.Add(element);
  199. }