

// dataStorage -> this function holds like a class / object 
// all different kind of textual data out of the XML
function dataStorage(available, type, cad, name, version, qualifier, helplink, setting2d){
  this.available = available;
  this.type = type;
  this.cad = cad;
  this.name = name;
  this.version = version;
  this.qualifier = qualifier;
  this.helplink = helplink;
  this.setting2d = setting2d;
  return this;
}

/* sample out of cadqualifier.asp (about 70 <format> tags):
============================================================
<?xml version="1.0" encoding="windows-1252" ?>
<formats>
  <format available="green" type="neutral" cad="2d">
    <name>DWG</name>
    <version>>=V14</version>
    <qualifier>DWG2D-14</qualifier>
    <helplink><!--http://www.cadenas.de/anleitung/Index_AnleitungDB.asp?anr=23&s=1&firm=cadenas&language=english&cadname=DWG2D&dtlanguage=english--></helplink>
    <setting2d>dxfsettings</setting2d>
  </format>
  <format available="green" type="neutral" cad="3d">
    <name>DWG</name>
    <version>>=V14</version>
    <qualifier>DWG3D-14</qualifier>
    <helplink><!--http://www.cadenas.de/anleitung/Index_AnleitungDB.asp?anr=23&s=1&firm=cadenas&language=english&cadname=DWG3D&dtlanguage=english--></helplink>
  </format>
</formats>
============================================================
*/


function getCADformats(sCatalogName){
  var XHR=null;

  var url = '/cadqualifier.asp?firm=' + sCatalogName;
//   code for Mozilla, etc.
  if (window.XMLHttpRequest){
    XHR=new XMLHttpRequest();
  }
//   code for IE
  else if (window.ActiveXObject){
//     IE7 (and newer)
    try
    {
      if ( ActiveXObject('Msxml2.XMLHTTP') ){
        XHR=new ActiveXObject('Msxml2.XMLHTTP');
//     IE6 and older
      }else{
        XHR=new ActiveXObject('Microsoft.XMLHTTP');
      }
    } catch(e) {
      XHR=new ActiveXObject('Microsoft.XMLHTTP');
    }
  }

//   array of Items (tags) in the XML -> return value
  var aItems = new Array();
  
//   failover code for Mozilla engine based browsers
  if (XHR.overrideMimeType){
    XHR.overrideMimeType('text/xml');
  }else{
//     causes problems in IE / Opera / Safari
//     therefore the mimetype of the url above needs to be "text/xml"   
//     XHR.setRequestHeader('Content-Type', 'text/xml');
  }

//   define GET request, url to call, asynchroneous calling
  XHR.open('GET', url, false);
  
//   function definition what to do after the state changed
//   XHR.onreadystatechange = function(){
// 
//     if (XHR.readyState==4 && XHR.status==200){
//       if (XHR.responseXML){
//         var xml = XHR.responseXML;
//         
//         
//         var root = xml.getElementsByTagName('formats')[0];
//         var items = root.getElementsByTagName('format');
//         for (var i = 0 ; i < items.length ; i++) {
//         	var item = items[i];
//           
//           var available = '';
//           var type = '';
//           var cad = '';
// 
//           var name = '';
//           var version = '';
//           var qualifier = '';
//           var helplink = '';
//           var setting2d = '';
// 
//         	// now we have the item object, time to get the attributes / contents
//           var available = item.getAttribute('available');
//           var type      = item.getAttribute('type');
//           var cad       = item.getAttribute('cad');
// 
//         	if (item.getElementsByTagName('name')[0].firstChild)       {var name      = item.getElementsByTagName('name')[0].firstChild.nodeValue;};
//         	if (item.getElementsByTagName('version')[0].firstChild)    {var version   = item.getElementsByTagName('version')[0].firstChild.nodeValue;};
//         	if (item.getElementsByTagName('qualifier')[0].firstChild)  {var qualifier = item.getElementsByTagName('qualifier')[0].firstChild.nodeValue;};
// 
// //         	optional tags in the xml: helplink and setting2d
//          	if (item.getElementsByTagName('helplink')[0])   {var helplink  = item.getElementsByTagName('helplink')[0].firstChild.nodeValue;};
//         	if (item.getElementsByTagName('setting2d')[0])  {var setting2d = item.getElementsByTagName('setting2d')[0].firstChild.nodeValue;};
// 
//           aItems[i] = new dataStorage(available, type, cad, name, version, qualifier, helplink, setting2d);
//         }        
//       }
//     }
//   };
  
//   execute the HTTP request (GET)
  XHR.send(null);


    if (XHR.readyState==4 && XHR.status==200){
      if (XHR.responseXML){
        var xml = XHR.responseXML;
        
        
        var root = xml.getElementsByTagName('formats')[0];
        var items = root.getElementsByTagName('format');
        for (var i = 0 ; i < items.length ; i++) {
        	var item = items[i];
          
          var available = '';
          var type = '';
          var cad = '';

          var name = '';
          var version = '';
          var qualifier = '';
          var helplink = '';
          var setting2d = '';

        	// now we have the item object, time to get the attributes / contents
          var available = item.getAttribute('available');
          var type      = item.getAttribute('type');
          var cad       = item.getAttribute('cad');

        	if (item.getElementsByTagName('name')[0].firstChild)       {var name      = item.getElementsByTagName('name')[0].firstChild.nodeValue;};
        	if (item.getElementsByTagName('version')[0].firstChild)    {var version   = item.getElementsByTagName('version')[0].firstChild.nodeValue;};
        	if (item.getElementsByTagName('qualifier')[0].firstChild)  {var qualifier = item.getElementsByTagName('qualifier')[0].firstChild.nodeValue;};

//         	optional tags in the xml: helplink and setting2d
         	if (item.getElementsByTagName('helplink')[0])   {var helplink  = item.getElementsByTagName('helplink')[0].firstChild.nodeValue;};
        	if (item.getElementsByTagName('setting2d')[0])  {var setting2d = item.getElementsByTagName('setting2d')[0].firstChild.nodeValue;};

          aItems[i] = new dataStorage(available, type, cad, name, version, qualifier, helplink, setting2d);
        }        
      }
    }
  return aItems;
}


