// Determine browser and version.
function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// select field onchange confirmer

function onchangeWithConfirm(element) { 
  if (!document.getElementById) {
    return false;
  }
  if (element.options[element.selectedIndex].title) {
    if (confirm(element.options[element.selectedIndex].title)) {
      window.location.href=element.options[element.selectedIndex].value;
    }
  } else {
    window.location.href=element.options[element.selectedIndex].value;
  }
}

// component admin menu scripts
function componentFormSelect(element) {
  if (element.className == 'current') {
    componentFormBox('off', element);
  } else {
    var elementId = element.id;
    var triggers = element.parentNode.getElementsByTagName("a");
    for (var i = 0; i < triggers.length; i++) {
      if (elementId == triggers[i].id)
	componentFormBox('on', triggers[i]);
      else
	componentFormBox('off', triggers[i]);
    }
  }
}

function componentFormBox(action, element) {
  var elementId = element.id;
  var boxId = elementId + '-box';
  if (!document.getElementById(boxId))
    return;
  if (action == 'on') {
    document.getElementById(elementId).className = 'current';
    document.getElementById(boxId).style.display = 'block';
  } else {
    document.getElementById(elementId).className = 'defaulta';
    document.getElementById(boxId).style.display = 'none';
  }
}

function changeelementclass(element, class1, class2) {
  if (element.className==class1)
    element.className=class2;
  else
    element.className=class1;
}

// trigger other box elements display property
function triggerboxdisplay(element, inline) {
  if (inline)
    var disp = 'inline';
  else
    var disp = 'block';
  var elementId = element.id;
  var boxId = elementId + '-box';
  if (!document.getElementById(elementId))
    return;
  if (document.getElementById(boxId).style.display == "none")
    document.getElementById(boxId).style.display = disp;
  else
    document.getElementById(boxId).style.display = "none";
}

// display switcher for inline elements
function showhideinline(element){
  if (!document.getElementById)
    return;
  if (element.style.display=="none")
    element.style.display="inline";
  else
    element.style.display="none";
}

// display switcher for block elements
function showhideblock(element){
  if (!document.getElementById)
    return;
  if (element.style.display=="none")
    element.style.display="block";
  else
    element.style.display="none";
}

//display none
function hidemenuoff(element){
  if (!document.getElementById)
    return;
  element.style.display="none";
}
//display inline
function hidemenuon(element){
  if (!document.getElementById)
    return;
  element.style.display="inline";
}

//preload images
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
							  if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//swapimage restore
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
// find object
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
} 

// swapimage
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
								    if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
} 

function checkAllFields(ref)
{
  var chkAll = document.getElementById('checkAll');
  var checks = document.getElementsByTagName('input');
  //var removeButton = document.getElementById('removeChecked');
  var boxLength = checks.length;
  var allChecked = false;
  var totalChecked = 0;
  if ( ref == 1 )
    {
      if ( chkAll.checked == true )
	{
	  for ( i=0; i < boxLength; i++ )
	    checks[i].checked = true;
	}
      else
	{
	  for ( i=0; i < boxLength; i++ )
	    checks[i].checked = false;
	}
    }
  else
    {
      for ( i=0; i < boxLength; i++ )
	{
	  if ( checks[i].checked == true )
	    {
	      allChecked = true;
	      continue;
	    }
	  else
	    {
	      allChecked = false;
	      break;
	    }
	}
      if ( allChecked == true )
	chkAll.checked = true;
      else
	chkAll.checked = false;
    }
  for ( j=0; j < boxLength; j++ )
    {
      if ( checks[j].checked == true )
	totalChecked++;
    }
  //removeButton.value = "Remove ["+totalChecked+"] Selected";
}

// test for objects 

(document.layers) ? layerobject=true : layerobject=false;
(document.all) ? allobject = true: allobject = false;
(document.getElementById) ? dom = true : dom = false;

// change element visibility, element by ID, actions: show/hide

function changeVisibility(id,action)
{
  switch (action)
    {
    case "show":
      if (layerobject)
	document.layers[''+id+''].visibility = "show";
      else if (allobject)
	document.all[''+id+''].style.visibility = "visible";
      else if (dom)
	document.getElementById(''+id+'').style.visibility = "visible";
      break;
    case "hide":
      if (layerobject)
	document.layers[''+id+''].visibility = "hide";
      else if (allobject)
	document.all[''+id+''].style.visibility = "hidden";
      else if (dom)
	document.getElementById(''+id+'').style.visibility = "hidden";
      break;
    default:return;
    }
  return;
}

// change absolute position, element by ID
function changePosition(id,x,y)
{
  if (layerobject) {
    document.layers[''+id+''].left = x;
    document.layers[''+id+''].top = y;
  }
  else if (allobject) {
    document.all[''+id+''].style.left=x;
    document.all[''+id+''].style.top=y;
  }
  else if (dom) {
    document.getElementById(''+id+'').style.left = x + "px";
    document.getElementById(''+id+'').style.top = y + "px";
  }
  return;
}

function replaceAposAndQuotes(val, rep) {

  var quot = new RegExp("\"", "g");
  var apos = new RegExp("\'", "g");

  val = val.replace(quot, rep);
  val = val.replace(apos, rep);

  return val;
}

// ##### SELECTNWCFIELD FUNCTIONS ##### 

function appendValueToParent(cname, retval) {
  opener.document.getElementById(cname).value = retval;
  window.close();
}

function appendLabelToParent(cname, retval, retlabel) {

  opener.document.getElementById(cname).text = retlabel;
  window.close();
}

function appendLabelValueToParent(cname, retval, retlabel) {

  opener.document.getElementById(cname).value = retval;
  opener.document.getElementById(cname).text = retlabel;
  window.close();
}

function openNWCWindow(url, controlid, width, height, prevar, extraparam, extraparam2nd) {
  var cw = null;

  link = url + '&controlName=' + controlid;

  if (!prevar)
    prevar = document.getElementById(controlid).value;

  link = link + '&value=' + prevar;
    
  if (extraparam)
    link = link + '&extraparam=' + extraparam;

  if (extraparam2nd)
    link = link + '&extraparam2nd=' + extraparam2nd;

  params = 'width=' + width + ', height=' + height + ',scrollbars=no,toolbar=no,menubar=no,location=no';
  cw = window.open(link, controlid + 'window', params);

  if (window.focus)
    cw.focus();
  
  return true;
}

// ##### DATE FUNCTIONS ##### 

function dpYearAdjust(formid, inc) {
  dpform = document.getElementById(formid);
  if (inc)
    dpform.year.value = parseInt(dpform.year.value) + 1;
  else 
    dpform.year.value = parseInt(dpform.year.value) - 1;

  dpform.submit();
}

function dpMonthAdjust(formid, num) {
  dpform = document.getElementById(formid);
  dpform.month.value = num;
  dpform.submit();
}

function dpMonthAdjust2(formid, inc) {
  dpform = document.getElementById(formid);
  if (inc)
    dpform.month.value = parseInt(dpform.month.value) + 1;
  else 
    dpform.month.value = parseInt(dpform.month.value) - 1;

  dpform.submit();
}

function dpSelectDate(cname, retval) {
  opener.document.getElementById(cname).value = retval;
  window.close();
}

