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];}}
}

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;
}

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;
}

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 jsOpenWindow(url, name) {
	newWind = window.open(url, name, "width=900,height=575,status=yes,toolbar=no,menubar=no,scrollbars=yes,screenX=5,screenY=5,top=5,left=5");
    newWind.focus();
    }
	
function jsOpenMiniWindow(url, name) {
	newWind = window.open(url, name, "width=900,height=575,status=yes,toolbar=no,menubar=no,scrollbars=yes,screenX=5,screenY=5,top=5,left=5");
    newWind.focus();
    }

function phonemask(t)
{var patt1 = /(\d{3}).*(\d{3}).*(\d{4})/;
var patt2 = /^\((\d{3})\).(\d{3})-(\d{4})$/;
var str = t.value;
var result;
if (!str.match(patt2))
{result = str.match(patt1);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str = '(' + result[1] + ') ' + result[2] + '-' + result[3];
t.value = str;
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');
}}}

var nbsp = 160;
var node_text = 3;
var emptyString = /^\s*$/ ;
var global_valfield;

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function setFocusDelayed()
{
  global_valfield.focus();
}

function setfocus(valfield)
{
  global_valfield = valfield;
  setTimeout( 'setFocusDelayed()', 100 );
}

function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + num + '.' + cents);
}

function calculateSingle() {
var result = 0;
	if(document.ringOrder.bowSingle.checked) {
		result=result+parseInt(document.ringOrder.processFee.value)+parseInt(document.ringOrder.ringFee.value)+parseInt(document.ringOrder.bowFee.value);
		document.ringOrder.paymentDue.value=result;
		document.getElementById('orderTotal').innerHTML="$" + formatCurrency(result);
		document.getElementById('boxTotal').innerHTML="$25.00";
	} else if(!document.ringOrder.bowSingle.checked) {
		result=result+parseInt(document.ringOrder.processFee.value)+parseInt(document.ringOrder.ringFee.value);
		document.ringOrder.paymentDue.value=result;
		document.getElementById('orderTotal').innerHTML="$" + formatCurrency(result);
		document.getElementById('boxTotal').innerHTML="$0.00";
	}
}

function calculateDouble() {
var result = 0;
	if(document.ringOrder.bowDouble.checked) {
		result=result+parseInt(document.ringOrder.processFeeDouble.value)+parseInt(document.ringOrder.ringFeeDouble.value)+parseInt(document.ringOrder.bowFeeDouble.value);
		document.ringOrder.paymentDueDouble.value=result;
		document.getElementById('orderTotalDouble').innerHTML="$" + formatCurrency(result);
		document.getElementById('boxTotalDouble').innerHTML="$25.00";
	} else if(!document.ringOrder.bowDouble.checked) {
		result=result+parseInt(document.ringOrder.processFeeDouble.value)+parseInt(document.ringOrder.ringFeeDouble.value);
		document.ringOrder.paymentDueDouble.value=result;
		document.getElementById('orderTotalDouble').innerHTML="$" + formatCurrency(result);
		document.getElementById('boxTotalDouble').innerHTML="$0.00";
	}
}

function msg(fld,
             msgtype,
             message)
{
  var dispmessage;
  if (emptyString.test(message)) 
    dispmessage = String.fromCharCode(nbsp);    
  else  
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;  
  elem.className = msgtype;
}

var proceed = 2;  

function commonCheck    (valfield,
                         infofield,
                         required)
{
  if (!document.getElementById) 
    return true;
  var elem = document.getElementById(infofield);
  if (!elem.firstChild) return true;
  if (elem.firstChild.nodeType != node_text) return true;

  if (emptyString.test(valfield.value)) {
    if (required) {
      msg (infofield, "error", "ERROR: required");  
      setfocus(valfield);
      return false;
    }
    else {
      msg (infofield, "warn", "");   // OK
      return true;  
    }
  }
  return proceed;
}

