var timer;

function hidetrail(){	
	gettrailobj().display= "none";
	document.onmousemove=""
	gettrailobj().left="-500px"
	clearTimeout(timer);
	var MouseAction="0";
}
//Detects browser type 
function makeRequest(){
var z; 
var browser1 = navigator.appName; 
if(browser1 == "Microsoft Internet Explorer"){
z = new ActiveXObject("Microsoft.XMLHTTP");
}else{
z = new XMLHttpRequest();
}
return z;
}

/*==========================================================
==========================================================*/

var cache = new Array;

var top_key = null;
var prev_key = null;
var curr_cache_size = 0;

var MAX_CACHE_SIZE = 20;

function async_cmd (url, parms, divname) {
	send_cmd(url, parms, divname, true);
}

function sync_cmd (url, parms, divname) {
	send_cmd(url, parms, divname, false);
}


//----------------------------------------------------------
// Asynchronous (non-blocking) server query.
//----------------------------------------------------------
function send_cmd (url, parms, divname, async) {
	i = url
	t = parms
	s = divname
	a = async
    var httpreq = makeRequest();

    //var output = document.getElementById(divname);


    // Precondition: must have a URL:
    if (url == "") return;

    var cache_key = url + parms;
	
    // If this is a cacheable request then first 
    // check if a response already exists for it:

    if (cache[cache_key]) {
		if(url=="main.php" || url=="indexses.php" || url=="rss.php"){
			//divAnswer : ID of the Division where output will be display
			divAnswer.innerHTML = cache[cache_key].value;
			document.getElementById('rss_output').innerHTML ="";
		}else{
			// overlib() call from overlib.js
			overlib(cache[cache_key].value, STICKY, CAPTION, '', CENTER);
		}

	// Linked-list maintenance
	if (cache_key != prev_key) {
	    var curr_key = top_key;

	    if (cache_key != top_key) {
		// Find linked-list node preceding the 
		// cache[cache_key] node.
		while (cache[curr_key].next != cache_key) {
		    curr_key = cache[curr_key].next;
		}
	    }
	    else {
		top_key = cache[top_key].next;
	    }
	    // Point preceding node to point to where 
	    // cache[cache_key] currently points.
	    cache[curr_key].next = cache[cache_key].next;

	    // Move cache[cache_key] to the end of our
	    // linked list.
	    cache[prev_key].next = cache_key;
	    cache[cache_key].next = null;
	    prev_key = cache_key;
	}
	//show_cache_info ("client-side cache");
    }
    else {
	// Send request to server.
	if(a==true){
		httpreq.open("GET", cache_key, a);
	}else{
		 if (window.XMLHttpRequest) { 	
			httpreq.open("GET", cache_key, true);
		 }else{
			httpreq.open("GET", cache_key, a);
		 }
	}
	//--------------------------------------------------
	// Response function:
	//--------------------------------------------------
	httpreq.onreadystatechange = function () {
		if(url=="main.php" || url=="indexses.php" || url=="rss.php"){
			if(httpreq.readyState == 1){
			divAnswer.innerHTML = '<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><p align=center><img src=\"index_files/loading.gif\"><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
			document.getElementById('rss_output').innerHTML ="";
			}
		}
	    if (httpreq.readyState == 4) {
		var response = httpreq.responseText;

		if (curr_cache_size >= MAX_CACHE_SIZE) {
		    // Remove oldest item from cache:
		    var oldest = top_key;
		    top_key = cache[oldest].next;
		    delete cache[oldest];

		}
		else {
		    curr_cache_size++;
		}

		// Linked list maintenance:
		if (top_key == null) {
		    top_key = cache_key;
		}
		if (prev_key != null) {
		    cache[prev_key].next = cache_key;
		}

		// Add answer we just retrieved into cache:
		cache[cache_key] = { value:response, next:null };
		prev_key = cache_key;

		// Display the answer in DIV tag: 
		if(url=="main.php" || url=="indexses.php" || url=="rss.php"){
			//divAnswer : ID of the Division where output will be display
			divAnswer.innerHTML = response;
		}else{
			// overlib() call from overlib.js
			overlib(response, STICKY, CAPTION, '', CENTER);
		}

		//show_cache_info ("server");
	    }
	}
	httpreq.send (parms);
    }
}


