jQuery(document).ready(function(){
	jQuery("#au_wrapper").append("<h1 class=\"au_footnote_header\">Notes</h1>");
	jQuery("#au_wrapper").append("<ol id=\"au_footnotes\"></ol>");
	jQuery("#au_wrapper").append("<h1 class=\"au_footnote_header\">This document was printed from</h1>");
	jQuery("#au_wrapper").append("<p id=\"au_current_url\">"+document.location.href+"</p>");
	footnote = 1;
	jQuery("div#au_content q[cite],div#au_content q[title],div#au_content blockquote[cite],div#au_content blockquote[title],div#au_content a[href]").addClass("footnote");
	jQuery(".footnote").each(function() {
		jQuery(this).after("<sup class=\"au_footnote\">"+footnote+"</sup>");
		cite="<li>";
		url=$(this).attr("cite");
		href=$(this).attr("href");
		if(url) {
			cite+="<a href=\""+url +"\">" +extractRealLink(url) + "</a>";
		} else if(href) {
			cite+="<a href=\""+href+"\">"+extractRealLink(href)+"</a>";
		}
		cite+="</li>";
		jQuery("#au_footnotes").append(cite);
		footnote++;
	});
});

function extractRealLink(url)
{
	if (isJavaScriptEmail(url))
		return extractEmail(url);
	else
	{
	 	baseRef = jQuery("base").attr("href");
	 	if (baseRef !=undefined)
	 		return toAbs(url, baseRef);
		else
			return url;
	 }
}
function isJavaScriptEmail(url)
{
	var lparts = url.split('/');
	return /javascript:linkTo_UnCryptMailto/.test(lparts[0]);
}
function extractEmail(url)
{
	value = url.substring(url.indexOf('\'')+1, url.lastIndexOf('\''));
	m = decryptString(value, -1).substring(7); //remove mailto:
	questionIndex = m.indexOf('?');
	if (questionIndex > -1)
		m = m.substring(0, questionIndex);
	return m.substring(0, m.indexOf('@')+1) + "<span style=\"display:none;\">remove-this.</span>" + m.substring(m.indexOf('@')+1);
	
}
function toAbs(link, host) {

  var lparts = link.split('/');
  if (/http:|https:|ftp:|mailto:/.test(lparts[0])) {
    // already abs, return
    return link;
  }

  var i, hparts = host.split('/');
  if (hparts.length > 3) {
    hparts.pop(); // strip trailing thingie, either scriptname or blank 
  }

  if (lparts[0] === '') { // like "/here/dude.png"
    host = hparts[0] + '//' + hparts[2];
    hparts = host.split('/'); // re-split host parts from scheme and domain only
    delete lparts[0];
  }

  for(i = 0; i < lparts.length; i++) {
    if (lparts[i] === '..') {
      // remove the previous dir level, if exists
      if (typeof lparts[i - 1] !== 'undefined') {
        delete lparts[i - 1];
      } else if (hparts.length > 3) { // at least leave scheme and domain
        hparts.pop(); // stip one dir off the host for each /../
      }
      delete lparts[i];
    }
    if(lparts[i] === '.') {
      delete lparts[i];
    }
  }

  // remove deleted
  var newlinkparts = [];
  for (i = 0; i < lparts.length; i++) {
    if (typeof lparts[i] !== 'undefined') {
      newlinkparts[newlinkparts.length] = lparts[i];
    }
  }

  return hparts.join('/') + '/' + newlinkparts.join('/');

}
