function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener) {
		obj.addEventListener(evt,fn,false);
	} else if (obj.attachEvent) {
		obj.attachEvent('on'+evt,fn);
	}
}

function $() {
	if (!document.getElementById) {
		return false;
	}
	var elements = new Array();

	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);

		if (arguments.length == 1)
			return element;

		elements.push(element);
	}

	return elements;
}

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};

function loadAboutBox()
{
	if ($('aboutbox')) {
		return false;
	}

	if (document.body)
	{
		frameWidth = document.body.clientWidth;
		frameHeight = document.body.offsetHeight;
	} 
	else if (self.innerWidth)
	{
		frameWidth = self.innerWidth;
		frameHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientWidth)
	{
		frameWidth = document.documentElement.clientWidth;
		frameHeight = document.documentElement.clientHeight;
	}
	
	/* create overscreen */
		var overscreen = document.createElement('div');
		overscreen.id='overscreen';
		overscreen.style.width = frameWidth + 'px';
		overscreen.style.height = frameHeight + 'px';
		$('content').appendChild(overscreen);


	/* create close box */
		var closediv = document.createElement('div');
		closediv.id='closediv';
		var closeimg = document.createElement('img');
		closeimg.src='/blog/graphics/about_close.gif';
		closeimg.onclick=hideAboutBox;
		closediv.appendChild(closeimg);
		closediv.style.left = ((frameWidth / 2) - 390) + 'px';
		$('content').appendChild(closediv);

	/* create iframe */
		var iframe = document.createElement('iframe');
		iframe.id='aboutbox';
		iframe.src='/blog/about.html';
		iframe.style.left = ((frameWidth / 2) - 400) + 'px';
		iframe.scrolling = "no";
		iframe.frameBorder = 0;
		$('content').appendChild(iframe);
	
	return false;
}

function hideAboutBox()
{
	if ($('aboutbox')) {
		$('aboutbox').parentNode.removeChild($('aboutbox'));
	}

	if ($('closediv')) {
		$('closediv').parentNode.removeChild($('closediv'));
	}

	if ($('overscreen')) {
		$('overscreen').parentNode.removeChild($('overscreen'));
	}
	
}

function showCategories()
{
	if ($('category_list')) {
		$('category_list').style.display='block';
		return false;
	}
}

function hideCategories()
{
	if ($('category_list')) {
		$('category_list').style.display='none';
		return false;
	}
}

function initSearchBox()
{
    if (!$('search_box')) {
        return false;
    }
    
    $('search_box')._value = $('search_box').value;
    $('search_box').onfocus=function() {
        if (this.value.toLowerCase()=='search') {
            this.value='';
        }
        
        this.select();
    }
    
    $('search_box').onblur=function() {
        if (this.value=='') {
            this.value=this._value;
        }
    }
}

function updateCommentHash()
{
	var comment_form =$('comment_form');
	comment_form.token.value = hex_md5('ob' + comment_form.name.value + comment_form.comment.value + 'ob');
	return true;
}

function checkCommentForm()
{
	if (!updateCommentHash()) {
		alert("Error updating hash value. You cannot post with this browser");
		return false;
	}
	
	var maxlength = $('comment').getAttribute('maxlength');
	if ($('comment').value.length>maxlength) {
		alert("Post too long");
	}
	
	return true;
}

function initTextArea(element) 
{
	var counter = document.createElement('div');
	counter.className = 'counter';
	if (element.readAttribute('maxlength')) {
		var counterClone = counter.cloneNode(true);
		counterClone.innerHTML = '<span>0</span>/'+element.readAttribute('maxlength');
		element.parentNode.insertBefore(counterClone,element.nextSibling);
		element.relatedElement = counterClone.getElementsByTagName('span')[0];
		element.onkeyup = element.onchange = checkMaxLength;
		element.onkeyup();
	}
}

function checkMaxLength() 
{
	var maxLength = this.readAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength) {
		this.relatedElement.className = 'toomuch';
    	this.value = this.value.substring(0, maxLength);
   	} else {
		this.relatedElement.className = '';	
	}
	this.relatedElement.firstChild.nodeValue = this.value.length;
}

function processOB_Word(req)
{
	var data = eval("(" + req.responseText + ")");
	$('ob_word').innerHTML = data['word'];
	$('ob_word_code').value = data['word_code'];
}


function initSite()
{
    $$('textarea[maxlength]').each(initTextArea);
	if ($('aboutlink')) {
		$('aboutlink').onclick = loadAboutBox;
	}
	
	if ($('search_box')) {	
		initSearchBox();
	}

	if ($('ob_word')) {
		new Ajax.Request('/blog/ob_captcha.php', { onSuccess: processOB_Word });
	}

    if ($('comment_form')) {
    	$('comment_form').onsubmit = checkCommentForm;
    }
    
	if ($('category_link')) {
		$('category_link').onmouseover = showCategories;
		$('category_list').onmouseover = showCategories;
		$('category_list').onmouseout = hideCategories;
		$('category_link').onmouseout = hideCategories;
		$('category_link').onclick = showCategories;
		
	}
}

Event.onDOMReady(initSite);
