function ahah(url, target, delay, method, parameters) {

  if (method == undefined) {
	  if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req) {
		req.onreadystatechange = function() {
			ahahDone(url, target, delay, method, parameters);
		};
		req.open("GET", url, true);
		req.send("");
	  }
  }
  if ( (method == "GET") || (method == "get") )
  {
	  if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req) {
		req.onreadystatechange = function() {
			ahahDone(url, target, delay, method, parameters);
		};
		req.open(method, url, true);
		req.send("");
	  }
  }

  if ( (method == "POST") || (method == "post") )
  {
	  if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  if (req) {
		req.onreadystatechange = function() {
			ahahDone(url, target, delay, method, parameters);
		};
		req.open(method, url, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
		req.send(parameters);
	  }
  }
}



function ahahDone(url, target, delay, method, parameters) {
  if (req.readyState == 4)
  {
  	var div = document.getElementById(target);
    if (req.status == 200)
    {
    	div.innerHTML = req.responseText;
    	execJS(div);
    }
    else
    {
      div.innerHTML="ahah error:\n"+req.statusText;
    }
  }
}

function execJS(node){
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');

	var st = node.getElementsByTagName('script');
	var strExec;

	for(var i=0;i<st.length;i++){
		if(bSaf){
			strExec = st[i].innerHTML;
		}else if(bOpera){
			strExec = st[i].text;
		}else if(bMoz){
			strExec = st[i].textContent;
		}else{
			strExec = st[i].innerHTML;
		}

		try{
			eval(strExec);
		}catch(e){
			alert(e);
		}
	}
}