// Copyright (c) 1996-1997 Athenia Associates.
// http://www.webreference.com/js/
// License is granted if and only if this entire
// copyright notice is included. By Tomer Shiran.

function setCookie (name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) + (expires ? "; expires=" + expires : "") +
        (path ? "; path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "secure" : "");
    document.cookie = curCookie;
}

function getCookie (name) {
    var prefix = name + '=';
    var c = document.cookie;
    var nullstring = '';
    var cookieStartIndex = c.indexOf(prefix);
    if (cookieStartIndex == -1)
        return nullstring;
    var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
    if (cookieEndIndex == -1)
        cookieEndIndex = c.length;
    return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

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";
}

function fixDate (date) {
    var base = new Date(0);
    var skew = base.getTime();
    if (skew > 0)
        date.setTime(date.getTime() - skew);
}

function rememberMe (f) {
    var now = new Date();
    fixDate(now);
    now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
    now = now.toGMTString();
    if (f.author != undefined)
       setCookie('mtcmtauth', f.author.value, now, '/', '', '');
    if (f.email != undefined)
       setCookie('mtcmtmail', f.email.value, now, '/', '', '');
    if (f.url != undefined)
       setCookie('mtcmthome', f.url.value, now, '/', '', '');
}

function forgetMe (f) {
    deleteCookie('mtcmtmail', '/', '');
    deleteCookie('mtcmthome', '/', '');
    deleteCookie('mtcmtauth', '/', '');
    f.email.value = '';
    f.author.value = '';
    f.url.value = '';
}

function hideDocumentElement(id) {
    var el = document.getElementById(id);
    if (el) el.style.display = 'none';
}

function showDocumentElement(id) {
    var el = document.getElementById(id);
    if (el) el.style.display = 'block';
}

var commenter_name;

function individualArchivesOnLoad(commenter_name) {



 // comments are allowed but not required
    if (commenter_name) {
        hideDocumentElement('name-email');
    } else {
        showDocumentElement('name-email');
    }



    if (document.comments_form) {
        if (!commenter_name && (document.comments_form.email != undefined) &&
            (mtcmtmail = getCookie("mtcmtmail")))
            document.comments_form.email.value = mtcmtmail;
        if (!commenter_name && (document.comments_form.author != undefined) &&
            (mtcmtauth = getCookie("mtcmtauth")))
            document.comments_form.author.value = mtcmtauth;
        if (document.comments_form.url != undefined && 
            (mtcmthome = getCookie("mtcmthome")))
            document.comments_form.url.value = mtcmthome;
        if (document.comments_form["bakecookie"]) {
            if (mtcmtauth || mtcmthome) {
                document.comments_form.bakecookie.checked = true;
            } else {
                document.comments_form.bakecookie.checked = false;
            }
        }
    }
}

function writeTypeKeyGreeting(commenter_name, entry_id) {

    if (commenter_name) {
        document.write('<p>Thanks for signing in, ' + commenter_name +
          '. Now you can comment. '+
          '(<a href="http://bru.bzaar.net/mt/mt-touchme.fcgi?__mode=handle_sign_in&amp;static=1&amp;logout=1&entry_id=' + entry_id + '">sign out</a>)</p>');
    } else {

        document.write('<p>If you have a TypeKey identity, you can '+
          '<a href="https://www.typekey.com/t/typekey/login?&amp;need_email=1&amp;lang=en_US&amp;t=xyJyEqaUzGCZ2Jxh6WYr&amp;v=1.1&amp;_return=http://bru.bzaar.net/mt/mt-touchme.fcgi%3f__mode=handle_sign_in%26key=TypeKey%26static=1%26entry_id=' + entry_id + '">sign in</a> '+
          'to use it here.</p>');

    }

}


if ('bru.bzaar.net' != 'codewitch.org') {
    document.write('<script src="http://bru.bzaar.net/mt/mt-touchme.fcgi?__mode=cmtr_name_js"></script>');
} else {
    commenter_name = getCookie('commenter_name');
}


function show_dates_as_local_time() {
 	  var spans = document.getElementsByTagName('span');
 	  for (var i=0; i<spans.length; i++) {
 	    if (spans[i].className.match(/\btypo_date\b/i)) {
 	      spans[i].innerHTML = get_local_time_for_date(spans[i].title);
 	    }
 	  }
 	}
 	
 	function get_local_time_for_date(time) {
 	  system_date = new Date(time);
 	  user_date = new Date();
 	  delta_minutes = Math.floor((user_date - system_date) / (60 * 1000));
 	  if (Math.abs(delta_minutes) <= (8*7*24*60)) { // eight weeks... I'm lazy to count days for longer than that
 	    distance = distance_of_time_in_words(delta_minutes);
 	    if (delta_minutes < 0) {
 	      return distance + ' from now';
 	    } else {
 	      return distance + ' ago';
 	    }
 	  } else {
 	    return 'on ' + system_date.toLocaleDateString();
 	  }
 	}
 	
 	// a vague copy of rails' inbuilt function,
 	// but a bit more friendly with the hours.
 	function distance_of_time_in_words(minutes) {
 	  if (minutes.isNaN) return "";
 	  minutes = Math.abs(minutes);
 	  if (minutes < 1) return ('less than a minute');
 	  if (minutes < 50) return (minutes + ' minute' + (minutes == 1 ? '' : 's'));
 	  if (minutes < 90) return ('about one hour');
 	  if (minutes < 1080) return (Math.round(minutes / 60) + ' hours');
 	  if (minutes < 1440) return ('one day');
 	  if (minutes < 2880) return ('about one day');
 	  else return (Math.round(minutes / 1440) + ' days')
 	}

// livesearch
//this creates and executes the xmlhttprequest
function myAjax(){
	//grab info from search field
	var formfield = document.getElementById('livesearch_field');

	//construct the url to use in query and put in the search terms
	var url = '/blog/livesearch.php?query='+formfield.value;
	
	//create new xmlHttpRequest object, depending on whether compliant browser or crappy IE
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	//decide what function to use to process returned info from server
	request.onreadystatechange = processRequest;
	
	//send actual request to script using GET method
	request.open("GET", url, true);
	request.send(null);
}//end myAjax()


//this processes the AJAX states and stuff returned from server
function processRequest(){
	// 'catch' the 5 states AJAX can be in and do something in each state
	if(request.readyState == 0)
		document.getElementById('results').innerHTML = "uninitialized";
		document.getElementById('livesearch_icon').innerHTML = "<img src=\"/mt-static/themes/scribbish/images/spinner.gif\"/>";
	if(request.readyState == 1)
		document.getElementById('results').innerHTML = 'Loading...';
	if(request.readyState == 2)
		document.getElementById('results').innerHTML = "Loaded!";
	if(request.readyState == 3)
		document.getElementById('results').innerHTML = "Interacting...";
	if(request.readyState == 4){
		
		// if "OK"
 		if (request.status==200){
			//pass response from server into variable
		 	var response = request.responseText;

			//if response is not empty (i.e. results were found)
			if(response != ""){
				//write out search results into page
				document.getElementById('results').innerHTML = response;
				document.getElementById('livesearch_icon').innerHTML = "<img src=\"/images/broken.gif\" />";
				
			}
			else if (response == null){
				//if no response, tell the user
				document.getElementById('results').innerHTML = "Sorry, no results";
				document.getElementById('livesearch_icon').innerHTML = "<img src=\"/images/failed.gif\" />";
			}
			
		 }
		 else{
			 // if status != 200 there was an error.
			 alert("Problem retrieving XML data:" + request.statusText)
		}
	}
}// end processRequest()