Function.prototype.bind = function(obj) {
  var method = this,
   temp = function() {
    return method.apply(obj, arguments);
   };
 
  return temp;
 } 
 
function dynRegion(url, target){
  function update(parameters) {
	if(typeof(parameters)=='undefined')
		parameters='';
    this.lastParams = parameters;
    this.http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
         this.http_request = new XMLHttpRequest();
         if (this.http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            this.http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
     if (!this.http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
     }
      
      this.http_request.onreadystatechange = alertContents.bind(this);
      this.http_request.open('POST', this.url, true);
      this.http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	  this.http_request.setRequestHeader("Content-length", parameters.length);
	  this.http_request.setRequestHeader("Connection", "close");
      this.http_request.send(parameters);
   }

   function alertContents() {
      if (this.http_request.readyState == 4) {
         if (this.http_request.status == 200) {
            //alert(http_request.responseText);
            result = this.http_request.responseText;
            document.getElementById(this.target).innerHTML = result;
			if(this.onloadevent!=""){
			  eval(this.onloadevent);
			}
         } else if(this.http_request.status) {
            alert('There was a problem with the request. Request Status:' + this.http_request.status);
         }
      }
   }
   
   function setOnLoad(onloadevent){
	   this.onloadevent=onloadevent;
   }
   
   function submit_form(formname){
	   params=this.lastParams;
	   targetElement = document.getElementById(this.target);
	   childForms = targetElement.getElementsByTagName("form")
		for (i=0; i<childForms.length; i++)
		if(childForms[i].name==formname){
	   		targetForm = childForms[i];
	   		for (j=0; j<targetForm.elements.length; j++){
				if(targetForm.elements[j].type == 'checkbox' || targetForm.elements[j].type == 'radio'){
					if(targetForm.elements[j].checked){
						params += "&" + targetForm.elements[j].name;
						params += "=" + escape(targetForm.elements[j].value);
					}
				}else{
					params += "&" + targetForm.elements[j].name;
					params += "=" + escape(targetForm.elements[j].value);
				}
			}
	   }
	   this.update(params);
   }
   	this.lastParams="";
	this.target=target;
	this.url = url;
	this.http_request=false;
    this.update=update;
    this.alertContents = alertContents;
	this.onloadevent="";
	this.setOnLoad=setOnLoad;
	this.submit_form = submit_form;
	
} 