function validateAlphanumeric(valfield, infofield){

	var stat = commonCheck (valfield, infofield, true);
	if (stat != proceed) return stat;

	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(!valfield.value.match(alphaExp)){
	    msg (infofield, "error", "ERROR: Letters and numbers only!");
	    setfocus(valfield);
	    return false;
  }

  msg (infofield, "warn", "");  
  return true;
}

function validateCompare	(valfield1,
							valfield2,
							infofield)
{
  var stat = commonCheck (valfield1, infofield, true);
  if (stat != proceed) return stat;

  if (valfield1.value != valfield2.value) {
    msg (infofield, "error", "ERROR: Passwords do not match!");
    setfocus(valfield1);
    return false;
  }

  msg (infofield, "warn", "");  
  return true;
}

function commonCheck2   (vfld,
                         ifld)
{
  if (!document.getElementById) 
    return true;
  var elem = document.getElementById(ifld);
  if (!elem.firstChild)
    return true;
  if (elem.firstChild.nodeType != node_text)
    return true;

  msg (ifld, "warn", "");
  return proceed;
}

function validatePresent(valfield,
                         infofield)
{
  var stat = commonCheck (valfield, infofield, true);
  if (stat != proceed) return stat;

  msg (infofield, "warn", "");  
  return true;
}

function validateEmail  (valfield,
                         infofield,
                         required)
{
  var stat = commonCheck (valfield, infofield, required);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
  if (!email.test(tfld)) {
    msg (infofield, "error", "ERROR: not a valid e-mail address");
    setfocus(valfield);
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/  ;
  if (!email2.test(tfld)) 
    msg (infofield, "warn", "Unusual e-mail address - check if correct");
  else
    msg (infofield, "warn", "");
  return true;
}

function validateTelnr  (valfield,
                         infofield,
                         required)
{
  var stat = commonCheck (valfield, infofield, required);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);
  var telnr = /^\+?[0-9 ()-]+[0-9]$/  ;
  if (!telnr.test(tfld)) {
    msg (infofield, "error", "ERROR: not a valid telephone number. Characters permitted are digits, space ()- and leading +");
    setfocus(valfield);
    return false;
  }

  var numdigits = 0;
  for (var j=0; j<tfld.length; j++)
    if (tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;

  if (numdigits<6) {
    msg (infofield, "error", "ERROR: " + numdigits + " digits - too short");
    setfocus(valfield);
    return false;
  }

  if (numdigits>14)
    msg (infofield, "warn", numdigits + " digits - check if correct");
  else { 
    if (numdigits<10)
      msg (infofield, "warn", "Only " + numdigits + " digits - check if correct");
    else
      msg (infofield, "warn", "");
  }
  return true;
}

function validateAge    (valfield,
                         infofield,
                         required)
{
  var stat = commonCheck (valfield, infofield, required);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);
  var ageRE = /^[0-9]{1,3}$/
  if (!ageRE.test(tfld)) {
    msg (infofield, "error", "ERROR: not a valid age");
    setfocus(valfield);
    return false;
  }

  if (tfld>=200) {
    msg (infofield, "error", "ERROR: not a valid age");
    setfocus(valfield);
    return false;
  }

  if (tfld>110) msg (infofield, "warn", "Older than 110: check correct");
  else {
    if (tfld<7) msg (infofield, "warn", "Bit young for this, aren't you?");
    else        msg (infofield, "warn", "");
  }
  return true;
}

function validateConfirm   (vfld,
                            ifld)
{
  var stat = commonCheck2(vfld, ifld);
  if (stat != proceed) return stat;

  if (vfld.checked) return true;

  var errorMsg = 'Please confirm you agree to message.';

  msg (ifld, "error", errorMsg);
  return false;
}

function validateRadio   (vfld,
                            ifld)
{
  var stat = commonCheck2(vfld, ifld);
  if (stat != proceed) return stat;

  var cnt = -1;
  for (var i=vfld.length-1; i > -1; i--) {
      if (vfld[i].checked) {cnt = i; i = -1;}
  }
  if (cnt > -1) return true;

  var errorMsg = 'ERROR: Select One.';

  msg (ifld, "error", errorMsg);
  return false;
}

