function getNumFormat(val)
{
	return formatNumber(val,2);
}

function MM_validateForm() { 
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { 
  test=args[i+2];
  val=MM_findObj(args[i]);
    if (val)
	{ 
	nm=val.name;
	if(labels[nm])
	nm=labels[nm];
	if ((val=val.value)!="")
	 {
      if(test.indexOf('isEmail')!=-1) 
	  { 
        if (!isEmail(val)) errors+='- '+nm+' must contain an e-mail address.\n';
      } 
	  else if (test!='R') 
	  { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } //if (errors) alert('The following error(s) occurred:\n'+errors);
  //document.MM_returnValue = (errors == '');
  return errors;
}
function MM_findObj(n, d) { 
  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;
}


// Text Field Validation Functions

function dateOK(val)
{
var format="MM/dd/yyyy";
if(val=="")
return true;
else
return isDate(val,format);
}
function isIP(val)
{
	if(val=="")
	return true;
var filter = /^([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+$/;
         if (filter.test(val))
          return true;
         else
		  return false;
}

function isUSPhone(val)
{
	if(val=="")
	return true;
var filter = /^((\(\d{3}\) ?)|(\d{3}[- \.]))?\d{3}[- \.]\d{4}(\s(x\d+)?){0,1}$/;
if (filter.test(val))
          return true;
         else
		  return false;
}

function isMAC(val)
{
	if(val=="")
	return true;
var filter = /^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}$/i;
         if (filter.test(val))
          return true;
         else
		  return false;
}

function removeBlanks(fld) {
var result = "";
var c = 0;
for (i=0; i<fld.length; i++) {
  if (fld.charAt(i) != " " || c > 0) {
    result += fld.charAt(i);
    if (fld.charAt(i) != " ") c = result.length;
    }
  }
return result.substr(0,c);
}

var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

function isValid(parm,val) {
  if (parm == "") return true;
  for (i=0; i<parm.length; i++) {
    if (val.indexOf(parm.charAt(i),0) == -1) return false;
  }
  return true;
}


function isNum(parm) {return isValid(parm,numb);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}
function isDecimal(parm) {return isValid(parm,numb+'.');}
function isPhone(parm) {return isValid(parm,numb+"+-()");}

function isEmail(email)
{
var ok=true;
 if(email=="")
 return ok;
 
   if(!allValidChars(email))
	  ok=false;
	else if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
	  ok=false;
	} 
	 else if (email.indexOf(".") < 1) { //  must contain ., and it must not be the first character
	  ok=false;
	 }
	else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
		ok=false;
	} else if (email.indexOf("@") == email.length-1) {  // @ must not be the last character
		ok=false;
	} else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	ok=false;
	} else if (email.indexOf(".") == email.length-1) {  // . must not be the last character
	ok=false;
	}
	
	return ok;

}

 function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}

function formatNumber (anynum, decimal) {
	 //decimal  - the number of decimals after the digit from 0 to 3
//-- Returns the passed number as a string in the xxx,xxx.xx format.
	   //anynum=eval(obj.value);
	   divider =10;
	   switch(decimal){
			case 0:
				divider =1;
				break;
			case 1:
				divider =10;
				break;
			case 2:
				divider =100;
				break;
			default:  	 //for 3 decimal places
				divider =1000;
		}

	   workNum=Math.abs((Math.round(anynum*divider)/divider));

	   workStr=""+workNum

	   if (workStr.indexOf(".")==-1){workStr+="."}

	   dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
	   pStr=workStr.substr(workStr.indexOf("."))

	   while (pStr.length-1< decimal){pStr+="0"}

	   if(pStr =='.') pStr ='';

	   //--- Adds a comma in the thousands place.    
	   if (dNum>=1000) {
		  dLen=dStr.length
		  dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
	   }

	   //-- Adds a comma in the millions place.
	   if (dNum>=1000000) {
		  dLen=dStr.length
		  dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
	   }
	   retval = dStr + pStr
	   //-- Put numbers in parentheses if negative.
	   if (anynum<0) {retval="("+retval+")";}

	  
	//You could include a dollar sign in the return value.
	  //retval =  "$"+retval
	  
	  return retval;
 }
