function validateURL(url, url_type,func)
{
  var check_url = 'false';
  check_url_1 = url.indexOf('http');
  check_url_2 = url.indexOf('://');
  if (trim(url) == '') // incase the url is not entered .. do not validate
    {
      return true;
    }
  if (check_url_1 != -1 && check_url_2 != -1)
  {
     check_url = 'true';
  }
  if (check_url == 'false')
  {
     alert(url_type+' has to start with http://');
     try{
            eval(func);
        }
     catch(e)   
       {}
     return false;
  }
  else
  {
     return true;
  }
}


function existsIn(arr, element)
{
    for(var i=0 ; i < arr.length ; i++)
    {
        if(arr[i] == element)
        {
      return true;
    }  
   }
   return false;
} // End ExistsIn  

function focusTab(focusField)
{
    try
     {
         if (tab_elements!=null)
         {
             for (var i=0; i < tab_elements.length; i++)
             {
                 if(existsIn(tab_elements[i], focusField))
                 {
                      //set selected index here & use i as index
                      
                      showTab('member_profile_tab',i);

                      
                      break;
                 }
             }
         }  
     }
     catch(e)
     {
     }
 }
  
  function trim(s) {
      return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
  } //End of Function trim()

   function validateMinLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMinLength = new minlength();
                for (x in oMinLength) {
                    var field = form[oMinLength[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'password') {
                        
                        var iMin = parseInt(oMinLength[x][2]("minlength"));
                        if ((trim(field.value).length > 0) && (field.value.length < iMin)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMinLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }


            function validateRequired(form,func_name) {
                var isValid = true;
                var focusField = null;
                var ii = 0;
                var msg = "Please enter/select the following field(s)\n"
                var fields = new Array();
		try {
		    if (func_name!=null)
		    { 
		     eval('oRequired = new '+func_name+'()');
			}
		    else
			{ 
			     oRequired = new required();
			}
		 }                
                catch(e) { oRequired = new required(); }
                var field_type=""
                
                for (x in oRequired) {
                	var field = form[oRequired[x][0]];
                    
                    
                    if (field == null)
                    {
                      fields[ii++] = oRequired[x][1];
	              isValid = false;
                    }
                    else
                    {
                     try {
                           field_type =  field.type;
                         }
                      catch(e){ field_type =''}
                      
                      if(field_type == undefined) 
                      {
                        field_type ='';
                      }
                       
                      if ((field.length > 0) && (field_type == ''))
                      {
                        field_type = field[0].type;
                        
                      }
                      else
                      {
                      field_type = field.type;
                      }                    
                      
                       
                    if (field_type == 'text' ||
                        field_type == 'textarea' ||
                        field_type == 'file' ||
                        field_type == 'select-one' ||
                        field_type == 'radio' ||
                        field_type == 'password' ||
                        field_type == 'checkbox'||
                        field_type == 'hidden') {
                        
                        var value = '';
				// get field's value
				//alert(field_type);
				if (field_type == "select-one") {
				//alert(field_type);
					var si = field.selectedIndex;
					if (si >= 0) {
						value = field.options[si].value;
						}
				} 
				else
				if(field_type == "radio" || field_type == "checkbox" )
				{
                                   if(field.length>0) {
					
					for (var i=0;i<=field.length -1;i++) {
						if (field[i].checked) {
							value = field[i].value;
							break;
						} // end of if
					} // end of for
				    } // end of if
				    else {
					if (field.checked) {
						value = field.value;
						break;
					} //end of if
			    	    } // end of else
				}
				else {
				    if(field_type == "hidden") {
				        //alert("Hdn obj : "+field);
				        //alert("inside hidden"+field.length);
				        try {
				            if(field.length > 0) {
				                for(var i=0;i<=field.length-1;i++) {
				                    value = field[i].value;
				                    break;
				                }
				            }
				            else {
				                value = field.value;
				            }
				        }
				        catch(e) {
				            alert("Exception e2nreq : "+e);
				        } // end try
				    }
					value = field.value;
				}
                        
                        //alert("The value is : "+value);

                        if(value != null && value != undefined) {
			    if (trim(value).length == 0) {
                        
	                        if (ii == 0) {
	                            focusField = field;
	                        }
	                        fields[ii++] = oRequired[x][1];
	                        isValid = false;
                            }
                        }
                         
                   }
                   }
                } // End of For Loop
                
                //alert("fields.length = "+fields.length);
                if (fields.length > 0) {
 
                   var errorMessage = "";
                   for (var j=0 ; j < fields.length ; j++)
                   {
                     if((fields[j] != null))
                     {
                       errorMessage = errorMessage +  fields[j] + '\n';
                     }  
                   }
                   
                   alert(msg+errorMessage);
                   
                   
		 if((focusField!=null) && (focusField.type != "undefined")) 
	         {  
			   
			 
			 if (field.type != 'textarea')
			   {
			     focusTab(focusField);  
			     
			     //focusField.focus();
			      try
			      {
				  focusField.focus();                 
			      }
			      catch(err){}
			   }
			  
			   if (field.type == "textarea")
			   {
			     
			     focusField.focus();
			     //field.setFocus();
			      
			   }
   		  }
                }
                
                return isValid;
            }
            
  function validateMaxLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMaxLength = new maxlength();
                for (x in oMaxLength) {
                    var field = form[oMaxLength[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' || 
                        field.type == 'password') {
                        
                        var iMax = parseInt(oMaxLength[x][2]("maxlength"));
                        if (field.value.length > iMax) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMaxLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
function validateByte(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oByte = new ByteValidations();
                for (x in oByte) {
                    var field = form[oByte[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {

                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oByte[x][1];

                            } else {

                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oByte[x][1];
                                    bValid = false;
                                }
                            }
                        }
                        
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
            
 function validateShort(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oShort = new ShortValidations();
                for (x in oShort) {
                    var field = form[oShort[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oShort[x][1];

                            } else {
                        
                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oShort[x][1];
                                    bValid = false;
                                }
                           }
                       }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
 function validateInteger(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                try {
                if(oInteger == null) {
                    oInteger = new IntegerValidations();
                }
                }catch(e) { oInteger = new IntegerValidations(); }
                //alert("Inside Integer validation in client side");
                //alert("The ointeger array is ;"+oInteger);
                for (x in oInteger) {
                    var field = form[oInteger[x][0]];
                    //alert("The field in integer validation is :"+field);
                if(field == null) {
                    return true;
                }                
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        //alert("The field type si :"+field.type);
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        //alert("Value in Integer validation cliend : "+value);
                        if (value.length > 0) {
                        
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oInteger[x][1];
                                
                            } else {
                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oInteger[x][1];
                                    bValid = false;
                               }
                           }
                       }
                    }
                }
                if (fields.length > 0) {
                   focusTab(focusField);
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }

            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;
            }
            

function validateFloat(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                if(oFloat == null) {
                    oFloat = new FloatValidations();
                }
                for (x in oFloat) {
                    var field = form[oFloat[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                            // remove '.' before checking digits
                            var tempArray = value.split('.');
                            var joinedString= tempArray.join('');

                            if (!isAllDigits(joinedString)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oFloat[x][1];

                            } else {
                                var iValue = parseFloat(value);
                                if (isNaN(iValue)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oFloat[x][1];
                                    bValid = false;
                                }
                            }
                        }
                    }
                }
                if (fields.length > 0) {
           focusTab(focusField);                                       
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
            
function validateDate(form) {
               var bValid = true;
               var focusField = null;
               var i = 0;
               var fields = new Array();
               oDate = new DateValidations();
               for (x in oDate) {
                   var value = form[oDate[x][0]].value;
                   var datePattern = oDate[x][2]("datePattern");
                   alert("date pattern is :"+datePattern);
                   if ((form[oDate[x][0]].type == 'text' ||
                        form[oDate[x][0]].type == 'textarea' ||
                        form[oDate[x][0]].type == 'hidden') &&
                       (value.length > 0) &&
                       (datePattern.length > 0)) {
                     var MONTH = "MM";
                     var DAY = "dd";
                     var YEAR = "yyyy";
                     var orderMonth = datePattern.indexOf(MONTH);
                     alert(orderMonth);
                     var orderDay = datePattern.indexOf(DAY);
                     alert(orderDay);
                     var orderYear = datePattern.indexOf(YEAR);
                     alert(orderYear);
                     if ((orderDay < orderYear && orderDay > orderMonth)) {
                         var iDelim1 = orderMonth + MONTH.length;
                         var iDelim2 = orderDay + DAY.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderDay && iDelim2 == orderYear) {
                            dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                         } else if (iDelim1 == orderDay) {
                            dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                         } else if (iDelim2 == orderYear) {
                            dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                         } else {
                            dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                            if (!isValidDate(matched[2], matched[1], matched[3])) {
                               if (i == 0) {
                                   focusField = form[oDate[x][0]];
                               }
                               fields[i++] = oDate[x][1];
                               bValid =  false;
                            }
                         } else {
                            if (i == 0) {
                                focusField = form[oDate[x][0]];
                            }
                            fields[i++] = oDate[x][1];
                            bValid =  false;
                         }
                     } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                         var iDelim1 = orderDay + DAY.length;
                         var iDelim2 = orderMonth + MONTH.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                             dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                         } else if (iDelim1 == orderMonth) {
                             dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                         } else if (iDelim2 == orderYear) {
                             dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                         } else {
                             dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                             if (!isValidDate(matched[1], matched[2], matched[3])) {
                                 if (i == 0) {
                                     focusField = form[oDate[x][0]];
                                 }
                                 fields[i++] = oDate[x][1];
                                 bValid =  false;
                              }
                         } else {
                             if (i == 0) {
                                 focusField = form[oDate[x][0]];
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                         }
                     } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                         var iDelim1 = orderYear + YEAR.length;
                         var iDelim2 = orderMonth + MONTH.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                             dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
                         } else if (iDelim1 == orderMonth) {
                             dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
                         } else if (iDelim2 == orderDay) {
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
                         } else {
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                             if (!isValidDate(matched[3], matched[2], matched[1])) {
                                 if (i == 0) {
                                     focusField = form[oDate[x][0]];
                                  }
                                  fields[i++] = oDate[x][1];
                                  bValid =  false;
                              }
                          } else {
                              if (i == 0) {
                                  focusField = form[oDate[x][0]];
                              }
                              fields[i++] = oDate[x][1];
                              bValid =  false;
                          }
                     } else {
                         if (i == 0) {
                             focusField = form[oDate[x][0]];
                         }
                         fields[i++] = oDate[x][1];
                         bValid =  false;
                     }
                  }
               }
               if (fields.length > 0) {
                  focusTab(focusField);
                  focusField.focus();
                  alert(fields.join('\n'));
               }
               return bValid;
            }

        function isValidDate(day, month, year) {
            alert("Day in valid date :"+day);
            alert("Month in valid date :"+month);
            alert("Year in valid date : "+year);
            if (month < 1 || month > 12) {
                alert("b4 return month false");
                    return false;
                }
                if (day < 1 || day > 31) {
                    alert("b4 return day false");
                    return false;
                }
                if ((month == 4 || month == 6 || month == 9 || month == 11) &&
                    (day == 31)) {
                    alert("b4 return month day false");
                    return false;
                }
                if (month == 2) {
                    var leap = (year % 4 == 0 &&
                               (year % 100 != 0 || year % 400 == 0));
                    if (day>29 || (day == 29 && !leap)) {
                        alert("leap false");
                        return false;
                    }
                }
                
                return true;
            }

function validateIntRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRange = new intRange();
                for (x in oRange) {
                    var field = form[oRange[x][0]];
                    
                    if ((field.type == 'text' ||
                         field.type == 'textarea') &&
                        (field.value.length > 0)) {
                        
                        var iMin = parseInt(oRange[x][2]("min"));
                        var iMax = parseInt(oRange[x][2]("max"));
                        var iValue = parseInt(field.value);
                        if (!(iValue >= iMin && iValue <= iMax)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRange[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusTab(focusField);
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return isValid;
            }
            
function validateFloatRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRange = new floatRange();
                for (x in oRange) {
                    var field = form[oRange[x][0]];
                    
                    if ((field.type == 'text' ||
                         field.type == 'textarea') &&
                        (field.value.length > 0)) {
                        
                        var fMin = parseFloat(oRange[x][2]("min"));
                        var fMax = parseFloat(oRange[x][2]("max"));
                        var fValue = parseFloat(field.value);
                        if (!(fValue >= fMin && fValue <= fMax)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRange[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusTab(focusField);
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return isValid;
            }
            
            
function validateCreditCard(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                try {
                if(oCreditCard == null) {
                    oCreditCard = new creditCard();
                }
                } catch(e) { oCreditCard = new creditCard(); }
                //alert("inside credit card validation");
                for (x in oCreditCard) {
                    if ((form[oCreditCard[x][0]].type == 'text' ||
                         form[oCreditCard[x][0]].type == 'textarea') &&
                        (form[oCreditCard[x][0]].value.length > 0)) {
                        if (!luhnCheck(form[oCreditCard[x][0]].value)) {
                            if (i == 0) {
                                focusField = form[oCreditCard[x][0]];
                            }
                            fields[i++] = oCreditCard[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return bValid;
            }

            /**
             * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
             */
            function luhnCheck(cardNumber) {
                //alert("Card nubmer is : "+cardNumber);
                if (isLuhnNum(cardNumber)) {
                    var no_digit = cardNumber.length;
                    var oddoeven = no_digit & 1;
                    var sum = 0;
                    for (var count = 0; count < no_digit; count++) {
                        var digit = parseInt(cardNumber.charAt(count));
                        if (!((count & 1) ^ oddoeven)) {
                            digit *= 2;
                            if (digit > 9) digit -= 9;
                        };
                        sum += digit;
                    };
                    if (sum == 0) return false;
                    if (sum % 10 == 0) return true;
                };
                return false;
            }

            function isLuhnNum(argvalue) {
                argvalue = argvalue.toString();
                if (argvalue.length == 0) {
                    return false;
                }
                for (var n = 0; n < argvalue.length; n++) {
                    if ((argvalue.substring(n, n+1) < "0") ||
                        (argvalue.substring(n,n+1) > "9")) {
                        return false;
                    }
                }
                return true;
            }
            
  function validateEmail(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();                
                oEmail = new email();                
                   for (x in oEmail) {
                              if ((form[oEmail[x][0]].type == 'text' ||
                                   form[oEmail[x][0]].type == 'textarea' ||
                                   form[oEmail[x][0]].type == 'hidden') &&
                                  (form[oEmail[x][0]].value.length > 0)) {
                                  if (!checkEmail(form[oEmail[x][0]].value)) {
                                      if (i == 0) {
                                          focusField = form[oEmail[x][0]];
                                      }
                                      fields[i++] = oEmail[x][1];
                                      bValid = false;
                                  }
                              }
                }
                 if (fields.length > 0) {
                                alert(fields.join('\n'));
                                if((focusField!=null) && (focusField.type != "undefined")) 
                                {
                                   
                                    focusField.focus();
                                }
                    }
                return bValid;
            }

 function validateTwoFields(form) {
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            oTwoFields = new twofields();
            for (x in oTwoFields) {
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'password') {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } else {
                        value = field.value;
                        secondValue = secondField.value;
                    }

                    
                    
                    if ((value == "password") && (secondValue == "pconfirm") ) {                    
                       bValid = true;
                    }
                    else                     
                    if( (value != secondValue) ) {                  
                      if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;                        
                    }                   
                    else {
                        bValid = true;
                    }
                }
            }
            
                  if (fields.length > 0) {
                       alert(fields.join('\n'));
                       if((focusField!=null) && (focusField.type != "undefined")) 
                       {
                         
                           focusField.focus();
                       }
                    }
             
            return bValid;
        }


 function validateOneFieldRequired(form) {
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            oTwoFields = new oneFieldRequired();
            for (x in oTwoFields) {
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'file' ||
                    field.type == 'password' ||
                    field.type == 'checkbox') {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } else {
                        value = field.value;
                        firstvallen = trim(value).length;
                        secondValue = secondField.value;
                        secondvallen =trim(secondValue).length;
                        
                    }
                    
                  
                    if (!((firstvallen>0) ^ (secondvallen > 0))) {
                    
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
                  if (fields.length > 0) {
                       alert(fields.join('\n'));
                       if((focusField!=null) && (focusField.type != "undefined")) 
                       {
                           focusField.focus();
                       }
                    }
             
            return bValid;
        }


            
        function validateDateFields(form)   {
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            oTwoFields = new compareDates();
            for (x in oTwoFields)   {
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'password' ||
                    field.type == 'hidden' ) {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } 
                    else {
                        value = field.value;
                        secondValue = secondField.value;
                    }
                    var startDate = new Date(value);
                    var endDate = new Date(secondValue);
                    if (startDate >= endDate) {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
            if (fields.length > 0) {
                alert(fields.join('\n'));
                if((focusField!=null) && (focusField.type != "undefined")) 
                {
                    if(focusField.type != 'hidden') {
                        focusField.focus();
                    }
                }
            }
            return bValid;
        }


       function validateBothRequired(form) {            
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            var oTwoFields = new bothFieldRequired();
            for (x in oTwoFields) {
                
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'file' ||
                    field.type == 'password') {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } else {
                        value = field.value;
                        firstvallen = trim(value).length;
                        secondValue = secondField.value;
                        secondvallen =trim(secondValue).length;
                        
                    }
                    
                  
                    if (((firstvallen>0) ^ (secondvallen > 0))) {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
                  if (fields.length > 0) {
                       alert(fields.join('\n'));
                       if((focusField!=null) && (focusField.type != "undefined")) 
                       {
                         if(focusField.type != 'hidden') {
                               focusField.focus();
                           }
                       }
                    }
             
            return bValid;
        }
        
      function validateEitherOneField(form) {
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            oTwoFields = new eitherOneField();
            for (x in oTwoFields) {
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'file' ||
                    field.type == 'password') {
            
                    var value;
                    var secondValue;
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                        value = field.options[si].value;
                        secondValue = secondField.options[si].value;
                    } else {
                        value = field.value;
                        firstvallen = trim(value).length;
                        secondValue = secondField.value;
                        secondvallen =trim(secondValue).length;
                        
                    }
                    
                  
                    if ( (firstvallen>0) && (secondvallen > 0) ) {
                    
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
                  if (fields.length > 0) {
                       alert(fields.join('\n'));
                       if((focusField!=null) && (focusField.type != "undefined")) 
                       {
 
                           focusField.focus();
                       }
                    }
             
            return bValid;
        }        


 function validateAtleastOneRequired(form) {            
            var bValid = true;
            var focusField = null;
            var i = 0;
            var fields = new Array();
            var oTwoFields = new atleastOneRequired();
            for (x in oTwoFields) {
                
                var field = form[oTwoFields[x][0]];
                var secondField = form[oTwoFields[x][2]("secondProperty")];
            
                if (field.type == 'text' ||
                    field.type == 'textarea' ||
                    field.type == 'select-one' ||
                    field.type == 'radio' ||
                    field.type == 'file' ||
                    field.type == 'password') {
            
                    var value;
                    var secondValue;
                    var firstvallen;
                    var secondvallen;
                    
                    // get field's value
                    if (field.type == "select-one") {
                        var si = field.selectedIndex;
                       
                        value = field.options[si].value;
                       
                        
                        if(secondField.type == "select-one") {
                        
                            secondValue = secondField.options[si].value;
                        }
                        else {
                        
                            secondValue = secondField.value;
                        }
                        firstvallen = trim(value).length;                        
                        
                        
                        secondvallen =trim(secondValue).length;
                        
                        
                    } else {
                        
                       
                        if(secondField.type == "select-one") {
                        
                            secondValue = secondField.options[si].value;
                        }
                        else {
                        
                            secondValue = secondField.value;
                        }                        
                        value = field.value;
                       
                        firstvallen = trim(value).length;                        
                        
                        
                        secondvallen =trim(secondValue).length;
                        
                        
                    }
                    if (((firstvallen==0) && (secondvallen == 0))) {
                        if (i == 0) {
                            focusField = field;
                        }
                        fields[i++] = oTwoFields[x][1];
                        bValid = false;
                    }
                }
            }
            
                  if (fields.length > 0) {
                       alert(fields.join('\n'));
                       if((focusField!=null) && (focusField.type != "undefined")) 
                       {
                           if(focusField.type != 'hidden') {
                               focusField.focus();
                           }
                       }
                    }
             
            return bValid;
        }

            /**
             * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
             * http://javascript.internet.com
             */
            function checkEmail(emailStr) {
               if (emailStr.length == 0) {
                   return true;
               }
                var re = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	      
	        return re.test(emailStr);
            }            
            

