// JavaScript Document

function hookExternalLinks()
{
	var links=document.getElementsByTagName('a');
	for (var i=0; i<links.length; i++)
	{
		if (links[i].rel == 'external')
		{
			links[i].onclick = function() {
				return makeExternal(this);
			};
		}
		if (links[i].rel == 'popup')
		{
			links[i].onclick = function() {
				details = this.className;
				details = details.split('|');
				attribs = '';
				attribs += "scrollbars=" + details[3] + ",";
				attribs += "resizable=" + details[4];

				centre = details[5];
				if (typeof(centre) != 'undefined')
				{
					attribs += ",left=" + (screen.availWidth - details[1]) / 2 + ",";
					attribs += "top=" + (screen.availHeight - details[2]) / 2;
				}

				return popup(this.href, details[0], details[1], details[2], attribs);
			};
		}
	}
}
function makeExternal(a)
{
	return !window.open(a.href);
}

function initDeleteLinks()
{
	var links = css.getElementsByClass(document, 'delete_link', 'a');

	for (var i=0; i<links.length; i++)
	{
		links[i].onclick = function() {
			return confirm("Are you sure you want to delete this item?");
		};
	}
}

function initEmailLinks()
{
	if (document.getElementById("mail_link"))
	{
		var div = document.getElementById("mail_link");
		var a = div.getElementsByTagName("A")[0];
		a.href += "&popup=1";
	}
}

function popup(url, name, w, h, attribs)
{
	if (attribs.length>0) attribs=','+attribs;
	var t = new Date().getTime();
	window['popup_' + t] = window.open(url,'popup_' + t,'height='+h+',width='+w+''+attribs);
	return !window['popup_' + t];
}

function loadPage(url, time, replace_page)
{
	if (replace_page) window.setTimeout('window.location.replace("' + url + '");', (time*1000));
	else window.setTimeout('window.location.href = "' + url + '";', (time*1000));
}

String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/g, '');
};
String.prototype.ucwords = function() {
	return this.replace(/\b\w/gi, function(c) { return c.toUpperCase(); });
};


var css = {
	getElementsByClass : function( node, searchClass, tag ) {
		var classElements = new Array();
		var els = node.getElementsByTagName( tag );
		var pattern = new RegExp( "(^|\\s)" + searchClass + "(\\s|$)" );

		for(var i=0, j=0; i<els.length; i++)
		{
			if( this.elementHasClass(els[i], searchClass) )
			{
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	},

	privateGetClassArray: function( el ) {
		return el.className.split(' '); 
	},

	privateCreateClassString: function( classArray ) {
		return classArray.join(' ');
	},

	elementHasClass: function( el, classString ) {
		if ( !el ) return false;
		var re = new RegExp( '\\b' + classString + '\\b' );
		return el.className.match( re );
	},

	addClassToId: function( id, classString ) {
		this.addClassToElement( document.getElementById( id ), classString );
	},

	addClassToElement: function( el, classString ) {
		var classArray = this.privateGetClassArray( el );

		if (this.elementHasClass( el, classString) ) return;

		classArray.push( classString );

		el.className = this.privateCreateClassString( classArray );
	},

	removeClassFromId: function(id, classString ) {
		this.removeClassFromElement( document.getElementById( id ), classString );
	},

	removeClassFromElement: function(el, classString) {
		var classArray = this.privateGetClassArray( el );

		for (i in classArray)
		{
			if (classString == classArray[i])
			{
				classArray[i] = '';
				break;
			}
		}

		el.className = this.privateCreateClassString( classArray );
	}
}