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 trim(str)
{
     return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function IsNotEmpty(val) 
{
	return (trim(val) != "");
}

function IsMoney(val,min,max)
{
	valid = true;
	val = val.toString().replace(/\$|\,/g,'');
	if(trim(val).length>0)
	{
		allowed = "0123456789,.$";
		digits = "0123456789";
		numCount=0;
		for(i=0;i<val.length;i++)
		{
			if(allowed.indexOf(val.charAt(i))<0)
				valid=false;
				
			if(digits.indexOf(val.charAt(i))>-1)
				numCount++;
					
		}
		if(valid && numCount==0)
			valid=false;
		if(min<max){	
			if(valid && (val < min || val > max))
			valid=false;	
		}	
	}		
	return valid;
}
function IsPercent(val,min,max)
{
	valid = true;
	val = val.toString().replace(/%/g,'');
	if(trim(val).length>0)
	{
		allowed = "0123456789.%";
		digits = "0123456789";
		numCount=0;
		for(i=0;i<val.length;i++)
		{
			if(allowed.indexOf(val.charAt(i))<0)
				valid=false;
			if(digits.indexOf(val.charAt(i))>-1)
				numCount++;	
		}
		if(valid && numCount==0)
			valid=false;
		if(valid && (val < min || val > max))
			valid=false;
	}		
	return valid;
}

function FormValidator()
{
	this.strAlert = "";
	this.valid = true;
	this.headAlert = "The form can not be submitted because it is not properly filled.\n"
	this.Check=Check;
	this.Set=Set;
}

function Set(msg)
{
	this.strAlert += "- " + msg+"\n";
	this.valid = false;
}

function IsNumber(val,min,max) 
{
	var valid=true;
	if(isNaN(val)) valid=false; 
	if (min<max){
			if(valid && (val < min || val > max)) valid=false;
	
	}
	return valid;
}

function Check(val,rule,msg,min,max) {
	
	var cond = true;
	aRule = rule.split(",");
	
	for(var i=0; i<aRule.length; i++) 
	{
		switch(aRule[i])
		{ 	case "IsNotEmpty" 	:	{	cond= IsNotEmpty(val);break;}
			case "IsMoney"		:	{   cond = IsMoney(val,min,max); break;	}
			case "IsPercent"	:	{   cond = IsPercent(val,min,max); break;}
			case "IsNumber"     :   {   cond =IsNumber(val,min,max);break; }
			default				:	{	cond = eval(aRule[i]); break; }
		}
		
		if(!cond) break;
	}
	if(!cond)  this.Set(msg);
	return true;
}
function validate(frm)
{
	fv = new FormValidator();
	for(var i=0;i<vArray.length;i++)
	{
		strEval = "frm." + vArray[i][0] + ".value";
		fv.Check(eval(strEval), vArray[i][1],vArray[i][2],vArray[i][3],vArray[i][4]);  
	}
	if(!fv.valid)
		alert(fv.headAlert + fv.strAlert);
	return fv.valid;
}

