﻿window.addEvent('domready', function() {
    
	var body = $('body');
	
	// attach homepage link
	body.getElement('#masthead h1').addEvent('click', function(e) {
		window.open('/home', '_self');
		return false;
	});
		
    // fix external links
    body.getElements('a[rel^=blank]').addEvent('click', function(e) {
		window.open(this.href, '_blank');
		return false;
    });
    
    // fix navigation hover
    if (false && Browser.Engine.trident4) { // ie6
		$('navigation').getElements('ul>li').addEvents({
			'mouseenter': function(){
				this.addClass('hover');
			},
			'mouseleave': function(){
				this.removeClass('hover');
			}
		});
    }
    
    // search box
    var search = { input: $('search') };
    if (search.input.get('value').clean().length == 0) {
		search.input.addClass('bg');
    }
    search.input.addEvents({
		'blur': function() {
			this.set('value', this.get('value').clean());
			if (this.get('value').length == 0) {
				this.addClass('bg');
			}
		},
		'focus': function() {
			this.removeClass('bg');
		},
		'keydown': function(e){
			if (e.key == 'enter') {
				this.set('value', this.get('value').clean());
			}
		}
    });
    
    // alternate background
    body.getElements('.alternate li:odd').addClass('even');
    
    // sort table
    body.getElements('table.sort tbody tr a').each(function(item) { //.addEvent('click', function(e) {
		item.getParent('tr').addEvent('click', function() {
			window.open(item.href, '_self');
			return false;
		});
		return false;
    });
});

/* extended string methods */
String.implement({
	padLeft: function(length,padChar) {
		if($type(length)!="number"){
			if($type(length)=="string") length.toInt();
			else return this;
		}
		if(length<=this.length) return this;
		else {
			if($type(padChar)!="string") padChar=" "
			tmp=""
			for(i=0;i<(length-this.length);i++) tmp=tmp+padChar
			return tmp+this;
		} 
	},
	htmlEncode: function() {
		var el = new Element('div').set('text', this);
		return el.get('text').replace(/&/, '&amp;').clean();
	},
	toProperCase: function() {
		return this.toLowerCase().replace(/^(.)|\s(.)/g, function($1) { return $1.toUpperCase(); });
	}
});