if (typeof (N52) == "undefined")
{ N52 = {}; } 

N52.HTMLWebResourceHelper =
{    


GetDataParameterArray:  function (data) {
  var vals = new Array();
  var cleandata = decodeURIComponent(data);
  cleandata = cleandata .replace("{","");
  cleandata = cleandata .replace("}","");
 

  vals = cleandata.split("&");
  for (var x in vals)
  {
      vals[x]  = vals[x].replace(/\+/g, " ").split("=");
      vals[x][1]  = vals[x][1].indexOf('^^^') > 0 ? vals[x][1].replace('^^^', '&') : vals[x][1] ;
  }

 return vals;
},

GetParameterByName:  function (name) {

  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
  var regexS = "[\\?&]" + name + "=([^&#]*)"; 
  var regex = new RegExp(regexS); 
  var results = regex.exec(window.location.search); 
  if(results == null) 
    return ""; 
  else 
  {
    var result = decodeURIComponent(results[1].replace(/\+/g, " ")); 
    return result;
  }
},

 CheckDuplicates: function (optionset, formNames)
 {                  
        var duplicateFormName = false;
        var optAlpha = document.createElement("option");
        var optBeta = document.createElement("option");

        optAlpha.text = "Duplicate form names exist,";
        optAlpha.value = "Duplicate form names exist,";
        optAlpha.title = "Duplicate form names exist,";
        optBeta.text = "please change.";
        optBeta.value = "please change.";
        optBeta.title = "please change.";

         formNames.sort();

         var last = formNames[0];
         for (var i=1; i < formNames.length; i++)
         {
             if (formNames[i] == last) duplicateFormName = true;

             last = formNames[i];
         }

         if (duplicateFormName == true)
         {
             document.getElementById(optionset).options.length = 0;
             document.getElementById(optionset).options.add(optAlpha);
             document.getElementById(optionset).options.add(optBeta);
         }

        return duplicateFormName;

  },

 InsertOptionSetItem: function (optionset, name, value)
 {                  
        var opt = document.createElement("option");
        opt.text = name;
        opt.value = value;
        opt.title = name;

        document.getElementById(optionset).options.add(opt);
  },

InsertOptionSetItemAtTop: function (optionset, name, value)
 {                  
        var opt = document.createElement("option");
        opt.value = value;
        opt.title = name;
        opt.appendChild(document.createTextNode(name));

        var optionSetElement = document.getElementById(optionset);
       
        optionSetElement.insertBefore(opt, optionSetElement.firstChild);
       
  },

GetXmlNodes: function (xml, xpath)
 {  

     var attributes = [];

      if (xml.implementation.hasFeature("XPath", "3.0") )
      {
           var items = xml.evaluate(xpath, xml, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
           
            for (var i = 0; i < items.snapshotLength; i++)
           {
               attributes[i] = items.snapshotItem(i);
           }

      }
      else
      {
            attributes = xml.selectNodes(xpath);
      }

      return attributes;
 },

IsActiveXSupported: function ()
 {                  
     try { new window.ActiveXObject("Microsoft.XMLDOM"); return true;} catch(e) {return false;}
  },


GetXmlDocument: function (query)
 {                  
   var parseXml;

  if ( N52.HTMLWebResourceHelper.IsActiveXSupported() == true)
  {
    parseXml = function(xmlStr) {
    var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = "false";
    xmlDoc.loadXML(xmlStr);
    return xmlDoc;
    };
   }
   else if (typeof window.DOMParser != "undefined") 
   {
         parseXml = function(xmlStr) {
         return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
          };
   }
   else {
                    throw new Error("North52: No XML parser found");
          }

   var xml = parseXml(query);

   return xml;
  }


}; //end top
