// <![CDATA[

function _browser()
{
	var n;
	var ua = navigator.userAgent.toLowerCase();
	if((n = ua.indexOf('msie')) >= 0 && ua.indexOf('win')) {
		return(parseFloat(ua.substr(n + 5, 3)) >= 6);
	} else if((n = ua.indexOf('omniweb')) >= 0) {
		return(parseFloat(ua.substr(n + 9, 4)) > 550);		
	} else if((n = ua.indexOf('safari')) >= 0) {
		return(parseFloat(ua.substr(n + 7, 5)) >= 200);
	} else if(ua.indexOf('mozilla') >= 0) {
		n = ua.indexOf('gecko');
		if(n > 0) {
			n = parseInt(ua.substr(n + 6, 8));
			return(n > 20030601);
		}
	}/* else if((n = ua.indexOf('opera')) >= 0) {
		n = parseFloat(ua.substr(n + 6, 3));
		return(n > 8);
	}	*/
	return(false);
}

if(!_browser()) {
	window.location.replace('/products.html?-');
}

document.writeln('<script language="JavaScript" type="text/javascript" src="/include/xhr.js"></script>');

var act_s; // str
var act_sn; // str name
var act_i; // img
var act_l; // has label?
var _hist = [];
var init_q;
var init_s;
var init_i;
var init_l;
var timer_id;
var timer_d = new Date();
var timer_last = timer_d.getTime();

// preload images
var gl_history_sel = new Image();
gl_history_sel.src = "/glossary/img/stock/gl_history_sel.gif";
var gl_history = new Image();
gl_history.src = "/glossary/img/stock/gl_history.gif";

var gl_all_sel = new Image();
gl_all_sel.src = "/glossary/img/stock/gl_all_sel.gif";
var gl_all = new Image();
gl_all.src = "/glossary/img/stock/gl_all.gif";
	
var gl_terms_sel = new Image();
gl_terms_sel.src = "/glossary/img/stock/gl_terms_sel.gif";
var gl_terms = new Image();
gl_terms.src = "/glossary/img/stock/gl_terms.gif";

function f_id(s)
{
	return(document.getElementById(s));
}
function f_name(s,n)
{
	if(n == null) n = document;
	return(n.getElementsByTagName(s));
}

function get_s(el, attr)
{
	if(attr == null) attr = 'onclick';
	var f = el.getAttribute(attr).toString();
	return(f.substring(f.indexOf("'") + 1, f.lastIndexOf("'")));	
}

