function resizeEntryPane() {
	var fTop = xOffsetTop("footer");
	var fHeight = xHeight("footer");
	var lHeight = xHeight("leftcontent");
	var lTop = xOffsetTop("leftcontent");
	var eHeight = xHeight("entrypane");
	var eTop = xOffsetTop("entrypane");
	//xClientHeight doesn't work in Safari, so test for innerHeight first
	var wHeight = window.innerHeight;
	if (typeof wHeight == "undefined") {
		wHeight = xClientHeight();
	}
	var mTop = xOffsetTop("main");
	var newHeight = 400;
	//min height pins to the left content pane
	var minHeight = lHeight-(eTop-lTop);
	
	// Try to pin entrypane to the bottom of the window
	newHeight = wHeight-fHeight-mTop-eTop-24;
	if (minHeight > newHeight) {
		newHeight = minHeight;
	}
	xHeight("entrypane",newHeight);

    //Make abacus appear in pricing abacus area
    var abacus=document.getElementById("abacus");
	var wWidth = window.innerWidth;
	if (typeof wWidth == "undefined") {
  	  wWidth = xClientWidth();
    }
    var x = 30+(wWidth-(xWidth("leftcontent") + xWidth("rightcontent")))/2;
    var y=xHeight("header")+xHeight("productDesc")+30;
	if (xUA.indexOf('msie 6')!=-1)
	{
		x=(xWidth("leftcontent")-xWidth("abacus"))/2;
		y=30;
	}
	if (abacus != null) {
      abacus.style.backgroundPosition = x+"px " +y+"px";
	}

}

function NewWindow(URL, title, width, height)
{
	var st = "width="+width+",height=" + height 
	      +",status=no,resizable=no,menubar=no,toolbar=no";
	var w = window.open(URL,title,st);
}

function floatVal(s)
{
    
	var f;
	f = parseFloat(s);

	//isNaN doesn't seem to work, so use isFinite
	if (!isFinite(f))
		return 0;
	return f;
}

function floatToStr(n,d)
{
	
	if (d<=0)
		return Math.round(n).toString();

	var s = n.toString();
	var dp = s.lastIndexOf(".");
	if (dp<0)
	{
	    s = s.concat(".0");
	    dp = s.length -2;
	}
	var pl = s.length - dp-1;
	if (pl>d)
		s = s.substring(0,dp+d+1);
	else
		for(var c=pl;c<d;c++)
			s = s.concat("0");
	return s;
}

function round(n,d) {
	if (d<=0) {
		return Math.round(n);
	}
	else {
		var mult = Math.pow(10,d);
		return Math.round(n*mult)/mult;
	}
}

function checkRadioButton(radioGroup, key) {
  //If there is only one radio option then we just set the single value
  if (typeof radioGroup.length == "undefined") {
    if (radioGroup.value == key)
      radioGroup.checked = true;
  } else {  
    for(x=0;x<radioGroup.length;x++) {
	  if (radioGroup[x].value == key) {
	    radioGroup[x].checked = true;
	  } else {
	    radioGroup[x].checked = false;	
	  }
	}
  }
		
}

function checkMenuItem(menu, key) {
  for(x=0;x<menu.length;x++) {
	if (menu.options[x].value == key) {
	  menu.options[x].selected = true;
	} else {
	  menu.options[x].selected = false;
	}
  }

}

function getRadioGroupValue(radioGroup) {
	
  if (radioGroup == null)
    return null;
  if (typeof radioGroup.length != "undefined") {
    for(x=0;x<radioGroup.length;x++)
	  if (radioGroup[x].checked)
	    return radioGroup[x].value;
  } else {
    //Just a simple value
    return radioGroup.value;
  }
}

function copyContactDetails(form) {
  setContactDeliveryDetails(form,true);
}

function mergeContactDetails(form) {
  setContactDeliveryDetails(form,false);
}


function setContactDeliveryDetails(form, overwrite) {

  if (overwrite || form.deliveryFirstName.value == "") 
    form.deliveryFirstName.value = form.firstName.value;
  if (overwrite || form.deliverySurname.value == "") 
    form.deliverySurname.value = form.surname.value;
  if (overwrite || form.deliveryCompanyName.value == "") 
    form.deliveryCompanyName.value = form.companyName.value;
  if (overwrite || form.deliveryAddressStreet.value == "") 
    form.deliveryAddressStreet.value = form.addressStreet.value;
  if (overwrite || form.deliveryAddressCity.value == "") 
    form.deliveryAddressCity.value = form.addressCity.value;
  
  if (overwrite || form.deliveryAddressState.value == "") {
	  for(x=0;x<form.deliveryAddressState.length;x++) {
	    if (form.deliveryAddressState.options[x].value == form.addressState.value) {
	      form.deliveryAddressState.options[x].selected = true;
	      break;
	    }
	  }
  }
      
  if (overwrite || form.deliveryAddressPostcode.value == "") 
    form.deliveryAddressPostcode.value = form.addressPostcode.value;
  if (overwrite || form.deliveryPhone.value == "") 
    form.deliveryPhone.value = form.phone.value;
  if (overwrite || form.deliveryFax.value == "") 
    form.deliveryFax.value = form.fax.value;
  if (overwrite || form.deliveryEmail.value == "") 
    form.deliveryEmail.value = form.email.value;

  if (overwrite || form.deliveryAddressCountry.value == "") {
	  for(x=0;x<form.deliveryAddressCountry.length;x++) {
	    if (form.deliveryAddressCountry.options[x].value == form.addressCountry.value) {
	      form.deliveryAddressCountry.options[x].selected = true;
	      break;
	    }
	  }
  }

}

// Functions for hierarchical menus styled as lists

function setMenuClass(obj, name) {
  if (xIE4Up) {
    obj.className = name;
  }
}

function closeSubMenu(menu) {
  if (xIE4Up) {
    menu.childNodes[2].style.display='none';
  }
}

function openSubMenu(menu) {
  var wHeight = window.innerHeight;
  if (typeof wHeight == "undefined") {
	wHeight = xClientHeight();
  }
  wHeight = wHeight - 10;
	
  if (xIE4Up) {
    menu.childNodes[2].style.display='block';
  }
  
  var mTop = menu.offsetTop;
  var mHeight = menu.childNodes[2].offsetHeight;
  topAdj = (mTop + mHeight) - wHeight;
  if (topAdj < 0)
  	topAdj = 0;
  	
  menu.childNodes[2].style.top = (-1 * topAdj)-1;
}

function cleanNumeric(obj) {
	var inVal = obj.value;
	var outVal = "";
	var saveDigit = false;
	
	for (x=0;x<inVal.length;x++) {
	  saveDigit = false;
	  if (x==0) {
	    if (inVal[x] == "-" ) {
	      saveDigit = true;
	    }
	  }
	  if (inVal[x] == "." || (inVal[x] >= "0" && inVal[x] <= "9")) {
	      saveDigit = true;
	  }
      if (saveDigit) {
      	outVal += inVal[x];
      }
    }
    obj.value = outVal;
}