var net = new Object();
var READY_STATE_UNINITIALIZED = 0;
var READY_STATE_LOADING = 1;
var READY_STATE_LOADED = 2;
var READY_STATE_INTERACTIVE = 3;
var READY_STATE_COMPLETE = 4;

net.ContentLoader = function(url, divId, docForm, onload){
	this.url = url;
	this.req = null;
	this.HttpMethod = 'POST';
	this.params = null;
	this.docForm = document.getElementById(docForm);
	this.onload = onload;
	this.divId = divId;
	this.data = null;
	this.onerror = this.defaultError;//(onerror) ? onerror : this.defaultError;
	this.loadXMLDoc(url);
}
net.ContentLoader.prototype = {
loadXMLDoc:function(url){
	if(window.XMLHttpRequest){
		this.req = new XMLHttpRequest();
	}else if(window.ActiveXObject){
		this.req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(this.docForm){
		this.HttpMethod = 'POST';
		this.params = this.formData(this.docForm);
	}else{
		this.HttpMethod = 'GET';
		this.params = this.url.split('?')[1];
	}
	if(this.req){
		try{
			var loader = this;
			this.req.onreadystatechange = function(){
				loader.onReadyState.call(loader);
			}
			this.req.open(this.HttpMethod,url,true);
			this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			this.req.send(this.params);
		}catch(err){
			this.onerror.call(this);
		}
	}
},
onReadyState:function(){
	var req = this.req;
	var ready = req.readyState;
	if(ready==READY_STATE_COMPLETE){
		var httpStatus = req.status;
		if(httpStatus == 200 || httpStatus == 0){
			this.data = this.req.responseText;
			this.insertData(this.data);			
		}else{
			this.onerror.call(this);
		}
	}
},
defaultError:function(){
	alert('error fetching data!' + '\n\nreadyState:' + this.req.readyState + '\nstatus: ' + this.req.status + '\nheaders: ' + this.req.getAllResponseHeaders());
},
formData:function(docForm) {

  var submitContent = '';
  var formElem;
  var lastElemName = '';
  
  for (i = 0; i < docForm.elements.length; i++) {
    
    formElem = docForm.elements[i];
    switch (formElem.type) {
      // Text fields, hidden form elements
      case 'text':
      case 'hidden':
      case 'password':
      case 'textarea':
      case 'select-one':
        submitContent += formElem.name + '=' + escape(formElem.value) + '&'
        break;
        
      // Radio buttons
      case 'radio':
        if (formElem.checked) {
          submitContent += formElem.name + '=' + escape(formElem.value) + '&'
        }
        break;
        
      // Checkboxes
      case 'checkbox':
        if (formElem.checked) {
          // Continuing multiple, same-name checkboxes
          if (formElem.name == lastElemName) {
            // Strip of end ampersand if there is one
            if (submitContent.lastIndexOf('&') == submitContent.length-1) {
              submitContent = submitContent.substr(0, submitContent.length - 1);
            }
            // Append value as comma-delimited string
            submitContent += ',' + escape(formElem.value);
          }
          else {
            submitContent += formElem.name + '=' + escape(formElem.value);
          }
          submitContent += '&';
          lastElemName = formElem.name;
        }
        break;
	  
    }
  }
  // Remove trailing separator
  submitContent = submitContent.substr(0, submitContent.length - 1);
  //alert(submitContent);
  return submitContent;
},
insertData:function(data){
	var divid = document.getElementById(this.divId);
	js = data.split('//javascript//');
	if(data.search(/\/\/javascript\/\//) != -1){ 
		divid.innerHTML = js[1];
		eval(js[0]);
	}else{
		divid.innerHTML = data;
	}
}

}

loadpage = function(url, id, formId){
	loader = new net.ContentLoader(url, id, formId);	
}