﻿function IsvalidateDateFormat(fld,fmt,rng) 
{
var mth = new Array(' ','january','february','march','april','may','june','july','august','september','october','november','december');
var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

    var dd=0, mm=0, yy=0;var today = new Date;var t = new Date;fld = stripBlanks(fld);
    if (fld == '') return false;var d1 = fld.split('\/');
    if (d1.length != 3) d1 = fld.split(' ');
    if (d1.length != 3) return false;

    if(stripBlanks(d1[1])=='' || stripBlanks(d1[0])=='' || stripBlanks(d1[2])=='')
   { 
        alert('Invalid Date format. Date Format should be mm/dd/yyyy');
        return false;
    }
    
    if(stripBlanks(d1[0]).length >2 || stripBlanks(d1[1]).length >2  || stripBlanks(d1[2]).length >4)
   { 
         alert('Invalid Date format. Date Format should be mm/dd/yyyy');
        return false;
   }
        
    if (fmt == 'u' || fmt == 'U') {
      dd = d1[1]; mm = d1[0]; yy = d1[2];}
    else if (fmt == 'j' || fmt == 'J') {
      dd = d1[2]; mm = d1[1]; yy = d1[0];}
    else if (fmt == 'w' || fmt == 'W'){
      dd = d1[0]; mm = d1[1]; yy = d1[2];}
    else return false;
    
    var n = dd.lastIndexOf('st');
    if (n > -1) dd = dd.substr(0,n);
    n = dd.lastIndexOf('nd');
    if (n > -1) dd = dd.substr(0,n);
    n = dd.lastIndexOf('rd');
    if (n > -1) dd = dd.substr(0,n);
    n = dd.lastIndexOf('th');
    if (n > -1) dd = dd.substr(0,n);
    n = dd.lastIndexOf(',');
    if (n > -1) dd = dd.substr(0,n);
    n = mm.lastIndexOf(',');
    if (n > -1) mm = mm.substr(0,n);
    if (!isNum(dd)) return false;
    if (!isNum(yy)) return false;
    
    if (!isNum(mm)) 
    {
          var nn = mm.toLowerCase();
          for (var i=1; i < 13; i++) 
          {
                if (nn == mth[i] || nn == mth[i].substr(0,3)) 
                {
                     mm = i; i = 13;
                }
          }
    }
    
    if (!isNum(mm)) 
        return false;

    dd = parseFloat(dd); mm = parseFloat(mm); yy = parseFloat(yy);
    
    if (yy < 100) yy += 2000;
    if (yy < 1582 || yy > 4881) 
   {
       alert('Invalid Year. Year should be  [1582 - 4881]');
        return false;
   }
    
    if (mm == 2 && (yy%400 == 0 || (yy%4 == 0 && yy%100 != 0))) day[mm-1]++;
    if (mm < 1 || mm > 12) 
   {
   alert('Invalid Month. Month should be [1 - 12] ') 
   return false;
   }
   if (dd < 1 || dd > day[mm-1]) 
   {
        alert('Invalid Day. Date should be [1 - '+ day[mm-1] +']');
        return false;
   }
    
    t.setDate(dd); 
    t.setMonth(mm-1); 
    t.setFullYear(yy);
    
    if (rng == 'p' || rng == 'P') 
    {
        if (t > today) return false;
    }
    else if (rng == 'f' || rng == 'F') 
    {
        if (t < today) 
        {
            alert('Invalid Date. Date should be greater than current Date');
            return false;
        }
    }
    else if (rng != 'a' && rng != 'A') return false;
    
    return true;
}

function stripBlanks(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);
}

function isNum(parm) 
{
    return isValid(parm,numb);
}

var numb = '0123456789';
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;
 }
 
 
 var letters='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var numbers='1234567890';
var signs='!?,.:;@-';
var mathsigns='+-=()*/^';
var custom='<>#$%&amp;?¿';
var splchars='- *,.';
var emailchars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890.-_@';
var regZipCanada = /[a-zA-Z0-9]/
var regZipUs = /^\d{5}$/

function AllowKeys(e,allow) 
{ 

    if(allow == "ZipCode")
        allow = numbers;

    var chCode = (e.which)?e.which:e.keyCode;

    if (typeof document.getElementById!="undefined" && typeof document.all=="undefined")
    {
        if ((34 < e.charCode && e.charCode < 41) || e.charCode == 46) return false;
        if ((34 < chCode && chCode < 41) || chCode == 46) return true;
    }

    if (!(allow.indexOf(String.fromCharCode(parseInt(chCode))) != -1 || parseInt(chCode) == 8 || parseInt(chCode) == 13 || parseInt(chCode) <= 31)) 
        return false;

    return true;
}