   function funValidEmail(email)
  {
    var validEmail = true;
    
    if (email.length > 0)
    {
        if (trimString(email) != "")
        {
             var validChars = "abcdefghijklmnopqrstuvwxyz.-_0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
             var firstchar
             var maillen
             var str
             var mail = trimString(email)
             firstchar = mail.substring(0,1)
             maillen = mail.length;
     
             if (firstchar == "@" || firstchar == "." || firstchar == "-")
             {
                validEmail = false;
             }
     
            for (var i=0; i < maillen; i++)
            {
               str = mail.substring(i, i+1);
               if(validChars.indexOf(str)== -1)
               {
                  validEmail = false;
               }
            }
     
            if (mail.indexOf("@",0) != -1 )
            {
                if (mail.indexOf("@",mail.indexOf("@",0)+1)!= -1 )
                {
                  validEmail = false;
                }
            } 
     
            if( (mail.indexOf("@") == -1) || (mail.indexOf(".") == -1) )
            {
                validEmail = false;
            }
        }
        else
        {
            validEmail = false;
        }
    }
    return validEmail;
  }
  
  function trimString(trimThis)
  {
     var localString = trimThis;
     var flag = true;
     var length = localString.length;
     var cnt = 0;
     while( (localString.charAt(cnt) == ' ') && (cnt++ < length) )
     {
     }
    
     if(cnt >= length)
      localString = "";
     else
     {
      localString = localString.substring(cnt,length);
      length = localString.length;
      cnt=length-1;
      while( (localString.charAt(cnt) == ' ') && (cnt-- < length ) )
      {
      }
      if(cnt < length-1)
       localString = localString.substring(0,cnt+1);
     }
     return(localString);
  }
  function PhoneNumberFormat(objName)
  {
    //n=m.name;
    //p1=document.forms[0].elements[n]
    //alert(objName.value);
    p1=document.getElementById(objName);
    id = objName
    ValidatePhone()
   
  }
  // Phone Number Format
  var n;
  var p;
  var p1;
  var id;
    
function ValidatePhone()
{
      
      p=p1.value      
      if(p.length==3)
      {
          pp=p;
          d4=p.indexOf('(')
          d5=p.indexOf(')')          
          if(d4==-1)
          {
          pp="("+pp;
          if(d5==-1)
          {
            pp=pp+")";
          }          
          }
          document.getElementById(id).value="";
          document.getElementById(id).value=pp;
      }
      
      if(p.length>3)
      {
          d1=p.indexOf('(')
          d2=p.indexOf(')')
          if (d2==-1)
          {
              l30=p.length;
              p30=p.substring(0,4)
              strCloseBrace = p.substring(4,5)
              if(p.substring(4,5) == ')')
              {
                p30=p30
              }
              else
              {
                p30=p30+")"
              }
        
            //		p31=p.substring(4,l30);
              p31=p.substring(4,l30);
              pp=p30+p31;
              //alert(p31);
              //alert('phone ' + p)              
              document.getElementById(id).value="";
              document.getElementById(id).value=pp;
          }
      }
  
      if(p.length>5)
      {
          p11=p.substring(d1+1,d2);          
          if(p11.length>3)
          {
            p12=p11;
            l12=p12.length;
            l15=p.length
            //l12=l12-3
            p13=p11.substring(0,3);
            p14=p11.substring(3,l12);
            p15=p.substring(d2+1,l15);
            //document.getElementById(id).value="";
            id.value="";
            pp="("+p13+")"+p14+p15;
            document.getElementById(id).value=pp;            
            //obj1.value="";
            //obj1.value=pp;
          }
      
          l16=p.length;
          p16=p.substring(d2+1,l16)
          l17=p16.length;
          if(l17>3&&p16.indexOf('-')==-1)
          {
              p17=p.substring(d2+1,d2+4);
              p18=p.substring(d2+4,l16);
              p19=p.substring(0,d2+1);
              //alert(p19);
              pp=p19+p17+"-"+p18;
              document.getElementById(id).value="";
              document.getElementById(id).value=pp;             
          }
          else
          {
              var temp = p.substring(4,6)
              if(temp == '))')
              {
                pp=p.substring(0,d2+1) + p.substring(d2+2,p.length)
                id.value="";
                id.value=pp;
                //document.getElementById(id).value="";
                //document.getElementById(id).value=pp;
              }
          }
      }
      //}
      //setTimeout(ValidatePhone,100)
  }   
 
    function checkPhoneInNumberFormat(phoneNo)
    {
        var flag = false;
        var sign1 = phoneNo.substring(0,1);
        var phone1 = trimString(phoneNo.substring(1,4));
        var sign2 = trimString(phoneNo.substring(4,5));
        var phone2 = trimString(phoneNo.substring(5,8));
        var sign3 = trimString(phoneNo.substring(8,9));
        var phone3 = trimString(phoneNo.substring(9,13));

        if(phoneNo.length < 13)
            flag = true;
        if(phone1.length == 0 || phone2.length == 0 || phone3.length == 0)
          flag = true;

        if(sign1 != '(')
          flag = true;
          
        if(sign2 != ')')
          flag = true;
        
        if(sign3 != '-')
          flag = true;
        
        if(isNaN(phone1))
          flag = true;
        if(isNaN(phone2))
          flag = true;
        if(isNaN(phone3))
          flag = true;
        return flag;
	}
  
