Term = {};

Term.getContentHeight = function(width, content) {
   var height = 0;
   var div    = document.getElementById('content.height');
   if(!div) {
      div = document.createElement('div');
      div.style.display    = 'none';
      div.style.visibility = 'hidden';
      div.style.overflow   = 'scroll';
      div.style.zIndex     = 100;
      (document.getElementsByTagName('body')[0]).appendChild(div);
   }
   div.style.width   = width + 'px';
   div.style.display = 'block';
   div.innerHTML = content;
   height = div.scrollHeight;
   div.style.height  = '0px';
   div.style.display = 'none';
   div.innerHTML = '';
   return height;
}

Term.getStringWidth = function(html, style) {
   var fontMetrics = document.getElementById('font.metrics');
   if(!fontMetrics) {
      fontMetrics    = document.createElement('span');
      fontMetrics.id = 'font.metrics';
      fontMetrics.style.visibility = 'hidden';
      fontMetrics.style.display    = 'none';
      document.getElementsByTagName('body')[0].appendChild(fontMetrics);
   }
   fontMetrics.style.display    = 'block';
   fontMetrics.innerHTML = html;
   fontMetrics.className = style;
   fontMetrics.style.display    = 'none';
   return parseInt(fontMetrics.offsetWidth);
}

Term.email = function(link) {
   document.location.href = 'mailto:' + link.innerHTML;
}

Term.getRequestObject = function() {
   if(window.XMLHttpRequest) { return new XMLHttpRequest(); }
   if(window.ActiveXObject) {
      try { return new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e) {
         try { return new ActiveXObject("Microsoft.XMLHTTP"); }
         catch (e) {}
      }
   }
   return null;
}


Term.get = function(url, callback) {
   if(url.match(/\?/)) { url += '&uid=' + Admin.uid; } 
   else { url += '?uid=' + Admin.uid; }
   var request = Term.getRequestObject();
   request.open('GET', url, true);
   request.onreadystatechange = function() {
      if(request.readyState == 4) {
         if(request.status == 200 && request.responseText) {
            callback(request.responseText);
         } else if(request.status != 200) {
            alert(request.status);
         }
         request = null;
      }
   };
   request.send(null);
}

Term.post = function(url, data, type, callback) {
   if(!type) {
      type = "application/x-www-form-urlencoded";
      data += '&uid=' + Admin.uid;
   }
   var request = Term.getRequestObject();
   request.open('POST', url, true);
   request.setRequestHeader("Content-Type", type);
   request.onreadystatechange = function() {
      if(request.readyState == 4 && request.status == 200) {
         if(request.responseText){
            callback(request.responseText);
         }
      }
   };
   request.send(data);
}

