function connection(oSystem){
  //objects
  this.oSystem = oSystem;
  //methods
  this.getNodeValue = getNodeValue;
  this.getNodeAttribute = getNodeAttribute;
  this.getXMLHttpObj = getXMLHttpObj;
  this.loadFile = loadFile;
  
  this.generateXDoc = generateXDoc;
}

function getNodeValue(oNode){
  var nodeValue = oNode.childNodes[0].nodeValue;
  return nodeValue;
}
function getNodeAttribute(oNode,attribute){
  var attributeValue = oNode.getAttribute(attribute);
  return attributeValue;
}

function loadFile(fileToLoad,callbackFunction,aCallbackFunctionParameters){
  var http_request = this.getXMLHttpObj();
  if (!http_request) {
      this.oSystem.oDebug.de('Giving up :( Cannot create an XMLHTTP instance');
      return false;
  }
  http_request.onreadystatechange = function() {
      if (http_request.readyState == 4) {
          if (http_request.status == 200) {
            var callbackFunctionParameters = '(http_request.responseText';
            if(aCallbackFunctionParameters){
              for(i in aCallbackFunctionParameters){
                callbackFunctionParameters += ',\''+aCallbackFunctionParameters[i]+'\'';
              }
            }
            callbackFunctionParameters += ')';
            eval(callbackFunction + callbackFunctionParameters);
          } else {
              oSystem.oDebug.de('There was a problem with the request.(Code: '+http_request.status+', URL: '+fileToLoad+')');
          }
      }
  };
  http_request.open('GET', fileToLoad, true);
  http_request.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');
  http_request.send(null);
}
/*by Mark Kahn, from www.webreference.com*/
function getXMLHttpObj(){
	if(typeof(XMLHttpRequest)!='undefined')
		return new XMLHttpRequest();

	var axO=['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'], i;
	for(i=0;i<axO.length;i++)
		try{
			return new ActiveXObject(axO[i]);
		}catch(e){}
	return null;
}

function generateXDoc(xType,xCode){
  var doc;
  var MSAXObject;
  if(xType == 'xml'){
    MSAXObject = "Microsoft.XMLDOM";
  }else if(xType == 'xsl'){
    MSAXObject = "Msxml2.FreeThreadedDOMDocument";
  }
  if (this.oSystem.browserCode == 'm'){
     parser = new DOMParser();
     doc = parser.parseFromString(xCode,"text/xml");
  }else{
     doc = new ActiveXObject(MSAXObject);
     doc.async = false;
     doc.loadXML(xCode);
  }
  return doc;  
}
