
<!-- Split out into separate routine 11-May-2007 16:23:56 -->

function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

function validRequired(formField,fieldLabel)
{
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return true;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a integer (no decimals) for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validIntRange(formField,fieldLabel,lowbound,highbound)
{
	var result = validInt(formField,fieldLabel,true);

	if (result)
	{
		if(formField.value < lowbound 
		|| formField.value > highbound )
		{
			alert(fieldLabel + ' must be between ' + lowbound + ' and ' + highbound);
			formField.focus();
			result = false;
		}
		else{
			result = true;
		}
	}

	return result;
}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}

function calculate()
{
if(form1.IndexablePages.value != "" 
&& form1.EntriesPerPage.value != "" 
&& form1.complexity.value != ""
&& validInt(form1.IndexablePages, "Indexable Pages", true)
&& validNum(form1.EntriesPerPage, "Entries per Page", true)
&& validIntRange(form1.complexity, "Complexity Rating", 0, 10)
)
{

		var IndexablePages = form1.IndexablePages.value;
		var EntriesPerPage = form1.EntriesPerPage.value;
		var complexity = form1.complexity.value;
		var rate = 18;

		var quotevalue = IndexablePages * EntriesPerPage * (1.43 / 57) * (1 + (complexity * 0.05)) * rate;

		var highvalue = quotevalue * (64 / 60);
		form1.highvalue.value = Math.round(highvalue);
	
		var lowvalue  = quotevalue * (55 / 60);
		form1.lowvalue.value = Math.round(lowvalue);
	
		var usdRate = 1.8;
		var euroRate = 1.3;

		form1.highusd.value  = Math.round(highvalue * usdRate);
		form1.lowusd.value   = Math.round(lowvalue * usdRate);
		form1.higheuro.value = Math.round(highvalue * euroRate);
		form1.loweuro.value  = Math.round(lowvalue * euroRate);

}	

}

