OpenVMS Source-Code Demos

Homepage with AJAX-based hit counter

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>homepage with AJAX-based hit counter</title>
<script type="text/javascript">
// W3C supported properties
var nsr_domain	= document.domain;
var nsr_url	= document.URL;
var nsr_mode	= "http:\/\/";
if (nsr_url.search(/https/i)==0) nsr_mode = "https:\/\/";
</script>
<script type="text/javascript">
var	my_ajax_state = 0;
function start_ajax(msg){
	response=null;
	if (typeof XMLHttpRequest == "undefined")
	XMLHttpRequest=function(){
		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0")	} catch (e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0")	} catch (e) {}
		try { return new ActiveXObject("Msxml2.XMLHTTP")	} catch (e) {}
		try { return new ActiveXObject("Microsoft.XMLHTTP")	} catch (e) {}
		throw new Error("This browser does not support XMLHttpRequest or XMLHTTP.")
	}
	if (msg != ""){
		response=new XMLHttpRequest();
		if (response != null){
			response.onreadystatechange=ajax_event_handler;
			response.open("GET",msg,true);	// async=true
			response.send(null);		// not null for POST
		}
		my_ajax_state = 1;			// busy
	}
}
//
//	this function is called whenever something is received
//
function ajax_event_handler(){
	if (response.readyState == 4){
//
// a timer is not required for this demo
//
//		if (timeOutId1!=0){
//			clearTimeout(timeOutId1);
//			timeOutId1=0;
//		}
		if (response.status == 200){
			var resp$=response.responseText;
//			alert(resp$);
			document.getElementById("my_page_counter").innerHTML=resp$;
		}else{
//			alert("error on ajax channel:"+response.status);
		}
		my_ajax_state=0;
	}
}
</script>
<style type="text/css">
 *			{ margin:0; padding:0; border:0 }
 div.my_page_counter	{ border:0px solid black; background-color:black; padding-left: 2px; padding-right: 2px;
			  color:#00ff00; display:inline;font-weight:400; font-family: "Courier New", Courier, monospace }
</style>
</head>
<body>
<h1>homepage with AJAX-based hit counter</h1>
<div style="width:700px; text-align:center; font-weight:700">
<p>more stuff can go here</p>
<script type="text/javascript">
//
// this is the old (1995-2012) counter interface code
//
	var junk = 'Visitors: \<img src="http:\/\/'+ nsr_domain +'\/scripts\/count?df=icsis_20010101.DAT|dd=d|reload=T" alt="">';
	document.write(junk+'<br>');
//
// this is the new (2013) counter interface code employing AJAX
//
	var junk = nsr_mode + nsr_domain +'\/scripts\/nsr_counter?df=icsis_20010101.DAT';
	start_ajax(junk);
//
// if the ajax call fails then this next line will not appear
// if the ajax call doesn't return then this next line will be incomplete
//
	document.write('Visitors: <div class="my_page_counter" id="my_page_counter"></div><br>');
</script>
<p>more stuff could go here</p>
</div>
</body>
</html>