function init()
{
	// set main_ad_img
	var ads = ['ad1_lowerleft.jpg'];
	var n = Math.floor(Math.random() * ads.length);
	f_id('main_ad_img').innerHTML = '<img src="/glossary/img/stock/' + ads[n] + '" alt="Learn more" />';

/*
	if(Math.random() * 2 < 1) {
		f_id('anci_ad_img').innerHTML = '<div style="clear: both; padding: 0px;" class="brd"><a href="/pro/?+" title="Learn more about SylviusPRO"><img src="/glossary/img/stock/pro_ad.gif" alt="Learn more about SylviusPRO"></a></div>';
		f_id('anci_ad_img2').innerHTML = '<a href="/vg/?+" title="Learn more about SylviusVG"><img src="/img/vg_top_ad.gif" alt="Learn more about SylviusVG" /></a>';
	} else {
		f_id('anci_ad_img').innerHTML = '<div style="float: right; width: 113px;" class="brd"><a href="/vg/?+" title="Learn more about SylviusVG"><img src="/glossary/img/stock/vg_ad.gif" alt="Learn more about SylviusVG" /></a></div><div style="width: 113px;" class="brd"><a href="/SFN3E/?+" title="Learn more about Neuroscience, 3rd Edition"><img src="/glossary/img/stock/3e_ad.jpg" alt="Learn more about Neuroscience, 3rd Edition" /></a></div>';
		f_id('anci_ad_img2').innerHTML = '<a href="/pro/?+" title="Learn more about SylviusPRO"><img src="/img/pro_top_ad.gif" alt="Learn more about SylviusPRO" /></a>';
	}
*/
	
	// set up key nav
	document.onkeypress = function(e)
	{
		if(e == null) e = window.event;
		
		if(e.target && e.target.name == 'q') return;
		else if(e.srcElement && e.srcElement.name == 'q') return;
		
		if(e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) return;
		
		var n = e.keyCode;
		if(n == null || n == 0) n = e.which;
		
		if(n != 106 && n != 107 && n != 104) return;

		if(n == 104) { // h
			toggle_history();
			return;
		}

		var el = document.getElementById('results_inner');
		var els = el.getElementsByTagName('div');
		
		if(act_s == null) {
			s(get_s(els[0]));
		} else {
			for(var k = 0; k < els.length; k++) {
				if(els[k].firstChild.nodeValue == act_sn) {
					if(n == 106) { // forw
						var j = k + 1;
						while(j < els.length - 1) {
							if(els[j].style.display != 'none') {
								s(get_s(els[j]));
								break;
							}
							j++;
						}
					 	break;
					} else if(n == 107) { // back
						var j = k - 1;
						while(j >= 0) {
							if(els[j].style.display != 'none') {
								s(get_s(els[j]));
								break;
							}
							j--;
						}
					 	break;
					}
				}
			}
		}
	}

	var q = location.search;
	if(q.length > 1) {
		var qs = q.split('&');
		for(var i = 0; i < qs.length; i++) {
			var k = qs[i].indexOf('q=');
			if(k >= 0) { // ?q or q
				init_q = decodeURIComponent(qs[i].slice(k + 2));
				var f = document.forms.search;
				f.q.value = init_q;
			}
			k = qs[i].indexOf('s=');
			if(k >= 0) { // ?s or s
				init_s = decodeURIComponent(qs[i].slice(k + 2));
			}	
			k = qs[i].indexOf('i=');
			if(k == 0) {
				init_i = decodeURIComponent(qs[i].slice(k + 2));
			}
			k = qs[i].indexOf('l=');
			if(k == 0) {
				init_l = parseInt(decodeURIComponent(qs[i].slice(k + 2)));
			}				
		}
	} else {
		init_s = '111';
	}
	window.frames.r_ad.location = "/glossary/ad/index.html";
	xhr_load('/glossary/index.xml','GET','');
}

function xhr_process_custom(r)
{
	var doc = r.responseXML;
	var nodes = doc.lastChild.childNodes;
	if(nodes[0].getAttribute('id') == 'results_inner') {
		var val = nodes[0].firstChild.nodeValue;
		if(val.charAt(0) == '1' || val.charAt(0) == '0') {	
			xhr_info('&nbsp;');
			var matched = val.split('');
			_srch_update(matched);
			return(true);
		} else {
			return(false);
		}
	}
	return(false);
}

function xhr_post_process_custom(r)
{
	if(init_q != null) {
		srch();
		init_q = null;
	}
	if(init_s != null) {
		xhr_serial = false;
		if(init_i != null) {
			si(init_s, init_i, init_l);
		} else {
			si(init_s, null, null);
		}
		init_s = null;
		xhr_serial = true;
	}
	var doc = r.responseXML;
	var nodes = doc.lastChild.childNodes;
	for(var k = 0; k < nodes.length; k++) {
		if(nodes[k].getAttribute('id') == 'vwr') {
			// update overlay links
			var el = document.getElementById('vwr');
			var links = el.getElementsByTagName('a');
			var s = 'str-' + act_s;
			for(var n = 0; n < links.length; n++) {
				if(links[n].getAttribute('name') == s) {
					links[n].style.textDecoration = "none";
					links[n].style.border = "none";
					break;
				}
			}
			break;
		} else if(nodes[k].getAttribute('id') == 'vwr_th') {
			// select the first thumbnail
			var imgs = f_name('a', f_id('vwr_th'));
			if(imgs && imgs.length) {
				var act;
				var al;
				if(!act_i) {
					act = imgs[0].getAttribute('href');
				} else {
					var ai = "'" + act_i + "'"; 
					for(var n = 0; n < imgs.length; n++) {
						if(imgs[n].getAttribute('href').indexOf(ai) > 0) {
							act = imgs[n].getAttribute('href');
							break;
						}
					}
				}
				var id = act.substring(act.indexOf('(') + 2, act.lastIndexOf("'"));
				var labeled;
				if(!act_i) {				
					labeled = (act.indexOf(',1') > 0) ? 1 : 0;
				} else {
					labeled = act_i;			
				}
				xhr_serial = false;
				act_sn = f_id('vwr_nm').firstChild.firstChild.nodeValue;
				
			//	alert(act_sn + " / " + act_s + " / " + act_i);
				
				i(id, labeled);
				xhr_serial = true;
				act_i = null;
				break;
			}
		}
	}
}

