/* (C)opyright 2005, Clayton H. Harris */

var nClass = "class";
var elems = new Array();

function replace_it(a, m)
{
	for (var i = 0; i < a.length; i++) {
		var e = a[i];
		var h = e.getAttribute("href");
		if ((h) && (h.slice(0, 8) == "mailto:@"))
			e.setAttribute("href", m + h.slice(8));
	}
}

function edit_mailto()
{
	var m = "mailto:";
	m += "cosmos";
	m += "@";
	m += "visi.com";

	var a = document.getElementsByTagName("link");
	replace_it(a, m);

	a = document.getElementsByTagName("a");
	replace_it(a, m);
}

function check_class()
{
	/* Braindead I.E. incompatability! */

	var b = window.document.getElementsByTagName("body");
	if (!b) {
		alert("Couldn't find <body>!");
		return;
	}

	if (b[0].getAttribute("class"))
		return;

	if (b[0].getAttribute("className")) {
		nClass = "className";
		return;
	}

/*	alert("Couldn't determine class identifier!"); */
}

function boxi(url, param, frag)
{
	this.url = url;
	this.param = param;
	this.frag = frag;
}

function parse_href(h_ref)
{
	var box_s = new boxi('', '', '');

	var i = h_ref.indexOf('?');
	var j = h_ref.indexOf('#');
	var k = (i >= 0) ? i : j;

	box_s.url = (k >= 0) ? h_ref.slice(0, k) : h_ref;
	box_s.param = (i >= 0) ? (box_s.param = (j >= 0) ?
		h_ref.slice(i + 1, j) : h_ref.slice(i + 1)) : '';
	box_s.frag = (j >= 0) ? h_ref.slice(j + 1) : '';

	return box_s;
}

function rem_class(tag, class_str)
{
	if (tag) {
		var old_class = tag.getAttribute(nClass);
		if (old_class) {
			var rex = new RegExp(' *'+class_str);
			old_class = old_class.replace(rex, '');
			old_class = old_class.replace(/^ */, '');
			if (old_class.length > 0)
				tag.setAttribute(nClass, old_class);
			else
				tag.removeAttribute(nClass);
		}
	}
}

function elemi(elem, a_class)
{
	this.elem = elem;
	this.a_class = a_class;
}

function add_class(tag, a_class)
{
	if (tag) {
		elems[elems.length] = new elemi(tag, a_class);

		var old_class = tag.getAttribute(nClass);
		if ((old_class) && (old_class.length > 0))
			a_class = old_class + ' ' + a_class;
		tag.setAttribute(nClass, a_class);
	}
}

function restore_style()
{
	for (var i = 0; i < elems.length; i++)
		rem_class(elems[i].elem, elems[i].a_class);

	elems = new Array();
}

function set_style(frag)
{
	restore_style();
	if (!frag)
		return;

	if (frag.indexOf('zar-faq') < 0) {
		add_class(document.getElementById(frag+'-box'), 'box');
		return;
	}

	add_class(document.getElementById(frag), 'box-faq');
}

function find_hdr(tag, look)
{
	var lev = tag;
	while (lev) {
		for (var n = lev; n; n = n.previousSibling)
			if (n.nodeType == 1) {
				var h = n.nodeName;
				if (((look) && (h.toLowerCase() == look)) ||
					((!look) && (h.match(/^[hH][1-6]$/))))
					return n;
			}
		lev = lev.parentNode;
	}

	return null;
}

function boxit(tag, frag)
{
	set_style(frag);
	if ((frag == 'zar-match-plus') || (frag.indexOf('zar-faq') >= 0))
		return true;

	var ftag = document.getElementById(frag);
	var htag = find_hdr(ftag, '');
	if ((htag != ftag) && (htag) && (htag.scrollIntoView)) {
		htag.scrollIntoView(true);
		return false;
	}

	return true;
}

function add_onclick(box_s)
{
	var ans = document.getElementsByTagName('a');

	for (var i = 0; i < ans.length; i++) {
		var an = ans[i];
		var h_ref = an.getAttribute('href');
		if (h_ref) {
			var box_t = parse_href(h_ref);
			if ((box_t.frag) &&
				((!box_t.url) || (box_t.url == box_s.url))) {
				an.setAttribute('onclick',
				'return boxit(this, "'+box_t.frag+'");');
			}
		}
	}

	if (nClass == 'className') {
		var btag = document.getElementsByTagName('body')[0];
		btag.innerHTML = btag.innerHTML;
	}
}

function do_load()
{
	if ((document.readyState) && (document.readyState != "complete"))
		return;

	if (!document.getElementsByTagName) // NN6, IE5
		return;

	check_class();

	edit_mailto();

	var box_s = parse_href(location.href);
	add_onclick(box_s);

	if (box_s.frag)
 		boxit(null,box_s.frag);
}

	if (document.onreadystatechange)
		document.onreadystatechange = do_load;
	else
		window.onload = do_load;

/* Last updated: October 6, 2005 */
