
function $(e) {
   return document.getElementById(e);
}

var Ajax = {};

Ajax.Request = function(url, opt) {
   var xmlhttp = this.newHttp();
   this.option = opt;

   if(xmlhttp) {
      this.url = url;
      this.xmlhttp = xmlhttp;
      this.request();
   }
};

Ajax.Request.prototype = {
   request: function() {
      this.xmlhttp.open('GET', this.url, true);
      var self = this;
      this.xmlhttp.onreadystatechange = function() {
         if(self.xmlhttp.readyState == 4 && (self.xmlhttp.status == 200))
            self.option.onComplete(self.xmlhttp);
         return;
      }
      this.xmlhttp.send('');
   },

   newHttp: function() {
      if(document.getElementById) {
         try{
            return new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e){
            try {
               return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E){
               if(typeof XMLHttpRequest != 'undefined') return new XMLHttpRequest;
            }
         }
      }

      return false;
   }
}

Function.prototype.bind = function(base) {
   var self = this;
   return function() {
      self.apply(base, arguments);
   }
}

var addEvent = (window.addEventListener) ?
   (function(elm, type, event) {
      elm.addEventListener(type, event, false);
   }) : (window.attachEvent) ?
   (function(elm, type, event) {
      elm.attachEvent('on'+type, event);
   }) :
   (function(elm, type, event) {
      elm['on'+type] = event;
   }) ;


/* from prototype.js */
var Position = {
   prepare: function() {
      this.deltaX =  window.pageXOffset
      || document.documentElement.scrollLeft
      || document.body.scrollLeft
      || 0;
      this.deltaY =  window.pageYOffset
      || document.documentElement.scrollTop
      || document.body.scrollTop
      || 0;
   },

   positionedOffset: function(element) {
      var valueT = 0, valueL = 0;
      do {
         valueT += element.offsetTop  || 0;
         valueL += element.offsetLeft || 0;
         element = element.offsetParent;
         if (element) {
            if(element.tagName=='BODY') break;
            var p = element.style.position;
            if (p == 'relative' || p == 'absolute') break;
         }
      } while (element);
      return [valueL, valueT];
   },

   offset: function(elm) {
      var pos = {};
      pos.x = this.getOffset('Left', elm);
      pos.y = this.getOffset('Top', elm);
      return pos;
   },

   getOffset: function(prop, el) {
      if(!el.offsetParent || el.offsetParent.tagName.toLowerCase() == "body")
         return el['offset'+prop];
      else
         return el['offset'+prop]+ this.getOffset(prop, el.offsetParent);
   }
}