function xhr_process_js_custom()
{
	return(false);
}

var srch_advanced = false;

function srch_mode(n)
{
	var all_text = f_id('gl_img_all');
	var terms = f_id('gl_img_terms');
	
	if(n) {
		all_text.src = gl_all_sel.src;
		terms.src = gl_terms.src;	
	} else {
		all_text.src = gl_all.src;
		terms.src = gl_terms_sel.src;		
	}
	srch_advanced = (n == 1);
	srch_queue();
}

function srch_queue()
{
	if(timer_id) {
		window.clearTimeout(timer_id);
		timer_id = null;
	}
	var q = document.forms.search.q;
	
	if(!q.value.length) return;
	
	q.onfocus = function()
	{
		window.clearTimeout(timer_id);
		timer_id = null;
		this.onfocus = null;
	}
	timer_id = window.setTimeout("srch()",1500);
}

function srch_x()
{
	var f = document.forms.search;
	f.q.value = '';
	var el = f_id('results_inner');
	var ents = f_name('div', el);
	var matched = [];
	for(var n = 0; n < ents.length; n++) {
		matched.push(1);
	}
	_srch_update(matched);
	el = f_id('srch_x');
	el.style.display = 'none';	
}

function srch()
{
	toggle_history(0);
	var f = document.forms.search;
	var q = f.q.value;
	if(q.length) {
		var el = f_id('srch_x');
		el.style.display = '';
		if(srch_advanced) {
			xhr_load('/cgi/search.cgi', 'POST', 'q=' + q);			
		} else { // local search
			_srch(q);
		}
	} else {
		srch_x();
	}
	return(false);
}

function _srch(q)
{
	var el = f_id('results_inner');
	var ents = f_name('div', el);
	var qs = q.toLowerCase().split(' ');
	var matched = [];	
	for(var k = 0; k < ents.length; k++) {
		if(!ents[k].hasChildNodes) continue;
		var str = ents[k].firstChild.nodeValue.toLowerCase();
		for(var n = 0; n < qs.length; n++) {
			if(str.indexOf(qs[n]) >= 0) {
				if(n == qs.length - 1) {
					matched.push('1');
				}
			} else {
				matched.push('0');
				break;
			}
		}
	}	
	_srch_update(matched);
}

function _srch_update(matched)
{
// set visibility and updated styles
	var el = f_id('results_inner');
	var ents = f_name('div', el);
	var j = 0; // track styling
	for(var k = 0; k < matched.length; k++) {
		if(k == ents.length) break;
		if(matched[k] == '1') {
			ents[k].style.display = '';
			var is_act = (ents[k].className.indexOf('r_act') >= 0);
			ents[k].className = (j == 0) ? 'r0' : '';
			if(is_act) ents[k].className += ' r_act';
			j = 1 - j;
		} else {
			ents[k].style.display = 'none';
		}
	}
	// scroll the div
	el.parentNode.scrollTop = 0;
}

function si(str, img, labeled) {
	act_i = img;
	act_l = labeled;
	s(str);
}

