 
    /**
     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
     * http://javascript.internet.com
     */
    function checkEmail(emailStr) {
       if (emailStr.length == 0) {
           return true;
       }
       var emailPat=/^(.+)@(.+)$/;
       var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
       var validChars="\[^\\s" + specialChars + "\]";
       var quotedUser="(\"[^\"]*\")";
       var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
       var atom=validChars + '+';
       var word="(" + atom + "|" + quotedUser + ")";
       var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
       var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
       var matchArray=emailStr.match(emailPat);
       if (matchArray == null) {
           return false;
       }
       var user=matchArray[1];
       var domain=matchArray[2];
       if (user.match(userPat) == null) {
           return false;
       }
       var IPArray = domain.match(ipDomainPat);
       if (IPArray != null) {
           for (var i = 1; i <= 4; i++) {
              if (IPArray[i] > 255) {
                 return false;
              }
           }
           return true;
       }
       var domainArray=domain.match(domainPat);
       if (domainArray == null) {
           return false;
       }
       var atomPat=new RegExp(atom,"g");
       var domArr=domain.match(atomPat);
       var len=domArr.length;
       if ((domArr[domArr.length-1].length < 2) ||
           (domArr[domArr.length-1].length > 3)) {
           return false;
       }
       if (len < 2) {
           return false;
       }
       return true;
    }	

    function oneMonthFromNow(day, month, year)
    {
    	return thirtyDaysFromNow(day, month, year);
		// convert to doubles
		//day = day - 0.0;
		//month = month - 0.0;
		//year = year - 0.0;

		//if (!isValidDate(day, month, year))
		//{
		//	return null;
		//}
		
		// Date object counts months starting with 0, so
		// we just pass the regular month value, which will
		// be interpreted as this month plus one
		//return new Date(year, month, day);
    }
    
    function thirtyDaysFromNow(day, month, year)
    {
		// convert to doubles
		day = day - 0.0;
		month = month - 0.0;
		year = year - 0.0;

		if (!isValidDate(day, month, year))
		{
			return null;
		}
		
		// Date object counts months starting with 0, so
		// we just pass the regular month value, which will
		// be interpreted as this month plus one
		return new Date(year, month - 1, day + 30);
    }    
    
	function isValidDate(day, month, year) 
	{
		// convert to doubles
		day = day - 0.0;
		month = month - 0.0;
		year = year - 0.0;
		
		if (year < 1900) 
		{
	    	return false;
	    }
	    if (month < 1 || month > 12) 
	    {
            return false;
        }
        if (day < 1 || day > 31) 
        {
            return false;
        }
        if ((month == 4 || month == 6 || month == 9 || month == 11) &&
            (day == 31)) 
        {
            return false;
        }
        if (month == 2) 
        {
            var leap = (year % 4 == 0 &&
                       (year % 100 != 0 || year % 400 == 0));
                       
            if (day > 29 || (day == 29 && !leap)) 
            {
                return false;
            }
        }
        return true;
    }
    
    function getLastDayThisMonth(month, year)
    {
    	var lastDay = 31;
    	
        if ((month == 4 || month == 6 || month == 9 || month == 11)) 
        {
            lastDay = 30;
        }
        else if (month == 2) 
        {
            var leap = (year % 4 == 0 &&
                       (year % 100 != 0 || year % 400 == 0));
                       
            if (leap)
                lastDay = 29;
            else
            	lastDay = 28;
        }        
        return lastDay;
    }
    
    function isValidDateRange(startDay, startMonth, startYear, endDay, endMonth, endYear) 
    {      	 
    	 // convert to doubles
    	 startDay = startDay - 0.0;
    	 startMonth = startMonth - 0.0;
    	 startYear = startYear - 0.0;
    	 endDay = endDay - 0.0;
    	 endMonth = endMonth - 0.0;
    	 endYear = endYear - 0.0;  

		 if(startYear < 2000) 
		 {
		 	startYear += 1900;
		 }
		 if(endYear < 2000) 
		 {
		 	endYear += 1900;
		 }
		 
		 if (endYear < startYear) 
		 {
			 return false;
		 }
		 else if(endMonth < startMonth && endYear == startYear) 
		 {	
		 	return false;
		 }
		 else if(endDay < startDay && endYear == startYear && endMonth == startMonth) 
		 {		
		 	return false;
		 }
		 else
		 {	
		 	return true;
		 }			
 	} 
	
	function isValueInGroup(group, value) 
	{	   
	   if (group[0]) 
	   { 
	      for (var i=0; i<group.length; i++) 
	      {
	         if (group[i].value == value) 
	         {
	            return true
	         }
	      }
	   } 
	   else 
	   {
	      if (group.value == value) 
	      { 
	      	return true; 
	      } 
	   }
	   
	   return false;
	}    
 	
 	function isAllDigits(argvalue) 
 	{
        argvalue = argvalue.toString();
        var validChars = "0123456789";
        var startFrom = 0;
        if (argvalue.substring(0, 2) == "0x") {
           validChars = "0123456789abcdefABCDEF";
           startFrom = 2;
        } else if (argvalue.charAt(0) == "0") {
           validChars = "01234567";
           startFrom = 1;
        } else if (argvalue.charAt(0) == "-") {
            startFrom = 1;
        }
        
        for (var n = startFrom; n < argvalue.length; n++) {
            if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
        }
        return true;
    }
    
	/**
	 * DHTML phone number validation script. 
	 * Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
	 */
	
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = ".()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;
	
	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++)
	    {   
	        // Check that current character isn't whitespace.
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}
	
	function checkInternationalPhone(strPhone)
	{
		s=stripCharsInBag(strPhone,validWorldPhoneChars);
		return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}

    // Check US Phone
	function checkUsPhone(strPhone)
	{
		s=stripCharsInBag(strPhone,validWorldPhoneChars);
		return (isInteger(s) && s.length == minDigitsInIPhoneNumber);
	}
	
	function isNull(str) {
		if ( (!str) || ( trim(str)=='') ) //same as null
		 return true;
		 
	}
	
	function isNotNull(str) {
		if (!(isNull(str)))
		 return true;		 
	}
		
 	// Removes leading whitespaces
   function LTrim( value ) { 	
    	var re = /\s*((\S+\s*)*)/;
    	return value.replace(re, "$1"); 	
   }
    
   // Removes ending whitespaces
   function RTrim( value ) { 	
    	var re = /((\s*\S+)*)\s*/;
    	return value.replace(re, "$1");	
   }
   
   // Removes leading and ending whitespaces
   function trim( value ) {
    	return LTrim(RTrim(value));  	
   }

	
  function openFlash()
  { 
    var childWindow = window.open('/oakwood_demo.htm', '', 'height=410,width=565,menubar=no,scrollbars=no,resizable=no,status=no,toolbar=no');  
    void('');  
    childWindow.focus(); 
  }
  
  //Check a valid format for Pets - XX/XX/XX
  function checkValidFormatPets(strPets)
  {
	  var str = strPets;
	  var reg = new RegExp("[0-9a-zA-Z]/([0-9a-zA-Z]+)/[0-9a-zA-Z]");
	  return (reg.test(str));		
  }