// All scripts on the site that can be externally linked. Credit given when possible. I didn't write any of these, because I don't know a lick of Javascript.


/*------------------------------------------------------------
	Author: Travis Beckham
	Site: squidfingers.com
	Description: Remove anchor outlines from all links in the document
------------------------------------------------------------*/

function blurAnchors(){
  if(document.getElementsByTagName){
    var a = document.getElementsByTagName("a");
    for(var i = 0; i < a.length; i++){
      a[i].onfocus = function(){this.blur()};
    }
  }
}
window.onload = blurAnchors;

/*------------------------------------------------------------
	Author: John Hicks
	Site: hicksdesign.co.uk
	Description: Clears text in a textarea (subject to change based on what I need it for)
------------------------------------------------------------*/

function ClearSearchBy()
		{
		if (document.getElementById('search-input').value == 'Looking for something?')
		
		{
			document.getElementById('search-input').value = '';
	}
}
		
/*------------------------------------------------------------
	Author: John Hicks
	Site: hicksdesign.co.uk
	Description: Makes the Live Comment Preview possible (genius!)
------------------------------------------------------------*/

// live comment preview  - comment body

function ReloadTextDiv() { // rename to ReloadTextDiv() or update your onkeyup - your choice...
	document.getElementById('TextDisplay').innerHTML = '<p>'+document.getElementById('message').value.replace(/(\n|\r)/g,'<br />').replace(/(<br \/>){2,}/gi,'<'+'/p><p>')+'<'+'/p>';
}

// live comment preview - author
function ReloadNameDiv()
{
var NewText = document.getElementById("name").value;
var DivElement = document.getElementById("NameDisplay");
DivElement.innerHTML = NewText;
}

// show and hide layers
var cur_lyr;	// holds id of currently visible layer
function swapLayers(id) {
  if (cur_lyr) hideLayer(cur_lyr);
  showLayer(id);
  cur_lyr = id;
}

function showLayer(id) {
  var lyr = getElemRefs(id);
  if (lyr && lyr.css) lyr.css.display = "block";
}

function hideLayer(id) {
  var lyr = getElemRefs(id);
  if (lyr && lyr.css) lyr.css. display = "none";
}

function getElemRefs(id) {
	var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	if (el) el.css = (el.style)? el.style: el;
	return el;
}

/*------------------------------------------------------------
	Author: Stuart Langridge
	Site: kryogenix.org
	Description: Gives Textile ability to the Live Comment Preview
------------------------------------------------------------*/

function textile(s) {
    var r = s;
    // quick tags first
    qtags = [['\\*', 'strong'],
             ['\\?\\?', 'cite'],
             ['-', 'del'],
             ['\\+', 'ins'],  //fixed
             ['~', 'sub'],   
             ['\\^', 'sup'], // me
             ['@', 'code']];
    for (var i=0;i<qtags.length;i++) {
        ttag = qtags[i][0]; htag = qtags[i][1];
        re = new RegExp(ttag+'\\b(.+?)\\b'+ttag,'g');
        r = r.replace(re,'<'+htag+'>'+'$1'+'</'+htag+'>');
    }
    // underscores count as part of a word, so do them separately
    re = new RegExp('\\b_(.+?)_\\b','g');
    r = r.replace(re,'<em>$1</em>');

    // links
    re = new RegExp('"\\b(.+?)\\(\\b(.+?)\\b\\)":([^\\s]+)','g');
    r = r.replace(re,'<a href="$3" title="$2">$1</a>');
    re = new RegExp('"\\b(.+?)\\b":([^\\s]+)','g');
    r = r.replace(re,'<a href="$2">$1</a>');

    // images
    re = new RegExp('!\\b(.+?)\\(\\b(.+?)\\b\\)!','g');
    r = r.replace(re,'<img src="$1" alt="$2">');
    re = new RegExp('!\\b(.+?)\\b!','g');
    r = r.replace(re,'<img src="$1">');
    
    // block level formatting
    lines = r.split('\n');
    nr = '';
    for (var i=0;i<lines.length;i++) {
        line = lines[i].replace(/\s*$/,'');
        changed = 0;
        if (line.search(/^\s*bq\.\s+/) != -1) { line = line.replace(/^\s*bq\.\s+/,'\t<blockquote>')+'</blockquote>'; changed = 1; }
        if (line.search(/^\s*\*\s+/) != -1) { line = line.replace(/^\s*\*\s+/,'\t<liu>') + '</liu>'; changed = 1; } // * for bullet list; make up an liu tag to be fixed later
        if (line.search(/^\s*#\s+/) != -1) { line = line.replace(/^\s*#\s+/,'\t<lio>') + '</lio>'; changed = 1; } // # for numeric list; make up an lio tag to be fixed later
        if (!changed && (line.replace(/\s/g,'').length > 0)) line = '<p>'+line+'</p>';
        lines[i] = line + '\n';
    }
    // Second pass to do lists
    inlist = 0; listtype = '';
    for (var i=0;i<lines.length;i++) {
        line = lines[i];
        if (inlist && listtype == 'ul' && !line.match(/^\t<liu/)) { line = '</ul>\n' + line; inlist = 0; }
        if (inlist && listtype == 'ol' && !line.match(/^\t<lio/)) { line = '</ol>\n' + line; inlist = 0; }
        if (!inlist && line.match(/^\t<liu/)) { line = '<ul>' + line; inlist = 1; listtype = 'ul'; }
        if (!inlist && line.match(/^\t<lio/)) { line = '<ol>' + line; inlist = 1; listtype = 'ol'; }
        lines[i] = line;
    }

    r = lines.join('\n');
    r = r.replace(/<lio>/g,'<li>');
    r = r.replace(/<liu>/g,'<li>');

    return r;
}

function ReloadTextDiv() { 
    var commentString = document.getElementById('message').value;
    document.getElementById('TextDisplay').innerHTML = textile(commentString);
}


var dom = (document.getElementById && !document.all)? 1: 0;

function show_input(SearchInput)
{
	var obj = (dom)? document.getElementById(SearchInput): document.all[SearchInput];

if(obj.style.visibility == "hidden"){ // show
	 obj.style.visibility = "visible";
  }
  else { // hide
	  obj.style.visibility = "hidden";
  }
}

var dom = (document.getElementById && !document.all)? 1: 0;

function show_validate(ValidateSub)
{
	var obj = (dom)? document.getElementById(ValidateSub): document.all[ValidateSub];

if(obj.style.visibility == "hidden"){ // show
	 obj.style.visibility = "visible";
  }
  else { // hide
	  obj.style.visibility = "hidden";
  }
}

/*------------------------------------------------------------
	Author: Eric Meyer
	Site: meyerweb.com
	Description: Begone, spam!
------------------------------------------------------------*/

function setAddr(name) {
	var obj = document.getElementById('contactAddr');
	if (obj) {
		name += (name != 'k') ? 'ageolson' : 'at';
		var dmn = new Array('com','.','il','a','gm').reverse().toString();
		dmn = dmn.replace(/\,/g,'').replace(/(w)/g,'$1eb');
		obj.href = 'mailto:' + name + '@' + dmn;
	}
	return true;
}