function funPrint()
{
    window.print();
}  

function getState(formName,objZipCode)
{
    var zip=trimString(objZipCode.value);
    if(isNaN(zip))
    {
      alert("Zip Code should be Numeric");
      objZipCode.focus();
      return false;
    }
    else if(zip.length < 5 || zip.indexOf(".") != -1)
    {
      alert("Zip Code should be Numeric and 5 Digits");
      objZipCode.focus();
      return false;
    }
    document.getElementById(formName).submit();
}

function checkNumericValue(value)
{
    var errorText = "";
    if (isNaN(value))
    {
        errorText = " should be numeric";
    }  
    else if ((parseFloat(value) == 0))
    {
        errorText = " cannot be equal to 0";
    }
    else if (parseFloat(value) < 0)
    {
        errorText = " cannot be less than 0";
    }
    return errorText;
}

function getZipCodeValidation(formName,objZipCode)
{
    var zip=trimString(objZipCode.value);
    var zipCodeErrText="";

    if(isNaN(zip))
    {
      zipCodeErrText= "Zip Code should be Numeric";
    }    
    else if(parseFloat(zip) == 0)
    {
      zipCodeErrText= "Zip Code should not be zero";
    }    
    else if(zip.length < 5 || zip.indexOf(".") != -1)
    {
      zipCodeErrText= "Zip Code should be Numeric and 5 Digits";
    }
    else
    {
      for(i=0;i<zip.length;i++)
      {
        var chr=zip.substring(i,i+1);
        if ( chr<"0" || chr>"9" )
        {
          zipCodeErrText= "Invalid Zip Code";
        }
      }
    }  
    return zipCodeErrText;
}

// This function changes populates the date combo box according to the month selection
function setValues_Date(objMonth, objDay, objYear, objHiddenDay)
{
    var isLeapYear = false;
    var mm = objMonth.value; 
    var dd = objDay.value; 
    var yy = parseFloat(objYear.value);
    //alert('mm-dd-yy = ' + mm + "-"+dd+"-"+yy);

    var cnt = 0;
    var selectedDay = objHiddenDay.value; 
                    
    objDay.selectedIndex= -1;
    objDay.options.length= 1;
    
    if (mm==1 || mm==3 || mm==5 || mm==7 || mm==8 || mm==10 || mm==12)
    {
        cnt=31;
    }
    
    if (mm==4 || mm==6 || mm==9 || mm==11)
    {
        cnt=30;
    }
    
    if (mm==2)
    {
      if(yy!=0 && yy % 4==0)
        cnt=29;
      else
        cnt=28;
    }
    
    var currDay = 1;
    for (var i=1; i<=cnt; i++)
    {
        objDay.options.length= objDay.options.length+1;
        objDay.options[i].text=i;
        objDay.options[i].value = i;

        if(selectedDay==0)
        {
          if(currDay==i)
          {
            objDay.options[i].selected=true;
            selectedDay=i;
          }
        }
    }
    if (selectedDay > 0 && selectedDay < objDay.options.length) 
        objDay.options[selectedDay].selected = true;      
    else
        objDay.options[objDay.options.length-1].selected = true;          
}

