// (c) 2002-2006 Jonathan Kovaciny (at the dot com of yahoo, i am kovo1)
// Detect JavaScript engine
	var DOM = (document.getElementById) ? 1 : 0;
	var NS4 = (document.layers) ? 1 : 0;
	var IE4 = (document.all) ? 1 : 0;
	
// Track mouse
	if (!IE4) document.captureEvents(Event.MOUSEMOVE)
	document.onmousemove = getMouseXY;
	var mX = 0;
	var mY = 0;
	var ld = "";
	function getMouseXY(e) {
		if (IE4) {mX = event.clientX + document.body.scrollLeft; mY = event.clientY + document.body.scrollTop;} else {mX = e.pageX; mY = e.pageY;}  
		if (mX < 0) {mX = 0;}
		if (mY < 0) {mY = 0;}  
		return true;
	}

// Layer Manipulation
	function LayerWrite (LayerName, LayerHTML) {if (DOM) {document.getElementById(LayerName).innerHTML = LayerHTML;} else if (NS4) {i = '<P CLASS="testclass">' + LayerHTML + '</P>'; document.layers[LayerName].document.open(); document.layers[LayerName].document.write(i); document.layers[LayerName].document.close();} else {document.all[LayerName].innerHTML = LayerHTML;}}
	function setleft(layer,x) {if (DOM) {document.getElementById(layer).style.left = x;} else if (NS4) {document.layers[layer].left = x;} else {document.all[layer].style.pixelLeft = x;}}
	function settop(layer,y) {if (DOM) {document.getElementById(layer).style.top = y;} else if (NS4) {document.layers[layer].top = y;} else {document.all[layer].style.pixelTop = y;}}
	function showtl(which) {settop('l'+which,53);}
	function hidetl(which) {settop('l'+which,-20);}
	function show(e){ //use if initial state is hide
		if(DOM) {element = document.getElementById(e).style;} else if (NS4) {element = document.layers[e];} else {element = document.all[e].style;}
		element.display == 'block' ? element.display = 'none' : element.display='block';
	}
	function hide(e){ //use if initial state is show
		if(DOM) {element = document.getElementById(e).style;} else if (NS4) {element = document.layers[e];} else {element = document.all[e].style;}
		element.display == 'none' ? element.display = 'block' : element.display='none';
	}
	function showonly(e){
		if(DOM) {element = document.getElementById(e).style;} else if (NS4) {element = document.layers[e];} else {element = document.all[e].style;}
		element.display='block';
	}
	function hideonly(e){
		if(DOM) {element = document.getElementById(e).style;} else if (NS4) {element = document.layers[e];} else {element = document.all[e].style;}
		element.display='none';
	}
	function showFieldLabel(layer) {
		if (DOM) {document.getElementById(layer).style.visibility = 'visible';}
		else if (NS4) {document.layers[layer].visibility = 'visible';}
		else {document.all[layer].style.visibility = 'visible';}
	}
	function hideFieldLabel(layer) {
		if (DOM) {document.getElementById(layer).style.visibility = 'hidden';}
		else if (NS4) {document.layers[layer].visibility = 'hidden';}
		else {document.all[layer].style.visibility = 'hidden';}
	}
	function fadein(e) {
		if(DOM) {element = document.getElementById(e).style;} else if (NS4) {element = document.layers[e];} else {element = document.all[e].style;}
		changeOpac(0, 'tooltip');
		for(i=20;i<=100;i=i+20){
			b = i*2;
			setTimeout("changeOpac(" + i + ", '" + e + "');", b);
		}
	}
	function changeOpac(opacity, e) {
		element.opacity = (opacity / 100);
		element.MozOpacity = (opacity / 100);
		element.KhtmlOpacity = (opacity / 100);
		element.filter = "alpha(opacity=" + opacity + ")";
	}
	function tooltip(what){ // locates tooltip layer to mouse and writes tooltip
		setleft('tooltip', mX+80);
		settop('tooltip', mY-15);
		LayerWrite('tooltip', '<div class="small" style="border: 1px solid #999; padding: 6px; background: #FFE; width: 130px;">' + what + '</div>')
		showonly('tooltip');
		fadein('tooltip');
	}
	
// JavaScript Search box (to be retired soon)
	var GSCurs = "|";
	var lastSS = "";
	var curSS = "";
	var curstate = "";
	function focusSearch() {
		if (DOM) document.getElementById("sb").focus();
		if (NS4) document.layers.hiddenSearch.document.forms.searchForm.q.focus();
		if (IE4) document.all.q.focus();
		setInterval('cursorState();', 500);
		setInterval('showGS();', 50);
	}
	function cursorState() {
		if (DOM) lastSS = document.getElementById("sb").value;
		if (NS4) lastSS = document.layers.hiddenSearch.document.forms.searchForm.q.value;
		if (IE4) lastSS = document.all.q.value;
		if (GSCurs=='|') {GSCurs=''}else{GSCurs='|'}
		}
	function showGS() {
			if (GSCurs != curstate || curSS != lastSS) {
				if (lastSS.length>23) lastSS=lastSS.substring(lastSS.length-23,lastSS.length);
				LayerWrite('gSearch', lastSS + GSCurs);
			}
			curstate = GSCurs;
			curSS = lastSS;
	}
	function searchSubmit() {
		if (DOM) document.getElementById("searchForm").submit();
		if (NS4) document.layers.hiddenSearch.document.forms.searchForm.submit();
		if (IE4) document.forms.searchForm.submit();
	}

// External Link Popup
	function wdl(linkname) {
		setleft('tooltip', mX+80);
		settop('tooltip', mY-15);
		makeRequest('/offsite/linkdata.asp?link=' + linkname);
	}
	
// THIS AJAX WRITES THE FETCHED DOC TO THE TOOLTIP LAYER AT THE MOMENT. This should change.
	function makeRequest(url) {
		var http_request = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!http_request) {
			//alert('Giving up :( Cannot create an XMLHTTP instance');
			return false;
		}
		http_request.onreadystatechange = function() { showcontents(http_request); };
		http_request.open('GET', url, true);
		http_request.send(null);
	}
	
	function showcontents(http_request) {
		if (http_request.readyState == 4) {
			if (http_request.status == 200) {
				LayerWrite('tooltip', '<div class="small" style="border: 1px solid #999; padding: 12px; background: #EEE; width: 130px;">' + http_request.responseText + '</div>')
				showonly('tooltip');
				fadein('tooltip');
			} else {
				//alert('There was a problem with the request.');
			}
		}
	}

function InsertQT(Type, MovieSrc, MovieWidth, MovieHeight, AutoPlay, Controller, Loop) {
	if (Type == "quicktime") {Type = ' classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab"'; PluginPage = ' pluginspage="http://www.apple.com/quicktime/"';}
	document.write('<object'+Type+' width="'+MovieWidth+'" height="'+MovieHeight+'">');
	document.write('<param name="src" value="'+MovieSrc+'" /><param name="autoplay" value="'+AutoPlay+'" />');
	document.write('<param name="controller" value="'+Controller+'" /><param name="loop" value="'+Loop+'" />');
	document.write('<embed src="'+MovieSrc+'" width="'+MovieWidth+'" height="'+MovieHeight+'" autoplay="'+AutoPlay+'" loop="'+Loop+'" controller="'+Controller+'"></embed>');
	document.write('</object>\n');
}

function copy(inElement) {
  if (inElement.createTextRange) {
    var range = inElement.createTextRange();
    if (range && BodyLoaded==1)
      range.execCommand('Copy');
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="/z/_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
}