// 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);
			};
		}
	}
}
addOnLoad(hookExternalLinks);
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";
	}
}

/*
	Hover links for Cameo
*/
function initCameoLinks()
{
	var links = css.getElementsByClass(document, "cameo_link", "SPAN");
	var cameo_links = new Array();
	for (var i=0; i<links.length; i++)
	{
		links[i].style.color = "#0000ff";
		links[i].style.textDecoration = "underline";
		links[i].style.cursor = "pointer";

		if (typeof(Tooltip) != "undefined") cameo_links[cameo_links.length] = new Tooltip(links[i], "cameo_tooltip");

		links[i].onmouseover = function() {
			tooltip = document.getElementById("cameo_tooltip");
			css.removeClassFromElement(tooltip, "hidden");
		};
	}
}
addOnLoad(initCameoLinks);

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(); });
};

function pngFix()
{
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])

	if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
	{
		var images = document.images;
		for (var i=0; i<images.length; i++)
		{
			var img = images[i];
			var imgName = img.src.toUpperCase();
			if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
			{
				var imgID = (img.id) ? "id='" + img.id + "' " : "";
				var imgClass = (img.className) ? "class='" + img.className + "' " : "";
				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
				var imgStyle = "display: block;" + img.style.cssText;
				if (img.align == "left") imgStyle = "float:left;" + imgStyle;
				if (img.align == "right") imgStyle = "float:right;" + imgStyle;
				if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
				var strNewHTML = "<span " + imgID + imgClass + imgTitle
				+ " style=\"" + "width: " + img.width + "px; height: " + img.height + "px;" + imgStyle + ";"
				+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
				+ "(src=\'" + img.src + "\', sizingMethod='scale');\">&nbsp;</span>";
				img.outerHTML = strNewHTML;
				i = i-1;
			}
		}
	}
}
addOnLoad(pngFix);

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