/* $Id: menutool.js,v 1.6 2005/06/01 01:49:16 brad Exp $ */
/** begin menutool functions **/

function Rollover( base_name )
{
	this.name = base_name;
	this.image_dir = "/images";
	this.img = null;

	this.Load = doRollLoad;
	this.Over = doRollNull;
	this.Out = doRollNull;

}

function doRollNull() { ; }

function doRollLoad()
{
	this.img = new Array();
	this.img[0] = new Image();
	this.img[0].src = this.image_dir + "/" + this.name + ".gif";
	this.img[1] = new Image();
	this.img[1].src = this.image_dir + "/" + this.name + "_o.gif";
	this.Over = doRollOver;
	this.Out = doRollOut;
}

function doRollOver()
{
	if( document.images )
	{
		image = document.images[ this.name ];
		image.src = this.img[1].src;
	}
}

function doRollOut()
{
	if( document.images )
	{
		image = document.images[ this.name ];
		image.src = this.img[0].src;
	}
}

function doRollDown()
{
	if( document.images && (this.src3 != '') )
	{
		image = document.images[ this.name ];
		image.src = this.img[2].src;
	}
}

MenuRollovers = Array();
function MenuRollover( base_name, src1, src2, src3 )
{
	this.name = base_name;
	this.img = null;
	this.src1 = src1;
	this.src2 = src2;
	this.src3 = src3;

	if( this.src3 + "" == "undefined" )
	{
		this.src3 = "";
	}

	this.Load = doMenuRollLoad;
	this.Over = doRollNull;
	this.Out = doRollNull;
	this.Down = doRollNull;

	MenuRollovers[ MenuRollovers.length ] = this;
	this.loaded = false;

}

function doMenuRollLoad()
{
	this.img = new Array();
	this.img[0] = new Image();
	this.img[0].src = this.src1;
	this.img[1] = new Image();
	this.img[1].src = this.src2;
	if( this.src3 != "" )
	{
		this.img[2] = new Image();
		this.img[2].src = this.src3;
	}
	this.Over = doRollOver;
	this.Out = doRollOut;
	if( navigator.userAgent.indexOf('Mac') == -1 )
	{
		this.Down = doRollDown;
	}
}

function MenuRollover_OnLoad()
{
	for( i=0; i<MenuRollovers.length; i++ )
	{
		MenuRollovers[i].Load();
	}
	for( i=0; i<FormRollovers.length; i++ )
	{
		FormRollovers[i].Load();
	}
}

FormRollovers = Array();
function FormButton( src1, src2, src3 )
{
	this.img = null;
	this.src1 = src1;
	this.src2 = src2;
	this.src3 = src3;

	this.Load = doMenuRollLoad;
	this.Over = doRollNull;
	this.Out = doRollNull;
	this.Down = doRollNull;

	FormRollovers[ FormRollovers.length ] = this;
}

/* addEvent( element [object], type [string], function_to_call [function], capture_event [bool] ) */
function addEvent(elem, evType, func, useCapture) {
	if(typeof elem.addEventListener != 'undefined') {
		elem.addEventListener(evType, func, useCapture);
		return true;
	} else if( typeof elem.attachEvent != 'undefined' ) { 
		var r = elem.attachEvent("on" + evType, func);
		return r; 
	} else { 
		var onEvt = "on" + evType;
		var elOldEvFuncs = elem[onEvt];
		if( typeof elem[onEvt] != 'function' ) {
			elem[onEvt] = func; 
		} else {
			elem[onEvt] = function() { elOldEvFuncs(); func(); }
		}
	}
}

function addLoadEvent(x) {
	var y = window;
	if(typeof document.addEventListener != 'undefined' && window.addEventListener == 'undefined') {
		y = document;
	}
	addEvent(y,"load",x,false);
}

function addUnLoadEvent(x) {
	var y = window;
	if(typeof document.addEventListener != 'undefined' && window.addEventListener == 'undefined') {
		y = document;
	}
	addEvent(y,"unload",x,false);
}

addLoadEvent(MenuRollover_OnLoad);

/** end menutool functions **/
/** $Id: htmltools.js,v 1.19 2009/02/15 23:27:28 tt Exp $ **/
/** htmltools javascript functions **/

/* stop pressing 'Return' submits forms */
var htmltools_form_focus = -1;
var htmltools_buttons = new Array();
var htmltools_forms = new Array();
function htmltools_onkeypress(e)
{
	var code = (window.Event) ? e.which : event.keyCode;
	j = htmltools_form_focus;
	if(code == "13" && j!=-1 )
	{
		l = htmltools_forms[j].length;
		if( l == 0 )
		{
			return true;
		}
		if( l == 1 )
		{
//			return true; /* enable this to get 'normal' behaviour for forms with 1 button */
		}
		if( typeof g_htmltools_active_combobox == 'object' )
		{
			htmltools_combobox_toggle( g_htmltools_active_combobox );
			return false;
		}
		el = document.getElementById( htmltools_forms[j][l-1] );
		if( el != null && el.nodeName=='INPUT') el.focus();
		return false;
	}
	return true;
}

