function doEvent(eventName) {

  var inputField = "<input id='theEvent' type='hidden' name='" + eventName + "'/>";
  $('form').append(inputField);
  if(promptSure) {
    if(conf()) {
  	  $('form').submit();
  	} else {
  	  $.unblockUI();
  	}
  } else {
    $('form').submit();
  }
  
  // cleanup, in case the user clicked 'Cancel' when prompted if they wanted to continue
  $('#theEvent').remove();
}

function toggle(name) { 
var obj = document.getElementById(name);
if(obj.style.display=='none') {
 obj.style.display='';	
} else {
 obj.style.display='none';  
}
}

var promptSure=false;
function conf(){
  promptSure=false;
  return confirm("Are you sure?");
}

function s(obj) { 
  obj.className='gridSelected'; 
} 


function d(obj) { 
  obj.className='gridUnselected'; 
} 

function removeSpaces(string) {
var temp = "";
string = '' + string;
splitstring = string.split(" ");
for(i = 0; i < splitstring.length; i++)
temp += splitstring[i];
return temp;
}

function pop(url,title) {
 return window.open(url, removeSpaces(title), 'menubar=false, toolbar=false, resizable=yes, menubar=yes, scrollbars=yes');
}

function setImageField(selectedValue, objId) {
  if("external" != selectedValue) {
    var obj = document.getElementById(objId);
    document.getElementById(objId).value = "#imageDefault('" + selectedValue + "')";
  }
}


function cl(){
 var obj = window.top.document.getElementById('help');
 if(obj && obj.childNodes[0]) {
  obj.childNodes[0].nodeValue='.';
 }
}


function h(event,m) {
 var obj = window.top.document.getElementById('help');
 if(obj && obj.childNodes[0]) {
  obj.childNodes[0].nodeValue=m;
 }
}

function addField (form, fieldType, fieldName) {
  if (document.getElementById) {
    var input = document.createElement('INPUT');
    if (document.all) { // what follows should work with NN6 but doesn't in M14
      input.type = fieldType;
      input.name = fieldName;
    } else if (document.getElementById) { // so here is the NN6 workaround
      input.setAttribute('type', fieldType);
      input.setAttribute('name', fieldName);
    }
    form.appendChild(input);
  }
  return input;
}

function setNone(name) {
  var fields = document.getElementsByName(name);
  while(true) {
    if(!fields.item(0).firstChild) {
      break;
    }
    var node = fields.item(0).removeChild(fields.item(0).firstChild); 
  }
  fields.item(0).appendChild(document.createTextNode('(None)'));
}

function setFieldValue(input,fieldValue) {
  if (document.all) { // what follows should work with NN6 but doesn't in M14
    input.value = fieldValue;
  } else if (document.getElementById) { // so here is the NN6 workaround
    input.setAttribute('value', fieldValue);
  }
}

function getField (form, fieldName) {
  if (!document.all)
    return form[fieldName];
  else  // IE has a bug not adding dynamically created field 
        // as named properties so we loop through the elements array 
    for (var e = 0; e < form.elements.length; e++)
      if (form.elements[e].name == fieldName)
        return form.elements[e];
  return null;
}        

function setHidden(form,fieldName,value) {
  var field = getField (form, fieldName);
  if(!field) {
    field = addField (form, 'hidden', fieldName);
  }
  setFieldValue(field,value);
}

// Locates and places focus in first input field in form.
// Called when a page loads.
function findFirstInputField() {
  var elems = document.getElementsByTagName("input");
  for (var i=0; i<elems.length; i++) {
    if (elems[i].type == "text" && !elems[i].readonly && !elems[i].disabled) {
	
	  // See if this page is tabbed, and try to get tab page 1
      var tab1 = document.getElementById("tab1.page");
      if(tab1) {
	    // if tab1 is hidden, stop trying to set focus to the first field
		// on the page since it will fail
	    if(tab1.style.display == 'none') {
		  break;
		}
	  }
	  
      elems[i].select();
      elems[i].focus();
      break;
    }
  } 
}

// for highlighting tabs on tabbed pages
function selTab(tabNumber) {
  if(tabNumber=='0') {
    tabNumber='1';
  }
  // highlight tab
  var tab = document.getElementById('tab' + tabNumber);
  tab.className = 'tabSelected';

  // show tab page
  var tabPage = document.getElementById('tab' + tabNumber + '.page');
  tabPage.style.display='';

  var index = 0;
  while(true) {
    if(index > 10) {	// sanity check
      break;
    }
    index ++;
   
    if(index == tabNumber) {
      continue;
    }
   
    var otherTab = document.getElementById('tab' + index);
    var otherTabPage = document.getElementById('tab' + index + '.page');
    if(!otherTab) {
      break;
    } else {
      // deselect + hide other tab
      otherTab.className='tabUnselected';
      otherTabPage.style.display='none';
    }
  }
  // this variable will only appear on the page if it is tabbed
  document.frmMain.selectedTab.value = tabNumber;
}

function deselectAll(cls) {
  $('.' + cls).each(function() {
    this.checked=false;
    $(this).parent().removeClass('reportCbx');
  });
}

// Show only those checkboxes in 'inputPath' that match
// the text a) entered in the element defined by 'selector'
// or b) which are already checked 
function addReportCheckboxesFilter(selector, inputPath) {

  $(selector).keyup(function(event) {

	var val = event.target.value.toUpperCase();

	$("div[path='" + inputPath + "'] span").each(function() {

		if($(this).find("input[type='checkbox']").attr('checked') != '') {
			$(this).show();
		} else if($(this).attr('label').toUpperCase().indexOf(val) == 0) {
			$(this).show();
		} else {
			$(this).hide();
		}
	});

	if(val == '') {
	  $("div[path='" + inputPath + "'] .cbxGroup").show();
	} else {
	  $("div[path='" + inputPath + "'] .cbxGroup").hide();
	}
  });
}