function s(id)
{
	if(id.indexOf('str') == 0) {
		id = id.slice(4);
	}
	var el = f_id('results_inner');
	var l = f_name('div', el);
	var idq = "'" + id + "'";
	var idq_s = (act_s != null) ? "'" + act_s + "'" : 0;
	var ent;
	
	var countdown = 2;
	if(!idq_s) countdown--;

	for(var k = 0; k < l.length; k++) {
		var clk = l[k].getAttribute('onclick');
		if(clk) {
			clk = clk.toString();
		} else {
			continue;
		}
		if(clk.indexOf(idq) > 0) {
			var cname = l[k].className;
			if(cname != null && cname.indexOf('r_act') < 0) {
				if(cname.length) {
					l[k].className = cname + ' r_act';
				} else {
					l[k].className = 'r_act';
				}
			} else {
				l[k].className = 'r_act';
			}
			ent = l[k];
			countdown--;
			// act_sn = l[k].firstChild.nodeValue;
		}
		else if(idq_s && clk.indexOf(idq_s) > 0) {
			var cname = l[k].className;		
			if(cname.indexOf('r_act') >= 0) {
				l[k].className = cname.slice(0, cname.indexOf('r_act') - 1);
			}
			countdown--;
		}
		if(!countdown) break;
	}
	
	if(ent) {
		var y = s_offset(ent);
		var h = el.offsetHeight;
		var sc = el.parentNode.scrollTop;
		var oh = el.parentNode.offsetHeight;
								
		// is the selected item in view?	
		if(y < sc || y > sc + oh) {
			if(y > h - oh) y = h - oh;	
			el.parentNode.scrollTop = y;
		}
	}
	
	act_s = id;
	timer_d = new Date();
	if(timer_d.getTime() - timer_last > 20000) {
		window.frames.r_ad.location = "/glossary/ad/" + id + ".html";
		timer_last = timer_d.getTime();
	}
	xhr_load('/glossary/3_html/str/str-' + id + '.xml', 'GET', '');
}

function s_offset(s)
{
	var n = s.offsetTop;
	var p = s.parentNode;
	var k = 0;
	while(s.offsetParent != null) {
		s = s.offsetParent;
		n += s.offsetTop;
		if(k == 10) break;
		k++;
	}
	k = 0;
	n -= p.offsetTop;
	while(p.offsetParent != null) {
		p = p.offsetParent;
		n -= p.offsetTop;
		if(k == 10) break;
		k++;
	}
	return(n);
}


function do_str(id)
{
	xhr_load('/glossary/3_html/str/' + id + '.xml', 'GET', '');
}

function i(id,labeled)
{
	act_i = null;

	// highlight th
	var el = f_id('vwr_th');
	var imgs = f_name('img', el);
	var idq = '/' + id + '.';
	for(var k = 0; k < imgs.length; k++) {
		var cname = imgs[k].className;		
		if(imgs[k].getAttribute('src').indexOf(idq) >= 0) {
			if(cname == null || !cname.length) {
				cname = 'vwr_th_act';
			} else if(cname.indexOf('vwr_th_act') < 0) {
				cname = cname + ' vwr_th_act';
			}
		} else {
			var cname = imgs[k].className;
			if(cname.indexOf('vwr_th_act') >= 0) {
				cname = cname.slice(0, cname.indexOf('vwr_th_act') - 1);
			}
		}
		imgs[k].className = cname;
	}

	hist(id, labeled);
	if(labeled && navigator.userAgent.toLowerCase().indexOf('msie') >= 0) id += '_vml';
	xhr_load('/glossary/3_html/img/' + id + '.xml', 'GET', '');
}

function do_img(id, labeled)
{
	i(id, labeled);
}

function hist(id, labeled)
{
	for(var k = 0; k < _hist.length - 1; k++) {
		if(_hist[k][0] == act_s && _hist[k][2] == id) {
			_hist.splice(k, 1);
			k--;
		}
	}

	_hist.push([act_s, act_sn, id, labeled]);

	var el = f_id('results_history_inner');
	var ht = '';
	for(var k = 0, i = _hist.length - 1; i >= 0 && k < 50; k++, i--) {
		ht += '<a href="javascript:si(\'' + _hist[i][0] + '\',\'' + _hist[i][2] + '\',\'' + _hist[i][3] + '\')" title="' + _hist[i][1] + '"><img src="/glossary/img/60x62/' + _hist[i][2] + '.jpg" alt="' + _hist[i][1] + '" /></a>';
	}
	
	el.innerHTML = ht;
}

function toggle_history(b)
{
	var el = f_id('results_history');
	var r = f_id('results');

	if(b == null) {
		b = (el.style.display != 'block');
	}
	
	el.style.display = b ? 'block' : 'none';
	r.style.display = b ? 'none' : 'block';	
	f_id('gl_history').src = b ? gl_history_sel.src : gl_history.src;	
}

function audio(id)
{
	var el = f_id('audio_embed');
	el.innerHTML = '<embed src="/glossary/audio/en/' + id + '.mp3" autostart="true" hidden="true" />';
}

// ]]>
