
// main utility scripts for website - masters are in indivdual files in js/utilities/

// spam-proof mail addresses
function mailaddr(user, domain, style, content) {
    document.write("<a href='" + "mai" + "lto:" + user + "@" + domain + "' "+ (style?"class="+style:"") + ">" + (content?content:(user + "@" + domain)) + "</a>");
}


var folditems = [];
function folditem(elt, folded, unfolded, start, expires, path, domain, secure) {
    this.fold = function() {
        document.getElementById(this.elt).innerHTML=this.folded;
        if (this.cookie) setCookie(this.elt+"_unfolded","", this.expires, this.path, this.domain, this.secure);
    }
    this.unfold = function() {
		document.getElementById(this.elt).innerHTML=this.unfolded;
        if (this.cookie) setCookie(this.elt+"_unfolded","true", this.expires, this.path, this.domain, this.secure);
    }
    this.elt = elt;
    this.folded = folded;
    this.unfolded = unfolded;
	this.cookie = false;
	this.expires = expires;
    this.path = path;
	this.domain = domain;
	this.secure = secure;
	
	folditems[elt] = this;
    
	if (start == "cookie") {
		this.cookie = true;
		getCookie(elt+"_unfolded")?this.unfold():this.fold();
	} else if (start == "fold") {
		this.fold();
	} else if (start == "unfold") {
		this.unfold();
	}
}
         

// breadcrumb trail - based on original by Paul Davis - http://www.kaosweaver.com
function breadcrumbs(base,defp,style,sep) {
    loc=window.location.toString();
	bton=loc.indexOf(".bton.");
	if (bton != -1) { loc=loc.slice(0,bton)+".brighton."+loc.slice(bton+6); }
	baseloc=loc.indexOf(base);
	homestr='NLTG Home';
    if (baseloc == -1) {
        subs=loc.split("/");
        base=subs[0]+"//"+subs[2];
        baseloc=loc.indexOf(base);
		homestr=base;
    }
	subs=loc.substr(baseloc+base.length+1).split("/");
	document.write('<a href="'+getLoc(subs.length-1)+defp+'" '+(style?'class='+style:'')+'>'+homestr+'</a>'+(sep?sep:'>'));
    for (i=0;i<(subs.length-1);i++) {
        subs[i]=processFile(subs[i]);
        document.write('<a href="'+getLoc(subs.length-i-2)+defp+'" '+(style?'class='+style:'')+'>'+subs[i]+'</a>'+(sep?sep:'>'));
    }
    var t = document.title;
    var i = t.indexOf(" - ");
    if (i > 0) t = t.substr(i+3);
    document.write('<span '+(style?'class='+style:'')+'>'+t+'</span>');
}
var abbrev_map;
function processFile(a) {
    // prettyprint filename a: turn underscores to spaces and capitalise first word
    g=a.split('_');
	if (abbrev_map) {
		var gl = g.length;
		for (i=0;i<gl;i++) {
			var ab = abbrev_map[g[i]];
			if (ab) g[i] = ab;
		}
	}
    g[0]=g[0].toUpperCase().slice(0,1)+g[0].slice(1);
    return g.join(" ");
}
function getLoc(c) {
    // create filename prefix to go 'up' c times
    var d="";if (c>0) for (k=0;k<c;k++) d=d+"../"; return d;
}



/**
 * Read the JavaScript cookies tutorial at:
 *   http://www.netspade.com/articles/javascript/cookies.xml
 */

/**
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [expires]  Expiration date of the cookie (default: end of current session)
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
 */
function setCookie(name, value, expires, path, domain, secure)
{
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

/**
 * Deletes the specified cookie.
 *
 * name      name of the cookie
 * [path]    path of the cookie (must be same as path used to create cookie)
 * [domain]  domain of the cookie (must be same as domain used to create
cookie)
 */
function deleteCookie(name, path, domain)
{
    if (getCookie(name))
    {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}