function dateValidationForGTCurrDate(objMonth, objDay, objYear)
{
    // Date is manadatory and equal or greater than current date
    var flag = false;
    var errorText = "";
    
    // Getting all the current date values
    var curDay = document.getElementById('currDay').value;
    var curMonth = document.getElementById('currMonth').value;
    var curYear = document.getElementById('currYear').value;
    //alert('current date (mm-dd-yyyy) = ' + curMonth + '-' + curDay + '-' + curYear);
    
    // Getting the selected values
    var selMon = objMonth.value;
    var selDay = objDay.value;
    var selYear = objYear.value;
    //alert('selected date (mm-dd-yyyy) = ' + selMon + '-' + selDay + '-' + selYear);

    if(selMon*selDay*selYear !=0)
    {
        // if year are not same then no need to check
        if (parseFloat(selYear) > parseFloat(curYear))
        {
            flag = false;
        }
        else if (parseFloat(curYear) == parseFloat(selYear))
        {
            if ((parseFloat(curMonth) == parseFloat(selMon)) && (parseFloat(curDay) > parseFloat(selDay)))
                flag = true;
    
            if (parseFloat(curMonth) > parseFloat(selMon))
                flag = true;
        }
    
        if (flag == true)
        {
            errorText = " Date cannot be less than Current Date.\n";
        }
    }
    else
    {
        errorText = "";
        flag  = true;                    
        var error = "";
        
        if (parseFloat(selMon) == 0)
        {
            error = error + " Month";
        }
    
        if (parseFloat(selDay) == 0)
        {
            if(error.length == 0)
            {
                error = error + " Day";
            }
            else
            {
                error = error + ", Day";    
            }
        }
    
        if (selYear == 0)
        {
            if(error.length == 0)
            {
                error = error + " Year";
            }
            else
            {
                error =error +  ", Year";    
            }
        }
        errorText = errorText +  error + " value should be selected.\n";
    }
    return errorText;
}
 function isDate(obj){
  //alert(dtStr);
  var dtStr="";
  if(obj!=null)
  dtStr = obj.value;
  if(dtStr.length > 0)
  {
    var dtCh= "/";
    var daysInMonth = DaysArray(12)
    var pos1=dtStr.indexOf(dtCh)
    var pos2=dtStr.indexOf(dtCh,pos1+1)
    var strMonth=dtStr.substring(0,pos1)
    var strDay=dtStr.substring(pos1+1,pos2)
    var strYear=dtStr.substring(pos2+1)
    //alert("strMonth = "+strMonth);
    //alert("strDay = "+strDay);
    //alert("strYear =" + strYear)
    var errorText="";
    strYr=strYear
    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
      if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
    }
    month=parseInt(strMonth)
    day=parseInt(strDay)
    year=parseInt(strYr)
    
   // alert(pos1);
    //alert(pos2);
    //alert("month = "+month + "day = " + day + "year = " +year);
    var errorFound=false; 
    if((pos1==-1 || pos2==-1) || (pos1 != 2 || pos2 != 5))
    {
      errorFound=true;
      errorText= errorText + "The date format should be : mm/dd/yyyy";
     
    }
    else if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
      errorFound=true;
      errorText=errorText +"Please enter a valid date"
  
    }
    else if (strMonth.length<1 || month<1 || month>12){
      errorFound=true;
      errorText=errorText + "Please enter a valid month";
    
    }
    else if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
      errorFound=true;
      errorText =errorText + "Please enter a valid day"
    
    }
    //alert(strYear.length);
    else if (strYear.length != 4 || year==0 )
    { //|| year<minYear || year>maxYear){
      errorFound=true;
      errorText = errorText + "Please enter a valid 4 digit year";// between "+minYear+" and "+maxYear;
    
    }
    
    if (errorFound == true) 
    {
        alert(errorText);
        obj.focus();
        return false;
    }
    else
    {
      return true;
    }
  }
  else
  {
    return true;
  }
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function dateValidationForGTCurrDate(objDate,delimiter)
{
  var InvalidDate=false;
  if (objDate!=null) 
  {
   // alert((objDate.value).length);
      if ((objDate.value).length > 0) 
      {
        var currDate=new Date();
        var arr=new Array();
        var mm="";
        var dd="";
        var yy="";
        arr=(objDate.value).split(delimiter);
        if (arr.length > 0) 
        {
            mm=arr[0];
            dd=arr[1];
            yy=arr[2];
        }
        //alert(parseInt(mm));
        //alert(parseInt(dd));
       // alert(parseInt(yy));
        if ((parseInt(dd) > currDate.getDate()) || ((parseInt(mm)-1) > currDate.getMonth()) || (parseInt(yy) > currDate.getYear()))
        {
            InvalidDate=true;
        }
          
      }
      
  }
  return InvalidDate;
}
function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
  
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
   
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}
//for blokno other then "numbers"
function blockNonNumbers(obj, e, allowDecimal, allowNegative, allowDollar)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
  var allowCommas = false;
  if(allowDollar)
    allowCommas = true;
    
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (key != '$' && key != ',' && isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
  //alert(key + ', isCtrl = ' + isCtrl + ',key = ' + key)
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
  
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	var isFirst$ = allowDollar ? keychar == '$' && obj.value.indexOf('$') == -1 : false;
  var isCommas = allowCommas ? keychar == ',' : false;
  
  //var isFirst$ = allowDollar ? keychar == ',' : false;
	
  return isFirstN || isFirstD || isFirst$ || isCommas || reg.test(keychar);
}

function blockNonNumbers(obj, e, allowDecimal, allowNegative, allowDollar)
{
    var key;
    var isCtrl = false;
    var keychar;
    var reg;
    var allowCommas = false;
    
    if(allowDollar)
        allowCommas = true;
    
    if(window.event) 
    {
        key = e.keyCode;
        isCtrl = window.event.ctrlKey
    }
    else if(e.which) 
    {
        key = e.which;
        isCtrl = e.ctrlKey;
    }
	
    if (key != '$' && key != ',' && isNaN(key)) 
        return true;
    
    keychar = String.fromCharCode(key);
    
    // check for backspace or delete, or if Ctrl was pressed
    //alert(key + ', isCtrl = ' + isCtrl + ',key = ' + key)
    if (key == 8 || isCtrl)
    {
        return true;
    }
    
    reg = /\d/;
    
    var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
    var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
    var isFirst$ = allowDollar ? keychar == '$' && obj.value.indexOf('$') == -1 : false;
    var isCommas = allowCommas ? keychar == ',' : false;
    
    //var isFirst$ = allowDollar ? keychar == ',' : false;
    
    return isFirstN || isFirstD || isFirst$ || isCommas || reg.test(keychar);
}