function isDecimal(ins, maxLen)
{
   var pattern = "-0123456789.";
   return checkValue(ins, pattern, 1, maxLen);
}

function validateDate(fld) {
    var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. 2-30-2000 would not be accepted.\nFormay mm/dd/yyyy.';
    if ((fld.value.match(RegExPattern)) && (fld.value!='')) {
        return true;
    } else {
        alert(errorMessage);
        fld.focus();
	 return false;
    } 
}


function isNumber(ins, minLen, maxLen)
{
   var pattern = "0123456789";
   var value=ins.replace('-',"");
   return checkValue(value, pattern, minLen, maxLen);
}

function isEmail(ins)
{
  var valid=true;

  if(ins.indexOf('@')==-1)
    valid=false;
  else if(ins.indexOf('.')==-1)
    valid=false;

  return valid;
}


function checkValue(ins, pattern, minLen, maxLen)
{
   var valid=true;
   var ch;
   if(maxLen==-1)  // no limit
     maxLen=9999; // long enough
   if(ins.length<minLen || ins.length>maxLen)
     valid=false;
   else{
     for (i = 0; i < ins.length; i++){ 
       ch= ins.charAt(i); 
       if (pattern.indexOf(ch) == -1){
         valid = false;
         break;
       }
     }
   }
   return valid;   
}

function checkName(ins, exclude, minLen, maxLen)
{
   var valid=true;
   var ch;
   if(maxLen==-1)  // no limit
     maxLen=9999; // long enough
   if(ins.length<minLen || ins.length>maxLen)
     valid=false;
   else{
     for (i = 0; i < exclude.length; i++){ 
       ch= exclude.charAt(i); 
       if (ins.indexOf(ch) != -1){
         valid = false;
         break;
       }
     }
   }
   return valid;   
}

function valueBetween(value, min, max){

  if(value=='' || !isDecimal(value, 40) || value<min || value>max)
    return false;
  else
    return true; 

}

function formatPhone(obj, minLen, maxLen){

 var ret=true;

 
 var phone='';
 var ch;
 for(var i=0; i<obj.value.length; i++){

   ch=obj.value.charAt(i);

   if(ch!='(' && ch!=')' && ch!='-'){
      phone=phone+ch;
   }

 }


 if(!isNumber(phone, minLen, maxLen)){
    alert(obj.value +" isn't a valid phone:"+ "max len="+maxLen+ "; min len="+minLen);
    obj.value='';
    ret=false;
 }
 else{
    phone='('+phone.substring(0,3) +')-'+ phone.substring(3,6)+ '-'+ phone.substring(6);
    obj.value=phone; // formatted
 }


 return ret;
}


function checkDate(val){
  
  if(val.charAt(2)!="/" || val.charAt(5)!="/" || val.length!=10){
    return false;
  }
  for(var i=0; i<val.length; i++){
   if(i==2 || i==5){
     continue;
   }
   var oneChar=val.charAt(i);
   if(oneChar<"0" || oneChar>"9"){
     return false;
   }
  }
  var dateSplit=val.split("/");
  var current=new Date();
  var month=eval(dateSplit[0]);
  var day=eval(dateSplit[1]);
  var year=eval(dateSplit[2]);
    if(year==0 || month==0 || day==0){
      return false;
  }
  if(dateSplit.length==3){
    if((month==2)&&(day<=29)){
      if(((year%4)!=0)&&(day==29)){
       return false;
      }
      return true;
    }else if(((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))&&(day<=31)){
      return true;
    }else if(((month==4)||(month==6)||(month==9)||(month==11))&&(day<=30)){
      return true;
    }else{
      return false;
    }
  }else{
  return false;
  }
}

function checkPhoneNum( obj ) {
          var phone = obj.value;
          var reg1=/^\d{3}-\d{3}-\d{4}$/;
          var reg2= /^\d{10}$/;
          if ( reg1.test( phone ) || phone=="" ) {
             return true;
   	   } else {
 	        if (reg2.test(phone)){
                   obj.value=phone.substring(0,3)+"-"+phone.substring(3,6)+"-"+phone.substring(6,10);
                   return true;
 	        }else{
           return false;
           }
        }
}

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);
}



var zChar = new Array(' ', '(', ')', '-', '.');
var maxphonelength = 12;
var phonevalue1;
var phonevalue2;
var cursorposition;

function ParseForNumber1(object){
	phonevalue1 = ParseChar(object.value, zChar);
}
function ParseForNumber2(object){
	phonevalue2 = ParseChar(object.value, zChar);
}

function backspacerUP(object,e) { 
	if(e){ 
		e = e 
	} else {
		e = window.event 
	} 
	if(e.which){ 
		var keycode = e.which 
	} else {
		var keycode = e.keyCode 
	}
  
	ParseForNumber1(object)

	if(keycode >= 48){
		ValidatePhone(object)
	}
}

function backspacerDOWN(object,e) { 
	if(e){ 
		e = e 
	} else {
		e = window.event 
	} 
	if(e.which){ 
		var keycode = e.which 
	} else {
		var keycode = e.keyCode 
	}
	ParseForNumber2(object)
} 

function GetCursorPosition(){
    
	var t1 = phonevalue1;
	var t2 = phonevalue2;
	var bool = false
    for (i=0; i<t1.length; i++)
    {
    	if (t1.substring(i,1) != t2.substring(i,1)) {
    		if(!bool) {
    			cursorposition=i
    			bool=true
    		}
    	}
    }
}

function ValidatePhone(object){
	
	var p = phonevalue1
	
	p = p.replace(/[^\d]*/gi,'')

	if (p.length < 3) {
		object.value=p
	} else if(p.length==3){
		pp=p;
		d4=p.indexOf('-')
		
		if(d4==-1){
			pp=pp+"-";
		}
		
		object.value = pp;
	} else if(p.length>3 && p.length < 6){
			
		l30=p.length;
		p30=p.substring(0,3);
		p30=p30+"-"

		p31=p.substring(3,l30);
		pp=p30+p31;

		object.value = pp;	
		
	} else if(p.length >= 6){
			
		l30=p.length;
		p30=p.substring(0,3);
		p30=p30+"-"
		
		p31=p.substring(3,l30);
		pp=p30+p31;
		
		l40 = pp.length;
		p40 = pp.substring(0,7);
		p40 = p40 + "-"
		
		p41 = pp.substring(7,l40);
		ppp = p40 + p41;
		
		object.value = ppp.substring(0, maxphonelength);
	}
	
	

}

function ParseChar(sStr, sChar)
{
    if (sChar.length == null) 
    {
        zChar = new Array(sChar);
    }
    else zChar = sChar;
    
    for (i=0; i<zChar.length; i++)
    {
        sNewStr = "";
    
        var iStart = 0;
        var iEnd = sStr.indexOf(sChar[i]);
    
        while (iEnd != -1)
        {
            sNewStr += sStr.substring(iStart, iEnd);
            iStart = iEnd + 1;
            iEnd = sStr.indexOf(sChar[i], iStart);
        }
        sNewStr += sStr.substring(sStr.lastIndexOf(sChar[i]) + 1, sStr.length);
        
        sStr = sNewStr;
    }
    
    return sNewStr;
}