function htmltools_init_forms()
{
	var frms = document.getElementsByTagName("FORM");

	for( var j=0,frms_length=frms.length; j<frms_length; j++ )
	{
		htmltools_forms[j] = new Array();
		for( var i=0,htmltools_buttons_length=htmltools_buttons.length; i<htmltools_buttons_length; i++ )
		{
			el = document.getElementById( htmltools_buttons[i] );
			if( el!=null && el.form == frms[j] )
			{
				k = htmltools_forms[j].length;
				htmltools_forms[j][k] = htmltools_buttons[i];
			}
		}
	}

	htmltools_init_form_focus(0,0);
	document.onkeypress = htmltools_onkeypress;
	
}
function htmltools_init_form_focus(i,j)
{
	var frms = document.getElementsByTagName("FORM");
	var start = (new Date).getTime();	
	var now = start;
	var c = 0;
	for( var frms_length=frms.length; i<frms_length; i++ )
	{
		for( var els_length=frms[i].elements.length; j<els_length; j++ )
		{
			if( c++>10 && ((new Date).getTime()-start)>100 )
			{
				// IE7 performance optimisation; access to frms[i].elements[j] is slow
				// this iteration prevents locking the browser in this loop
				setTimeout( "htmltools_init_form_focus("+i+","+j+")",0 );
				return;
			}
			switch( frms[i].elements[j].type )
			{
			case "hidden" :
			case "textarea" :
				break;
			default:
				eval( "addOnFocusEvent(frms[" + i + "].elements[" + j + "], function() { htmltools_form_focus=" + i + ";})" );
				frms[i].elements[j].onblur = function() {
					htmltools_form_focus = -1;
				}
			}
		}
	}
}

function htmltools_register_button( id )
{
	htmltools_buttons[htmltools_buttons.length] = id;
}

function htmltools_checkbox_controller( id1, id2, label, show_class, hide_class )
{
	id1 = document.getElementById( id1 );
	id2 = document.getElementById( id2 );
	label = document.getElementById( label );

	id1.controls = id2;
	id1.labels = label;
	id1.show_class = show_class;
	id1.hide_class = hide_class;
	id1.onclick = function() {
		htmltools_checkbox_controller_onclick( this, this.controls, this.labels, id1.show_class, id1.hide_class );
	}
	id2.checked_last_val = id2.checked;
	id2.checked = (!id1.checked) && id2.checked || (id1.checked && id2.checked);
	id2.disabled = !id1.checked;
	label.className = id1.checked ? show_class:hide_class;
}
	
function htmltools_checkbox_controller_onclick( id1, id2, label, show_class, hide_class )
{
	id2.disabled=!id1.checked;
	if( id1.checked )
	{
		id2.checked=id2.checked_last_val;
	}
	else
	{
		id2.checked_last_val=id2.checked;
		id2.checked=false;
	}
	label.className = (id1.checked ? show_class:hide_class);
}

function addOnFocusEvent(el,func)
{
	var oldonfocus = el.onfocus;
	if( typeof el.onfocus != 'function') {
		el.onfocus = func;
	} else {
		el.onfocus = function() {
			oldonfocus();
			func();
		}
	}
}

addLoadEvent(htmltools_init_forms);

/** end htmltools javascript functions **/

// XMLHttpRequest function to initiate request object
function AJAX() {		
	var o = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
 		try {
  			o = new ActiveXObject("Msxml2.XMLHTTP");
 		} catch (e) {
  			try {
   				o = new ActiveXObject("Microsoft.XMLHTTP");
  			} catch (E) {
   				o = false;
  			}
 		}
	@end @*/
	if (!o && typeof XMLHttpRequest!='undefined') {
		o = new XMLHttpRequest();
	}
	
	return o;
}

function appendQuery( url, qs )
{
	return url + (url.match(/\?/) ? '&' : '?') + qs;
}

function addClass( el, className )
{
	var regex = new RegExp("\\b"+className+"\\b");
	var s = el.className;
	if( regex.exec( s ) )
	{
		return;
	}
	if( s!='' )
	{
		s = s + ' ';
	}
	s = s + className;
	return el.className = s;
}
function delClass( el, className )
{
	var regex = new RegExp("\\b"+className+"\\b");
	var s = el.className;
	s = s.replace( regex, '' );
	return el.className = s;
}

function hasClass( el, className )
{
	var regex = new RegExp("\\b"+className+"\\b");
	return regex.exec( el.className );
}


