var disable_tab_change = 0;
var main_content_handle = '';

function change_module(module, sub_module)
{
	document.myForm.MODULE_SELECTED.value = module;
	document.myForm.SUB_MODULE_SELECTED.value = sub_module;
	document.myForm.submit();	
}

function change_tab(new_tab_selected)
{
	if (!disable_tab_change) // if module is initializing, don't allow tab changes until complete
	{
		var tab_selected = document.myForm.TAB_SELECTED.value;
		
		if (new_tab_selected != tab_selected)
		{
			if (!tab_selected.length) { tab_selected = 'blue'; }
			
			var old_button = document.getElementById('tab_' + tab_selected + '_button_img');
			var old_button_array = old_button.src.split("/");
			old_button_array[old_button_array.length - 1] = tab_selected + '_tab_inactive.gif';
			old_button.src = old_button_array.join("/");
			
			var new_button = document.getElementById('tab_' + new_tab_selected + '_button_img');
			var new_button_array = new_button.src.split("/");
			new_button_array[new_button_array.length - 1] = new_tab_selected + '_tab_active.gif';
			new_button.src = new_button_array.join("/");
			
			var header = document.getElementById('tab_content_header_img');
			var header_array = header.src.split("/");
			header_array[header_array.length - 1] = new_tab_selected + '_header.gif';
			header.src = header_array.join("/");
			
			var footer = document.getElementById('tab_content_footer_img');
			var footer_array = footer.src.split("/");
			footer_array[footer_array.length - 1] = new_tab_selected + '_footer.gif';
			footer.src = footer_array.join("/");	
			
			var content_handle_str = '';
			
			if (main_content_handle) { content_handle_str = main_content_handle + '-'; }
			
			//alert(content_handle_str + 'content-window = ' + content_handle_str + 'content-' + new_tab_selected);
			
			document.getElementById(content_handle_str + 'content-area').className = 'content-' + new_tab_selected;	
			document.getElementById(content_handle_str + 'content-window').className = content_handle_str + 'content-window-' + new_tab_selected;	
			
			document.myForm.TAB_SELECTED.value = new_tab_selected;
			
			return true;
		}
	
		return false; // clicked on same tab, no effect
	}
	else
	{
		alert('Current tab is initializing, please wait until complete.');	
	}
}

function checkEnter(e) //e is event object passed from function invocation
{ 
	var characterCode; // literal character code will be stored in this variable
		
	if(e && e.which) //if which property of event object is supported (NN4)
	{ 
		e = e;
		characterCode = e.which; //character code is contained in NN4's which property
	}
	else
	{
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}
		
	if(characterCode == 13) //if generated character code is equal to ascii 13 (if enter key)
	{ 
		//document.forms[0].submit() //submit the form
		return true;
	}
	else
	{
		return false;
	}	
}

function TabAwareTextArea(o)
{
 this._o = o;
 this._isTabLast = false;
 // for gecko:
 this._restoreFocusWithCaret = -1;
 this._lastCaretPosition = -1;

 this.onObjectKeyDown = function(event)
 {
  var keyCode = ((window.event) ? window.event.keyCode : event.which );
  this.handler._isTabLast = ( keyCode == 9 );
 }
 this.onObjectBlur = function(event)
 {
  if (this.handler._isTabLast)
  {
   this.handler._isTabLast = false;
   this.focus();
   if ( document.selection )
    document.selection.createRange().text = "\t";
   else
   {
    this.handler._lastCaretPosition = this.selectionEnd;
    this.handler._restoreFocusWithCaret = setTimeout(
     function (obj)
     {
      clearTimeout(obj.handler._restoreFocusWithCaret);
      obj.handler._restoreFocusWithCaret = -1;
      obj.focus();
      var o = document.getElementById("txt");
      var len = obj.selectionEnd;
      obj.value = obj.value.substr( 0, len ) + "\t" + obj.value.substr( len );
      obj.setSelectionRange(len+1,len+1);
     },
     10, this
    );
   }
  }
 }
 this._o.handler = this;
 if ( document.all )
 {
  this._o.onkeydown = this.onObjectKeyDown;
  this._o.onblur = this.onObjectBlur;
 }
 else
 {
  this._o.addEventListener("keydown", this.onObjectKeyDown, false);
  this._o.addEventListener("blur", this.onObjectBlur, false);
 }
}

function get_checked_elements(parent_id)
{
	var someNodeList = $(parent_id).getElementsByTagName('input');
	var nodes = $A(someNodeList);
	
	var element_values = '';
	
	nodes.each(function(node)
	{
		if (node.type == 'checkbox' && node.checked)
		{
			element_values += '^' + node.value;
		}
	});
	
	if (element_values.length) { element_values = element_values.slice(1,element_values.length); element_values = trim(element_values); }
	alert(element_values);
	return element_values;
}

function get_checkbox_id_list(parent_id)
{
	var checkbox_str = '';
	
	var someNodeList = $(parent_id).getElementsByTagName('input');
	var nodes = $A(someNodeList);
	
	nodes.each(function(node)
	{
		if (node.type == 'checkbox')
		{
			checkbox_str += '^' + node.value;
		}
	});
	
	if (checkbox_str.length) { checkbox_str = checkbox_str.slice(1,checkbox_str.length); checkbox_str = trim(checkbox_str); }
	
	return checkbox_str;
}

function add_hidden_var(input_id, value, parent_id)
{
	var field = document.createElement("input");
	field.setAttribute("type","hidden");
	field.setAttribute("value", value);
	field.setAttribute("name", input_id);
	field.setAttribute("id", input_id);
	
	//add new element to the existing form
	document.getElementById(parent_id).appendChild(field);	
}

function get_hidden_vars(parent_id)
{
	var someNodeList = $(parent_id).getElementsByTagName('input');
	var nodes = $A(someNodeList);
	
	var element_values = '';
	
	nodes.each(function(node)
	{
		element_values += '^' + node.value;	
	});
	
	if (element_values.length) { element_values = element_values.slice(1,element_values.length); element_values = trim(element_values); }
	
	return element_values;
}

function getCheckedValue(radioObj) 
{
	if(!radioObj)
		return "";
	
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return '';
			
	for(var i = 0; i < radioLength; i++) 
	{
		if(radioObj[i].checked) 
		{
			return radioObj[i].value;
		}
	}
	return '';
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

function remove_element(element_id)
{
	var d = document.getElementById(element_id);
	d.parentNode.removeChild(d);		
}

function add_list_entry(id_name, entry_str, list_id) 
{			
	//variables
	objList = document.getElementById(list_id);
	
	//create the new nodes
	objListElement = document.createElement('li');
	objListElement.setAttribute('id', id_name);

	objListElement.innerHTML = entry_str;
	
	//now connect them to the list
	objList.appendChild(objListElement);	
}

function pausecomp(millis){
	var date = new Date();
	var curDate = null;
	do { curDate = new Date(); }
	while(curDate-date < millis);

}