	var user = null;
	var session = null;

	function getLinks () {

		var anchors = document.getElementsByTagName("a");
		var re = new RegExp('#(.)*');
		for (var i=0; i < anchors.length; i++) {
			if (!anchors[i].href.match(re)) {
				_UTIL_addEvent( anchors[i], "click", send_link_data );
       			}
		}
		return true;
	}
	
function ajaxPost(contentUrl) {
        request = false;

        if (window.XMLHttpRequest) {
		try {
	    	    request = new XMLHttpRequest();
		} 
		catch(exception) {
	    	    request = false;
		}
	} else if (window.ActiveXObject) {
		    try {
	    		request = new ActiveXObject("Msxml2.XMLHTTP");
		    }
		    catch(exception) {
			try {
			    request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch(exception) {
			    request = false;
			}
		    }
    	}

	if(request) {
		request.onreadystatechange = function() { /*
			    if (request.readyState == 4) {
				    //alert(request.statusText);
				    if (request.status == 200) {
					alert(request.status);
				    }else {
					alert("error");
				    }
			    } */
		}; // this event must be defined in order to be able to do an asyncronous request
		request.open("POST", contentUrl, true);
	        request.send(null); 
	}
}
function pausecomp(millis) {
	var date = new Date();
	var curDate = null;
	do { 
		curDate = new Date(); 
	}
	while(curDate-date < millis);
} 

function get_form_elements (event) {
        var form = event ? event.target : this;
        var result = "";
        for (var i=0; i<form.length;i++) {
                var current = form.elements[i];
                var name = current.name || current.id || 'undefined';
                var type = current.type || 'undefined';
		var value = current.value || 'undefined';

		result+="type="+type+";";
                result+="name="+name+";";
                if ((type == "checkbox") || (type == "radio"))  {
			value = current.checked;
			//result+="checked="+current.checked+";"; 
		}
		if (current.type == "select") {
			value = current.options[current.options.selectedIndex].text;
			//result+="text"+current.options[current.options.selectedIndex].text+";";
		}
                
		result+="value="+value+"*";
	}
	user = encodeURIComponent(user);
	session = encodeURIComponent(session);
	//alert(result);
	result=encodeURIComponent(result);
	var target="/mason/Admin/usertracker.html?user="+user+"&session_id="+session+"&action=submit&location="+window.location+"&params="+result;
	
	ajaxPost(target);
	alert(target);
	setTimeout("form._submit();",250);
}

	function handle_click(uid,sid) {
		user = uid;
		session = sid;
		getLinks();
	return true;
	}

	function send_link_data(event) {
		var targetUrl = "/mason/Admin/linktracker.html";
		var params = '';

		user = encodeURIComponent(user);
		session = encodeURIComponent(session);

		var current = new String(window.location);
		current = get_location(current);
		current = encodeURIComponent(current);

		var text,value = '';
		if (navigator.appName == "Netscape") {
			text = this.text || this.name || this.id;
		}else text = this.firstChild.data || this.name || this.id;
		//alert("text=("+this.text+")\n"+"name=("+this.name+")\n"+"id=("+this.id+")");
		var word = new RegExp("\\W*\\w+\\W*","g");
		if (!text.match(word)) {
			if (this.childNodes.length > 0) {
				for (var i=0;i<this.childNodes.length;i++) {
					if (this.childNodes[i].tagName == "IMG") {
						text = this.childNodes[i].tagName;
						var src = this.childNodes[i].getAttribute("src");
						var re = new RegExp(".*pic_view.*","g");
						if (src.match(re)) {
							var unique_img = new RegExp(".*\\.(.*)\\.[^\\.]*","g");
							var match = unique_img.exec(src);
							text += "_"+match[1];
						}else text += ": "+src;
						break;	
					}else {
						if (navigator.appName == "Netscape") {
							text = this.childNodes[i].text || this.childNodes[i].name || this.childNodes[i].id;
						}
						else text = this.childNodes[i].firstChild.data || this.childNodes[i].name || this.childNodes[i].id;
					}
				}
			}
			
		}
		
		text = resolve_basic_links(this)+text;
		text = encodeURIComponent(text);
		value = this.href;
		value = get_location(value);
		value = encodeURIComponent(value);

		coordinates = get_coordinates(this);
		//alert("text="+text+"\n"+"coordinates="+coordinates);
		coordinates = encodeURIComponent(coordinates);


		
		params ='&coordinates='+coordinates+'&text='+text+'&value='+value;
		targetUrl +="?user="+user+"&session_id="+session+"&location="+current+params;
		ajaxPost(targetUrl);
		pausecomp(250);

		return true;
	}

function get_coordinates(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
	}
	while (obj = obj.offsetParent) {
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
	var document_size = document.getElementById("wrap");
	curleft = curleft-document_size.offsetLeft;
	curtop = curtop-document_size.offsetTop;
	var x = document_size.clientWidth;
	var y = document_size.clientHeight;
	percent_left = Math.round((curleft*100)/x);
	percent_top = Math.round((curtop*100)/y);
	var result = "("+percent_left+","+percent_top+") of "+x+"x"+y;
	return result;
}

function get_location(url) {
	var expression = new RegExp("(^.*//[^/]*)", "g");
	url = url.replace(expression,"");
	var html_only = new RegExp("\\?.*","g");
	url = url.replace(html_only,"");
	return url;
}

function resolve_basic_links(obj) {
	while (obj = obj.parentNode) {
		switch (obj.id) {
			case "region_selector" : return "<b>Region Selector:</b> ";
			case "mainnav" : return "<b>Main Navigation:</b> ";
			case "util" : return "<b>Header:</b> ";
			case "subscribe_button" : return "<b>Header subscribe:</b> ";
			case "content" : return "<b>Content:</b> "
			default: if (obj.hasAttributes){
					if (obj.getAttribute("class") == "footer") {
						return "<b>Footer:</b> ";
					}
				}
		}
/*		if (obj.nodeName == "BODY") {
			return "<b>Content:</b> ";
		} */
	} 
	return "";
}

function map_track(uid,sid,subscribed) {
	uid = encodeURIComponent(uid);
	sid = encodeURIComponent(sid);
	var map = this.value;
	map = encodeURIComponent(map);
	var target_url = "/mason/Admin/track_maps.html?uid="+uid+"&sid="+sid+"&subscribed="+subscribed+"&map="+map;
	ajaxPost(target_url);
	pausecomp(250);
	return true;
}
